Public TTS API

tts-service

公共 TTS 服务。既支持传入已分段的 segments,也支持直接提交长文本 text。服务端会走异步队列处理,并将最终音频上传到对象存储。

Version

0.1.0

JSON Docs

/api/tts

OpenAPI

/docs

鉴权方式

Bearer Token

请求头:Authorization

固定值:Bearer WANGJI

除首页文档外,其余 API 请求都必须携带该请求头。

核心概念

projectId

项目 ID。首次提交时如果不传,服务端自动创建;后续可以复用同一个 projectId 来归组多次请求。

requestId

请求 ID。每次创建任务都会生成新的 requestId,用于查询该次任务状态。

segment

最小合成单元。segments 模式下由调用方提供;long_text 模式下由服务端自动切分。

调用流程

  1. 1. 请求头携带 Authorization: Bearer WANGJI。
  2. 2. 调用 POST /api/tts/requests 提交分段请求,或调用 POST /api/tts/long-text 提交长文本请求。
  3. 3. 如果未提供 projectId,服务端自动创建 projectId。
  4. 4. 服务端创建 requestId,并将请求放入异步队列。
  5. 5. 调用 GET /api/tts/requests/{requestId} 查询总体状态。
  6. 6. 调用 GET /api/tts/requests/{requestId}/segments 查看逐段执行状态。
  7. 7. 调用 GET /api/tts/requests/{requestId}/artifacts 查看产物列表。
  8. 8. 产物完成后会上传到对象存储,接口返回对象存储路径。
  9. 9. 如需实时状态,可连接 GET /api/tts/requests/{requestId}/events。

状态枚举

Request Status

queuedrunningsucceededfailedcancelled

Segment Status

queuedrunningsucceededfailed

接口列表

GET /

人类可读的首页 API 文档。

公开访问
GET /api/tts

JSON 格式 API 文档,适合程序读取。

需要鉴权
GET /api/tts/health

健康检查。

需要鉴权
响应示例
{
  "ok": true
}
GET /api/tts/voices

获取当前可用音色列表。

需要鉴权
POST /api/tts/requests

提交一个分段异步 TTS 请求。

需要鉴权
  • text 和 segments 必须二选一。
  • 不传 projectId 时自动创建 projectId。
  • 每次提交都会生成新的 requestId。
  • segments 模式适合字幕、脚本、旁白等逐句场景。
请求示例
{
  "mode": "segments",
  "voice": {
    "voiceType": "zh_male_m191_uranus_bigtts",
    "speedRatio": 1.0,
    "pitchRatio": 1.0,
    "volumeRatio": 1.0,
    "emotion": ""
  },
  "options": {
    "enableTimestamps": true,
    "enableAlignment": false
  },
  "segments": [
    {
      "sequence": 1,
      "text": "你好,欢迎使用公共 TTS 服务。"
    },
    {
      "sequence": 2,
      "text": "这是第二句测试文本。"
    }
  ]
}
响应示例
{
  "ok": true,
  "projectId": "proj_xxxxxxxxxxxx",
  "requestId": "req_xxxxxxxxxxxx",
  "status": "queued",
  "segmentCount": 2,
  "queuePosition": 1,
  "createdAt": "2026-06-01T08:04:51.210370Z"
}
POST /api/tts/long-text

直接提交长文本,由服务端自动切分后异步合成。

需要鉴权
  • 必须提供 text。
  • 服务端会自动切分为多个 segment。
  • 最终仍然生成一个统一 requestId。
请求示例
{
  "voice": {
    "voiceType": "zh_female_vv_uranus_bigtts",
    "speedRatio": 1.0,
    "pitchRatio": 1.0,
    "volumeRatio": 1.0,
    "emotion": ""
  },
  "text": "这是一个长文本示例。服务端会自动按句子切分。然后逐段合成。最后拼接成完整音频。"
}
响应示例
{
  "ok": true,
  "projectId": "proj_xxxxxxxxxxxx",
  "requestId": "req_xxxxxxxxxxxx",
  "status": "queued",
  "segmentCount": 3,
  "queuePosition": 1,
  "createdAt": "2026-06-01T08:04:51.210370Z"
}
GET /api/tts/requests/{requestId}

查询某次请求的总体状态。

需要鉴权
GET /api/tts/requests/{requestId}/segments

查询某次请求下每个 segment 的状态、音色和时长。

需要鉴权
GET /api/tts/requests/{requestId}/artifacts

查询某次请求生成的产物,例如 final_audio、segments_json、segment_audio:*。

需要鉴权
  • path 字段始终返回对象存储路径。
  • 调用方拿到路径后自行决定下载、分发或后续处理。
GET /api/tts/requests/{requestId}/events

SSE 实时事件流。

需要鉴权
statesegmentdone

补充说明