> ## 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](/ko/overview/models) 또는 [model directory](https://www.cometapi.com/models/)에서 오디오를 지원하는 model ID를 사용하세요. 아래 예시는 speech 엔드포인트를 호출합니다.

<Note>
  이 예시에서는 `your-audio-model-id` 플레이스홀더를 사용합니다. 요청을 실행하기 전에 [Models page](/ko/overview/models) 또는 [model directory](https://www.cometapi.com/models/)에서 사용 가능한 오디오 model ID로 교체하세요.
</Note>

<Tip>
  playground와 엔드포인트 스키마를 사용하려면 [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>

## 응답 예시

성공적인 speech 응답은 바이너리 오디오입니다. 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">
    텍스트, 파일, model ID, voice 또는 format을 수정할 때까지 재시도하지 마세요.
  </Accordion>

  <Accordion title="401">
    API 키가 존재하고 유효할 때까지 재시도하지 마세요.
  </Accordion>

  <Accordion title="404">
    재시도하기 전에 base URL, path, model ID를 확인하세요.
  </Accordion>

  <Accordion title="413">
    재시도하기 전에 업로드 크기를 줄이세요.
  </Accordion>

  <Accordion title="429">
    지수 백오프를 사용해 재시도하고 동시성을 줄이세요.
  </Accordion>

  <Accordion title="500 or 503">
    일시적인 provider 또는 서비스 오류에는 백오프를 적용해 재시도하세요.
  </Accordion>
</AccordionGroup>

<Tip>
  구현 패턴은 [오류 코드와 재시도 전략](/ko/guides/error-codes-and-retry-strategy) 및 [Rate limits and concurrency](/ko/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>
