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

PyAudio流音量偶尔减半、转换字节除以2产生白噪声问题咨询

问题根因

你遇到的白噪声问题核心是WAV格式的PCM数据解析/序列化规则不匹配,具体有两处错误:

  • 16位WAV音频的采样值是有符号整数,你调用int.from_bytes和to_bytes时没有指定signed=True,默认按无符号整数处理,负数采样值会被解析为超大的正整数
  • 绝大多数WAV文件的字节序是小端(little-endian),你错误指定为大端(big)
    你自定义生成的音频之所以除以2正常,是因为你生成的采样值全部为正,且数值范围刚好适配错误的解析规则,不会触发符号和字节序的问题;而直接赋值原wav的v值时,你是错误解析后又错误序列化,相当于字节原样输出,所以播放也正常,只有修改v值的时候才会暴露错误。

修复方案

修改两处代码即可:

  1. 调整WAV采样值的解析逻辑
    把
v = int.from_bytes(data2, 'big')

修改为

v = int.from_bytes(data2, byteorder='little', signed=True)
  1. 调整整数字节序列化逻辑
    把
data = int(n).to_bytes(2, 'big')

修改为

data = int(n).to_bytes(2, byteorder='little', signed=True)
  1. 可选优化:音量减半改用整数运算避免浮点截断误差,把n = int(v / 2)改为n = v // 2

内容的提问来源于stack exchange,提问作者Michael Lowe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:48:03