news 2026/10/18 1:46:04

ChatTTS-ui 音色定制实战指南:3 步拿到可复用的自定义声音

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ChatTTS-ui 音色定制实战指南:3 步拿到可复用的自定义声音

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 是一个本地文字转语音项目,启动即开网页合成、同时对外提供 API,本文带你走通"挑预设音色种子 → 自定义种子生成新音色 → 转换 pt 音色文件 → 用采样参数锁住声音"的完整链路,全部可在自己机器上直接复现。

最短路径:4 行命令拿到第一段合成音频

  1. 克隆仓库并装依赖:git clone https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui,然后pip3 install -r requirements.txt(需 Python 3.9–3.11)
  2. 执行python3 app.py,首次启动会自动下载模型并打开http://127.0.0.1:9966
  3. 页面里选择默认音色 2222,输入一段文字,点击"立即合成声音"
  4. 想要专属音色:在"音色值"框填入任意大于 0 的整数,合成一次,该音色会自动保存为 csv 到 speaker 目录

用预设音色库挑一个现成声音

仓库自带十几个音色,全部以 csv 文件形式放在 speaker 目录,即选即用。

  1. 打开http://127.0.0.1:9966,"选择音色"下拉框里列出的就是 speaker 目录下的文件名,如 2222、7869、6653、4099、5099
  2. 用不同音色合成同一段文字,逐一试听并记下喜欢的编号
  3. 后续合成或 API 调用直接引用该编号即可

关键参数与注意事项:

  • 默认音色是 2222;传入一个不存在的数字时,系统也会当场随机生成一个音色并顺手保存下来
  • 音色文件支持.csv与.pt两种格式,都放在speaker/目录下生效

用自定义种子值生成一个全新音色

在 custom_voice 填入大于 0 的整数,ChatTTS-ui 会以它为种子抽取新音色并自动存档。

  1. 在 WebUI 的"音色值"输入框填一个数字(如 3000),左侧下拉框保持默认
  2. 点击合成后,app.py 会按该数字做 torch 种子,生成 768 维音色向量,同时写出speaker/3000.csv
  3. 下次选择 3000 时直接读取这份 csv,不会重新抽取

关键参数与注意事项:

  • custom_voice 与 voice 同时存在时,custom_voice 优先,voice 被忽略
  • 建议围绕 1000–10000 区间逐个试种子值,每次生成后先试听再决定去留
  • 官方 faq.md 提醒:同一种子值在不同设备上音色可能不同,找到满意的音色后请依赖保存下来的 csv 文件,而不是只记数字

把下载来的 pt 音色文件转成可用格式

0.96+ 内核版本下,外部下载的 pt 文件需要先用 cover-pt.py 转一次编码。

  1. 把形如seed_2155_restored_emb.pt的下载文件放入 speaker 目录
  2. 在项目根目录执行python cover-pt.py
  3. 脚本会把以seed_开头、_emb.pt结尾的文件逐个转换,结果改名为-covert.pt结尾

关键参数与注意事项:

  • 转换完成后原_emb.pt文件可以删除,只保留-covert.pt结尾的文件
  • 该脚本只处理 pt 文件,csv 音色无需转换
  • 若提示"没有可转换的pt文件",说明文件命名不符合seed_开头要求

用 3 个采样参数锁住音色稳定性

temperature、top_p、top_k 决定合成有多"稳",默认组合 0.3 / 0.7 / 20 可以先不动。

  1. WebUI 底部有 temperature、top_p、top_k 三个滑杆,拖动即时生效
  2. 用同一段文字连合两次做 A/B 对比,一次只动一个参数
  3. 确定参数组合后,在 API 调用里固定下来

关键参数与注意事项:

  • temperature 控制采样随机性,调低后每次输出更贴近上一次
  • top_p 页面可调范围 0.1–0.9,top_k 可调范围 1–20
  • speed滑杆(1–9,默认 5)对应语速控制符;text_seed(默认 42)固定文本预处理结果,便于批量对比

合成参数速查

参数作用推荐范围/建议
voice音色编号,引用 speaker 目录下已有 csv/pt 文件默认 2222;7869、6653、4099、5099 可直接试用
custom_voice新音色的种子值,须为大于 0 的整数1000–10000 任选;填写后忽略 voice
temperature采样温度,越小音色越稳定默认 0.3,求稳可再调低
top_p采样累计概率截断默认 0.7,可调 0.1–0.9
top_k采样候选 token 数默认 20,可调 1–20
speed语速,对应[speed_x]控制符1–9,默认 5
text_seed文本预处理种子默认 42,固定后每批文本处理方式一致
prompt情绪与停顿控制符示例[oral_2][laugh_0][break_6]
skip_refine1=跳过 refine_text 阶段默认 0;控制符不生效时可试 1

