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

# 텍스트-음성 변환

> Venice 텍스트-음성 변환 모델로 텍스트에서 음성 오디오를 생성하고, 모델별 음성을 선택하며, /audio/speech 엔드포인트에서 반환되는 바이너리 응답을 저장하세요.

텍스트-음성 변환은 작성된 텍스트를 음성 오디오로 바꿉니다. TTS 모델을 선택하고, 해당 모델이 지원하는 음성을 고르고, 텍스트를 `/audio/speech`로 전송한 뒤 바이너리 오디오 응답을 저장하세요.

이 가이드는 표준 음성 생성을 다룹니다. 사용자 지정 참조 음성으로부터 음성을 생성하려면 [음성 복제](/guides/media/voice-cloning)를 참조하세요.

## 기본 사용법

<CodeGroup>
  ```python Python theme={null}
  import os
  from pathlib import Path

  import requests

  response = requests.post(
      "https://api.venice.ai/api/v1/audio/speech",
      headers={
          "Authorization": f"Bearer {os.environ['VENICE_API_KEY']}",
          "Content-Type": "application/json",
      },
      json={
          "model": "tts-kokoro",
          "voice": "af_sky",
          "input": "Hello, welcome to Venice Voice.",
      },
  )

  response.raise_for_status()
  Path("speech.mp3").write_bytes(response.content)
  ```

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

  const response = await fetch("https://api.venice.ai/api/v1/audio/speech", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VENICE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "tts-kokoro",
      voice: "af_sky",
      input: "Hello, welcome to Venice Voice.",
    }),
  });

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

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

  ```bash cURL theme={null}
  curl https://api.venice.ai/api/v1/audio/speech \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "tts-kokoro",
      "voice": "af_sky",
      "input": "Hello, welcome to Venice Voice."
    }' \
    --output speech.mp3
  ```
</CodeGroup>

성공 응답 본문은 JSON이 아니라 모델의 기본 형식으로 된 바이너리 오디오입니다. `tts-kokoro`는 현재 MP3를 기본값으로 사용합니다.

## 모델과 음성 선택

음성은 모델별로 다릅니다. `voice` 값은 선택한 `model`에 유효해야 합니다.

사용 가능한 모델과 음성을 살펴보려면 [텍스트-음성 변환 모델](/models/text-to-speech) 페이지를 이용하세요. 음성 선택기는 요청에 전달할 정확한 음성 ID를 표시합니다.

<Note>
  음성 ID는 대소문자를 구분합니다. TTS 모델을 변경할 때는 `voice` 값도 함께 업데이트하세요.
</Note>

## 요청 구조

| 매개변수              | 유형     | 필수 여부 | 설명                                                                                |
| ----------------- | ------ | ----- | --------------------------------------------------------------------------------- |
| `model`           | string | 예     | 텍스트-음성 변환 모델 ID.                                                                  |
| `voice`           | string | 예     | 선택한 모델이 지원하는 음성 ID.                                                               |
| `input`           | string | 예     | 합성할 텍스트, 최대 4096자.                                                                |
| `response_format` | string | 아니오   | 요청할 출력 형식: `mp3`, `opus`, `aac`, `flac`, `wav` 또는 `pcm`. 지원되는 형식과 기본값은 모델별로 다릅니다. |

## 출력 형식

`response_format`을 생략하면 모델의 기본 형식이 사용됩니다. 파일 확장자를 선택하거나 형식을 재정의하기 전에 Models API에서 모델의 현재 `default_format`과 `supported_formats`를 조회하세요:

```bash theme={null}
curl "https://api.venice.ai/api/v1/models?type=tts" \
  -H "Authorization: Bearer $VENICE_API_KEY" |
  jq '.data[] | select(.id == "tts-kokoro") | .model_spec | {default_format, supported_formats}'
```

응답의 `Content-Type`은 반환된 오디오 형식을 나타냅니다. 선택한 모델이 지원하지 않는 형식을 요청하면 HTTP `400`이 반환됩니다.

## 프로덕션 팁

* 소스 텍스트와 음성이 재사용될 때는 생성된 오디오를 캐시하세요.
* 합성 전에 텍스트를 정규화하고 교정하세요. 구두점은 속도와 억양에 영향을 줍니다.
* 출력물은 모델의 응답 형식에 맞는 파일 확장자로 저장하세요.

## 관련 리소스

* [오디오 스피치 API](/api-reference/endpoint/audio/speech)
* [텍스트-음성 변환 모델](/models/text-to-speech)
* [음성 복제 가이드](/guides/media/voice-cloning)
