> ## Documentation Index
> Fetch the complete documentation index at: https://quwan-b8010aef.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 开天语音合成

> 使用开天 TTS 将文本合成为 WAV 音频

# 开天语音合成

通过 `POST /v1/audio/speech` 调用开天 TTS，将文本合成为 WAV 音频。模型 ID 为 `ktian-speechv4.3`。

使用前，请确保 API Key 已开通该模型。可以通过 `GET /v1/models` 检查当前 API Key 是否能看到 `ktian-speechv4.3`。

## 请求示例

非流式请求会在音频生成并转存完成后返回 JSON。使用响应中的 `url` 下载或播放音频；响应本身不是音频二进制。

```bash cURL theme={null}
curl --request POST \
  --url https://model-api.skyengine.com.cn/v1/audio/speech \
  --header 'Authorization: Bearer <API-KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "ktian-speechv4.3",
    "input": "你好，这是开天语音合成测试。",
    "voice": "F02_female",
    "speed": 1.0,
    "response_format": "wav",
    "stream": false
  }'
```

```python Python theme={null}
import os
import requests

response = requests.post(
    "https://model-api.skyengine.com.cn/v1/audio/speech",
    headers={
        "Authorization": f"Bearer {os.environ['MODELHUB_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "ktian-speechv4.3",
        "input": "你好，这是开天语音合成测试。",
        "voice": "F02_female",
        "speed": 1.0,
        "response_format": "wav",
        "stream": False,
    },
    timeout=120,
)
response.raise_for_status()
result = response.json()

# 音频 URL 是临时访问地址，请使用 GET 及时下载并转存。
audio = requests.get(result["url"], timeout=60)
audio.raise_for_status()
with open("speech.wav", "wb") as audio_file:
    audio_file.write(audio.content)

print("request_id:", result["request_id"])
print("duration_ms:", result.get("duration_ms"))
```

```javascript JavaScript/Node.js theme={null}
import { writeFile } from "node:fs/promises";

const response = await fetch("https://model-api.skyengine.com.cn/v1/audio/speech", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.MODELHUB_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "ktian-speechv4.3",
    input: "你好，这是开天语音合成测试。",
    voice: "F02_female",
    speed: 1.0,
    response_format: "wav",
    stream: false
  })
});

if (!response.ok) throw new Error(await response.text());
const result = await response.json();

const audioResponse = await fetch(result.url);
if (!audioResponse.ok) throw new Error(await audioResponse.text());
await writeFile("speech.wav", Buffer.from(await audioResponse.arrayBuffer()));
```

响应示例（字段值仅作示意）：

```json theme={null}
{
  "request_id": "example-request-id",
  "url": "https://model-static.skyengine.com.cn/tts/example.wav?...",
  "duration_ms": 2720,
  "token": 26
}
```

| 字段 | 类型 | 说明 |
| - | - | - |
| `request_id` | string | 本次合成请求 ID，可用于问题排查。 |
| `url` | string | 音频临时访问地址。需要长期保存时，请使用 `GET` 下载到自己的存储。 |
| `duration_ms` | integer | 音频时长，单位为毫秒。无法计算时可能不返回。 |
| `token` | integer | 本次请求的计费用量。它不是大语言模型 Token 数。 |

## 参数支持矩阵

| 参数 | 类型 | 必填 | 支持值或默认值 | 说明 |
| - | - | - | - | - |
| `model` | string | 是 | `ktian-speechv4.3` | 开天语音合成模型 ID。 |
| `input` | string | 是 | 非空字符串 | 待合成文本，会参与计费用量计算。 |
| `voice` | string | 是 | 音色 ID | 合成音色；请求示例使用 `F02_female`。 |
| `speed` | number | 否 | `0.5`～`2.0`，默认 `1.0` | 语速倍率。 |
| `response_format` | string | 是 | `wav` | 音频文件格式。请显式传入 `wav`。 |
| `stream` | boolean | 否 | `false` | 固定使用 `false`，返回音频文件 URL。 |
| `model_extra` | object | 否 | - | 模型扩展参数容器。 |
| `model_extra.language` | string | 否 | `zh` | 中文语言标识；合成中文时可以省略。 |

