【问题标题】:Using python, how to save a valid audio file from bytes?使用python,如何从字节中保存有效的音频文件?
【发布时间】:2019-03-31 22:53:27
【问题描述】:

我正在使用 Python 中的语音识别库,并尝试在提交到识别它的 API 后保存音频文件。所以,当我想将该音频保存到文件时,我的问题就出现了。

import speech_recognition as sr

r = sr.Recognizer()
mic = sr.Microphone()

print('Recording...')
with mic as source:
    audio = r.listen(source)

with open("audio_file.wav", "wb") as file:
    file.write(audio.frame_data)

audio_file.wav 的大小约为 210kb(大约 4 或 5 秒的录音)

当我尝试重现音频 file.wav 时,播放器抛出一个错误,提示 无法播放音频...由于编解码器问题。

我的问题是: 我错过了保存标题或类似的东西吗? 还有其他方法可以将音频字节保存到文件中吗?

编辑 我的答案在这个问题Wav file from microphone on Python

【问题讨论】:

  • 假设 audio.frame_data 是一个类似字节的结构,这段代码应该可以工作,虽然更安全和更惯用的方法是使用上下文管理器:with open("audio_file.wav", "wb") as file: file.write(audio.frame_data),因为它会确保文件是即使在write 操作期间发生某些事情,也会关闭。此外,您可以在write 之后添加file.flush() 以确保将输出刷新到磁盘。
  • @TarasTsugrii。 audio.frame_data 是 <class 'bytes'> 类型。我检查了您建议的安全模式并继续获得相同的结果。无论如何谢谢。
  • 你还是没有说明问题是什么,应该创建一个文件就好了。
  • @NikolayShmyrev 我编辑了问题以使其更简单。我希望通过这种方式更容易理解。
  • 你可以大胆打开这个无头文件。

标签: python-3.x file speech-recognition audio-recording


【解决方案1】:

audio.frame_data 更改为audio.get_wav_data()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多