报错是这么冒出来的。电话录音整体增益只有 -20dB,峰值 -18dBFS,直接送转写漏掉三分之一句子,手工加 6dB 后好了些但底噪也起来了,识别率还是不稳。

中间走过弯路,把「先降噪把弱辅音削掉,字就丢了」当成主因,改完现象没变。

排查方向其实有限,先把可能性排一排。音量过低被 VAD 判成静音整段跳过。少数情况下是一条录音里各段增益不均匀。

少数情况下是采样率与接口要求不一致。

测整体响度和峰值

ffmpeg -i call.wav -af loudnorm=print_format=json -f null - 2>&1 | tail -20

然后按 -16 LUFS 做两遍线性归一

ffmpeg -y -i call.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 16000 out.wav

只对超静音段做局部增益

python boost_quiet.py --in out.wav --threshold -40dB --gain 6 --out out2.wav

剩下的就是对比归一前后的转写字数

python asr_eval.py --before before.txt --after after.txt --ref ref.txt

别只看报错消失,验证要多做一步。转写字数覆盖率达到参考文本的 97% 以上,静音段不再被整段跳过,底噪没有明显抬高。

响度归一要放在降噪之前,顺序反了会把本来就弱的辅音一起削掉,后面怎么调都补不回来。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189