ChatTTS每次生成声音都变?固定音色、稳定长文,还有一个发布前必查的坑

源自134位全网作者

08-20 16:03

今天有位博主放出了 GPT-SoVITS、CosyVoice、ChatTTS、Fish Speech、Kokoro 五款开源语音模型的盲听横评,四段测试文本、三个维度打分,结论不是谁全面第一,而是按场景分工。ChatTTS 拿到的评价是「情感对话最自然,读新闻太随意」,在对话、虚拟角色、播客场景里依然被推荐。小红书但对真正拿 ChatTTS 做短视频、口播、播客配音的人来说,痛点不是「够不够好」,而是「稳不稳」。

小红书一篇高热度的 AI 配音帖评论区里,有人指出音频前后音色不一致,还有人更直接:「srds你这个的音频也时快时慢」。小红书这不是你操作失误,而是 ChatTTS 的机制决定的。如果你已经装好了它,这篇只讲三件事:音色怎么固定、长文怎么稳定、发布前要查哪个坑。

为什么每次生成的声音都不一样

ChatTTS 的音色不是「配置」出来的,而是「抽」出来的。默认情况下 `sample_random_speaker()` 会从高斯分布里随机抽一个说话人向量,每次运行都抽到一个新声音;再加上自回归生成本身带采样随机性,同一段文字的语速、语调也会不同。官方 FAQ 对此很坦白:这是自回归模型的通病,「一般很难避免」,只能多生成几次碰一个合适的结果。GitHub所以固定音色的思路很简单:把「随机抽卡」改成「固定卡池」,锁住说话人向量、压低采样随机性。

固定音色:三种方法,从硬核到省事

方法一:保存说话人向量,官方路线最稳。先用 `rand_spk = chat.sample_random_speaker()` 抽一次,官方 README 的注释明确写着「save it for later timbre recovery」,推理时把这个向量传回 `InferCodeParams` 的 `spk_emb`,顺手把 temperature 降到 0.3 左右,减少语速和语调的波动。GitHub把这个向量写进项目配置,整个系列视频就共用这一副嗓子,代价是「惊喜感」变少,但对口播来说这是优点。

方法二:用社区现成的音色种子。B 站早就有声纹种子生态:有人做过内置几千种预置音色的整合包,连声纹检测、音色打分都配齐了。哔哩哔哩也有 UP 主直接分享 .pt、.csv 格式的种子文件。挑种子注意时间:ChatTTS 更新过多次代码,「一些整合版无法使用CSV和旧PT格式的音色种子了」,种子加载不出来先怀疑版本不匹配,而不是种子本身有问题。哔哩哔哩

方法三:从参考音频克隆。想「复刻」某个特定声音,社区还有 ChatTTS-OpenVoice 这类项目:ChatTTS 负责自然的语音生成,OpenVoice 的音色模拟模块负责「无缝音色移植」,输入参考音频就能得到可复用的音色。GitHub它比固定随机音色更进一步,适合想统一 IP 声音的场景。

ChatTTS每次生成声音都变?固定音色、稳定长文,还有一个发布前必查的坑

长文稳定:先切分,再归一化,最后管节奏

ChatTTS 直接生成长文本有三个坑:段落太长出现杂音和口齿不清、数字符号读错、停顿不受控。小红书博主卷卷姐开源的 ChatTTS-LongAudio 把这三步都自动化了:服务端「会按行/按标点自动拆分文本,逐段推理后合并成一段完整音频」,适合生成 5 到 10 分钟的解说词。GitHub

ChatTTS每次生成声音都变?固定音色、稳定长文,还有一个发布前必查的坑

切分解决杂音,归一化解决读错。手机号、小数、百分号、公式、英文单词先转换成可读文本再喂给模型,能省掉你在剪辑软件里逐句修正的功夫。再往下是节奏:目前发布的模型里,token 级控制单元只有 `[laugh]`、`[uv_break]`、`[lbreak]` 三种。GitHub句级还可以用 `prompt=‘[oral_2][laugh_0][break_6]’` 这类参数调口语化程度(oral 0-9)、笑声(laugh 0-2)和停顿(break 0-7):知识类口播建议低 oral、低 laugh、中等 break,情感向内容可以把 oral 调高;想精确到字,就开 `skip_refine_text=True` 手写标记。

不想碰代码:一个成熟 WebUI 就够了

完全不想碰 Python 的话,jianchang512 的 chatTTS-ui 是目前用的人最多的本地网页界面:「一个简单的本地网页界面,在网页使用 ChatTTS 将文字合成为语音,支持中英文、数字混杂,并提供API接口」。GitHub浏览器里贴文案、选音色、调参数就能出音频,前面说的 LongAudio 也是在它的基础上加了长文切分和文本归一化。

ChatTTS每次生成声音都变?固定音色、稳定长文,还有一个发布前必查的坑

硬件参考官方口径:生成 30 秒音频「至少需要 4GB 显存」,CPU 也能跑,但速度明显更慢。GitHub另一个实操提醒:环境建议 Python 3.10 到 3.11,官方 issue 区有「Python 3.12 + Cuda 12.6 Terminate without notice」的真实案例。GitHub

发布前必查的一个坑:模型不能商用

这是大多数教程不会提的事。官方 README 写得清楚:代码是 AGPLv3+,但模型权重基于 CC BY-NC 4.0 许可,「面向教育和研究用途,不得用于任何商业或非法目的」。GitHubNC 就是 NonCommercial。也就是说,如果你的视频要接单变现、接商单,或者把声音用在公司产品里,官方权重并不合适,商用需求应该换允许商用的模型或付费服务,别抱侥幸。

还有很多人吐槽:ChatTTS 的音频为什么总带一层「MP3 沙沙声」?这部分是官方刻意的防滥用设计:训练时「加入了少量高频噪声」,并「尽可能用 MP3 格式压缩音质」。GitHub对音质敏感的话,要知道这是模型的先天上限,不是参数没调好。

什么时候继续用,什么时候该换

看两个信号。一是横评的场景分工:正式播音、有声书选 CosyVoice,克隆自己的声音选 GPT-SoVITS,多语言选 Fish Speech,低配设备选 Kokoro,ChatTTS 守住对话和虚拟角色——「没有绝对的第一,只有最合适的选择」。小红书二是项目节奏:ChatTTS 最新版本停留在今年 4 月发布的 v0.2.5,近期提交多是「keep tracking with latest transformers」这类兼容性修复。GitHub路线图上的多情感控制长期没有勾选,它不会消失,但也别指望大功能更新。

一句话收尾:个人创作、非商用的场景下,把音色固定、长文切分做好,ChatTTS 依然是眼下性价比很高的免费对话配音方案;一旦涉及商用变现、克隆真人声音或长篇有声书,按上面的信号及时换模型。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章