> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 音频 API

> 根据你的应用需要语音输出、转录还是翻译，选择 CometAPI 音频路由。音频端点与其他兼容 OpenAI 的端点使用相同的 CometAPI API 密钥模式。

通过选择你的应用是需要语音输出、转录还是翻译，使用 CometAPI 音频模型文档。音频端点与其他兼容 OpenAI 的端点使用相同的 CometAPI API 密钥模式。

## 选择一个音频 API

<CardGroup cols={3}>
  <Card title="创建语音" icon="microphone" href="/api/audio/create-speech">
    将文本转换为语音。
  </Card>

  <Card title="创建转录" icon="message" href="/api/audio/create-transcription">
    将音频转录为文本。
  </Card>

  <Card title="创建翻译" icon="sparkles" href="/api/audio/create-translation">
    将音频翻译为英文文本。
  </Card>
</CardGroup>

## 创建语音

使用来自 [Models page](/zh-Hans/overview/models) 或 [model directory](https://www.cometapi.com/models/) 的支持音频功能的 model ID。以下示例调用语音端点。

<Note>
  这些示例使用占位符 `your-audio-model-id`。在运行请求前，请将其替换为 [Models page](/zh-Hans/overview/models) 或 [model directory](https://www.cometapi.com/models/) 中可用的音频 model ID。
</Note>

<Tip>
  打开 [Create speech](/api/audio/create-speech) 以使用 playground 和端点 schema。
</Tip>

<CodeGroup>
  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.cometapi.com/v1/audio/speech",
      headers={
          "Authorization": "Bearer " + os.environ["COMETAPI_KEY"],
          "Content-Type": "application/json",
      },
      json={
          "model": "your-audio-model-id",
          "input": "Welcome to CometAPI.",
          "voice": "alloy",
          "response_format": "mp3",
      },
      timeout=60,
  )

  response.raise_for_status()

  with open("speech.mp3", "wb") as audio_file:
      audio_file.write(response.content)
  ```

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

  const response = await fetch("https://api.cometapi.com/v1/audio/speech", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "your-audio-model-id",
      input: "Welcome to CometAPI.",
      voice: "alloy",
      response_format: "mp3",
    }),
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  const audio = Buffer.from(await response.arrayBuffer());
  await writeFile("speech.mp3", audio);
  ```

  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/audio/speech \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "your-audio-model-id",
      "input": "Welcome to CometAPI.",
      "voice": "alloy",
      "response_format": "mp3"
    }' \
    --output speech.mp3
  ```
</CodeGroup>

## 响应示例

成功的语音响应是二进制音频。HTTP 响应可能如下所示：

```text theme={null}
HTTP/1.1 200 OK
Content-Type: audio/mpeg

speech.mp3
```

## 示例模型记录

<Info>
  此示例模型目录响应展示了 `/api/models` 的封装格式以及一种音频模型记录结构。它不是完整的模型列表。
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 0,
      "id": "your-audio-model-id",
      "code": "your-audio-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example audio model",
      "model_type": "audio",
      "features": [
        "text-to-speech"
      ],
      "endpoints": [
        "openai"
      ],
      "pricing": {
        "currency": "USD / M Tokens",
        "input": 12,
        "output": 12,
        "per_request": null,
        "per_second": null
      }
    }
  ]
}
```

## 常见错误

<AccordionGroup>
  <Accordion title="不支持的音频格式">
    使用端点页面中记录的格式。
  </Accordion>

  <Accordion title="大文件上传被拒绝">
    压缩音频文件，或将任务拆分为更小的文件。
  </Accordion>

  <Accordion title="转录结果为空">
    确认文件中包含语音，并且字段名称与文档一致。
  </Accordion>

  <Accordion title="错误的 base URL">
    使用 `https://api.cometapi.com/v1`。
  </Accordion>
</AccordionGroup>

## 错误代码与重试策略

<AccordionGroup>
  <Accordion title="400">
    在修正 text、file、model ID、voice 或 format 之前，请勿重试。
  </Accordion>

  <Accordion title="401">
    在 API key 已提供且有效之前，请勿重试。
  </Accordion>

  <Accordion title="404">
    重试前请检查 base URL、路径和 model ID。
  </Accordion>

  <Accordion title="413">
    重试前请减小上传大小。
  </Accordion>

  <Accordion title="429">
    使用指数退避进行重试，并降低并发度。
  </Accordion>

  <Accordion title="500 or 503">
    对临时性的提供商或服务错误使用退避重试。
  </Accordion>
</AccordionGroup>

<Tip>
  关于实现模式，请参阅[错误代码与重试策略](/zh-Hans/guides/error-codes-and-retry-strategy)和[速率限制与并发](/zh-Hans/guides/rate-limits-and-concurrency)。
</Tip>

## 定价与模型目录

<CardGroup cols={3}>
  <Card title="模型页面" icon="list" href="/overview/models">
    了解 CometAPI 如何在文档中公开 model ID。
  </Card>

  <Card title="模型目录" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    浏览模型可用性和能力。
  </Card>

  <Card title="定价" icon="tag" href="https://www.cometapi.com/pricing/">
    在调用模型之前查看定价。
  </Card>
</CardGroup>
