ChatTTS-ui 离线部署完整指南:没有网,也能 7×24 小时把文字变语音
2026/9/20 6:52:09 网站建设 项目流程

ChatTTS-ui 离线部署完整指南:没有网,也能 7×24 小时把文字变语音

【免费下载链接】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 是一款把文字合成为语音的工具,自带网页界面,也对外提供 API 接口。本文讲它的离线部署方案:在完全断网的机器上,不依赖任何外部下载,就能稳定跑起本地语音合成。

一、先想清楚:什么情况必须离线

不是所有部署都需要离线,但下面这类场景,联网方案要么跑不起来、要么有隐患:

  • 🏭内网隔离的产线与机房:服务器被防火墙圈在里面,装模型、拉依赖时根本连不出外网,只能靠 U 盘或内网介质搬运。
  • 🛰️外场与弱网环境:野外作业、车载设备、信号不稳的区域,网络时断时续。一旦卡在"首次下载模型"这一步,整个功能就废了。
  • 🔒合规与安全要求:涉密或审计场景明确要求数据与计算不出内网,连"顺手连一次外网"都不被允许。

这三种情况的共同点是:网络不可靠或被禁止。所以正确的思路不是"断网时再想办法",而是把整套运行所需的东西一次性备齐,让程序在本地自给自足。

二、原理速览:离线到底是怎么跑起来的

一句话概括:只要本地模型文件齐了,程序启动时就地加载,从头到尾不碰网络。

拆开看,整个过程只有四步,全部发生在本机:

  1. 文本进来:你在网页或 API 里提交一段文字。
  2. 本地分词:程序用自带的分词器把文字切好、做同音字归一,不需要联网查词。
  3. 模型推理:GPT 主干 + 声码器在本地把文本算成音频波形。
  4. 音频输出:生成 wav 文件,网页直接播放,API 返回下载地址。

它和"在线模式"唯一的差别,就卡在模型从哪儿来。在线模式首次启动会去下载模型;离线模式则是你提前把模型放好,程序发现"本地已有"就跳过下载。理解了这点,后面所有操作其实都是围绕"把模型和依赖搬到本地"这一件事。

三、动手前自检:一份可勾选的清单 📋

动手之前,先把这几项核对一遍,能省下后面大量返工。

环境类

  • Python 版本在3.9 ~ 3.11之间(不支持 3.12 及以上,否则推理加速会报错)
  • 磁盘剩余空间 ≥ 5 GB(模型 + 依赖 + 运行目录)
  • 内存 ≥ 8 GB;有 NVIDIA 显卡且显存 ≥ 4 GB 可启用 GPU 加速,否则强制走 CPU
  • 若用 GPU,已装好CUDA 12.8+工具包

