IndexTTS2 API
index-tts-v2 提供 10 个开箱即用的预置音色,并支持用一句话描述目标情感。
输出 22.05 kHz 单声道音频。
本模型串行处理请求,不适合批量或高并发场景,批量合成请使用 matrix-tts-v1。
快速开始
curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/audio/speech' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "index-tts-v2",
"input": "你好,这是一段由 IndexTTS2 生成的语音。",
"voice": "voice_01"
}' \
--output speech.wav
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 固定为 index-tts-v2 |
input | string | 是 | 待合成文本,上限 4000 字符 |
voice | string | 否 | 预置音色,voice_01~voice_10,默认 voice_01 |
instructions | string | 否 | 情感描述文本,例如 "非常开心兴奋" |
ref_audio | string | 否 | Base64 编码的参考音频,传入后覆盖 voice |
response_format | string | 否 | wav(默认)、flac、ogg、opus |
预置音色
可选值为 voice_01 到 voice_10。传入其他名称会返回 400:
{"detail": "preset voice not allowed: my-voice"}
各音色的实际听感请通过一次短文本合成试听确定。
情感控制
用 instructions 传入一句情感描述,模型会据此调整语气:
curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/audio/speech' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model": "index-tts-v2",
"input": "太好了,我们成功了!",
"voice": "voice_03",
"instructions": "非常开心兴奋"
}' \
--output happy.wav
instructions 接受自由描述,与 matrix-tts-v1 的固定词典不同。
:::note 情感向量与情感参考音频暂未开放
模型本身还支持用数值向量或一段情感参考音频来控制情感,但这两种方式目前不在平台开放的参数范围内,
通过 API 传入不会生效。当前请使用 instructions 进行情感控制。
:::
带情感描述的请求需要额外的情感推断步骤,耗时通常比普通合成更长。
声音克隆
传入 ref_audio 即可克隆参考音频的音色,此时 voice 不再生效:
REF_B64=$(base64 -i my-voice.wav | tr -d '\n')
curl --fail-with-body \
-X POST 'https://mzsjai.com/v1/audio/speech' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"index-tts-v2\",
\"input\": \"用我的声音念这句话。\",
\"ref_audio\": \"${REF_B64}\"
}" \
--output cloned.wav
输出
返回 22.05 kHz、单声道、16 位音频。默认为 WAV。 三个语音模型中本模型采样率最低,对音质要求较高时建议选择 48 kHz 的另外两个模型。
请求 mp3 或 pcm 不会报错,但返回的仍是 WAV 数据,详见语音合成总览。
错误码
| 状态码 | 触发条件 |
|---|---|
400 | input 为空或超过 4000 字符;voice 不在预置列表;ref_audio 不是合法 Base64 |
500 | 合成失败 |
503 | 模型加载中或服务繁忙 |
其余错误码见语音合成总览。