ChatTTS-ui音色定制实战指南:3种方法快速打造专属语音
【免费下载链接】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接口批量合成。
动手前准备
- Python 版本 3.9–3.11,不支持 3.12+
- 依赖装好:
pip install -r requirements.txt,torch 固定2.7.1 - 启动命令
python3 app.py,浏览器自动打开http://127.0.0.1:9966 - 首次启动自动下载模型;默认从 modelscope 拉取,此时需关闭代理
先跑通最小路径
只做两步,确认音色链路通了。
python3 app.py # 启动服务启动后在页面文本框输入一段话,点"立即合成声音"。成功后页面下方出现可播放的 wav,文件名形如153022_use3.41s-audio5.2s-seed2222-te0.3-tp0.7-tk20-textlen21-08380.wav,落在static/wavs目录。文件名里已带上本次用的种子值与采样参数,方便你回头对照调参。
关键参数逐个说
全部参数都可在页面表单和/tts接口中使用,默认值见 app.py 中的defaults。
| 参数 | 作用 | 建议取值 |
|---|---|---|
voice | 预设音色编号,决定基础音色 | 2222 / 7869 / 6653 / 4099 / 5099 之一 |
custom_voice | 种子值,大于 0 的整数,设置后忽略voice | 2000–9000 区间多试几个 |
prompt | 控制标签,笑声、停顿等 | [oral_2][laugh_0][break_6] |
temperature | 采样随机性,越低越稳定 | 稳定 0.2,活泼 0.4,默认 0.3 |
top_p/top_k | 采样候选范围 | 默认 0.7 / 20 |
speed | 语速档位,1–9 | 5 |
text_seed | refine text 阶段种子,默认 42 | 固定一个值便于复现 |
skip_refine | 1 跳过 refine text 阶段 | 文本含控制符或效果差时设 1 |
文件与目录速查
- speaker/:音色文件目录,支持
.csv(768 个浮点数,每行一个)和.pt两种格式,仓库自带 2222.csv 等 20 余个示例 - uilib/utils.py:
get_speakers()列出色板、load_speaker()读 csv、save_speaker()写 csv 的实现 - cover-pt.py:0.96 版内核升级后的旧 pt 音色转换脚本
- app.py:
/tts路由,音色解析顺序为voice.csv→voice.pt→ 数字种子随机生成
进阶调优
种子值会自动固化成音色文件。当custom_voice=8888且speaker/8888.csv不存在时,第一次合成会按该种子随机生成向量并自动写入speaker/8888.csv,第二次起直接读文件,音色从此固定。想固化就保留文件,想换音就删掉对应 csv。
旧 pt 音色先转格式再用。0.96 版内核无法直接使用旧格式seed_*_emb.pt,把它放入speaker/后执行:
python cover-pt.py # 批量转换 seed_*_emb.pt 为 -covert.pt ls speaker # 确认生成 -covert.pt 文件批量试音用脚本刷。用固定文本遍历种子值,按文件名归档试听:
import requests for seed in range(2000, 2100, 10): # 步长10,试10个候选 requests.post('http://127.0.0.1:9966/tts', data={ "text": "音色试听固定文本", "custom_voice": seed, # 每个种子一个候选音色 "temperature": 0.3, "top_p": 0.7, "top_k": 20, }) # 产物在 static/wavs/,文件名含 seed 与全部参数一条完整操作流
- 启动服务,执行
python3 app.py,确认浏览器打开 9966 端口页面 - 查看当前可选音色,页面下拉框即
speaker/目录扫描结果 - 选预设音色 2222,输入文本合成一条基线样本并试听
- 在"音色值"框填
custom_voice,从 2000 起每 100 换一个,各合成一条对比 - 锁定满意种子后不动它,
speaker/下已生成同名 csv,音色被固化 - 用 API 固定
custom_voice与temperature等参数接入你的程序,批量产出
常见坑速查
| 现象 | 原因 | 处理 |
|---|---|---|
| 同一设备同一种子,两次合成音调不同 | 只有数字种子、没有落盘文件时每次重新随机 | 用落盘的 csv 文件作为音色基准 |
| 下载的 pt 音色加载报错 | 0.96 内核格式不兼容 | 运行python cover-pt.py转成-covert.pt |
| 新放的文件不出现在下拉框 | 只识别.csv与.pt扩展名 | 检查扩展名,刷新页面重新扫描 |
| 启动报 modelscope ProxyError | 模型下载走 modelscope 时不允许走代理 | 关闭系统代理后重启 |
报 Missingspk_stat.pt | ModelScope 模型包缺少该文件 | 补齐文件放入models/pzc163/chatTTS/asset/ |
音色定制的核心就是"数字种子试音、文件固化、参数微调"三步,套路固定、可随时回退。打开浏览器里那个 9966 端口的页面,挑一个种子值先合成第一条吧。
【免费下载链接】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),仅供参考