文件完整性类

  • 源码已就位(见下文 clone 步骤)
  • 模型目录models/pzc163/chatTTS/完整,里面应包含asset/config/两个子目录
  • asset/下关键文件一个不缺:Vocos.safetensorsDVAE.safetensorsDecoder.safetensorsEmbed.safetensorsgpt/tokenizer/目录,以及spk_stat.pt
  • config/path.yaml存在(缺它启动会直接报FileNotFoundError

网络类(针对"准备模型的那台联网机器")

  • 用于下载模型的机器能连外网,且下载 modelscope 时已关闭代理(代理会导致下载失败)

说明:spk_stat.pt容易被漏掉——部分模型源里没有这个文件,而它在"随机取音色"时被读取。缺失时建议单独补一份放到asset/目录。

四、部署全流程:下载 → 放置 → 配置 → 启动

整个流程分四段,代码块都尽量精简,能用白话说清的就用白话。

第 1 步:获取源码

在有网或有 git 可用的机器上,把仓库克隆下来:

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

第 2 步:准备离线模型与依赖

这一段的目的是"把联网才能拿到的东西搬齐"。

模型:在有网机器上先跑一次项目(或从模型仓库拉取 ChatTTS 模型),让模型完整落到models/pzc163/chatTTS/。确认第三节的文件清单齐全后,把整个models/pzc163/chatTTS/目录拷贝到离线机器的同一相对路径下。

依赖:在有网机器上生成依赖清单和离线包:

pip freeze > requirements-offline.txt pip download -r requirements-offline.txt -d ./offline_packages

requirements-offline.txtoffline_packages/一起拷到离线机器,再执行安装。注意pyniniWeTextProcessingnemo_text_processing这几个包只有 Linux 需要,Windows 环境会自动跳过:

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

白话解释:--no-index --find-links告诉 pip"别上网,只从本地这个文件夹里找包",这正是离线安装的关键。

第 3 步:本地化配置

打开主程序 app.py,把"联网下载模型"改为"直接用本地路径"。原代码会先尝试在线拉取,离线模式下我们只保留本地加载即可,核心是让模型目录固定指向本地:

CHATTTS_DIR = MODEL_DIR + "/pzc163/chatTTS"

模型目录的相对关系由 uilib/cfg.py 统一管理,其中MODEL_DIR就是项目根目录下的models。模型内部各文件的相对路径则定义在 ChatTTS/config/config.py,一般无需改动。

接着在根目录的.env里按需调整:

WEB_ADDRESS=0.0.0.0:9966 # 想被局域网访问就改成内网 IP:端口 device=default # 可填 cpu / cuda / mps,默认自动选 compile=true # 若报 triton 相关错误,改为 false

WEB_ADDRESS设为0.0.0.0:9966(或某个内网 IP),其他机器就能通过网络访问到这台语音合成服务。

第 4 步:启动

python app.py

启动成功后会自动尝试打开浏览器,默认地址是http://127.0.0.1:9966。局域网内的其他设备则用你配置的 IP 加 9966 端口访问。

五、上线验证:三步确认真的能用 ✅

不需要堆一堆测试表,按这条最短路径验证即可:

  1. 打开网页:浏览器访问http://127.0.0.1:9966(局域网用对应 IP),能正常打开界面说明 Web 服务已起。
  2. 点一次合成:随便输入一句中文,点击合成。能听到声音、并能下载 wav,说明模型加载与推理都通了。
  3. 调一次接口:用一条 curl 走 API,确认程序化调用也 OK:
curl -X POST http://127.0.0.1:9966/tts \ -d "text=离线合成自检" \ -d "voice=2222"

返回里出现"code":0和一个可下载的 wav 地址,即代表整条链路在离线状态下可用。若返回"code":1,看msg字段定位问题。

六、排错速查:症状 → 原因 → 解法 🔧

症状可能原因解法
启动报FileNotFoundError: .../config/path.yaml模型目录不完整重新拷贝整个models/pzc163/chatTTS/,确认config/asset/都在
Missing spk_stat.pt模型源缺该文件单独补一份spk_stat.pt放进asset/
Dynamo is not supported on Python 3.12Python 版本过高降到 3.10 再装
cannot find a working triton installation编译加速不可用.envcompile改为false
装了显卡却仍走 CPU、速度慢CUDA/torch 版本不匹配卸载后按 GPU 版重装 torch,并确保 CUDA 12.8+
下载模型时ProxyError开了代理关闭代理(modelscope 不允许走代理)
同一段文字音色每次都不一样随机种子机制使然固定text_seedvoice,或改用固定.csv/.pt音色
合成到一半崩溃内存/显存不足加内存或降低并发,改走 CPU

更细的报错对照,可查项目自带的 常见问题清单。

七、调优与运维:一节约全 🛠️

硬件配比(按使用强度选):

  • 个人使用:8 GB 内存 + 4 核 CPU 即可
  • 企业内网:16 GB 内存 + 8 核 CPU
  • 高并发:32 GB 内存 + 独立 GPU(显存 ≥ 4 GB 才会启用加速)

参数微调:影响合成质量与速度的旋钮主要在 app.py 的/tts接口默认值里,例如temperature(随机性)、top_p/top_k(采样范围)、speed(语速)、skip_refine(是否跳过文本精修,设为 1 可加快推理)。新手建议先用默认值,确认稳定后再逐项调。

巡检与备份(建议每月一次):

  • 核对models/pzc163/chatTTS/关键文件是否完整,必要时重新备份一份
  • 看一眼logs/下的运行日志,留意是否有ERROR
  • 备份speaker/里的自定义音色和.env配置,避免音色资产丢失

把模型、依赖、配置这三样搬到位后,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),仅供参考

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

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

立即咨询