python - 无法加载在 django 中使用 webRTC 录制的音频文件
问题描述
我目前正在做一个 django 项目,我需要记录用户的音频并将其发送到服务器进行处理。我已经使用 webRTC 成功录制了音频,并使用 ajax 请求将其传递给了视图。但是,当我尝试使用 librosa 加载音频文件进行处理时,它会出现未知文件格式的错误。
在我的控制台中,我可以清楚地看到 wav 文件已收到,但无法加载文件进行处理
检查如果我在录制时尝试了 librosa 和 webRTC 都支持的不同文件格式时出现文件格式错误怎么办
- 音频/wav;编解码器=MS_PCM
- 音频/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 与此版本不兼容)?
解决方案
推荐阅读
- javascript - 如何使用 jest 测试 React 组件
- bash - sed 在匹配后插入换行符
- r - 在 ggplot facet strip 标签中使用 & 符号
- php - 将 php 与托管在 AWS 上的 Angular 应用程序一起使用
- powershell - 使用 Gradle 调用 powershell 脚本
- build - 在命令触发的 docker-compose build 之前执行一些 bash 脚本
- apache-camel - 如何解决 java.lang.NoClassDefFoundError: org/apache/camel/impl/DefaultComponent?
- css - 宽度属性会影响清除吗?
- python - 重塑数据框:列到行
- java - 说在 String 变量中可以存储所有 ASCII 符号是否正确?