先看现象。用手机随手录的一段话做克隆,合成出来音色偏差明显,语速和停顿也很生硬。
原因不止一个,得分开看。录音环境有回声和底噪。另一种情况是参考音频里语气起伏过大。
还有一种情况,片段中包含多人说话或背景音乐。
另外,文本与录音内容不匹配,对齐失败。
测参考音频的信噪比与静音比例
ffmpeg -i ref.wav -af volumedetect -f null - 2>&1 | Select-String mean_volume
裁出十到二十秒平稳叙述片段
ffmpeg -i ref.wav -ss 5 -t 15 -ac 1 -ar 22050 ref2.wav
然后确认片段里只有一个人声
python -c "print('check speaker diarization')"
末了合成后用同一段文本做相似度评估
python -c "print(score)")
当时还开着另一个排查窗口,两边日志对照着看才定位到。
同一份数据我导出了两份,一份留底,一份拿来试。
恢复的判定其实很直接。合成音色与原声接近,听感自然,语速与停顿也更贴近参考音频。
这里还有个坑。参考音频的情绪会直接影响合成效果,想要平稳的播报音色,参考片段本身也要用平稳语气录制。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。