API 文档AI 模型接口语音Bilibili

上传音色

上传自定义声音素材,返回可用于语音合成的音色 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:

NameTypeRequiredDescription
namestringYes自定义音色名称。示例:温柔女声、客服音色A
modelstringYes模型名称。示例:IndexTeam/IndexTTS-2
speaker_filefileConditional说话人音频文件(仅 multipart)。WAV / MP3,不超过 20MB,时长不超过 30 秒
speaker_file_base64stringConditional说话人音频 Base64
speaker_urlstringConditional说话人音频公网 URL
emotion_filefileNo情绪参考音频文件(仅 multipart)。WAV / MP3,不超过 20MB
emotion_file_base64stringNo情绪参考音频 Base64
emotion_urlstringNo情绪参考音频公网 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"
}

响应字段说明:

NameTypeDescription
idstring自定义音色 ID,格式 uspeech:...,后续合成时作为 voice 传入

错误处理

HTTP 400 参数错误

场景error.code
未传 namemissing_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 控制台充值。

目录