ChatTTS是一款由2noise开发的专为对话场景设计的开源文本转语音模型,支持中英双语,具备自然韵律控制和多说话人交互能力。本文对基于Python的ChatTTS本地部署进行具体介绍。

准备工作

从GitHub上把ChatTTS克隆到本地

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

安装依赖库

pip install torch ChatTTS soundfile -i https://pypi.mirrors.ustc.edu.cn/simple/

为了保存音频文件,还需要安装soundfile库。此处均采用中国科大镜像源安装,安装的ChatTTS版本为0.2.4。

第一个程序代码

导入库

import torch
import ChatTTS
import soundfile as sf

初始化ChatTTS

chat = ChatTTS.Chat()
chat.load(compile=True)

值得注意的是,ChatTTS官网中的初始化方法是chat.load_models()由于ChatTTS版本迭代,load_models()已不复存在,须改为load()才能正常运行
第一次运行时需要一段时间来下载一系列文件,并保存在同级目录下的asset文件夹中。

进行语音生成

texts = ["你好,欢迎使用人工智能文字转语音功能"]
wavs = chat.infer(texts, use_decoder=True)

texts列表存储的是用于文字转语音的字符串,可以有一或多个。若运行时出现错误:RuntimeError: narrow(): length must be non-negative.需要确认transformers库版本是否适配。ChatTTS适配的transformers版本为4.53.2,在命令行中尝试:

pip uninstall transformers
pip install transformers==4.53.2 -i https://pypi.mirrors.ustc.edu.cn/simple/

基本可以解决该问题。

保存生成的音频文件

sf.write("test.wav", wavs[0], 24000)

由于texts中只有一个字符串,因此生成的wavs中只有一个元素wavs[0]。若有多个字符串,可用循环实现分别保存为一个wav格式音频文件。

完整代码

import ChatTTS
import torch
import soundfile as sf

chat = ChatTTS.Chat()
chat.load(compile=True)

texts = ["你好,欢迎使用人工智能文字转语音功能"]

wavs = chat.infer(texts, use_decoder=True)

sf.write("test.wav", wavs[0], 24000)

运行结果

运行代码,得到音频文件test.wav:
运行结果
经检验,语音效果自然顺畅,ChatTTS本地部署成功。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