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)
下载后如下所示:
然后安装一下开发包依赖: 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分钟……
还得是Windows,40秒搞定~
当然可以直接使用如上代码来跑,生成wav文件来听,这里有个更方便的形式,就是下载个网页端来运行,可以直接调节各个参数,方便测试。
这里可以clone代码,代码克隆下来后,修改下app.py文件,把里面的模型地址改为本地并删除modelscope的下载代码即可。
注意,在Windows平台的话,目前看是需要在WSL的子系统下运行,直接在Windows系统下运行会不支持PyTorch的JIT模式,在Linux或Mac运行更好,这里的Win有显卡,就用WSL了。
接着python app.py
即可启动服务,然后,在浏览器可以htp://localhost:7860
打开,根据自己需要输入文字和调整参数,即可生成并播放语音了。