ChatTTS-ui完整指南:三步从文字到语音
【免费下载链接】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 就是一个跑在本地电脑上的文字转语音(TTS)合成工具——网页上输入文字,直接产出中英数字混杂、语感自然的音频,同时还开放 API 给你的程序调用。下面带你把它跑起来,并调出满意的音色。
如何安装并运行 ChatTTS-ui
你的第一个目标:打开网页,合成出第一段音频。全程不需要改任何配置,默认值就能用。
git clone https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui . python3 -m venv venv && source venv/bin/activate pip3 install -r requirements.txt pip3 install torch==2.7.1 torchaudio==2.7.1 python3 app.pyWindows 用户把第二行换成.\venv\scripts\activate,其余命令不变。
- 首次启动会自动联网下载模型(优先 ModelScope 魔塔,连不上再走 HuggingFace),耐心等进度走完
- 启动后浏览器自动打开
http://127.0.0.1:9966,在文本框输入文字,点"立即合成声音",页面上就能直接播放 - 音色下拉框会自动列出 speaker目录 里的全部音色文件,先用默认的 2222 即可
如何固定音色并合成一段完整讲解
第一段音频到手后,你马上会遇到一个问题:换个种子音色就变了,怎么把某个好听的音色固定下来?页面上有三层控制,各司其职:
- 选内置音色:在"选择音色"下拉框里挑 speaker 目录中的 csv/pt 文件(如 2222.csv、7869.csv),音色完全固定,反复合成不会变
- 填音色值:在"音色值"框填任意大于 0 的整数(如 3000、9000),系统用这个种子生成随机音色,并自动存成
speaker/3000.csv——从此这个数字永久对应同一副嗓子 - 调表达细节:Prompt 框填
[oral_2][laugh_0][break_6]这类控制符,分别调口语感、笑声和停顿;语速滑杆 1~9,默认 5
举个例子,做一段儿童故事配音:音色下拉选 5099,语速拉到 3,Prompt 填[oral_1][laugh_1],出来的读白就会活泼不少。觉得嗓音太"平",把 temperature 从 0.3 往 0.4~0.5 调;追求稳定的播报感就往 0.2 降。
音色与参数推荐值速查
| 参数 | 作用 | 推荐值 |
|---|---|---|
| voice | 从 speaker 目录选固定音色 | 2222 / 7869 / 6653 / 4099 / 5099 |
| custom_voice | 用任意种子生成随机音色,设置后覆盖 voice | 大于 0 的整数 |
| prompt | 控制口语感、笑声、停顿 | [oral_2][laugh_0][break_6] |
| speed | 语速,1 最慢、9 最快 | 5 |
| temperature | 音色随机性 | 0.3;稳定播报用 0.2 |
| top_p / top_k | 采样宽度与候选词数 | 0.7 / 20 |
| text_seed | 文本润色阶段的种子,固定"说话习惯" | 42 |
| skip_refine | 1=跳过文本润色,保留控制符时开启 | 0 |
生成的 wav 存到static/wavs/下,文件名自动标注了参数,例如use14.39s-audio0s-seed1983-te0.1-tp0.701-tk20-textlen5-39593.wav——回头找"这条音频是怎么配的"时非常省事。
如何批量调用语音合成 API
要把一整个字幕文件转成音频,API 才是趁手的工具。向/tts发 POST 请求,参数和网页上一一对应:
import requests res = requests.post('http://127.0.0.1:9966/tts', data={ "text": "大家好,欢迎收听本期节目", "custom_voice": 3333, "temperature": 0.3, "top_p": 0.7, "top_k": 20 }) print(res.json()["audio_files"][0]["url"])返回的url就是可直接下载的 wav 地址;请求里再加wav=1,则直接返回音频流。如果你手上有从外部站点下载的旧版 pt 音色文件(seed_开头、_emb.pt结尾),放进 speaker 目录后执行python cover-pt.py,cover-pt.py 会把它们转成当前内核可识别的格式。
避坑指南:四个常见报错与解决
| 现象 | 原因 | 解决 |
|---|---|---|
| 下载模型失败,报 proxy 类错误 | 开着代理去连 ModelScope,而魔塔不允许代理 | 关闭代理后重启 app.py |
| 显存大于 4G 的显卡仍跑在 CPU 上 | 装的是 CPU 版 torch 或 CUDA 版本过低 | 卸载后重装 cu128 版 torch,并升级 CUDA 到 12.8+ |
| 下载的 pt 音色文件不出现在下拉框 | 旧内核格式与 0.96+ 版本不兼容 | 放进 speaker 目录,运行 python cover-pt.py 转换 |
| 同一音色值在不同机器上声音不同 | 随机音色由采样生成,本身会漂移 | 改用 speaker 目录里的 csv/pt 文件固定音色 |
接下来可以做这三件事
- 打开
.env,把WEB_ADDRESS改成局域网 IP 加端口,让手机和同事也能访问你的合成页 - 挑 3~5 个音色值各合成同一段话,试听后只留下最好听的,组成你的固定音色库
- 写个循环调用
/tts的小脚本,把整本稿子批量转成音频
【免费下载链接】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),仅供参考