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

# Créer de la parole

> Génère de l'audio à partir du texte d'entrée

## Corps de la requête

**Timeout des requêtes synchrones :** cet endpoint non-chat attend que le modèle routé termine son traitement. Les entrées volumineuses, les longs fichiers audio ou les grands lots peuvent dépasser les valeurs par défaut courantes de 30s côté client ; configurez donc le timeout de votre client HTTP à au moins `120s`.

Les champs optionnels pris en charge varient selon la famille de modèles. TokenLab valide cette matrice avant le routage : OpenAI TTS accepte `voice`, `instructions`, `response_format`, `stream_format` et `speed` ; MiniMax speech accepte `voice`, `voice_id`, `response_format`, `stream_format` et `speed` ; Gemini TTS accepte `prompt`, `language_code`, `voice`, `response_format`, `stream_format`, `speed` et `temperature` ; les routes TTS plus strictes de type Vidu/Kling peuvent n’accepter que `input` et `stream_format`. Les champs de premier niveau inconnus, y compris `user`, renvoient `400 unsupported_parameter` au lieu d’être ignorés.

<ParamField body="model" type="string" default="tts-1">
  Modèle TTS. Exemples : `tts-1`, `gpt-4o-mini-tts`, `speech-02-hd` et `gemini-2.5-flash-tts`. Consultez `GET /v1/models?recommended_for=tts` pour la sélection actuelle.
</ParamField>

<ParamField body="input" type="string" required>
  Le texte pour lequel générer l'audio. Maximum 4096 caractères.
</ParamField>

<ParamField body="voice" type="string | object">
  Sélecteur de voix. Passez un nom intégré comme `nova`, une voix Gemini comme `Kore`, ou un objet comme `{ "id": "voice-id" }` pour les voix personnalisées compatibles.
</ParamField>

<ParamField body="voice_id" type="string">
  Sélecteur vocal natif du fournisseur pour les modèles speech compatibles MiniMax.
</ParamField>

<ParamField body="instructions" type="string">
  Instructions optionnelles de style ou de rendu pour les modèles TTS compatibles OpenAI qui les prennent en charge.
</ParamField>

<ParamField body="prompt" type="string">
  Prompt optionnel de style de parole pour les modèles Gemini TTS.
</ParamField>

<ParamField body="language_code" type="string">
  Code de langue optionnel, par exemple `en-US`, pour les routes Gemini, xAI et TTS compatibles.
</ParamField>

<ParamField body="response_format" type="string">
  Format audio. Les valeurs courantes incluent `mp3`, `opus`, `aac`, `flac`, `wav` et `pcm` ; les valeurs prises en charge varient selon la famille de modèles.
</ParamField>

<ParamField body="stream_format" type="string" default="audio">
  Format de livraison TokenLab : `audio` ou `sse`. `stream_format=sse` n'est pas pris en charge pour `tts-1` ni `tts-1-hd`.
</ParamField>

<ParamField body="speed" type="number">
  Vitesse de parole pour les familles de modèles qui la prennent en charge (0.25 à 4.0).
</ParamField>

<ParamField body="temperature" type="number">
  Température d'échantillonnage pour les routes TTS compatibles Gemini (0 à 2).
</ParamField>

## Réponse

Retourne le fichier audio dans le format demandé.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1/audio/speech" \
    -H "Authorization: Bearer sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "tts-1-hd",
      "voice": "nova",
      "input": "Hello, welcome to TokenLab!"
    }' \
    --output speech.mp3
  ```

  ```python Python theme={null}
  from openai import OpenAI

  client = OpenAI(
      api_key="sk-your-api-key",
      base_url="https://api.tokenlab.sh/v1"
  )

  response = client.audio.speech.create(
      model="tts-1-hd",
      voice="nova",
      input="Hello, welcome to TokenLab!"
  )

  response.stream_to_file("speech.mp3")
  ```

  ```javascript JavaScript theme={null}
  import OpenAI from 'openai';
  import fs from 'fs';

  const client = new OpenAI({
    apiKey: 'sk-your-api-key',
    baseURL: 'https://api.tokenlab.sh/v1'
  });

  const response = await client.audio.speech.create({
    model: 'tts-1-hd',
    voice: 'nova',
    input: 'Hello, welcome to TokenLab!'
  });

  const buffer = Buffer.from(await response.arrayBuffer());
  fs.writeFileSync('speech.mp3', buffer);
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init('https://api.tokenlab.sh/v1/audio/speech');

  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Content-Type: application/json',
          'Authorization: Bearer sk-your-api-key'
      ],
      CURLOPT_POSTFIELDS => json_encode([
          'model' => 'tts-1-hd',
          'voice' => 'nova',
          'input' => 'Hello, welcome to TokenLab!'
      ])
  ]);

  $audio = curl_exec($ch);
  curl_close($ch);

  file_put_contents('speech.mp3', $audio);
  ```
</RequestExample>

## Exemples de voix

| Voix      | Description                    |
| --------- | ------------------------------ |
| `alloy`   | Neutre, équilibrée             |
| `ash`     | Calme, mesurée                 |
| `ballad`  | Mélodique, expressive          |
| `coral`   | Chaleureuse, accueillante      |
| `echo`    | Chaleureuse, conversationnelle |
| `fable`   | Expressif, narratif            |
| `nova`    | Amicale, claire                |
| `onyx`    | Grave, autoritaire             |
| `sage`    | Sage, réfléchie                |
| `shimmer` | Douce, délicate                |
| `verse`   | Dynamique, polyvalente         |

## Exemple de réponse

<ResponseExample>
  ```binary 200 OK theme={null}
  <binary audio data>
  ```
</ResponseExample>

## Champs importants

<ResponseField name="Content-Type" type="string">Type d’événement ou de message retourné par l’API.</ResponseField>
<ResponseField name="body" type="binary">Corps brut de la réponse. Enregistrez-le directement sans le parser en JSON.</ResponseField>
