ChatTTS文本转语音初体验

前言

随着2022年末GPT3.5的发布,确实开启了AI领域的新篇章,各类模型如雨后春笋般层出不穷,前几天光逛github的时候发现了一个有意思的开源项目,即ChaTTS。

在当今的数字时代,文本到语音(Text-to-Speech, TTS)技术已经成为增强用户体验的重要工具。从语音助手到虚拟客服,再到无障碍阅读,TTS 技术的应用无处不在。

而ChatTTS就是用于对话场景的文本转语音,自己使用代码测试了下发现输出的语音文本还是较为自然的。这篇文章会介绍ChatTTS这个项目及目前其开源版本的一些不足。

ChatTTS

官网地址: https://chattts.com/zh

github地址: https://github.com/2noise/ChatTTS/

简单介绍: ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本。

(ps: 开源版本作者为了规避风险,对输出的语音内容增加了少量额外的高频噪音,并用mp3格式尽可能压低了音质,所以实际的模型效果可能效果会更好)

特点:

我们首先来看一下官方的一个示例

1
2
3
4
5
输入内容:
四川美食确实以辣闻名,但也有不辣的选择。比如甜水面、赖汤圆、蛋烘糕、叶儿粑等,这些小吃口味温和,甜而不腻,也很受欢迎。

输出内容:
四 川 美 食 确 实 以 辣 闻 名 , 但 也 有 不 辣 的 选 择 [uv_break] 。 比 如 甜 水 面 、 赖 汤 圆 、 蛋 烘 糕 、 叶 儿 粑 等 [uv_break] , 这 些 小 吃 口 味 温 和 , 然 后 甜 而 不 腻 [uv_break] , 也 很 受 欢 迎 [uv_break] 。

可以感受到整体的语音效果还是非常自然流畅的,其中使用了[uv_break] 作为字级别的控制单元,起到了停顿的作用,目前开源的版本中除了 [uv_break] 、还支持[laugh] 笑声来控制,在其未开源的版本中其实支持更多可用的调试参数来控制不同的语音情感。

Demo

自己在colab 跑了下ChatTTS这个模型。ChatTTSDemo,如有需要可以自行上去调试使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//引入ChaTTS
!git clone https://github.com/2noise/ChatTTS
!mv ChatTTS chatts
!mv chatts/* .

//引入依赖环境

!pip install torch ChatTTS
!pip install vector-quantize-pytorch
!pip install -q condacolab
import condacolab
condacolab.install()
!conda install -c conda-forge pynini=2.1.5
!pip install WeTextProcessing

//加载模型
import torch
from ChatTTS.core import Chat
from IPython.display import Audio, display

chat = Chat()
chat.load_models()

# 定义要转换为语音的文本
texts = ["你好,欢迎使用ChatTTS!"]

# 生成语音
wavs = chat.infer(texts, use_decoder=True)

# 播放生成的音频
Audio(wavs[0], rate=24_000, autoplay=True)

我测试的时候分别体验了两个声音参数,识别了两段不同的文本。

第一段: 女声参数wavs[0], 采样频率 2400,场景:日常对话

1
你们都在说Crush[laugh],那我又是谁的Crush呢[laugh]?

可以听出来模型生成出来的女声还是非常自然的,并且带了笑声参数,还是怪动听的!嘿嘿

第二段: 女声参数wavs[1], 采样频率 2400, 场景:诗词歌赋

1
豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;人杰地灵,徐孺下陈蕃之榻。雄州雾列,俊采星驰。台隍枕夷夏之交,宾主尽东南之美。

这个结果可以看到是有点一言难尽。很多字的发音都不清晰,即使有标点符号,但是顿挫感也不清晰。只能说这个模型在中文语音合成方面还是有一些不足的,但是可以作为语音合成模型的一个参考。

结束语

以上就是ChatTTS模型的相关内容。目前开源的模型只支持30s的语音合成,并且从我们的验证效果来看,开源本本部分的语音文字生成还存在持续优化细调的空间。
如果有需要大家可以私有化部署一下进行测试使用,或者目前已经有基于ChatTTS开发的windows、macos的软件整合包,大家可以自行查找下载使用。