上传音色
上传自定义声音素材,返回可用于语音合成的音色 ID。
上传自定义声音素材,用于后续音色语音合成。支持文件、Base64 或公网 URL 三种说话人音频来源。
成功后返回 uspeech: 前缀的音色 ID,可在音色语音合成接口的 voice 字段中使用。
Base URL
https://api.autorouter.top— Production
Authentication
BearerAuth: http (bearer)
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
Endpoints
POST /v1/audio/voice/upload
上传自定义音色
请求中包含音色名称、模型与说话人音频,响应返回音色 ID。音频格式为 WAV / MP3,文件不超过 20MB,时长不超过 30 秒。说话人音频必须提供 speaker_file、speaker_file_base64、speaker_url 三者之一。
Request Body
Content-Type: multipart/form-data 或 application/x-www-form-urlencoded
Example:
{
"name": "温柔女声",
"model": "IndexTeam/IndexTTS-2",
"speaker_url": "https://example.com/audio/speaker.wav",
"emotion_url": "https://example.com/audio/emotion.wav"
}Properties:
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | 自定义音色名称。示例:温柔女声、客服音色A |
model | string | Yes | 模型名称。示例:IndexTeam/IndexTTS-2 |
speaker_file | file | Conditional | 说话人音频文件(仅 multipart)。WAV / MP3,不超过 20MB,时长不超过 30 秒 |
speaker_file_base64 | string | Conditional | 说话人音频 Base64 |
speaker_url | string | Conditional | 说话人音频公网 URL |
emotion_file | file | No | 情绪参考音频文件(仅 multipart)。WAV / MP3,不超过 20MB |
emotion_file_base64 | string | No | 情绪参考音频 Base64 |
emotion_url | string | No | 情绪参考音频公网 URL |
application/x-www-form-urlencoded 不支持文件字段,需使用 speaker_file_base64 或 speaker_url。
speaker_filefile(条件必选)
说话人音频,用于提取音色特征。必须与 speaker_file_base64、speaker_url 三选一。
限制:
- 格式: wav、mp3
- 文件大小: 不超过 20MB
- 时长: 不超过 30 秒。上游按 WAV 文件头中的 data chunk size 计算时长;streaming WAV 若未回写真实长度,可能被误判为超时
Responses
200: 上传成功
Content-Type: application/json
400: 请求参数错误或音频约束不满足
Content-Type: application/json
401: Bearer Token 无效或缺失
Content-Type: application/json
请求示例
curl -X POST "https://api.autorouter.top/v1/audio/voice/upload" \
-H "Authorization: Bearer sk-xxxxxx" \
-F "name=温柔女声" \
-F "model=IndexTeam/IndexTTS-2" \
-F "speaker_file=@/path/to/speaker.wav" \
-F "emotion_file=@/path/to/emotion.wav"响应示例
{
"id": "uspeech:xxxx-xxxx-xxxx-xxxx"
}响应字段说明:
| Name | Type | Description |
|---|---|---|
id | string | 自定义音色 ID,格式 uspeech:.,后续合成时作为 voice 传入 |
错误处理
HTTP 400 参数错误
| 场景 | error. |
|---|---|
未传 name | missing_name |
| 未提供说话人音频 | missing_speaker |
| Base64 无效 | invalid_speaker_base64 |
| 音频格式不支持 | unsupported_audio_format |
| 文件过大 | file_too_large |
| 时长超过 30 秒 | duration_out_of_range |
| 采样率过低 | sample_rate_too_low |
duration_out_of_range 由上游返回,HTTP 状态码 400,error.type 为 invalid_request_error。网关对 speaker_file 仅做 multipart 原样转发,本地只检查文件大小和扩展名,不计算音频时长。
示例:
{
"error": {
"message": "上游服务商错误: audio duration must be <= 30 seconds",
"type": "invalid_request_error",
"code": "duration_out_of_range"
}
}streaming WAV 被误判超时: 部分录音或导出工具会写出 streaming WAV:先把 RIFF chunk size、data chunk size 写成接近 0x7FFFFFFF(约 2.1GB),事后又未回写真实长度。Python wave 及多数服务端解析库会信任文件头中的 data size,从而算出数万秒并触发该错误;macOS afinfo 则按文件实际大小估算时长,同一文件可能仍显示只有几秒。
处理方式:重新导出为标准 WAV,让工具按实际数据回写 chunk size,或改用 MP3 后再上传。
HTTP 401 / 403 鉴权错误
401 Unauthorized:API Key 无效或已过期。示例:{"error":{"message":"Validate Certification failed.","type":"invalid_request_error","code":"auth_error","param":null}}403 Forbidden:API Key 无权访问此模型
HTTP 402 余额不足
返回 insufficient user quota。请前往 AutoRouter 控制台充值。