### 支持的参数组合

| 输出方式 | 音频格式 | 音色 | 语速 | `language` | 支持状态 |
| - | - | - | - | - | - |
| 非流式（`stream: false`） | `wav` | 可用音色 ID | `0.5`～`2.0` | 省略或 `zh` | 支持 |

> [!WARNING]
>
> 开天 TTS 当前仅支持非流式 WAV 文件输出。请使用 `response_format: "wav"` 和 `stream: false`。

## 支持的音色

`voice` 可使用以下 70 个音色 ID。本页请求示例使用 `F02_female`。

### 女性音色

| 音色 ID | 音色 ID |
| - | - |
| `F02_female` | `F06_female` |
| `F29_female` | `F66_female` |
| `G00032_2F` | `G00041_2F` |
| `L_F001_female` | `PGC_07` |
| `quxiaodong` | `quxiaohu` |
| `quxiaoli` | `quxiaomeng` |
| `quxiaoping` | `quxiaoyu` |
| `quxiaozhi` | `TS_004_female` |

### 男性音色

| 音色 ID | 音色 ID |
| - | - |
| `G00022_1M` | `huanhuan` |
| `M31_male` | `M36_male` |
| `quxiaoai` | `quxiaodi` |
| `quxiaoer` | `quxiaoka` |
| `quxiaokai` | `quxiaoyao` |

### 其他音色

以下音色未提供性别标签：

| 音色 ID | 音色 ID |
| - | - |
| `minimax_22998_voice69` | `minimax_6_voice62` |
| `minimax_61` | `minimax_62` |
| `minimax_63` | `minimax_64` |
| `minimax_65` | `minimax_67` |
| `minimax_71` | `minimax_73` |
| `minimax_77` | `minimax_90` |
| `minimax_badao` | `minimax_Bingjiao_zongcai` |
| `minimax_botong` | `minimax_Boyan` |
| `minimax_chengshu` | `minimax_daxuesheng` |
| `minimax_guimi0220_hificloneck14` | `minimax_guimi0220_hificloneck15` |
| `minimax_guimi0220_hificloneck20` | `minimax_jingying` |
| `minimax_kingking8882` | `minimax_kongchen` |
| `minimax_murong` | `minimax_Podcast_girl` |
| `minimax_qingse` | `minimax_shangshen` |
| `minimax_shaonv_1` | `minimax_shaonv_2` |
| `minimax_tianmei` | `minimax_wuzhao_1` |
| `minimax_wuzhao_2` | `minimax_wuzhao_3` |
| `minimax_wuzhao_4` | `minimax_wuzhao_5` |
| `minimax_xiaomo` | `minimax_Xiaoyi` |
| `minimax_yaoyao` | `minimax_yujie` |
| `minimax_zeyang` | `minimax_zhaoyi` |
| `TT_363973775` | `TT_724623993` |

传入不支持的音色时，接口会返回 HTTP 400 参数错误。音色列表可能随模型版本更新，请以当前文档为准。

## 当前不支持的参数

当前没有提供以下参数或能力，请勿在请求中使用：

| 参数或能力 | 状态 |
| - | - |
| 音量 `volume` / `vol` | 不支持 |
| 音调 `pitch` | 不支持 |
| 采样率 `sample_rate` / `audio_sample_rate` | 不支持 |
| 比特率 `bitrate` | 不支持 |
| 情绪 `emotion` | 不支持 |
| 随机种子 `seed` | 不支持 |
| 字幕生成 | 不支持 |
| 混合音色 | 不支持 |
| `model_extra.output_format` | 不支持；请使用顶层 `response_format` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.