ChatTTS-ui 音色定制:3 步给中文语音合成配一个有性格的声音
2026/9/20 2:13:43 网站建设 项目流程

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 的中文语音合成工具,跑起来之后换音色有三条路:预置音色编号、自定义种子值(seed)、下载音色文件;再叠加情感标签调语气,音色定制就算完成。

5 分钟出第一个声音

安装依赖后执行python3 app.py,浏览器会自动打开http://127.0.0.1:9966,输入文字、点合成,默认音色是 2222。不想用页面,也可以直接调 API,整个接口只认几个参数:

import requests res = requests.post('http://127.0.0.1:9966/tts', data={ "text": "音色定制测试", # 必填,要合成的文字 "voice": "2222", # 预置音色编号 "custom_voice": 0, # 大于 0 的整数=用该种子值取声,优先于 voice "prompt": "" # 情感标签,见下文 }) print(res.json())

返回code:0时,audio_files里就有 wav 的本地路径和可下载 URL;加wav=1则直接返回音频流。

换音色的三条路

三条路都能用同一个接口触发,区别在于确定性和自由度:

方式怎么指定确定性适合
预置音色voice填 2222 / 7869 / 6653 / 4099 / 5099同 seed 跨设备会有差异快速试听,不挑细节
自定义种子值custom_voice填任意大于 0 的整数同上,但可无限枚举批量筛"合眼缘"的声音
音色文件文件名:speaker/ 下的xxx.csvxxx.pt完全一致,跨机器不变交付级稳定音色

种子值可以这样理解:把一个大范围随机数发生器拨到某个刻度,那个刻度对应一个声音。拨到 1357 就永远是 1357 这个声——但只在同一台设备上成立。

实用技巧:用custom_voice连续试几个数字,听到中意的,系统会把它自动存成 speaker/ 里的.csv文件(代码在 uilib/utils.py 的save_speaker)。之后直接用文件名指定,音色就固定下来了。页面左侧的音色下拉列表,就是 uilib/utils.py 里get_speakers()扫描 speaker/ 目录得到的全部.csv.pt文件。

给声音加"情绪"

prompt参数接收方括号标签,控制语气细节:

标签作用取值感受
[oral_X]口语化程度数字越大越"唠家常"
[laugh_X]笑声0 无,1 起会有笑点
[break_X]停顿感越大停顿越明显

直接抄用的两个组合:

  • 温和口语:[oral_2][break_3]
  • 活泼带笑:[oral_1][laugh_1][break_2]

另外语速走的是speed参数,界面里 1–9 的滑杆,对应代码里的[speed_X]提示词,别和情感标签混在一起填。

音色文件的坑:格式、命名、目录

社区下载的音色包最容易翻车,一次讲清:

  1. 目录:文件必须放进 speaker/,散落在别处不会被加载。
  2. 格式转换:0.96 版本起 ChatTTS 内核升级,老版内核的 pt 文件不能直接用。项目里的 cover-pt.py 就是干这个的,在项目根目录执行python cover-pt.py,它只认"以seed_开头、以_emb.pt结尾"的文件,转换后改名为_emb-covert.pt结尾,然后删掉原文件。
  3. 命名即调用:合成时若voice的值在 speaker/ 下能对上名字.csv名字.pt,就按文件加载;对不上才回退到 seed 随机。所以文件名的后缀决定它能不能被认出来。
  4. 跨设备不一致:同一个 seed 在不同机器、甚至不同时间合成出来的音调都可能漂移,这是 README 明确提示过的。要保证多台服务器音色一致,唯一可靠的办法是分发.csv文件,而不是分发种子值。

场景配方

按用途调参,一张表抄走:

场景音色temperatureprompt备注
商务朗读预置 22220.2[break_3]低随机性,少停顿修饰
儿童故事筛选出的高custom_voice0.4[laugh_1][oral_1]多试几个 seed 找童声感
播客闲聊试听后固定的.csv0.3[oral_2][break_2]口语感拉满
有声书旁白试听后固定的.csv0.25[break_4]语速speed=4左右

硬件上只需记住一句:显存低于 4G 时程序会强制走 CPU,想上 GPU 用英伟达显卡装好 CUDA 12.8+,在.env里设device=cuda

踩坑与排错

  • 下载的音色文件没反应?先确认它在 speaker/ 里、文件名带.pt/.csv后缀,再确认是 0.96 之后能用的格式(老内核的 pt 先跑一遍 cover-pt.py)。
  • seed 填了个不存在的数字,会报错吗?不会。对不上文件就按种子随机生成,所以乱填也能出声——这正是批量筛声的用法。
  • 为什么同样的 seed,换台机器音调变了?seed 只保证同设备可复现,跨设备请改发.csv
  • 首次启动卡住?多半在从模型仓库下载模型,网络不通会失败,日志里能看到它正在连哪个源。

三条路径一句话收拢:预置号最省事,seed 用来大海捞针,.csv文件用来定版交付。延伸方向:用custom_voice写个循环批量试声存档,或把/tts接口接进字幕翻译流水线,音色定制才算真正用满。

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

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

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

立即咨询