10分钟跑通文字转语音:ChatTTS-ui本地部署教程
2026/9/20 3:43:35 网站建设 项目流程

10分钟跑通文字转语音: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

把字幕文本转成配音、批量生成有声书素材时,一个能本地部署的文字转语音服务比付费 API 更省心。ChatTTS-ui 把开源语音合成模型 ChatTTS 包成了一个网页:输入文字、输出音频,中文、英文和数字混排都能自然朗读,同时对外提供一个 /tts 接口供程序调用。看完这篇,你能在自己机器上部署好它,并用代码直接调用合成语音。

ChatTTS-ui 是什么:本地文字转语音服务

ChatTTS-ui 是一个 Flask 写的 Web 服务,核心链路就三步:接收网页提交的文本,调用 ChatTTS 模型合成 24kHz 的 wav 音频,再把播放器和下载链接返回给浏览器。它把三件事打包好了:

  • Web 界面:输入文字、选音色、点按钮,音频直接出,不需要装任何客户端
  • API 接口:和网页走同一个 /tts 端点,脚本或其他工具都能调,也兼容 pyVideoTrans 这类软件直接接入
  • 内置 24 个固定音色:预放在 speaker 目录里,页面上直接下拉选择

和商用 TTS API 的差别很直白:不注册账号、不按字符计费、音频数据不出本机。和直接用 ChatTTS 库相比,设备检测、模型下载、中英文分词这些细节都被处理掉了,网页上只管看结果。

本地部署步骤:源码安装

Windows 有开箱即用的打包版,也提供 Docker 部署方式,细节都在 README.md 里。这里展开源码部署,Linux 和 macOS 都适用,最灵活:

先准备 Python 3.9–3.11(不支持 3.12 及以上)和 git。克隆仓库并安装依赖:

mkdir -p /data/chattts && 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

有 4G 以上显存的英伟达显卡、想要 GPU 加速的话,把最后一行换成 CUDA 版本:

pip3 install torch==2.7.1 torchaudio==2.7.1 --index-url https://download.pytorch.org/whl/cu128

另外需要装好 CUDA 12.8 及以上版本的 Toolkit。显存不足 4G 时服务会强制走 CPU,这一步可以跳过。

第一次上手:从启动到出音频

执行启动命令。首次运行会自动下载模型(优先从 ModelScope,连不上则切换到 HuggingFace),所以第一次启动会明显慢一些:

python3 app.py

浏览器自动打开 http://127.0.0.1:9966,页面上四步出结果:

  1. 在顶部文本框输入文字。文本按行合成,一句一行排版最干净。
  2. 下拉框选音色。下拉里是内置的固定音色编号,不同编号对应不同声音。
  3. 点击"立即合成声音",出现加载动画,等待合成完成。
  4. 完成后面板出现音频播放器并自动播放,点"下载音频"把 wav 存到本地。

页面还有两个按钮值得知道:"导入txt" 可以直接把文本文件读进输入框,适合长素材;"清理所有wav文件" 会删掉已合成的音频,磁盘紧张时用。

核心功能:音色怎么选、语气怎么控

音色有三种拿法

默认音色是数字,比如 2222。首次用某个编号合成时,程序以它为随机种子生成一个音色并缓存下来,之后同一编号就是同一副嗓子。想要下拉框之外的音色,有两条路:把 csv 或 pt 格式的音色文件放进 speaker 目录,重启后出现在下拉列表;或者在"音色值"栏填任意大于 0 的数字,跳过下拉框,用这个数字当种子生成并缓存新音色。注意同一音色值在不同机器上音调可能略有差异,建议在目标机器上挑定后固定使用。

prompt 控制符

ChatTTS 内置语气控制,写法是方括号符号:[laugh_0] 加笑声、[break_6] 插入停顿、[oral_2] 让语气更口语化。符号填在 Prompt 输入框或随 API 一起传,听感比纯文本自然不少。如果文本本身带符号、或合成效果不理想,勾选"跳过refine text",服务会跳过文本预润色环节直接进合成。

语速与随机性

语速是 1–9 的滑杆,默认 5,数值越大越快。temperature 默认 0.3,调低更稳定,调高音调起伏更明显但也会更飘。top_p、top_k 保持默认即可,日常调参先动前两个。中英文混排文本会被自动分词处理:中文和英文分开合成,数字转成对应语言的读法(中文语境下 123 读作"一二三"),不用手动清洗文本。

API 调用:一行代码完成文字转语音

网页和程序走的是同一个端点:POST http://127.0.0.1:9966/tts,必填参数只有 text,voice、prompt、custom_voice、temperature 按需传:

import requests res = requests.post('http://127.0.0.1:9966/tts', data={ 'text': '大家好,这是一个本地文字转语音合成示例。', 'voice': '2222', 'prompt': '[laugh_0]', 'temperature': 0.3 }) print(res.json())

成功时 audio_files 里带 wav 的本地路径和可下载地址:

{"code": 0, "msg": "ok", "audio_files": [{"filename": ".../143012_use2.31s-seed2222.wav", "url": "http://127.0.0.1:9966/static/wavs/143012_use2.31s-seed2222.wav"}]}

失败返回 {"code": 1, "msg": "错误原因"}。想直接拿音频文件而不是 JSON,请求里加 wav=1 参数,响应体就是 wav 本身。全部参数见 README.md 的 API 章节。

避坑与排错:5个高频报错

下载模型时报 proxy 相关错误→ 原因:默认从 ModelScope 下载模型,它只支持大陆直连,开代理反而失败 → 解法:关闭代理后重启;网络够不到 ModelScope 时程序会自动切换 HuggingFace 下载

启动报 "Missing spk_stat.pt"→ 原因:ModelScope 模型库缺这个文件,而按种子取音色时必须读它 → 解法:从 HuggingFace 补下 spk_stat.pt,放到 models/pzc163/chatTTS/asset 目录

有显卡但服务走 CPU、合成很慢→ 原因:装的 torch 是 CPU 版,或显存低于 4G(后者会强制 CPU) → 解法:装好 CUDA 12.8+ 后卸载旧 torch,重装 cu128 版本再启动

报 "cannot find a working triton installation"→ 原因:当前环境装不了 triton,而 .env 默认 compile=true → 解法:打开 .env,把 compile=true 改成 compile=false

报 "Dynamo is not supported on Python 3.12"→ 原因:项目只支持 Python 3.9–3.11 → 解法:换低版本 Python 重建虚拟环境,依赖重装一遍

ChatTTS-ui 把 ChatTTS 变成了网页和 API 两全的本地文字转语音服务,全程免费、音频不出本机。更多部署方式看 README.md,完整报错列表看 faq.md,其他问题可以提项目 Issue。

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

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

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

立即咨询