ChatTTS-UI 本地语音合成:5 分钟跑通第一条语音,再搭好 API 服务
2026/8/24 3:40:24 网站建设 项目流程

ChatTTS-UI 本地语音合成:5 分钟跑通第一条语音,再搭好 API 服务

【免费下载链接】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 是一个跑在本地浏览器里的文字转语音工具,底层是 ChatTTS 模型,支持中英文和数字混合输入,同时带一套 /tts 接口,方便把语音能力接进自己的程序。适合想自己搭 TTS 服务、又不想碰云 API 的开发者。

5 分钟跑通第一条语音

最短路径分五步,全程在终端里敲命令:

git clone https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui cd ChatTTS-ui python3 -m venv venv && source venv/bin/activate # Windows 用 venv\Scripts\activate pip install -r requirements.txt pip install torch==2.7.1 torchaudio==2.7.1 python3 app.py

最后一条命令跑起来后会自动打开浏览器,默认地址http://127.0.0.1:9966。首次启动会先下载模型(约 2GB):程序检测 huggingface.co 是否可达,可达就从那里拉,不可达就自动切到 modelscope。

几个直接决定成败的点:

  • Python 版本锁在 3.9-3.11,推荐 3.10,3.12 会直接报错(见下文速查表);
  • 走 modelscope 下载时必须关代理,开着会报 proxy 错误;
  • 需要约 8GB 内存和 10GB 空闲磁盘;
  • 想上 GPU 加速:N 卡显存大于 4GB 且装好 CUDA 12.8+ 即可,显存不足 4GB 会强制走 CPU。

进入页面后输入一段文字,点合成,等几秒就能试听。声音落盘在static/wavs/目录,页面里可直接下载。

按场景选部署路线

场景推荐方式环境要求
个人体验,不碰代码Windows 预打包版:解压后双击 app.exeWin10/11;N 卡显存 >4GB 且 CUDA 12.8+ 才启用 GPU
定制开发,Linux/macOS 服务器源码部署:venv + pip 装依赖后运行 app.pyPython 3.9-3.11,约 8GB 内存
云服务器 / 微服务Docker:docker compose -f docker-compose.gpu.yaml up -d(CPU 机换 cpu 版)Docker,GPU 机需 NVIDIA 驱动

compose 文件里已经配好WEB_ADDRESS: 0.0.0.0:9966和端口映射,容器起来后直接访问IP:9966。N 卡显存大于 4GB 但源码部署后仍走 CPU,多半是 torch 装成了 CPU 版,卸载重装 CUDA 版即可。

踩坑速查

现象原因处方
启动报Dynamo is not supported on Python 3.12torch.compile 不支持 3.12+换 Python 3.10 重建虚拟环境
下载模型报ProxyError: ...modelscope.cn...modelscope 与代理冲突关闭代理重试
Missing spk_stat.pt模型文件不完整补下该文件放入models/pzc163/chatTTS/asset/
Windows 报Windows not yet supported for torch.compiletorch.compile 不支持 Windows在 .env 里设compile=falsedevice=cpu
合成时报Normalizer pynini ... nemo_text_processing新版中文文本处理依赖装不上在 ChatTTS/core.py 约 143 行起注释相关 7 行,或调用时传do_text_normalization=False

把它变成能调用的语音服务

服务起来后,POST http://127.0.0.1:9966/tts就是完整的 REST 接口。一次最小调用:

import requests r = requests.post('http://127.0.0.1:9966/tts', data={'text': '你好,欢迎使用 ChatTTS', 'voice': '2222', 'temperature': 0.3, 'top_p': 0.7, 'top_k': 20, 'speed': 5, 'wav': 1}) print(r.headers['Content-Type']) # 加了 wav=1 直接返回音频

响应是 JSON:code=0表示成功,audio_files里每个元素带filename(服务器上的绝对路径)和url(可直接下载的 wav 地址);失败则返回code=1加错误信息。参数一览:

参数含义建议值或范围
text要合成的文字,必填,支持换行分段
voice音色:2222/7869/6653/4099/5099等预置值,任意数字则按该种子随机生成默认2222
custom_voice自定义音色种子,大于 0 时优先于 voice默认 0(不启用)
prompt风格控制,笑声、停顿等[laugh_0][break_6]
temperature采样随机性,越小越稳、越自然越大默认 0.3
top_p核采样阈值默认 0.7
top_k采样候选词数量默认 20
speed语速档位1-9,默认 5
skip_refine是否跳过文本优化阶段0/1,默认 0
text_seed文本生成种子,固定结果可复现默认 42
is_stream流式返回0/1,默认 0
wav为 1 时接口直接吐 wav 文件而非 JSON默认 0

音色管理三件事:固定音色把 csv 或 pt 文件丢进 speaker/ 目录即可;想每次同一种声音就传固定custom_voice种子(注意同一设备同一种子也可能有细微差异,音调尤其明显);0.96 版本后下载的seed_开头 pt 文件要先跑一次python cover-pt.py转换,生成_emb-covert.pt结尾的新文件,然后删掉原始 pt。

批量场景直接循环调用接口即可,返回的推理时长和音频时长也在audio_files里,方便做统计。

上线前检查清单

  • models/pzc163/chatTTS/模型文件完整,asset/spk_stat.pt存在
  • GPU 机显存 >4GB 且 CUDA 12.8+;否则在 .env 显式写device=cpu
  • 局域网访问需修改 .env 里的WEB_ADDRESS(如0.0.0.0:9966)并重启
  • POST /tts实测返回code=0,浏览器打开返回的 url 能播放
  • 确认static/wavs/磁盘空间够,必要时定期调用/clear_wavs清理

跑通后建议先拿默认音色 2222 反复调 temperature 和 speed 找喜欢的组合,锁定参数后把满意的音色存成 csv 放进 speaker 目录长期复用。再深一点可以看 app.py 里 /tts 接口的实现,以及 faq.md 的完整报错列表。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询