先看现象。上传五秒的录音做声音克隆,报参考音频时长不足,换一段更长的录音才成功。
排查方向其实有限,先把可能性排一排。参考音频低于模型要求的最短时长。少数情况下是音频里静音占比太高,有效语音不足。
还有一种情况,采样率不匹配,重采样后时长变化。
另外,多人对话混在一起,音色不纯。
先确认有效语音时长
ffmpeg -i ref.wav -af silencedetect=n=-40dB:d=0.5 -f null - 2>&1 | Select-String silence
裁剪出干净的单人片段
ffmpeg -i ref.wav -ss 3 -t 12 -ar 22050 ref_clean.wav
去掉首尾静音再送模型
ffmpeg -i ref_clean.wav -af silenceremove=start_periods=1 ref_trim.wav
末了用同一段文本做相似度对比
python -c "print(similarity(a, b))")
白天有业务在跑,能验证的部分都压到了晚上做。
当时还开着另一个排查窗口,两边日志对照着看才定位到。
怎么算真的好了,看的是同一批现象。克隆成功且音色接近原声,合成语音的自然度明显提升。
参考音频质量比长度更重要,嘈杂环境录的三十秒往往不如安静环境录的十秒效果好。报错文案容易误导,真正的原因往往在相邻那一层的日志里。