收藏
回答

RecorderManager.start(Object object) 录音上传解析不了?

问题:微信传输给服务端的到底是什么格式?服务端按照pcm解析并不成功。

  recorderManager.start({
      format: 'PCM', // 如果是流式的话,只支持 mp3和pcm
      sampleRate: 16000,
      numberOfChannels: 1,
      encodeBitRate: 64000,
      frameSize:10
    });

 recorderManager.onFrameRecorded((res) => {
      const data = res.frameBuffer;
      // 直接发送PCM到服务端
      global.client.sendAudioData(data);
    });

服务端是python, 将微信返回的数据按照无头pcm转wav,里面全是噪音沙沙的,没有人声

python 代码

# pcm_data 将是微信通过websocket传过来的数据流
def pcm_to_wav(pcm_data, output_path, channels=1, sample_width=1, frame_rate=16000):
    with wave.open(output_path, 'wb') as wav_file:
        wav_file.setnchannels(channels)
        wav_file.setsampwidth(sample_width)  # 16-bit
        wav_file.setframerate(frame_rate)
        wav_file.writeframes(pcm_data)
回答关注问题邀请回答
收藏

5 个回答

  • 满山溢海
    满山溢海
    2025-09-14

    我也遇到了 请问解决了没有?

    2025-09-14
    有用 2
    回复
  • 让我再睡5分钟
    让我再睡5分钟
    2025-11-15

    看了python部分代码应该在录制后要先转16int数据才可以解析的,以下代码可以参考

          this.recorderManager.onFrameRecorded((res) => {
            const sourceData = new Int16Array(res.frameBuffer)
            // const u8 = new Uint8Array(res.frameBuffer);
            // const f32 = new Float32Array(u8.buffer, u8.byteOffset, u8.byteLength / 4);
            console.log("录音分片", sourceData.buffer)
            // 模拟器上不行录制是OPUS编码音频,请在真机上调试PCM
            this.socket.send({
              data: sourceData.buffer,
              success: (res) => {
                console.log("ws", res)
              }
            });
          })
    


    2025-11-15
    有用
    回复
  • Jun。
    Jun。
    2025-10-22

    请问楼主解决了吗

    2025-10-22
    有用
    回复
  • Mr.Zhao
    Mr.Zhao
    2025-06-27

    用真机调试看看

    2025-06-27
    有用
    回复 1
    • 啦啦啦丶
      啦啦啦丶
      发表于移动端
      2025-06-27
      用过了的,不行。
      2025-06-27
      回复
  • 智能回答 智能回答 该问答由AI生成
    2025-06-27
    有用
登录 后发表内容