会员专属,加入会员后,可免费下载!本站资源仅支持搭载Apple Silicon Mac M系列 GPU加速芯片。

ChatTTS-UI:一键文字转语音的神器,支持API调用!

最近有一个非常有趣的项目,叫做ChatTTS-UI。它是一个简单的本地网页界面,可以使用ChatTTS将文字合成为语音,还支持对外提供API接口。项目已经开源,大家可以在这里找到:https://github.com/jianchang512/ChatTTS-ui

软件界面
软件界面

使用效果:

ChatTTS-UI的特点

相较于官方的使用页面,ChatTTS-UI有以下几个特点:

  • 文字、数字和符号控制符混杂效果
  • 优化中文文本归一化
  • 添加速度控制(speed 1-9)
  • 固定音色
  • 增加 compile=true 以启用推理优化
  • 数字转为对应语言的读法
  • 增加中英分词功能
  • 改进界面和API
  • 增加 top_ptop_k 参数控制
  • 多行文字按行合成
  • 自定义音色获取种子值
  • 允许跳过 refine text 阶段
  • 网页在线文字合成
  • 支持API接口

安装指南

为了简化安装流程,Mac爱范团队将上述工具封装成了一个独立的启动包,用户只需简单点击即可运行,无需配置繁琐的Python环境。以下是获取和安装该应用的详细步骤:

下载应用

前往下载页面:https://aifun.fans/271/,点击页面右侧的下载按钮进行下载。

注意:仅支持搭载有 Mac M1/2/3 系列芯片的设备。

安装步骤

  1. 从上述链接下载DMG镜像文件,将app文件拖拽到Applications文件夹中。

  2. 复制安装完成后,首次启动先不要在启动台打开,而是在应用程序文件夹右键打开,原因参考Mac 安装软件常见问题

  3. 软件会自动在默认浏览器打开操作界面,此时可以开始在浏览器中使用。

图片
图片

ChatTTS使用技巧

文本中可用的控制符号

你可以在原始待合成文本中穿插控制符号,目前支持笑声和停顿两种控制符。

  • [laugh] 代表笑声
  • [uv_break] 代表停顿

例如:

text="你好啊[uv_break]朋友们,听说今天是个好日子,难道[uv_break]不是吗[laugh]?"

在实际合成中,[laugh] 将被笑声替代,[uv_break] 处将加入停顿。对于笑声和停顿的强度,可以通过参数 params_refine_text 中传递 prompt 控制。

chat.infer([text],params_refine_text={"prompt":'[oral_2][laugh_0][break_6]'})
chat.infer([text],params_refine_text={"prompt":'[oral_2][laugh_2][break_4]'})

跳过 refine text 阶段

实际合成时会重新整理(refine text)插入控制符,如果不希望这样,可以将 skip_refine_text 参数设为 True

chat.infer([text],skip_refine_text=True,params_refine_text={"prompt":'[oral_2][laugh_0][break_6]'})

固定发音人音色

默认每次合成都随机调用不同音色,这点非常不友好。若要简单固定发音角色,可以手动设置一个随机数种子,然后获取一个随机说话人。

torch.manual_seed(2222)
rand_spk = chat.sample_random_speaker()
chat.infer([text], use_decoder=True,params_infer_code={'spk_emb': rand_spk})

经测试,2222 7869 6653 是男性音色,3333 4099 5099 是女性角色,更多角色可以自行调整不同的种子数测试。

使用API请求教程

请求方法: POST
请求地址: http://127.0.0.1:9966/tts

请求参数:

  • text: str | 必须, 要合成语音的文字
  • voice: int | 可选,默认 2222, 决定音色的数字, 2222 | 7869 | 6653 | 4099 | 5099,可选其一,或者任意传入将随机使用音色
  • prompt: str | 可选,默认 空, 设定 笑声、停顿,例如 [oral_2][laugh_0][break_6]
  • temperature: float | 可选, 默认 0.3
  • top_p: float | 可选, 默认 0.7
  • top_k: int | 可选, 默认 20
  • skip_refine: int | 可选, 默认0, 1=跳过 refine text,0=不跳过
  • custom_voice: int | 可选, 默认0,自定义获取音色值时的种子值,需要大于0的整数,如果设置了则以此为准,将忽略 voice
  • is_split: int | 可选,默认 0, 1=将数字转为文本以便正确发音,0=保持不变

返回: json数据

成功返回:

{code:0,msg:ok,audio_files:[dict1,dict2]}

其中 audio_files 是字典数组,每个元素dict为 {filename:wav文件绝对路径,url:可下载的wav网址}

失败返回:

{code:1,msg:错误原因}

API调用代码

import requests

res = requests.post('http://127.0.0.1:9966/tts', data={
  "text""若不懂无需填写",
  "prompt""",
  "voice""3333",
  "temperature"0.3,
  "top_p"0.7,
  "top_k"20,
  "skip_refine"0,
  "custom_voice"0,
  "is_split"1
})
print(res.json())

成功调用的结果:

{code:0, msg:'ok', audio_files:[{filename: E:/python/chattts/static/wavs/20240601-22_12_12-c7456293f7b5e4dfd3ff83bbd884a23e.wav, url: http://127.0.0.1:9966/static/wavs/20240601-22_12_12-c7456293f7b5e4dfd3ff83bbd884a23e.wav}]}

出错时的结果:

{code:1, msg:"error"}

各位新老朋友,麻烦点个赞👍和在看👀吧!

本站分享的AI软件只提供Apple Silicon M系列芯片,Mac系列电脑只要是M系列芯片都可以运行

由于商品的特殊性,本站不支持退款,所以在开通会员之前,请确认你的需求。如果不放心,可以开通体验会员体验,满意再升级其他会员套餐。