ChatTTS是一个专门为对话场景设计的文本转语音模型,目前支持中文和英文,其庞大的版本历经10万小时的双语数据训练,该模型专注于增强对话场景的表现,能够精准预测并精细调控语音中的韵律特征,如:笑声、停顿及插入语等,因此生成的语音既自然又流畅。

下面下载模型先,脚本如下:

import os
from modelscope import AutoTokenizer, AutoModelForCausalLM, snapshot_download

allow_patterns = ["*.*"]
repo_id = 'pzc163/chatTTS'
# 本地保存模型相关文件的路径
local_dir = "./chatTTS"

if not os.path.exists(local_dir):
    os.makedirs(local_dir)

model_dir = snapshot_download(model_id=repo_id,cache_dir=local_dir)

下载后如下所示:

ChatTTS体验_ChatTTS

然后安装一下开发包依赖: pip install chattts-fork

from ChatTTS import Chat
from IPython.display import Audio
import soundfile as sf

chat = Chat()
chat.load_models(source = 'local', local_path = '/Users/linjk/Documents/usr/models/embedding/chatTTS/pzc163/chatTTS')

# 网上随便找份文本
texts = ['九月,无声降临,时光,匆匆离去。不经意间,二零一五年又静悄悄地走过了大半个年头。在我的心里,或许,远去的只是风景,或许,离去的只是时光,而遗留在心海的却是一幕幕永生难忘的回忆。念,时时烙在夜寂寞的心弦;爱,默默掩埋在心的无边大海。心与爱,早已浑然一体;爱与心,己渐渐融化成水,并汇聚成波涛汹涌的大海,只为奔腾颠簸生活的激流,只为沐浴飘摇人生的风雨,只愿可以快乐地抒写出一切有关心与爱的绚丽的诗篇!让一颗沉睡已久的心,欣欣然地盛放出一朵朵亮丽幽香的小花,从此,明媚了蓝天,娇艳了云霞,也彻底地斑斓了一段段如歌的岁月。']

wavs = chat.infer(texts, use_decoder=True)
Audio(wavs[0], rate=24_000, autoplay=True)

audio_data = wavs[0]
if len(audio_data.shape) > 1:
    audio_data = audio_data.flatten()

output_file = './test.wav'
sf.write(output_file, audio_data, 24_000)
print(f"audio saved to {output_file}")

然后即可打开“test.wav”运行体验下了。

五年的老机MBP,纯CPU还是慢啊,耗时近4分钟……

ChatTTS体验_ChatTTS_02

还得是Windows,40秒搞定~

当然可以直接使用如上代码来跑,生成wav文件来听,这里有个更方便的形式,就是下载个网页端来运行,可以直接调节各个参数,方便测试。

这里可以clone代码,代码克隆下来后,修改下app.py文件,把里面的模型地址改为本地并删除modelscope的下载代码即可。

ChatTTS体验_ChatTTS_03

注意,在Windows平台的话,目前看是需要在WSL的子系统下运行,直接在Windows系统下运行会不支持PyTorch的JIT模式,在Linux或Mac运行更好,这里的Win有显卡,就用WSL了。

接着python app.py即可启动服务,然后,在浏览器可以htp://localhost:7860打开,根据自己需要输入文字和调整参数,即可生成并播放语音了。

ChatTTS体验_ChatTTS_04