音频文件无法读取为 PCM WAV、AIFF/AIFF-C 或 Native FLAC
Posted
技术标签:
【中文标题】音频文件无法读取为 PCM WAV、AIFF/AIFF-C 或 Native FLAC【英文标题】:Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC 【发布时间】:2020-06-14 11:42:55 【问题描述】:我正在使用 .wav 格式的 javascript 录制声音:
navigator.mediaDevices.getUserMedia(audio:true)
.then(stream => handlerFunction(stream))
function handlerFunction(stream)
rec = new MediaRecorder(stream);
rec.ondataavailable = e =>
audioChunks.push(e.data);
if (rec.state == "inactive")
let blob = new Blob(audioChunks,type:'audio/wav;codecs=0');
sendData(blob)
发送文件以使用 Speech_recognition 将其转换为文本:
filename = "name.wav"
print(filename)
data = request.body
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
uploadedFile = open(filename, "wb")
uploadedFile.write(request.body)
uploadedFile.close()
#os.path.join(BASE_DIR,filename)
r = sr.Recognizer()
file = sr.AudioFile(filename)
with file as source:
audio = r.record(source)
msg = r.recognize_google(audio)
print(msg)
return redirect('/')
错误:-
ValueError: Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC; check if file is corrupted or in another format
附:音频文件正在保存,我可以清楚地听到声音/声音
音频文件:https://drive.google.com/open?id=17ucX9xRG0x5-JEtZDFaotSNLlcRs0jZc
【问题讨论】:
【参考方案1】:文件格式是 WebM,而不是 wav,尽管有 wav 扩展名。您可以使用 file 命令检查文件类型:
$ file name.wav
name.wav: WebM
你需要设置 MediaRecorder 的 mimeType 来录制 wav:
rec = new MediaRecorder(stream);
rec.mimeType = 'audio/wav';
任何浏览器都可能不支持它。
【讨论】:
我在 chrome 上试过,但它不工作,你是对的,它可能不支持,你能建议我一些其他方法吗,看起来目前的方法不起作用 您可以在处理之前使用 ffmpeg 将文件转换为 wav。要在 javascript 中录制 Wav,您可以使用 WebAudio API,而不是 MediaRecorder,请参阅 github.com/mattdiamond/Recorderjs 你的回答很有帮助,但可以写或给我一个关于如何在 python 中使用 FFmpeg 将我的filename. WebM
转换为 filename.wav
的代码,这将非常有帮助
好的,我可以使用 github.com/kkroening/ffmpeg-python 将我的文件转换为 wav 格式以上是关于音频文件无法读取为 PCM WAV、AIFF/AIFF-C 或 Native FLAC的主要内容,如果未能解决你的问题,请参考以下文章
如何将wav音频文件格式为pcm转化为ima adpcm格式
wav音频文件解析读取 定点转浮点分析 幅值提取(C语言实现)