AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Stuart:一夜爆火的 ChatTTS 实测
发布日期:2024-06-04 15:42:00 浏览次数: 3404


·
·

本文作者:许键 Stuart


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小时训练数据的版本。


01

效果试用


来自本地部署模型的推理和语音效果:


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 产生更接近人的情感, 语气和语速。 

相比之下它的中英文混搭效果更自然, 念数字也会考虑“个十百千万”, 而不是单调的念数字。



02

安装部署


在 linux 上部署很简单, 比 GPT-SoVITS 更容易, 不需要自己下载模型放模型。当然本地部署的前提, 依旧是你有一张 GPU 显卡, 4G 以上显存。


简单步骤如下:

  1. 下载代码仓库

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]。




03

目前存在的问题


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小时训练数据的版本。


04

关于 chatTTS 未来的思考


1. 产品化

这只是一个基础模型, 包括 webui 也只是写的一个建议的演示。使用下来, 如果需要产品化, 需要通过大量的测试, 来固化配置几种音色, 并赋予他们从文字上比较容易理解的音色标签, 方便用户选择。比如 “可爱萝莉音”, “男娘音”之类的。同时它 1 秒才生成 1~2 秒音频的推理速度也是值得诟病的一个问题, 需要极大的优化。


2. 合成检测和声音版权问题 

从声音的拟人化越来越像开始, 社会上就一直在思考这两个问题:反诈骗, 和声音的版权。相信未来这两个领域会随着 TTS 越来越成熟, 也越来越急迫需要得到解决。



05

相关链接


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。



06

其他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)系统,支持多种语言的高质量语音合成,并提供了便捷的网页用户界面,但由于项目组精力转移,该项目目前处于半弃坑状态,未来更新计划有待确定。


项目地址:

https://github.com/fishaudio/Bert-VITS2


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询