跳到主要内容

语音合成HTTP API

接口地址:

外网访问地址:

https://aibook-api.mthreads.com:32414/api/v1/tts/generate

注意: 访问令牌(Access Token)请联系我们获取。联系方式: meng.cai@mthreads.com, ye.wang@mthreads.com

TTS 音色列表

体验demo:https://voice.mthreads.com/

音色voice_name性别备注
程小可AIBC006_llm大模型音色
程小清AIBF004_llm大模型音色
程小新AIBF105_llm大模型音色
程小艾AIBF111_llm大模型音色
程小曲AIBF001_llm大模型音色
程小园AIBF002_llm大模型音色
程小苏AIBF003_llm大模型音色
程小迪AIBM107_llm大模型音色
程小春AIBM115_llm大模型音色
程小虎AIBM101_llm大模型音色
程小帅AIBM103_llm大模型音色
晓凌LYG1004_llm大模型音色
穆莎SSB3001_llm大模型音色
米塔SSB3002_llm大模型音色
晓柒LYG3001_llm大模型音色
BabyXWSH0001_llm大模型音色
BoyTenWSH0002_llm大模型音色
程小可(lite)AIBC006
程小曲(lite)AIBF001
小美(lite)NYS0001
小雅(lite)NYS0002
穆莎(lite)SSB3001
米塔(lite)SSB3002
晓凌(lite)LYG1004
晓柒(lite)LYG3001
BabyX(lite)babyx
BoyTen(lite)boyten

相关参数

参数类型是否必需说明
textstring待合成文本,必须为 UTF-8 编码,长度不超过 300 字符(英文单词之间需空格)。支持 SSML。
voicestring发音人。请参考上方音色表的 voice_name 字段填写。
formatstring输出音频格式,默认为 wav,仅支持 wav 和 mp3。
volumeinteger音量。仅限非大模型音色,取值范围 0~100,默认 50。
speech_rateinteger语速。仅限非大模型音色,取值范围 -500~500,默认 0。
对应倍速区间 [-500, 0, 500] 分别为 [0.5, 1.0, 2.0]。
-500 表示 0.5 倍默认语速,0 表示 1 倍默认语速,500 表示 2 倍默认语速。
大约每秒合成 4 字,具体随发音人略有不同。
算法说明:小于 1 倍速时用 0.002 系数,大于 1 倍速时用 0.001 系数,结果取近似值。

调用示例

Bash

curl --location 'https://aibook-api.mthreads.com:32414/api/v1/tts/generate' \
--header 'Content-Type: application/json' \
--header 'Authorization: {ACCESS_TOKEN}' \
--data '{
"text": "摩尔线程自研语音合成系统",
"voice": "LYG3001",
"volume": 50,
"speech_rate": 0,
"format": "mp3"
}' \
--output "demo.mp3"

Python

import requests

api_address = "https://aibook-api.mthreads.com:32414/api/v1/tts/generate"
access_token = "<ACCESS_TOKEN>"

request_payload = {
"text": "摩尔线程自研语音合成系统",
"voice": "LYG1004",
"volume": 50,
"speech_rate": 0,
"format": "mp3"
}

resp = requests.post(
api_address,
json=request_payload,
headers={
'Content-Type': 'application/json',
'Authorization': access_token
}
)

if resp.status_code == 200:
print("Save synthesized audio to demo.mp3")
with open("demo.mp3", "wb") as f:
f.write(resp.content)
elif resp.status_code == 400:
print("Received a client error! [{}]".format(resp.content))
elif resp.status_code == 500:
print("Received server error! [{}]".format(resp.content))
else:
print("Received an unknown status code [{}] with content [{}]".format(resp.status_code, resp.content))