问题出现得很突然,日志倒是留得挺全。合成的语音听起来像电话音质,高频缺失,导入剪辑软件显示采样率只有八千赫兹。

刚开始盯着「导出格式本身压缩严重」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。合成模型按低采样率输出。也可能是后处理环节做了降采样。

少数情况下是播放器或通话链路限制带宽。

第一件事是确认音频真实采样率

python -c "import wave;w=wave.open('out.wav');print(w.getframerate())"

随后在合成参数里指定标准采样率

python -c "print(tts.synthesize(text, sample_rate=24000))"

再往下导出无损格式避免二次压缩

ffmpeg -i out.wav -ar 24000 -c:a pcm_s16le out24.wav

末了确认整条链路没有重采样

ffmpeg -i out24.wav -hide_banner 2>&1 | Select-String Stream

别只看报错消失,验证要多做一步。输出采样率提升到二十四千赫兹,听感明显通透,齿音与高频细节回来。

这里还有个坑。采样率提升不能凭空造出高频,源模型本身质量有限时,先换模型比一味拉高采样率更有效。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189