AI知识库

53AI知识库

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


ChatTTS:全场景实测,附生成文件
发布日期:2024-06-22 06:33:01 浏览次数: 2252 来源:WayToAGI Agent探索



 


长话短说

ChatTTS 一夜爆火, 极速出圈, 3 天就斩获 9k 的 Star 量, 截止 2024.06.03, 已经 16.6k 的 star, 极速接近 GPT-soVITs 当天的 26.2k 的 star 数。 经测试,优点

  • 真实度和自然度很惊艳

  • 更好的韵律: 能生成接近真人音色的语气语调

  • 这个TTS应该是目前对中文支持最好的了 

  • 中英混合也没问题

  • 细粒度控制: 能够预测和控制细粒度的韵律特征,如笑声、停顿和插话等

  • 自然流畅的语音合成,同时支持多说话人

  • 同时提供预训练模型


缺点:

  • 当前推理速度慢,无法应用在实时语音场景。用在离线场景,需要大量的后期修正工作。

  • 对于阿拉伯数字,标点符号,refine后效果不太好

  • 有时候会出现不稳定,自动删除或者增加一些内容在句子里比如输入的内容是“你吃饭了没”,会莫名把句子改写一下变成了,“好吃,你吃饭了没”这种情况

  • 读绕口令也有人的那种卡顿(效果不稳定)



ChatTTS的TTS模型「TTS全称:Text To Speech(也就是文本转语音模型)

该模型经过超过10万小时的训练,公开版本在 HuggingFace 上提供了一个4万小时预训练的模型。作者还留着一个10w小时训练数据的版本




效果试用

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



语音效果

效果确实很不错, 接近真人语音语调。但是和 GPT-SoVITS 比起来并没有更惊艳, 不过对比起来它用的更接近日常普通人的音色, 可能会给人感觉更接近真实。  对比参考:

https://waytoagi.feishu.cn/wiki/StNuwZqh7iC2utkbxaNck9Gnn4e


运算速度

基于 L4 GPU 本地部署, 22s 的音频需要 12s 的推理时间。

如果用 4090, 速度差不多是 L4 的 2 倍, 也就是差不多需要 6s 左右。

当然这个模型还没有做优化, 如果做了优化, 有希望在 4090 上只用 2~3s 推理时间。


功能试玩




一、音色更换


原始内容

Audio seed: 2; Text seed: 42; input text: 每个孩子是生下来就自带大模型的,他们天然有超强的数据处理能力。家庭教育是让孩子的大模型“本地化”。我们对孩子的教育,就是一种大模型的微调,最多起到 10%的作用。我们要做的是顺势而为,让孩子的先天大模型发挥最好的作用。


处理后

每 个 孩 子 是 生 下 来 就 自 带 大 模 型 的 [uv_break] , 就 他 们 天 然 有 超 强 的 数 据 处 理 能 力 [uv_break] 。家 庭 教 育 是 让 孩 子 的 大 模 型 [uv_break] 本 地 化 [uv_break] 。我 们 对 孩 子 的 教 育 , 其 实 就 是 一 种 大 模 型 的 微 调 [uv_break] , 最 多 起 到 百 分 之 十 的 作 用 [uv_break] 。我 们 要 做 的 是 顺 势 而 为 [uv_break] , 让 孩 子 的 先 天 大 模 型 发 挥 最 好 的 作 用 。

原始内容

Audio seed: 2; Text seed: 884952 ; input text: 每个孩子是生下来就自带大模型的,他们天然有超强的数据处理能力。家庭教育是让孩子的大模型“本地化”。我们对孩子的教育,就是一种大模型的微调,最多起到 10%的作用。我们要做的是顺势而为,让孩子的先天大模型发挥最好的作用。


处理后

