微信扫码
与创始人交个朋友
我要投稿
ChatTTS 一夜爆火,极速出圈,
3 天就斩获 9k 的 Star 量!
截止 2024.06.04,已经 18.7k 的 Star,
极速接近 GPT-soVITs 当天的 26.2k 的 Star 数。
到底有什么魔力让它火爆的速度直追它的前辈?
优势:
- 真实度和自然度很惊艳。
- 能生成接近真人音色的语气语调。
- 这个TTS应该是目前对中文支持最好的了。
- 中英混合也没问题。
- 细粒度控制: 能够预测和控制细粒度的韵律特征,如笑声、停顿和插话等。
- 自然流畅的语音合成,同时支持多说话人。
- 同时提供预训练模型。
劣势:
- 当前推理速度慢,无法应用在实时语音场景。用在离线场景,需要大量的后期修正工作。
- 对于阿拉伯数字,标点符号,refine后效果不太好。
- 有时候会出现不稳定,自动删除或者增加一些内容在句子里比如输入的内容是“你吃饭了没”,会莫名把句子改写一下变成了,“好吃,你吃饭了没”这种情况。
- 读绕口令也有人的那种卡顿(效果不稳定)。
相关介绍:
- ChatTTS:专门为对话场景设计的文本到语音TTS模型,支持中英文
https://xiaohu.ai/p/8702
- 利用 Whisper + DeepSeek + ChatTTS 构建语音对话机器人
https://mp.weixin.qq.com/s/7bCUAk-Q1LDmX70iy5Tt8w
- 这两个牛逼哄哄的 AI 项目开源了!
https://mp.weixin.qq.com/s/8ltuF1XnauOxGRVT3xZwGQ
- 这个叫chattts的开源,合成的声音太逼真了,我差点被骗!
https://mp.weixin.qq.com/s/JAhm5KTxZ5k-SiqHTxFz-g
- 源码分析:
https://mp.weixin.qq.com/s/ol2TTDLBnhHZ3bykk4DaAg
ChatTTS的TTS模型「TTS全称:Text To Speech(也就是文本转语音模型)
该模型经过超过10万小时的训练,公开版本在 HuggingFace 上提供了一个4万小时预训练的模型。
作者还留着一个10w小时训练数据的版本。
来自本地部署模型的推理和语音效果:
1. 语音效果
效果确实很不错, 接近真人语音语调。但是和 GPT-SoVITS 比起来并没有更惊艳, 不过对比起来它用的更接近日常普通人的音色, 可能会给人感觉更接近真实。
对比参考:Stuart:免费 AI 真人语音入门:GPT-SoVITS + Bert-VITS2
访问地址:
https://waytoagi.feishu.cn/wiki/StNuwZqh7iC2utkbxaNck9Gnn4e
2. 运算速度
基于 L4 GPU 本地部署, 22s 的音频需要 12s 的推理时间。如果用 4090, 速度差不多是 L4 的 2 倍, 也就是差不多需要 6s 左右。当然这个模型还没有做优化, 如果做了优化, 有希望在 4090 上只用 2~3s 推理时间。
3. 功能试玩
a. 音色更换
下面提供多个效果对比:
- Audio seed: 2; Text seed: 42; input text: 每个孩子是生下来就自带大模型的,他们天然有超强的数据处理能力。家庭教育是让孩子的大模型“本地化”。我们对孩子的教育,就是一种大模型的微调,最多起到 10%的作用。我们要做的是顺势而为,让孩子的先天大模型发挥最好的作用。
被 refine 后的文本变成了:
每 个 孩 子 是 生 下 来 就 自 带 大 模 型 的 [uv_break] , 就 他 们 天 然 有 超 强 的 数 据 处 理 能 力 [uv_break] 。家 庭 教 育 是 让 孩 子 的 大 模 型 [uv_break] 本 地 化 [uv_break] 。我 们 对 孩 子 的 教 育 , 其 实 就 是 一 种 大 模 型 的 微 调 [uv_break] , 最 多 起 到 百 分 之 十 的 作 用 [uv_break] 。我 们 要 做 的 是 顺 势 而 为 [uv_break] , 让 孩 子 的 先 天 大 模 型 发 挥 最 好 的 作 用 。
音频预览:
- Audio seed: 2; Text seed: 884952 ; input text: 每个孩子是生下来就自带大模型的,他们天然有超强的数据处理能力。家庭教育是让孩子的大模型“本地化”。我们对孩子的教育,就是一种大模型的微调,最多起到 10%的作用。我们要做的是顺势而为,让孩子的先天大模型发挥最好的作用。
被 refine 后的文本变成了:
每 个 孩 子 是 生 下 来 就 自 带 大 模 型 的 [uv_break] , 他 们 天 然 有 超 强 的 数 据 处 理 能 力 。家 庭 教 育 是 让 孩 子 的 大 模 型 本 地 化 [uv_break] 。我 们 对 孩 子 的 教 育 , 就 是 一 种 大 模 型 的 微 调 , 最 多 起 到 百 分 之 十 的 作 用 [uv_break] 。我 们 要 做 的 是 [uv_break] 顺 势 而 为 [uv_break] , 让 孩 子 的 先 天 大 模 型 发 挥 就 是 这 个 [uv_break] 最 好 的 作 用 。
音频预览:
可以看到上面的 text 都被修改过, 加过一些[uv_break]之类的标记之外, 仔细看会发现里面会加入一些口头禅之类的词, 让文本看起来更顺。实际上 TTS 里都会涉及这样的设计。
- 我们也可以让它不 refine 文本, 直接读,
Audio seed:2, 不 refine 文本。语气停顿效果会差一些, 同时真实性也会差一些。
音频预览:
- 更换一个音色:
Audio seed: 1;Text seed: 42; input text: 每个孩子是生下来就自带大模型的,他们天然有超强的数据处理能力。家庭教育是让孩子的大模型“本地化”。我们对孩子的教育,就是一种大模型的微调,最多起到 10%的作用。我们要做的是顺势而为,让孩子的先天大模型发挥最好的作用。
音频预览:
b. 语气停顿更换
这是 chatTTS 中最有价值的功能。目前开源项目提供了三个提示词, 玩法类似 Suno 里的提示词, 这些词不会被直接念出来, 但是会结合上下文来调整原有语音。从官方说法, 他们将逐渐支持更多这类嵌入的提示词 (见下图)。
- 笑:[laugh]
我 遇 到 四 川 小 吃 真 的 特 别 开 心 。哎 , [laugh], 。比 如 甜 水 面 [uv_break] 、 赖 汤 圆 [uv_break] 、 蛋 烘 糕 、 叶 粑 等 , 这 些 小 吃 口 味 温 和 , 超 喜 欢 的 。[uv_break] , [laugh] ,
音频预览:
PS: 这里得配合一些真的开心的语句, 不然貌似生成时要么笑声诡异, 要么直接念单词... 还没找到规律怎么能用的特别好。
- 短停顿:
[uv_break] 效果比标点符号的停顿好, 对比长停顿:[lbreak]
我 遇 到 四 川 小 吃 真 的 特 别 开 心 。哎 , [laugh], 。比 如 甜 水 面 [lbreak] 、 赖 汤 圆 [lbreak] 、 蛋 烘 糕 、 叶 粑 等 , 这 些 小 吃 口 味 温 和 , 超 喜 欢 的 。[uv_break] , [laugh] ,
音频预览:
PS: 这一段和上面一段的 audio seed 都是 2, text seed 没使用, 但是音色就是不同的。这里进一步证明了它不同的停顿效果, 音色会变。不可控。
c. 念数字:
来念一段带数字的, 不用 refine text 的情况下, 依旧能正确的念成“五十九万八千一百二十三”
我有一件帽衫,是我用598123块钱买的。可以和你换那个0.1个比特币吗?
音频预览:
但是如果比如用不同的后缀就不一定能读, 会直接读数字。
我有一件帽衫,是我用598123越南盾买的。可以和你换那个0.1个比特币吗?
音频预览:
d. 中英文混搭
很有意思, 带口音的英语。估计日本人的英语训练出来口音更重。
测试了 400 个音色, 发现里面还有东北口音的, 北京腔的, 不只是英语, 中文也带口音。
我有一件帽衫, 是我用 598123 doller买的, very expensive。可 以 和 你 换 那 个0.1 个 比 特币吗 ?you know what I'm saying?
音频预览:
对比总结
相比 GPT-SoVITS 它的优势:
在不改变输入的文字, 不改变 Audio Seed 和 Text Seed 的情况下, chatTTS 生成的声音效果包括语气, 音色, 语气停顿都稳定。
[uv_break]之类的提示词的使用, 让 TTS 产生更接近人的情感, 语气和语速。
相比之下它的中英文混搭效果更自然, 念数字也会考虑“个十百千万”, 而不是单调的念数字。
安装部署
在 linux 上部署很简单, 比 GPT-SoVITS 更容易, 不需要自己下载模型放模型。当然本地部署的前提, 依旧是你有一张 GPU 显卡, 4G 以上显存。
简单步骤如下:
下载代码仓库
git clone https://github.com/2noise/ChatTTS.git
2. 安装依赖 (⚠ 这里有两个依赖它没有放在 requirements.txt 里)
cd ChatTTSpip install -r requirements.txtpip install gradiopip install WeTextProcessing
3. 启动 webui 的 demo 程序, 然后用浏览器登录这个服务器的 ip:8080 就能试玩了
python ./webui.sh --server_port 8080
这个 demo 本身提供了 3 个参数:
--server_name: 服务器的 ip 地址, 默认 0.0.0.0
--servic_port: 即将开启的端口号
--local_path: 模型存储的本地路径
4. 第一次启动后生成语音时, 需要看下控制台输出, 它会下载一些模型文件, 因此比较慢, 而且可能因为网络的问题有各种失败。但是第一次加载成功了, 后面就顺利了。
5. 基于这个基础已经可以开始拓展了, 比如把它集成到 agent 的工具中去, 比如结合 chatgpt 来做更拟人化的实时沟通。
6. webui 上可以设置的几个参数说明:(参考下图)
- text:指的是需要转换成语音的文字内容。
- Refine text:选择是否自动对输入的文本进行优化处理。
- Audio Seed: 语音种子, 这是一个数字参数,用于选择声音的类型, 默认值为 2,是一个很知性的女孩子的声音。
- Text Seed: 文本种子, 这是一个正整数参数,用于 refine 文本的停顿。实测文本的停顿设置会影响音色, 音调。
- 额外提示词 (可以写在 input Text 里):用于添加笑声、停顿等效果。例如,可以设置为[oral_2][laugh_0][break_6]。
目前存在的问题
1. 语音生成基本功能
支持的语音时长不超过 30s, 超过 30 秒的需要特别修复。
某些 audio seed 在念某些语句时会丢失一些语句。
Refine 过程中有些字会被丢失, 比如“儿童节”在大概率会被 refine 成“童节”, 丢失一个“儿”字。
解决方法:跳过自动 refine, 以手动修改文本的方式来控制停顿。
即使同一个 audio seed, 如果使用不同的语句分段方式, 或者不同的 text seed, 生成的音色也不是很稳定, 会给人感觉不是同一个人的声音。
2. 代码 Bug:
uv_break 等提示词可能会在 refine 之后缺少[], 甚至有时候在有中括号的情况下也会被念出来, 听多了, 容易被洗脑, 不自觉的自己说话也念出 uv break 作为口头禅。(多听几遍, 很有那种 m3?的洗脑上头效果?)
音频预览:
3. 没提供微调 SFT 的接口
当然在底模已经提供的情况下, 我们自己调用模型来做微调是可以的, 但是项目本身没有提供相关的代码, 对于大多数人来说, 微调, 或者说声音克隆就成了一个门槛。
4. 本模型特别申明:不支持商用, 仅用于学术研究。
⚠ 在生成的语音内, 作者加了听不见的噪音水印, 可以很容易的被检测出来是他的模型生成的语音。
ChatTTS 还没放出训练代码无法自己克隆声音。
该作者还只放出了4w小时训练的版本,确保这个模型的声音能被ai检测出来。作者还留着一个10w小时训练数据的版本。
关于 chatTTS 未来的思考
1. 产品化
这只是一个基础模型, 包括 webui 也只是写的一个建议的演示。使用下来, 如果需要产品化, 需要通过大量的测试, 来固化配置几种音色, 并赋予他们从文字上比较容易理解的音色标签, 方便用户选择。比如 “可爱萝莉音”, “男娘音”之类的。同时它 1 秒才生成 1~2 秒音频的推理速度也是值得诟病的一个问题, 需要极大的优化。
2. 合成检测和声音版权问题
从声音的拟人化越来越像开始, 社会上就一直在思考这两个问题:反诈骗, 和声音的版权。相信未来这两个领域会随着 TTS 越来越成熟, 也越来越急迫需要得到解决。
相关链接
Huggingface:
https://huggingface.co/2Noise/ChatTTS
ChatTTS Github:
https://github.com/2noise/ChatTTS
ChatTTS-UI :
https://github.com/jianchang512/ChatTTS-ui
GPT-SoVITS Github:
https://github.com/RVC-Boss/GPT-SoVITS
第三方地址:
https://chattts.com/ (非官方网站)
ChatTTS出来好几天了,一直没看见replicate上有能直接运行的模型项目,就自己动手写了一个。
链接:https://replicate.com/thlz998/chat-tts
设置为public的,可以直接运行或者调用API。
其他TTS项目
Bark
Bark是由Suno AI开发的一款文本到语音(Text-to-Speech, TTS)模型。它基于机器学习技术,能够将输入的文本转换为自然流畅的语音。
该模型可以识别并生成多种语言的语音,并匹配相应的口音。Bark的主要应用包括生成多语言有声书、播客和音效。它在音频生成领域展现了巨大的潜力和灵活性。
开发者可以通过GitHub获取Bark。
项目地址:
https://github.com/suno-ai/bark
Fish-Speech
Fish Speech 是由FishAudio公司开发的一款先进文本转语音模型。它支持英语、中文和日语三种语言,模型使用了150,000多小时的音频数据进行训练。用户可以使用Fish Speech V1合成三种语言的语音。
FishAudio公司提醒用户必须遵守当地法律法规,合法使用该模型。感兴趣的用户可以访问FishAudio官网,体验Fish Speech V1在线演示。研究人员若引用该模型,可以参考FishAudio提供的引用格式。
项目地址:
https://github.com/fishaudio/fish-speech
Piper TTS(Text-to-Speech)
Piper TTS是一款开源、高效、多语言的本地语音合成系统。它可以在树莓派等小型设备上快速合成语音,支持30多种语言,合成过程完全本地化,保护用户隐私。Piper TTS适用于语音辅助、家庭自动化等多种场景,用户还可以使用自己的语音数据训练定制模型。总之,Piper TTS是一个功能强大、使用便捷的语音合成利器。
项目地址:
https://github.com/rhasspy/piper
Matcha-TTS
Matcha-TTS是一种创新的神经网络语音合成技术,它结合了条件流匹配和常微分方程,大大加快了语音合成的速度。这种方法不仅能生成自然、多样化的语音,而且内存占用小,合成质量高。
作为一种编码器-解码器架构,Matcha-TTS通过最优传输条件流匹配进行训练,只需很少的合成步骤就能达到优异的效果。它的合成速度可以与最快的模型相媲美,同时在听力测试中获得了最高分,并且内存占用最小。
此外,Matcha-TTS还是一种端到端的语音合成方法,不需要外部的音素对齐,通过概率建模和非自回归的方式,从头学习语音合成。
项目地址:
https://github.com/shivammehta25/Matcha-TTS
GradTTS
Grad-TTS是一种基于扩散概率模型的新型文本到语音合成方法,通过灵活的推理方式、可调节的解码步数、精准的文本对齐以及对语音属性的控制,在保证高质量的同时实现了实时合成,展现出在语音合成领域的应用前景。
项目地址:
https://github.com/WelkinYang/GradTTS
bertvits2
FishAudio的Bert-VITS2是一个开源的端到端文本到语音(TTS)系统,支持多种语言的高质量语音合成,并提供了便捷的网页用户界面,但由于项目组精力转移,该项目目前处于半弃坑状态,未来更新计划有待确定。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-08-13
2024-04-26
2024-08-21
2024-07-09
2024-06-13
2024-08-04
2024-04-11
2024-07-18
2024-07-01