ChatTTS-ui 离线部署指南:让语音合成就此告别断网焦虑
2026/9/20 20:52:47 网站建设 项目流程

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 是一款基于 ChatTTS 的本地网页语音合成工具,既能用浏览器直接「打字变语音」,也对外提供 API 接口。本文带你完成 ChatTTS-ui 的离线部署:把模型提前备齐,之后整个合成过程不依赖任何网络,适合涉密环境、内网机房、野外作业和断网区域。

为什么能「无网运行」:先搞懂它的联网逻辑

很多人以为离线部署需要复杂的开关配置,其实不用。翻看主程序 app.py 会发现,它的模型加载逻辑很朴素:

  • 启动时先检查本地models/pzc163/chatTTS目录里的模型是否完整;
  • 完整则直接加载,全程不碰网络;
  • 只有本地文件缺失时,才会尝试联网从模型仓库下载。

也就是说,所谓离线部署只有一件事:在还连着网的那台机器上,让模型完整落盘一次。之后无论是拷到内网、U 盘还是光盘,程序都只读本地文件。合成链路「文本 → 本地分词 → 模型推理 → 音频输出」全部在机器内部完成,断网对音质和速度零影响。

模型文件本身放在 ChatTTS/config/config.py 里定义了相对路径,全部位于asset/子目录下,这也是我们稍后核对文件的依据。

准备工作:联网窗口期完成这三件事

把时间线倒过来想:只有一段联网时间,要把它用在刀刃上。

第一步:拿到源码

克隆一份代码即可(Windows、Linux、macOS 通用):

git clone https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui

第二步:离线安装 Python 依赖

ChatTTS-ui 的依赖清单见 requirements.txt,核心是 torch、Flask、transformers、vocos 等。在联网机器上先按平台把所有 wheel 包下载下来,再连同源码一起打包拷走:

pip download -r requirements.txt -d ./offline_packages

到离线机器上(Python 3.9–3.11,别用 3.12+,会报 Dynamo 不支持):

pip install --no-index --find-links=./offline_packages -r requirements.txt

第三步:让模型完整落盘一次

在联网机器上直接启动一次程序:

python app.py

看到模型下载完成、页面能正常合成后,models/目录就已经齐活了。整个models/文件夹就是你离线部署的「弹药库」,连同源码一起拷走。

动手配置:三步让离线环境跑起来

核对模型文件

离线机器上启动前,先对照 ChatTTS/config/config.py 确认models/pzc163/chatTTS/asset/下这些成员都在:

  • Vocos.safetensors(声码器,负责还原波形)
  • DVAE.safetensors(变分自编码器)
  • gpt/目录(主语言模型权重)
  • Decoder.safetensorstokenizer/Embed.safetensors
  • spk_stat.pt(音色统计参数,缺了它音色无法生成)
  • config/path.yaml(配置入口,缺了会直接启动失败)

任何一项缺失,都会导致启动时报文件找不到,补全后重启即可。

用 .env 声明运行方式

项目根目录的.env文件控制运行行为,离线部署建议这样填:

WEB_ADDRESS=127.0.0.1:9966 device=cpu compile=false
  • device默认是default(显存大于 4G 的 NVIDIA 显卡自动走 GPU),纯 CPU 机器显式写cpu最省心;
  • compile是模型编译开关,离线 CPU 环境关掉可避免一些 triton 相关的报错;
  • WEB_ADDRESS决定服务监听地址,单机自用保持默认即可。

启动并观察日志

python app.py

启动时会打印Starting...,随后加载模型(CPU 上需要十几秒到半分钟不等),浏览器自动打开http://127.0.0.1:9966。运行日志按天滚动写在logs/目录,出问题时从这里找答案。

启动验证:怎么确认服务真的能用了

网页端验证

打开页面,输入一段中文,点合成。能听到自然的人声读出文字(中英文、数字混杂都没问题),网页端就通了。

API 端验证

ChatTTS-ui 同时是 API 服务,离线环境下的自动化调用(比如接入剪辑软件)走同一个入口。最简调用只需要一个text参数:

curl -X POST http://127.0.0.1:9966/tts -d "text=离线语音合成测试成功"

返回 JSON 中code: 0且带audio_files数组(内含 wav 路径和下载地址),说明接口可用。音色用voice参数指定,项目自带了 20 多个预设音色,如222278696653,文件都放在 speaker/ 目录下。

终极验证:拔网线

最后一步最直观——断开这台机器的网络,再跑一次合成。一切照常,恭喜,离线部署完成。

局域网共享:让内网同事一起用

如果希望办公室多台电脑共用一台离线语音合成服务器,只需改.env里的监听地址:

WEB_ADDRESS=192.168.1.100:9966

写成服务器内网 IP(或0.0.0.0:9966放行所有网卡)后重启,同事访问http://192.168.1.100:9966即可。另外项目自带 CPU 版 Docker 部署方案,在容器化环境里执行docker compose -f docker-compose.cpu.yaml up -d也能跑,容器会把./整个挂载进去,models/自然被带上,记得先把模型目录拷进项目。

常见问题速查

症状大概率原因与解法
启动报FileNotFoundError ... path.yaml模型不完整,从联网机器补拷models/pzc163/chatTTS/config/path.yaml
Missing spk_stat.ptasset/目录漏拷了spk_stat.pt,补上即可
cannot find a working triton installation.env里把compile=true改为compile=false
Dynamo is not supported on Python 3.12Python 版本过高,降到 3.9–3.11
合成很慢CPU 推理本就比 GPU 慢,长文本可拆短;内存紧张时减少并发请求
同一音色值每次声音略有差别属正常现象,官方说明不同设备、甚至同设备不同时间,同一种子音色会有漂移

更完整的报错对照见项目自带的 faq.md,离线排障时它就是本地说明书。

进阶优化与日常维护

性能调优(改.env即可):有 4G 以上显存的 NVIDIA 显卡,把device设为defaultcuda并装好 CUDA 12.8+,速度提升明显;GPU 机器可试compile=true进一步加速。

磁盘卫生:每次合成的 wav 都存在static/wavs/,长期跑服务会越攒越多,页面提供「清空」按钮,也可定期手动清理;logs/目录日志自动滚动(单文件 1MB、保留 5 份),无需人工干预。

备份三件套models/(模型本体)、speaker/(你收藏的固定音色 csv/pt 文件)、.env(运行配置)。定期打包这三样,换机迁移只需十分钟。

音色管理:喜欢的声音以.csv.pt形式丢进speaker/目录即可被网页和 API 直接选用,固定音色不随种子漂移,适合做「专属配音」场景。

照以上流程走一遍,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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询