You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:ATS2837芯片Opus流解码为PCM出现白噪声问题排查

Opus解码后输出白噪声问题排查

问题背景

设备采用ATS2837芯片,回传数据为8:1压缩比的Opus格式,样本数据总字节数14760对应3秒音频。已通过重复头5b 50分割数据块,但使用audify库解码后导入Audacity仅得到白噪声,解码代码如下:

const { OpusEncoder, OpusDecoder, OpusApplication } = require('audify');

// 8000, 12000, 16000, 24000, or 48000
const newDecoder = new OpusDecoder(48000, 1);
const frameSize = 1920; // 40ms
var decodedArr = [];

pcmDataChucks.forEach(d => {
  let decimal = hexStringToDecimalArray(d);
  let decoded = newDecoder.decode(Buffer.from(decimal.slice(2, decimal.length)), frameSize);
  decoded = new Uint8Array(decoded);
  decodedArr = [...decodedArr, ...decoded];
})

fs.writeFile('audio_test.txt', Buffer.from(decodedArr), (err) => {
  if (err) {
    console.error('Error writing to file:', err);
  } else {
    console.log('File has been written successfully.');
  }
});

可能的问题点分析

  • 采样率与声道数不匹配:
    ATS2837芯片多用于语音场景,常见采样率为8kHz或16kHz,而非代码中设置的48kHz。8:1的压缩比对应8kHz采样率时,原始PCM每秒数据量为8000*16*1/8=16000字节,3秒即48000字节,压缩后为6000字节,和样本的14760字节不符;若为16kHz采样率,3秒原始PCM为96000字节,压缩后12000字节,更接近样本数据量(可能包含头部)。需先确认设备实际的采样率、声道数配置。

  • 帧大小参数错误:
    Opus帧大小必须与采样率严格对应:

    • 8kHz采样率下,常见帧长为10ms(80样本)、20ms(160样本)、40ms(320样本)
    • 16kHz采样率下,常见帧长为20ms(320样本)、40ms(640样本)
      代码中设置的1920是48kHz下40ms的帧大小,若设备实际采样率不是48kHz,帧大小不匹配会直接导致解码输出乱码(白噪声)。需根据设备实际采样率设置正确的帧大小,同时确认分割后的每个数据块对应一个完整的Opus帧。
  • 数据处理错误:

    1. 分割后去掉前2字节(decimal.slice(2))需确认5b 50是块的冗余头部而非Opus帧的一部分,若截断错误会破坏Opus帧结构。
    2. 需验证hexStringToDecimalArray函数的正确性:是否正确将十六进制字符串转换为字节数组,有无字节顺序(大端/小端)错误或数据丢失。
  • 输出格式与文件类型错误:
    audify的decode方法默认返回16位有符号整数PCM,但代码中将其转换为Uint8Array(8位无符号),丢失了位深信息,导致Audacity解析错误。同时,写入的文件后缀为.txt,应为.raw二进制文件。正确做法是直接拼接decoded(Buffer类型),写入.raw文件,导入Audacity时指定对应采样率、16位位深、单声道。

  • Opus应用模式未指定:
    ATS2837用于麦克风时,Opus编码通常采用语音优化模式(VOIP),但代码中初始化解码器未指定应用类型,默认可能使用音频模式,对语音编码兼容性差。需修改解码器初始化代码:

    const newDecoder = new OpusDecoder(实际采样率, 声道数, OpusApplication.OPUS_APPLICATION_VOIP);
    

内容的提问来源于stack exchange,提问作者g-robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:52:44