ChatTTS-ui离线语音合成:断网一次跑通实战
2026/9/20 19:32:05 网站建设 项目流程

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。本文按"先联网跑通、再整体搬到断网机"的思路走:在一台有网的机器上备好模型与依赖,整体迁移后离线验证,全程不用碰源码。

断网机器第一次启动会卡在哪

很多人直接把代码拷到断网机器上就运行,结果程序在第一步就停下——app.py 启动时会先找本地模型,找不到就尝试联网下载(优先 HuggingFace,连不上再走 ModelScope 魔塔)。模型只是第一道坎,第二道是 pip 装依赖,同样需要网络。

所以离线部署没有神秘的"离线开关",程序本身就是"本地优先"逻辑:你要做的只是提前备好两样东西——完整的模型目录、装好的 Python 依赖环境。

模型文件到底丢哪个目录

答案是固定的models目录,目录约定写在 uilib/cfg.py 里,启动时会自动创建。需要预置的内容如下:

路径内容
models/pzc163/chatTTS/asset/模型权重:Vocos.safetensors、DVAE.safetensors、Decoder.safetensors、Embed.safetensors、gpt/、tokenizer/、spk_stat.pt
models/pzc163/chatTTS/config/path.yaml 等配置文件

具体文件名以 ChatTTS/config/config.py 中的默认值为准,拷贝前对照一遍。别把它放到项目根目录的asset/下,程序只认models/

除了模型还有什么会卡网络

就是 Python 依赖:requirements.txt 里的 torch、transformers、vocos 等,外加 torch 自己的大轮子(几百 MB)。这些都必须在离线机装好,第一次python app.py才会真正进入加载模型环节。

最短路径:联网机上 5 分钟跑通服务

这一步一石二鸟:既验证环境没问题,又顺手把模型缓存在models/里,后面整体打包带走。🚀

cd /data/chattts && 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.py

注意两点:Python 必须 3.9–3.11,3.12 会报 dynamo 错误;需要 GPU 加速时把 torch 换成 cu128 源安装,且要求 NVIDIA 显卡显存大于 4G、系统装好 CUDA 12.8+。

启动后浏览器会自动打开http://127.0.0.1:9966,在页面输入中英混排文本点合成,能听到声音即算成功。

如何把整套环境搬到断网机器

联网机跑通后只做三件事:依赖打包、模型拷贝、整体迁移。📦

离线依赖包怎么一键打包

与离线机相同操作系统、相同 CPU 架构、相同 Python 版本的联网机上执行:

pip download -r requirements.txt -d ./offline_packages pip download torch==2.7.1 torchaudio==2.7.1 -d ./offline_packages pip freeze > requirements-offline.txt

然后把offline_packagesrequirements-offline.txt拷到离线机,与代码放同一目录,用pip install --no-index --find-links=./offline_packages -r requirements-offline.txt完成安装。

三个提醒:torch 的轮子与平台绑定,架构不匹配就装不上;要 GPU 版就下载 torch 时加--index-url https://download.pytorch.org/whl/cu128;pynini、WeTextProcessing 这几个包只有 Linux 能装,离线机若是 Windows 请留意 requirements.txt 里的平台标记。

除依赖外还要带什么

要搬的东西来源放到离线机的位置
整个models/目录联网机程序目录相同相对路径
.env文件程序根目录相同位置
speaker/(可选)音色 .csv / .pt 文件相同位置
offline_packages刚打包的与代码同级

离线机不用 GPU 的话,装 CPU 版 torch 即可,无需 CUDA。用到音频拼接、转码功能时系统需要有 ffmpeg,把可执行文件放进ffmpeg/目录,目录内附了获取说明。

场景分叉:个人、内网、高并发怎么跑

.env里一共三个变量:WEB_ADDRESSdevicecompile。默认值127.0.0.1:9966意味着只有本机能用,按场景改:

场景WEB_ADDRESSdevice附加建议
个人单机保持默认default(自动选 CUDA/MPS/CPU)8GB 内存、纯 CPU 就够
内网共享192.168.x.x:99660.0.0.0:9966default防火墙放行 9966 端口
长文本 / 高频合成0.0.0.0:9966cuda(显存 >4G)compile=true开启 torch.compile

内网部署只改WEB_ADDRESS为服务器内网 IP,同事浏览器访问http://IP:9966就能用网页界面、调 API。

高并发要注意:ChatTTS-ui 是单进程服务,请求多了会排队。GPU 机上多开几个实例、各占一个端口是最简单的横向扩展;偏好容器化的话,仓库自带 docker-compose 的 cpu/gpu 两套编排文件,把当前目录挂进容器即可复用同一套models/

怎么确认离线服务真的断了网

断网机启动后,做两个动作就能闭环。🩺

第一步,看控制台:出现模型下载进度说明本地models/pzc163/chatTTS不完整,回到上一节补文件;没有任何下载动作,说明全部命中本地。

第二步,直接打一次 API:

curl -X POST 'http://127.0.0.1:9966/tts' -d 'text=离线合成测试成功' -d 'voice=2222'

返回 JSON 里code为 0、且带url字段就通了,这个 url 可直接播放;想直接拿音频文件就加一个-d 'wav=1'

常用可选参数(text必填,其余都有默认值):

参数默认说明
voice2222音色种子数,或 speaker/ 里的音色文件名
prompt控制符,如[laugh_0][break_6]
temperature / top_p / top_k0.3 / 0.7 / 20采样参数,越大声音越飘
skip_refine0置 1 跳过文本精修,出音更快
is_stream0置 1 走流式输出

现象 → 原因 → 解法

断网机启动不了别慌,先查这张表(更详细的讨论在 faq.md):🔧

现象原因解法
启动后仍尝试联网下载模型models/pzc163/chatTTS缺失或不完整把联网机的models/整目录拷过来覆盖
FileNotFoundError: ...config/path.yaml模型包不全(魔塔源缺该文件)手动补config/path.yaml到对应目录
合成时报Missing spk_stat.pt魔塔模型包缺这个文件把 spk_stat.pt 复制到models/pzc163/chatTTS/asset/
下载模型时ProxyErrorModelScope 不允许走代理下载关闭代理后重试
Dynamo is not supported on Python 3.12Python 版本过高换 Python 3.9–3.11 重建环境
GPU 机器推理仍走 CPU 或很慢装了 CPU 版 torch 或显存不足 4G重装 cu128 版 torch,装好 CUDA 12.8+
cannot find a working triton installation当前环境不支持 torch.compile.envcompile改为false

跑起来之后还能做什么

  • 固定音色:把 .csv 或 .pt 音色文件放进speaker/目录,API 的voice传对应文件名即可。注意同一音色值在不同机器上音调可能有差异,跨设备交付前要试听。
  • 清理音频:合成的 wav 都堆在static/wavs/,调POST /clear_wavs可一键清空,避免磁盘写满。
  • 看日志:运行日志落在logs/目录,按天滚动保留 5 份,合成异常时先翻这里。

下一步建议:先用 curl 压一轮/tts接口记录单次合成耗时,再决定要不要上 GPU 或多实例扩容。

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

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

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

立即咨询