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 的离线模式核心就一句话:模型文件预先下载到本机,运行时只从磁盘读取,全程不碰外网。链路是:文本输入 → 本地分词 → 模型推理 → 音频输出,四个环节在本地闭环,断网、弱网环境照样出音。
🧭 动手前先选部署方案:单机与局域网怎么选
正式装之前先定方案。如果你的场景是企业内网部署,直接看第二行;两种方式只差一个--host参数,访问范围完全不同:
| 方案 | 适用场景 | 启动参数 | 访问方式 |
|---|---|---|---|
| 单机部署 | 个人用户、小规模使用 | python app.py --offline --port 9966 | 仅本机访问,用curl http://localhost:9966/health验证 |
| 局域网部署 | 企业内网多终端共享 | python app.py --offline --host 0.0.0.0 --port 9966 | 内网终端经服务器 IP 加 9966 端口访问 |
方案选定后,下面四步两者通用,只是第四步的启动命令不同。
🔧 四步完成 ChatTTS-ui 离线部署:模型、配置、依赖、启动
第一步:下载 all-models.7z,摆对 5 个模型文件
模型包有两个获取渠道:项目发布页的 all-models.7z 压缩包,或镜像存储库里的备用下载节点。拿到包,离线模型安装的素材就齐了。解包后按下面结构放进asset/目录,五个文件一个都不能少:
asset/ ├── Vocos.pt # 声码器模型 ├── DVAE_full.pt # 变分自编码器 ├── GPT.pt # 语言模型 ├── Decoder.pt # 解码器 └── tokenizer.pt # 分词器模型路径的定义位置在 ChatTTS/config/config.py,下一步会用上。
第二步:改主程序模型路径,再写 .env 环境变量
打开 app.py,定位约第 35 行附近的模型加载代码段,把网络下载改成指向本地目录,并确认五个模型文件齐全:
CHATTTS_DIR = MODEL_DIR + "/pzc163/chatTTS" required_models = [ "Vocos.pt", "DVAE_full.pt", "GPT.pt", "Decoder.pt", "tokenizer.pt" ]再新建一个.env文件,写入三行离线开关:
OFFLINE_MODE=true MODEL_CACHE_DIR=./asset ENABLE_NETWORK_CHECK=false其余两处配置位置也记一下:日志相关在 tools/logger/log.py,界面参数在 uilib/cfg.py。加载异常时先查这两个文件。
第三步:一条命令冻结依赖清单,再离线安装
找一台能上网的机器,先把当前环境的依赖清单导出:
pip freeze > requirements-offline.txt把requirements-offline.txt和全部依赖包打包拷到离线机器,然后本地安装:
pip install --no-index --find-links=./offline_packages -r requirements-offline.txt--no-index表示不回连 pip 源、只从本地目录取包。装完这一步,运行环境就和外网彻底解耦了。
第四步:启动服务,用健康检查确认跑通
单机方案一条命令启动,紧跟一条健康检查:
python app.py --offline --port 9966 curl http://localhost:9966/health选的是局域网方案,就把启动命令换成python app.py --offline --host 0.0.0.0 --port 9966。curl拿到正常响应,说明服务已经跑起来,可以进入验收。
✅ 部署完成后的验收测试:一次 API 调用 + 性能基准对比
向本地接口发一条最小化合成请求,确认离线链路完整可用:
import requests response = requests.post('http://127.0.0.1:9966/tts', json={ "text": "离线语音合成测试成功", "voice": "default", "temperature": 0.3 }) print(response.json())合成成功后,建议顺手记录一次离线环境的性能基准,方便日后横向对比:
| 测试项目 | 在线模式 | 离线模式 |
|---|---|---|
| 响应时间 | 200-500ms | 300-800ms |
| 音频质量 | 优秀 | 良好 |
| 并发能力 | 高 | 中 |
| 稳定性 | 依赖网络 | 完全稳定 |
离线模式响应时间略高属于正常现象,换来的是对网络状态的零依赖。
常见问题速查:三类典型故障对照排查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 启动时报“模型文件不存在” | asset 目录下 .pt 文件缺失或不完整 | 逐个核对 5 个模型文件是否齐全 |
| 无法加载模型 | 配置中的路径与实际文件位置不匹配 | 核对 config.py 里的路径,改成 asset 目录的真实位置 |
| 合成过程中崩溃 | 内存不足 | 增加系统内存,或降低并发数 |
排查先跟日志再动手:tail -f logs/app.log里出现 "download failed" 是网络残留问题,"file not found" 指向路径配置,"out of memory" 说明内存吃紧,对号入座即可。
性能调优与长期维护:硬件档位、参数与例行清单
硬件按三档配置就能覆盖绝大多数场景:个人使用 8GB 内存 + 4 核 CPU;企业部署 16GB 以上内存 + 8 核以上 CPU;高并发场景 32GB 以上内存并配专用 GPU。
软件侧在 config.py 里调整合成参数,批处理与编译开关直接影响吞吐:
model_config = { "batch_size": 4, "max_length": 512, "compile": true }上线不是结束,建议每月走一遍例行维护清单:
- 核对 asset 目录里 5 个模型文件的完整性
- 检查系统内存、CPU 等资源占用
- 更新依赖包版本
- 定期复制 asset 目录,备份模型文件
- 备份 .env 与配置文件
- 归档保存重要的合成记录
到这里,一套完全断网可用的 ChatTTS-ui 语音合成服务就落地了。日常调整主要看三个入口:主程序 app.py、界面配置 uilib/cfg.py、模型路径定义 ChatTTS/config/config.py。按四步流程走一遍,个人单机到企业内网部署都能直接复用。
【免费下载链接】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),仅供参考