每 个 孩 子 是 生 下 来 就 自 带 大 模 型 的 [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%的作用。我们要做的是顺势而为,让孩子的先天大模型发挥最好的作用。




二、语气停顿更换


这是 chatTTS 中最有价值的功能。目前开源项目提供了三个提示词, 玩法类似 Suno 里的提示词, 这些词不会被直接念出来, 但是会结合上下文来调整原有语音。从官方说法, 他们将逐渐支持更多这类嵌入的提示词 (见下图)。

下面是一些测试

笑:[laugh]

我 遇 到 四 川 小 吃 真 的 特 别 开 心 。哎 , [laugh]  , 。比 如 甜 水 面 [uv_break] 、 赖 汤 圆 [uv_break] 、 蛋 烘 糕 、 叶 粑 等 , 这 些 小 吃 口 味 温 和 , 超 喜 欢 的 。  [uv_break] , [laugh] ,

PS: 这里得配合一些真的开心的语句, 不然貌似生成时要么笑声诡异, 要么直接念单词... 还没找到规律怎么能用的特别好。

笑:[laugh]

我 遇 到 四 川 小 吃 真 的 特 别 开 心 。哎 , [laugh]  , 。比 如 甜 水 面 [lbreak] 、 赖 汤 圆 [lbreak] 、 蛋 烘 糕 、 叶 粑 等 , 这 些 小 吃 口 味 温 和 , 超 喜 欢 的 。  [uv_break] , [laugh] ,

PS: 这一段和上面一段的 audio seed 都是 2, text seed 没使用, 但是音色就是不同的。这里进一步证明了它不同的停顿效果, 音色会变。不可控。





三、念数字

常用数字组合

不用 refine text 的情况下, 可念对

我有一件帽衫,是我用598123块钱买的。可以和你换那个0.1个比特币吗?

非常用数字组合

但是如果比如用不同的后缀就不一定能读, 会直接读数字。

我有一件帽衫,是我用598123越南盾买的。可以和你换那个0.1个比特币吗?





四、中英文混搭


常用数字组合

很有意思, 带口音的英语。估计日本人的英语训练出来口音更重。测试了 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 以上显存。


简单步骤如下:

1. 下载代码仓库

git clone https://github.com/2noise/ChatTTS.git

2. 安装依赖 (⚠️ 这里有两个依赖它没有放在 requirement.txt 里)

cd ChatTTSpip install -r requirement.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: 即将开启的端口号

  • ocal_path: 模型存储的本地路径


4. 第一次启动后生成语音时, 需要看下控制台输出, 它会下载一些模型文件, 因此比较慢, 而且可能因为网络的问题有各种失败。但是第一次加载成功了, 后面就顺利了。


5. 基于这个基础已经可以开始拓展了, 比如把它集成到 agent 的工具中去, 比如结合 chatgpt 来做更拟人化的实时沟通。


6. webui 上可以设置的几个参数说明:(参考下图)

  • text:指的是需要转换成语音的文字内容。

  • Refine text:选择是否自动对输入的文本进行优化处理。

  • Audio Seed: 语音种子, 这是一个数字参数,用于选择声音的类型, 默认值为 2,是一个很知性的女孩子的声音。

  • Text Seed: 文本种子, 这是一个正整数参数,用于 refine 文本的停顿。实测文本的停顿设置会影响音色, 音调。

  • 额外提示词 (可以写在 input Text 里):用于添加笑声、停顿等效果。例如,可以设置为[oral_2][laugh_0][break_6]。






目前存在的问题


语音生成基本功能

  • 支持的语音时长不超过 30s, 超过 30 秒的需要特别修复。

  • 某些 audio seed 在念某些语句时会丢失一些语句。

  • Refine 过程中有些字会被丢失, 比如“儿童节”在大概率会被 refine 成“童节”, 丢失一个“儿”字。 

    • 解决方法:跳过自动 refine, 以手动修改文本的方式来控制停顿。

  • 即使同一个 audio seed, 如果使用不同的语句分段方式, 或者不同的 text seed, 生成的音色也不是很稳定, 会给人感觉不是同一个人的声音。


代码 Bug

uv_break 等提示词可能会在 refine 之后缺少[], 甚至有时候在有中括号的情况下也会被念出来, 听多了, 容易被洗脑, 不自觉的自己说话也念出 uv break 作为口头禅。  (多听几遍, 很有那种 m3?的洗脑上头效果?)


  

没提供微调 SFT 的接口

当然在底模已经提供的情况下, 我们自己调用模型来做微调是可以的, 但是项目本身没有提供相关的代码, 对于大多数人来说, 微调, 或者说声音克隆就成了一个门槛。




本模型特别声明

不支持商用, 仅用于学术研究


  • ⚠️ 在生成的语音内, 作者加了听不见的噪音水印, 可以很容易的被检测出来是他的模型生成的语音。

  • ChatTTS 还没放出训练代码无法自己克隆声音

  • 作者还只放出了4w小时训练的版本,确保这个模型的声音能被ai检测出来。作者还留着一个10w小时训练数据的版本




关于 chatTTS 未来的思考


1. 产品化

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


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

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




相关链接


Huggingface

https://huggingface.co/2Noise/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


ChatTTS出来好几天了,一直没看见replicate上有能直接运行的模型项目,就自己动手写了一个。

链接:https://replicate.com/thlz998/chat-tts

设置为public的,可以直接运行或者调用API。




其他TTS项目


Bark 

是 Suno AI 提出的基于 transformer 的 TTS 模型。该模型能够生成各种音频输出,包括语音、音乐、背景噪音以及简单的音效。此外,它还可以产生非语言语音,如笑声、叹息声和抽泣声等。其中以语气和笑声效果作为主要优势。

https://github.com/suno-ai/bark


Piper TTS(Text-to-Speech)

是一个基于神经网络的文本到语音系统,专门为低功耗计算机和硬件如树莓派(Raspberry Pi())优化。其核心在于快速、灵活且易于部署的文本到语音解决方案,特别适合需要在资源受限的设备上运行的场景。

https://github.com/rhasspy/piper


GradTTS

作为灵活性架构模型的代表,其通过结合扩散概率模型()、生成分数匹配和单调对齐搜索等先进技术,提供了一种高效且高质量的文本到语音解决方案。其灵活的框架和广泛的应用前景使其成为当前文本到语音领域的一个重要里程碑。

https://github.com/WelkinYang/GradTTS


Matcha-TTS 

提供了一种高效、自然且易于使用的非自回归神经TTS解决方案,适用于多种应用场景。

https://github.com/shivammehta25/Matcha-TTS


bertvits2

FishAudio下的全新自回归TTS Fish-Speech现已可用,效果为目前开源SOTA水准,且在持续维护,推荐使用该项目作为BV2/GSV的替代。本项目短期内不再进行维护

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


Fish-Speech

FishAudio下的全新自回归TTS Fish-Speech现已可用,效果为目前开源SOTA水准,且在持续维护,推荐使用该项目作为BV2/GSV的替代支持中/日/英三语合成

https://github.com/fishaudio/fish-speech

推理地址:

https://fs.firefly.matce.cn/

项目开发&FishAudio leader:@冷月2333

Demo Video: 

https://www.bilibili.com/video/BV18E421371Q 

Tech slides Video: 

https://www.bilibili.com/video/BV1zJ4m1K7cj





其他开源声音克隆

倪小末推荐


GPT-SoVITS

https://github.com/RVC-Boss/GPT-SoVITS

对中、英、日语言支持良好,需要 10 分钟左右干素材,瞬时 clone 功能未开放。


OpenVoice

https://github.com/myshell-ai/OpenVoice

对中文支持较好,主打瞬时 clone,发展势头良好,一个月前测试时中文声音 clone 有英语味道。

 


一些补充

来自官方 FAQ



连不上HuggingFace

请使用modelscope的版本. 并设置cache的位置:

chat.load_models(source='local', local_path='你的下载位置')


我要多少显存? Infer的速度是怎么样的?

对于30s的音频, 至少需要4G的显存. 对于4090, 1s生成约7个字所对应的音频. RTF约0.3.


模型稳定性似乎不够好, 会出现其他说话人或音质很差的现象.

这是自回归模型通常都会出现的问题. 说话人可能会在中间变化, 可能会采样到音质非常差的结果, 这通常难以避免. 可以多采样几次来找到合适的结果.


除了笑声还能控制什么吗? 还能控制其他情感吗?

在现在放出的模型版本中, 只有[laugh]和[uv_break], [lbreak]作为字级别的控制单元. 在未来的版本中我们可能会开源其他情感控制的版本.


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

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

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

联系我们

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

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询