【问题标题】:Create wav file from audio bytes从音频字节创建 wav 文件
【发布时间】: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

【问题讨论】:

    标签: python python-3.x audio wave


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 2014-09-12
      • 2017-11-03
      相关资源
      最近更新 更多