从音频字节创建 wav 文件
Posted
技术标签:
【中文标题】从音频字节创建 wav 文件【英文标题】:Create wav file from audio bytes 【发布时间】:2021-01-08 10:04:30 【问题描述】:我正在调试“语音转文本”项目,并希望在服务器端将通过 websockets 发送的音频字节保存在 wav 文件中。
音频来自麦克风,由网络浏览器录制。 我知道那些:
1 个频道 样本是 16 位有符号整数 采样率 = 44 100 Hz在服务器端,每次我通过 websocket 获得一个新的音频数据块时,我都会将它存储到一个数组中。当我完成接收后,我会这样做:
full_audio_bytes = b''.join(audio_bytes) # this is my table of chunks of audio data
with wave.open("myaudiofile.wav", "wb") as audiofile:
audiofile.setsampwidth(16)
audiofile.setnchannels(1)
audiofile.setframerate(44100)
audiofile.writeframesraw(full_audio_bytes) # I tried `writeframes` too
我收到此错误wave.Error: # channels not specified
【问题讨论】:
【参考方案1】:好的,我在日志数量中找不到,但之前还有另一个错误:wave.error bad sample width
,这是因为setsampwidth
方法需要字节而不是位。有了audiofile.setsampwidth(2)
,居然可以写我的wave文件了!
修改后的代码:
full_audio_bytes = b''.join(audio_bytes) # this is my table of chunks of audio data
with wave.open("myaudiofile.wav", "wb") as audiofile:
audiofile.setsampwidth(é)
audiofile.setnchannels(1)
audiofile.setframerate(44100)
audiofile.writeframes(full_audio_bytes)
【讨论】:
以上是关于从音频字节创建 wav 文件的主要内容,如果未能解决你的问题,请参考以下文章