尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ChatTTS-ui 音色定制 3 种方式实操:固定音色、种子值与 pt 文件转换

ChatTTS-ui 音色定制 3 种方式实操:固定音色、种子值与 pt 文件转换 ChatTTS-ui 音色定制 3 种方式实操固定音色、种子值与 pt 文件转换【免费下载链接】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 的音色由 speaker 目录 下的文件和数字种子共同决定csv 文件存固定音色、pt 文件存转换后的音色、纯数字则按种子现场生成。下面按换音色 → API 指定音色 → 保存、转换与批量生成音色文件三条任务线讲清楚具体操作。先分清三种音色来源网页上音色听着玄乎落到代码里就是一组 768 维的浮点向量有三种拿到它的方式csv / pt 文件speaker 目录 里预置了 2222、7869、6653、4099、5099 等数十个 csv 文件每个文件一行一个数共 768 个直接决定合成声音的特征。启动时 uilib/utils.py 的get_speakers()会扫描该目录下所有 csv 和 pt 文件填进网页的下拉框。数字种子填一个不存在的数字如 3000、9000app.py 会用torch.manual_seed(数字)加上模型自带统计量算出一个随机音色向量并顺手存成speaker/数字.csv。也就是说你在网页上随便填个数字合成一次这个音色就被固化下来了。转换后的 pt 文件0.96 内核升级后外部下载的旧 pt 音色需要先转换才能使用方法见下文。网页端切换音色下拉框与自定义音色值输入框源码部署后默认访问http://127.0.0.1:9966地址可在 .env 的WEB_ADDRESS中修改。templates/index.html 页面上有两个入口选择音色下拉框列出 speaker 目录下已保存的 csv / pt 文件选中即使用该文件。自定义音色值输入框填写大于 0 的整数如 2000、8000。一旦填写就会忽略左侧下拉框的选择按该种子取值网页端还会同时发送text_seed控制文本润色的随机性默认 42。想试听某个陌生数字直接填进输入框合成一句即可听感合适的话该数字对应的 csv 已经自动生成在 speaker 目录里了。用 API 请求指定音色voice、custom_voice 与 prompt服务跑起来后/tts接口接受 POST 请求音色相关参数如下参数默认作用voice2222音色文件名或种子数字custom_voice0大于 0 时优先生效忽略voiceprompt空控制笑声、停顿等如[oral_2][laugh_0][break_6]temperature/top_p/top_k0.3 / 0.7 / 20采样随机性最小调用示例custom_voice传 8888 就是让服务按种子 8888 取或生成音色import requests res requests.post(http://127.0.0.1:9966/tts, data{ text: 自定义音色测试, custom_voice: 8888, prompt: [oral_2][laugh_0][break_6], temperature: 0.3, top_p: 0.7, top_k: 20, }) print(res.json())这一步做的事发一段文字给合成服务指定音色种子和语气控制符。成功后返回code:0audio_files里带 wav 文件的绝对路径与可下载 url文件名中会内嵌seed、te、tp、tk等本次参数方便回头对照。固定一个满意的音色到 csv 文件数字种子生成的音色满意后它其实已经以 csv 形式躺在 speaker 目录里。如果想手动保存一个自己算出来的向量768 维 torch 张量用项目现成的工具函数即可import torch from uilib import utils # rand_spk: shape 为 (768,) 的 torch 张量 utils.save_speaker(my_voice, rand_spk)这一步把张量逐行写成speaker/my_voice.csv下次启动服务它就会出现在下拉框中。反向读取由同一文件里的load_speaker()完成接口处理voice2222时会先找speaker/2222.csv直接加载而不重新随机。一条命令转换旧版 pt 音色文件ChatTTS 0.96 之后内核升级从外部站点下载的旧格式 pt 音色如seed_2155_restored_emb.pt不能直接用了。项目自带的 cover-pt.py 就是干这件事的把下载到的文件放进 speaker 目录保持seed_开头、_emb.pt结尾的默认命名在项目根目录执行python cover-pt.py这一步会加载模型把 speaker 目录下所有匹配命名的文件重新编码输出以-covert.pt结尾的新文件例如seed_2155_restored_emb-covert.pt并提示你删掉原始_emb.pt。macOS 上脚本会自动设置 MPS 回退开关直接运行即可如果目录里没有可转换的文件它会明确提示并结束。批量生成候选音色做试听想从种子空间里挑音色可以写个小脚本按批量采样再配合上面的转换脚本处理import torch import ChatTTS chat ChatTTS.Chat() chat.load(sourcecustom, custom_path./) for seed in (1111, 2222, 3333, 4444): torch.manual_seed(seed) spk chat.sample_random_speaker() torch.save(spk, fspeaker/seed_{seed}_emb.pt)这一步按固定种子各生成一个 768 维音色向量并落盘。生成后运行一次python cover-pt.py统一转成可用格式再用网页或 API 逐个合成试听保留听感好的那几个即可。几个容易踩的坑同一种子换台机器声音会不同。项目 faq.md 开头就声明不同机器用相同种子生成的音色可能不同同一机器多次生成也可能漂移尤其音调。所以跨机器迁移音色请携带 csv/pt 文件而不是只记数字。custom_voice会覆盖voice。两个都传时只有前者生效写批量脚本时别指望二者叠加。显存低于 4G 会被强制走 CPU。.env里device可手动指定cpu | mps | cuda默认按显存自动选择跑在 CPU 上和 GPU 上同一文件音色本身一致但生成新种子时的随机音色不受此影响。下拉框里没有数字音色。列表只来自磁盘上的文件纯数字要填自定义音色值输入框填一次后 csv 就会补进列表。把听感合适的 csv 留在 speaker 目录你的音色库就固定下来了。【免费下载链接】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),仅供参考
返回列表