ChatTTS本地部署教程:5分钟搭一套免费的文字转语音服务
【免费下载链接】ChatTTS-ui一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesize text into speech, along with support for external API interfaces.项目地址: https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui
需要批量产出配音,又不想把文本交给云端、不想按字数付费?ChatTTS-ui 就是为此而生的本地方案:一个网页界面,把中英文混杂、带数字符号的文本合成为自然语音,同时对外暴露 REST 接口,方便接进你现有的程序。按下面的步骤走,从空机器到第一条语音,大概 5 分钟。
先确认你属于哪类人
这个项目适合三种情况:
- 内容制作:要批量合成中文、中英混杂的旁白,且希望同一句子的音色可固定复用
- 开发者:字幕、配音、朗读类应用需要一个可私有的 TTS 接口
- 隐私敏感:文本不能离开本机,或团队内部部署、多人共用一台机器
如果你的需求只是偶尔转几句话,云 TTS API 反而更省事,没必要折腾本地部署。
5分钟跑通:预打包版最快
Windows 用户从 Releases 下载压缩包,解压后直接双击app.exe,浏览器会自动打开http://127.0.0.1:9966。
两个注意点:
- 部分安全软件会误报病毒,可临时放行或改走源码部署
- 英伟达显卡显存大于 4G 且安装了 CUDA 12.8+ 才会启用 GPU 加速,否则自动回退 CPU
源码部署:Linux / macOS / Windows 三条路
三种系统的流程一致,只是装 torch 的方式不同。以 Linux 为例,要求 Python 3.9–3.11(3.12 以上会报 Dynamo 错误):
mkdir -p /data/chattts && cd /data/chattts git clone https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui . python3 -m venv venv source ./venv/bin/activate pip3 install -r requirements.txtCPU 版直接装基础 torch;GPU 版追加--index-url https://download.pytorch.org/whl/cu128并装好 CUDA 12.8+:
pip3 install torch==2.7.1 torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu128最后一步统一是:
python3 app.py启动后浏览器自动打开,默认地址http://127.0.0.1:9966。macOS 用户额外执行brew install libsndfile libomp;Docker 用户则只需一条命令:
docker compose -f docker-compose.gpu.yaml up -d # CPU 换成 docker-compose.cpu.yaml首次启动会自动下载 ChatTTS 模型,优先从魔塔 modelscope 拉取,连不上再走 huggingface。🔊 这一步是唯一耗时的环节,下完就缓存在本地了。
网页界面能做什么
界面由 templates/index.html 渲染,按系统语言自动切换中英文,核心控件就这几类:
| 控件 | 说明 |
|---|---|
| 文本框 | 按行输入,每行合成一段;支持数字、符号与控制符混杂 |
| 音色选择 | 读取speaker/目录下的 csv / pt 音色文件,也可填一个数字随机取音色 |
| 控制符 prompt | 如[oral_2][laugh_0][break_6],控制口语度、笑声、停顿 |
| 采样参数 | temperature(默认 0.3)、top_p(0.7)、top_k(20) |
| 自定义音色种子 | 填大于 0 的整数,比voice参数优先级更高 |
合成结果统一是 24kHz 的 wav,落在static/wavs/目录,页面上可直接试听和下载。
接入你的程序:/tts 接口
对外接口定义在 app.py,POST http://127.0.0.1:9966/tts,唯一必填参数是text:
import requests res = requests.post( 'http://127.0.0.1:9966/tts', data={"text": "你好,这是 ChatTTS 本地合成的语音", "voice": "3333"} ) print(res.json()) # 成功: {code:0, msg:"ok", audio_files:[{filename:本地wav路径, url:可下载地址, ...}]} # 失败: {code:1, msg:错误原因}按需再加这些可选参数:
prompt:控制符,如[oral_2][break_6]custom_voice:自定义音色种子,设置后忽略voicetemperature/top_p/top_k:随机性控制speed:语速,默认 5wav=1:直接返回 wav 文件而不是 JSON
audio_files里同时给了本地绝对路径和 http 下载地址,按你的场景取一个即可。
常见报错怎么解
九成问题都能在下面这条清单里对号入座,完整列表见 faq.md:
| 症状 | 处理 |
|---|---|
| modelscope 下载报 ProxyError | 从魔塔下模型时关闭代理;国内连不上它才会回退 huggingface |
缺spk_stat.pt或path.yaml | 模型不完整,手动补齐到models/pzc163/chatTTS/对应子目录 |
cannot find a working triton installation | 打开.env,把compile=true改成compile=false |
| 有 GPU 却慢、走 CPU | 显存低于 4G 会强制 CPU;否则卸载 torch 重装 cu128 版本 |
| 同种子音色对不上 | 正常现象:跨机器、甚至同机器多次合成,音色都可能漂移 |
地址和端口想改就编辑 .env 里的WEB_ADDRESS,比如改成192.168.0.10:9966让局域网访问,device字段可手动指定cpu/mps/cuda。
上线前检查清单
- Python 在 3.9–3.11 区间(3.12 会报 Dynamo 不支持)
- torch 版本 2.7.1,GPU 用户确认装的是 cu128 版本
- 首次启动已让模型下载完毕(
models/目录) .env中WEB_ADDRESS是你想要的监听地址- 浏览器打开
http://127.0.0.1:9966成功合成出一句语音
机器只启动这一次最费时,之后每一次合成都是本地免费完成——文本不出门,接口随你调。
【免费下载链接】ChatTTS-ui一个简单的本地网页界面,使用ChatTTS将文字合成为语音,同时支持对外提供API接口。A simple native web interface that uses ChatTTS to synthesize text into speech, along with support for external API interfaces.项目地址: https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考