首页 > 解决方案 > 无法加载在 django 中使用 webRTC 录制的音频文件

问题描述

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

在我的控制台中,我可以清楚地看到 wav 文件已收到,但无法加载文件进行处理

检查如果我在录制时尝试了 librosa 和 webRTC 都支持的不同文件格式时出现文件格式错误怎么办

  1. 音频/wav;编解码器=MS_PCM
  2. 音频/wav;编解码器=MS_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 无法读取文件或文件有问题,这次我从互联网上下载了一个示例音频文件,然后我创建了一个新的 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,它也间接使用了声音文件,也直接尝试了声音文件,我不能使用 pyAudioAnalysis 因为我是使用 python 3.6 和 pyAudioAnalysis 与此版本不兼容)?

标签: pythondjangowebrtcaudio-recordingaudio-processing

解决方案


推荐阅读