ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

断网也能做语音合成:ChatTTS-ui 离线部署五问实战教程

断网也能做语音合成:ChatTTS-ui 离线部署五问实战教程 断网也能做语音合成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-uiChatTTS-ui 是一个本地网页语音合成工具——你在浏览器里输入文字它输出自然的中英文语音还能对外暴露 API 接口。当目标机器处在无网络环境涉密内网、野外作业、临时断网时联网下载模型这条路走不通怎么办这篇 ChatTTS-ui 离线部署教程不讲空泛原理直接回答五个问题要准备什么、要改什么、怎么跑起来、跑不起来怎么办、跑久了怎么管跟着做完约 30 分钟即可在断网机器上听到第一句合成语音。一、离线部署前你需要备齐哪些东西这一步在一台能上网的机器上完成把三样东西打包带走全程不需要和离线机器联网。1.1 模型文件语音合成的引擎必须提前就位ChatTTS 的全部推理都在本地模型文件上完成这些文件通常约 1GB。在有网机器上执行huggingface-cli download 2Noise/ChatTTS --local-dir chattts-model # 若访问不畅也可改用 ModelScopepzc163/chatTTS把得到的chattts-model目录传到离线机器上放到项目根目录下的models/pzc163/chatTTS位置。关键文件清单缺一个都会在启动或合成时报错models/pzc163/chatTTS/ └── asset/ ├── GPT.pt # 语言模型负责想词 ├── DVAE_full.pt # 声学模型负责发声 ├── Decoder.pt # 解码器 ├── Vocos.pt # 声码器把声学特征还原成波形 ├── tokenizer.pt # 分词器 └── spk_stat.pt # 随机音色所需的统计参数 前五个是推理必需spk_stat.pt在生成随机音色时会被读取一并带上最稳妥。模型路径的默认值定义在 主程序 与 配置模块 中目录名必须与它们保持一致。1.2 Python 依赖包离线安装的全部弹药先执行 依赖清单 里 20 来个包。注意 torch/torchaudio 体积大CPU 版约 800MB别忘了pip download -r requirements.txt -d ./offline_packages # 再补一对 torch纯 CPU 即可离线部署多数跑在 CPU 上 pip download torch2.7.1 torchaudio2.7.1 -d ./offline_packagesoffline_packages整个目录连同项目源码一起拷走离线机上用--no-index安装下面 2.2 节有完整命令。1.3 项目源码与音色库项目代码把整个 ChatTTS-ui 目录打包拷贝即可离线机上无需 git clone。音色文件仓库自带的 speaker/ 目录里有一批.csv音色种子可直接使用也可以用speaker/2222.csv这类文件名作为 API 里的voice参数。系统级依赖Linux 上装好 Python 3.9–3.11用到音频转码的话按 ffmpeg/ffmpeg下载.txt 的说明把 ffmpeg 放到ffmpeg/目录。二、要改什么让离线语音合成跑通的三处调整好消息是你几乎不用动源码。app.py 启动时的逻辑是先找本地模型找不到才联网下载约 52 行起所以只要模型放对位置它就自然进入离线模式。2.1 唯一必须改的地方把模型放进 models 目录uilib/cfg.py 会把模型根目录固定为项目根目录下的models/程序拼接后的完整路径就是models/pzc163/chatTTS。把 1.1 节的模型目录摆到这个位置就是离线部署里最关键的一步——代码一行不改。2.2 .env 文件控制监听地址与推理设备在项目根目录新建.env程序启动时自动加载WEB_ADDRESS0.0.0.0:9966 devicecpu compilefalseWEB_ADDRESS默认只监听本机改成0.0.0.0后局域网内其他机器也能访问这个语音合成服务device离线机没有 GPU 就写cpucompile设为false关闭 torch.compile弱配置 CPU 上启动更快、更省心。装依赖离线命令与在线环境形成鲜明对比的就是--no-index参数pip install --no-index --find-links./offline_packages torch torchaudio pip install --no-index --find-links./offline_packages -r requirements.txt2.3 无需改动但值得知道的一处随机音色的实现依赖asset/spk_stat.pt这也是 1.1 节清单里多列它的原因。若你在页面上选了随机音色却报文件缺失先回来检查它。三、怎么跑起来无网络环境下启动并验证 ChatTTS-ui3.1 一条命令启动python app.py看到Start:0.0.0.0:9966即服务已起浏览器打开http://127.0.0.1:9966输入一段文字点合成——能听到声音离线部署就算打通了。3.2 本地 /tts 接口怎么测不想开浏览器直接打接口验证整条链路文本 → 分词 → 推理 → 音频curl -G http://127.0.0.1:9966/tts \ --data-urlencode text离线语音合成部署成功 \ --data-urlencode wav1 \ --data-urlencode voice2222 \ -o out.wavwav1时接口直接返回音频文件不带它则返回 JSON含音频 URL 和本次推理耗时常用参数voice音色默认 2222、temperature默认 0.3越低越板正、top_p、top_k、speed、skip_refine1 表示跳过文本润色阶段能省时间。请求打不通时先看端口是否被占用再看下一节的排查表。四、跑不起来怎么办离线部署三大踩坑实录现象多半是处理办法启动时卡住、报网络相关错误LocalEntryNotFoundError之后本地模型不完整程序回退去联网下载而离线机没网对照 1.1 节清单逐个核对models/pzc163/chatTTS/asset/下 6 个文件缺哪个补哪个页面能开合成报音频/转码错误ffmpeg/目录缺少 ffmpeg 可执行文件按仓库内下载说明补齐文件名和平台要对应CPU 上启动特别慢或合成中内存吃紧compiletrue的图编译 长文本.env中设compilefalse把长文本按行拆短同时只开 1–2 个合成请求排障时盯两处日志程序控制台输出每段音频会打印推理时长与音频时长以及 tools/logger/log.py 写入logs/目录的滚动日志文件按日期命名。出现download、connection字样基本可以断定是本地模型没就位而不是代码问题。五、跑久了怎么管离线 TTS 系统的轻量运维磁盘每次合成的 wav 都落在static/wavs/越积越多。定期调一下清理接口即可curl -X POST http://127.0.0.1:9966/clear_wavs。性能基线参考CPU8 核 16GB上合成 10 秒左右的音频通常在数秒到十几秒级换成带 4GB 显存的 NVIDIA 卡并装 CUDA 版 torch 后速度可提升一个量级适合多人共用。备份models/目录是整套系统里唯一丢了就瘫的部分随主机一起备份即可.env和自定义speaker/音色文件顺手带上。检查节奏每月看一眼logs/有无异常堆栈、static/wavs/占用是否失控就够这个量级的服务用了。至此你手上就有一套不依赖任何外网连接的语音合成系统模型在本地、依赖在本地、推理在本地断网时照样输出音频。后续若要扩容成多人服务把.env的监听地址和并发策略按团队规模调整即可。【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进