API 调用示例(只保留必要参数):

import requests res = requests.post('http://127.0.0.1:9966/tts', data={ "text": "这是一段自定义音色测试", "custom_voice": 3000, "temperature": 0.3, "top_p": 0.7, "top_k": 20, }) print(res.json()) # code 为 0 时,audio_files 内含 wav 路径与下载地址

上线前检查清单

✅ 音色本体

  • 先用 2222、7869 等预设音色确认整条链路正常
  • 自定义音色生成后,确认speaker/下已出现同名 csv 文件

✅ 参数与效果

  • temperature / top_p / top_k 先保持默认,出现音色漂移再微调
  • 需要情绪、停顿时放入 prompt,不要写进正文

✅ 集成与访问

  • 调一次/tts接口,确认返回code:0且audio_files带 wav 地址
  • 需要局域网访问时,把.env里的WEB_ADDRESS改为实际 IP,默认127.0.0.1:9966

进阶:3 种音色组合玩法

  1. 场景分声:旁白、教学、对话各固定一个种子值写进配置,切换场景只改音色编号
  2. 控制符叠加:prompt 里组合[oral_2][laugh_0][break_6]调节口语度、笑声与停顿,效果不佳时勾选"跳过 refine text"
  3. 自建音色库:把满意的 csv 在speaker/下改名为业务名(如narrator.csv),下拉框直接选名,比记数字直观

收尾

ChatTTS-ui 的音色定制本质上就三步:选号、存文件、锁参数。从预设 2222 起步,需要变化时换成自己的种子值,再把采样参数固定下来,你就拥有了一个可长期使用、可随时通过 API 调用的专属声音。

温馨提示:参数不确定时可以不填,API 会自动使用与页面一致的默认值(temperature 0.3、top_p 0.7、top_k 20)。遇到报错先查 常见问题文档,大部分下载与设备类问题都有现成答案。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 1:44:41

嵌入式GBK点阵字模:16×16与24×24索引算法及工程集成

简介:这是一份面向打印机固件开发、LCD汉字显示及嵌入式字库应用场景的GBK点阵字模资源,收录GBK1.0规范内22046个汉字,不含用户自定义区,可解决开发中难以找到专业字库的痛点。包内提供1616与2424两套点阵字库文件,并附…

作者头像 李华
网站建设 2026/10/18 1:43:47

ThingsBoard 日志越滚越大?用 logback 内置轮转 3 步控住磁盘

ThingsBoard 日志越滚越大?用 logback 内置轮转 3 步控住磁盘 【免费下载链接】thingsboard All-in-one IoT Platform - Device management, data collection, processing and visualization. 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard …

作者头像 李华
网站建设 2026/10/18 1:41:49

AI Agent 面试题 055:Agent的输入预处理流水线应该包含哪些步骤?

🔥 AI Agent 面试题 055:Agent的输入预处理流水线应该包含哪些步骤?摘要:本文深入解析了「Agent的输入预处理流水线应该包含哪些步骤?」这一 AI Agent 领域的核心面试题。文章从 核心组成(感知/决策/执行&a…

作者头像 李华
网站建设 2026/10/18 1:39:56

模拟器抓包实战:彻底搞懂ARP与ICMP协议

1. 为什么要在模拟器里死磕ARP与ICMP抓包很多人学网络协议,习惯抱着书本看TCP/IP协议栈那几张分层图,看完觉得自己懂了,真到设备上敲命令的时候,脑子里却是一团浆糊。ARP到底什么时候发请求、什么时候发应答、谁是广播谁是单播&am…

作者头像 李华
网站建设 2026/10/18 1:37:25

NPU/TPU加速本质:算法-硬件协同设计实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/18 1:36:35

你的表征学得再“准”,真的是“因果”而不是“碰巧相关”吗?

全文目录:开篇语前言1) 研究问题:我们到底想让表征“泛化”到什么程度?2) 背景与意义:为什么深度表征特别爱学“相关性捷径”?3) 文献与缺口:理论很多,能跑又能扩展的框架还不够“顺手”4) 方法…

作者头像 李华