> ## Documentation Index
> Fetch the complete documentation index at: https://docs-model.skyengine.com.cn/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` 下载或播放音频；响应本身不是音频二进制。

<CodeGroup>
  ```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()));
  ```
</CodeGroup>

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

```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`。
</Warning>

## 支持的音色

`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` |
