> ## 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 の音声ルートを選択します。

アプリで音声出力、文字起こし、翻訳のどれが必要かに応じて、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](/ja/overview/models) または [model directory](https://www.cometapi.com/models/) から、音声対応の model ID を使用してください。以下の例では speech エンドポイントを呼び出しています。

<Note>
  これらの例ではプレースホルダー `your-audio-model-id` を使用しています。リクエストを実行する前に、[Models page](/ja/overview/models) または [model directory](https://www.cometapi.com/models/) にある利用可能な音声 model ID に置き換えてください。
</Note>

<Tip>
  [Create speech](/api/audio/create-speech) を開くと、プレイグラウンドとエンドポイントスキーマを利用できます。
</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` のエンベロープと 1 件の音声モデルレコードの形を示しています。完全なモデル一覧ではありません。
</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">
    テキスト、ファイル、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>
  実装パターンについては、[エラーコードと再試行戦略](/ja/guides/error-codes-and-retry-strategy) および [レート制限と同時実行性](/ja/guides/rate-limits-and-concurrency) を参照してください。
</Tip>

## 料金とモデルディレクトリ

<CardGroup cols={3}>
  <Card title="モデルページ" icon="list" href="/overview/models">
    CometAPI がドキュメント内で model IDs をどのように公開しているかを確認してください。
  </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>
