无法加载在Django中使用webRTC录制的音频文件

2024-04-24 23:52:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在从事一个django项目,在该项目中,我需要录制用户的音频并将其发送到服务器进行处理。我已经使用webRTC成功地录制了音频,并使用ajax请求将其传递给视图。但是,当我尝试使用librosa加载音频文件进行处理时,会出现未知文件格式的错误

in my console i can clearly see that the wav file is received but it cannot load the file for processing

要检查录制时文件格式是否有误,请尝试librosa和webRTC都支持的不同文件格式

  1. 音频/wav;编解码器=MS\U PCM
  2. 音频/wav;编解码器=MS\U GSM610

为了检查在服务器上接收文件时是否有问题,我确实将文件上传到了服务器上,我发现文件上传到了服务器上,可以直接在播放器上播放

我用来上传文件并检索它的代码(注意:我直接将文件路径提供给任何记录的文件只是为了检查)

def voice2(request):
    if request.method=='GET':
        return render(request,'record3.html')
    else:
        if request.method == 'POST' :
            print(request.FILES)
            audio=request.FILES.get("audioData")
            print(audio)

            file = request.FILES['audioData'] 
            path = default_storage.save('media/somename.wav', ContentFile(file.read()))
            (os.path.join(settings.MEDIA_ROOT, path))

            sig, samplerate = librosa.load(r'C:\Users\KRISHNA DAVE\project\tempproject\media\media\somename.wav')

            return render(request, 'record3.html')

现在,为了检查librosa无法读取该文件或该文件有问题,这次我从internet下载了一个示例音频文件,然后创建了一个新的audio.py文件,我尝试在其中加载两个文件(我上载的和我下载的)

import librosa
#downloaded from internet
a,b=librosa.load(r"C:\Users\KRISHNA DAVE\Music\samplewav.wav")
print(a,b)
#recorded file
y, sr = librosa.load(r"C:\Users\KRISHNA DAVE\project\tempproject\media\media\somename.wav")
print(y,sr)

在这里,我发现下载的文件已成功加载,但我录制的文件仍未加载(我仍然收到文件格式未知的错误)

我仍然无法理解该如何解决这个问题。我应该用其他东西替换使用webRTC,还是应该更改音频编解码器,或者需要使用不同的库(注意:我已经使用了librosa,它也间接使用了soundfile,也直接尝试了soundfile,我不能使用pyAudioAnalysis,因为我使用的是python 3.6,pyAudioAnalysis与此版本不兼容)?


Tags: 文件path服务器request编解码器loadfiles音频