最近在研究 Qwen 的语音合成技术,折腾了 3 天,终于把这个问题搞定了。先说结论:Qwen TTS 如果要做跨句语音合成,并且还想让音色保持稳定,只有语音克隆这一条路。它的语气指令更多是调节音色的“性格”,比如更厚重一点、更干净一点,但它不能保证跨句时音色稳定。我一开始也研究过 seed 参数,后来发现它的作用非常有限。seed 只能保证 AI 在说同一句话的时候,输出是一模一样的,甚至是字面意义上的一样,音频文件的 md5 都能完全一致。但是只要输入的文字换了,哪怕 seed 一样,也没法控制模型继续稳定在同一个音色上,AI 还是会随机飘到别的声音去。
最后验证下来,真正可行的方法是这样的:先通过语气指令和 seed 调出一段你觉得满意的声音。比如声音太稚嫩,就让它更厚重一点;如果女生声音太嗲,就让音色更干净一点。总之先把你想要的那种感觉调出来,然后输出成 wav 文件。接下来,再通过 Qwen 的接口,从这个 wav 文件生成 pt 文件。你可以把 pt 文件理解成一种向量约束,之后每次输入新的文字时,都让模型结合这个 pt 文件去生成语音,这样跨句阅读时的音色就会非常稳定。更有意思的是,在音色已经稳定的前提下,你还可以继续做二次语气控制。也就是说,在保证是同一个人说话的基础上,依然可以让这个声音表现出很多不同的性格变化。
经过三天对各种参数的研究,最后出来的效果非常不错,读书时的语音语气已经非常自然。AI 时代也许不再需要我们手动一行一行写代码了,但是这种逻辑推演和知识获取的能力,依然非常重要。所以很多事情,还是那句话:实践出真知。
希望我的经验可以帮助同样研究AI的你