
ChatTTS-UI 本地 TTS 部署实操笔记从页面跑通到接入 API 的 4 步流程【免费下载链接】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-uiChatTTS-UI 是一个基于 ChatTTS 模型的本地文字转语音工具输入中英文、数字、符号混杂的文本就能在网页上直接合成试听同时对外暴露 HTTP API 供自己的程序调用。这篇笔记按实际使用顺序走一遍先把服务跑通再调环境、管音色最后接上 API。第一步把本地 TTS 服务跑起来3 种启动方式任选 按系统选路径Windows 预打包、Linux 源码、Docker 容器只是想在 Windows 上快速体验从 Releases 里下预打包版解压后双击 app.exe 就能用不用配 Python。个别安全软件会误报遇到就换源码方式。开发和生产环境走源码部署。先准备 Python 3.9~3.11推荐 3.103.12 会在启动时报 Dynamo not supported接着按顺序执行git clone https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui cd ChatTTS-ui python3 -m venv venv source venv/bin/activate pip install -r requirements.txt pip install torch2.7.1 torchaudio2.7.1 python app.py启动后浏览器会自动打开默认地址http://127.0.0.1:9966。云服务器上部署的话Docker 最省事项目自带 gpu/cpu 两套 compose 文件docker compose -f docker-compose.gpu.yaml up -d模型文件首次启动怎么拿离线环境怎么办模型不用手动操心。首次启动时 app.py 会探测网络能连上 huggingface 就从那边拉连不上自动切到阿里 ModelScope。模型约 2GB落在models/目录下磁盘留足空间内存建议 8GB 起步。有两个坑提前说明ModelScope 通道不能开着代理下载下载前把代理关掉否则会失败完全离线的环境需要手动把模型包解压到models/pzc163/chatTTS/再启动服务会直接用本地文件。若启动时报缺spk_stat.pt从模型仓库单独取这个文件补到asset/子目录即可。环境调整在 .env 里配好地址与运行设备 ⚙️改 WEB_ADDRESS让局域网能访问默认127.0.0.1:9966只允许本机访问。要让同网段的其他机器调用改项目根目录的.env文件就三行关键配置WEB_ADDRESS0.0.0.0:9966 compilefalse devicecpuWEB_ADDRESS改成0.0.0.0表示监听全部网卡局域网客户端改用服务器 IP 访问device缺省是自动探测 cuda/mps也可以手动钉死compile控制是否启用 torch.compile仅 Linux/macOS 支持。什么时候会被强制用 CPU规则很简单英伟达显卡显存大于 4G 且装了 CUDA 12.8自动走 GPU显存低于 4G 一律退回 CPU。Windows 上 torch.compile 不受支持启动时若报编译相关错误把.env里compile设为false就行。有卡却跑在 CPU 上时先卸载 torch 再重装 CUDA 版本通常能解决。音色管理往 speaker 目录丢一个文件就是固定音色 csv 和 pt 文件是怎么被识别的speaker/ 目录放的就是音色。把xxx.csv或xxx.pt丢进去API 的voice参数传xxx可不带扩展名就固定用这个声音。传一个匹配不到文件的数字也没关系程序会把它当随机种子现生成一个音色并缓存下来。有一点要有预期同一音色种子在不同设备上合成的声音会有差别音调尤其明显这是模型特性不是部署出了错。老版本音色用自带脚本批量转换0.96 版本之后音色文件格式变了手里要是有一批老格式的seed_xxx_emb.pt不用一个个手动转跑一遍项目里带的脚本python cover-pt.py它会批量把旧文件转成新格式按xxx_emb-covert.pt的规则重命名转换完直接可用。接入自己的系统用 requests 调 /tts 接口 一个 POST 请求返回音频文件地址服务跑通后接入现有程序只需要发一个 POSTimport requests res requests.post(http://127.0.0.1:9966/tts, data{ text: 你好这是一段本地语音合成测试, voice: 2222, temperature: 0.3, top_p: 0.7 }) print(res.json())成功时code0audio_files数组里每个元素带 wav 的本地路径和可下载的 url失败是code1msg给出原因。批量任务按文本循环调用即可每次请求相互独立。最影响听感的 3 个采样参数常用参数记住这几个就够temperature默认 0.3调低声音更稳定统一提到 0.5 左右更自然生动top_p默认 0.7和top_k默认 20共同圈定采样范围默认值一般不用动skip_refine默认 0设 1 跳过文本精炼阶段保留原始节奏、等待更短其余像prompt嵌入[laugh_0]、[break_6]控制笑声和停顿、speed1~9 控制语速默认 5按需加就行。跑起来之后的运维看日志、清音频文件 日志和生成的 wav 都存在哪里日志按天写入logs/目录合成出问题先翻最近的 WARNING 记录。音频统一落在static/wavs/下文件名里带了推理耗时、音色种子、采样参数、文本长度这些信息回头做参数对比实验时很好查。一个接口清空音频目录长期跑下来 wav 会越积越多POST 一次/clear_wavs就能清空。另外每次合成结束后服务会自己释放显存缓存连续高频调用也不用额外操心显存堆积。到这里本地语音合成的服务、环境、音色、接口四块就都落地了自己用就开网页调参数给别人用就把http://你的IP:9966/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),仅供参考