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

# Text-to-Speech

> Genera audio parlato dal testo con i modelli text-to-speech di Venice e /audio/speech.

Il text-to-speech trasforma il testo scritto in audio parlato. Scegli un modello TTS, seleziona una voce supportata da quel modello, invia il testo a `/audio/speech` e salva la risposta audio binaria.

Usa questa guida per la generazione vocale standard. Se vuoi creare audio a partire da una voce di riferimento personalizzata, consulta [Voice Cloning](/guides/media/voice-cloning).

## Utilizzo di Base

<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>

Il corpo della risposta di successo è audio binario nel formato predefinito del modello, non JSON. Attualmente `tts-kokoro` usa MP3 come formato predefinito.

## Scelta di Modello e Voce

Le voci sono specifiche per modello. Il valore di `voice` deve essere valido per il `model` che scegli.

Usa la pagina [Modelli Text-to-Speech](/models/text-to-speech) per esplorare i modelli e le voci disponibili. Il selettore delle voci elenca gli ID esatti da passare nella richiesta.

<Note>
  Gli ID delle voci fanno distinzione tra maiuscole e minuscole. Se cambi modello TTS, aggiorna contemporaneamente il valore di `voice`.
</Note>

## Struttura della Richiesta

| Parametro         | Tipo   | Obbligatorio | Descrizione                                                                                                                                     |
| ----------------- | ------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`           | string | Sì           | ID del modello text-to-speech.                                                                                                                  |
| `voice`           | string | Sì           | ID della voce supportata dal modello selezionato.                                                                                               |
| `input`           | string | Sì           | Testo da sintetizzare, fino a 4096 caratteri.                                                                                                   |
| `response_format` | string | No           | Formato di output richiesto: `mp3`, `opus`, `aac`, `flac`, `wav` o `pcm`. I formati supportati e quello predefinito sono specifici per modello. |

## Formato di Output

Puoi omettere `response_format` per usare il formato predefinito del modello. Prima di scegliere un'estensione di file o sovrascrivere il formato, interroga l'API Models per conoscere i valori correnti di `default_format` e `supported_formats` del modello:

```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}'
```

L'header `Content-Type` della risposta identifica il formato audio restituito. Richiedere un formato non supportato dal modello selezionato restituisce HTTP `400`.

## Consigli per la Produzione

* Metti in cache l'audio generato quando il testo sorgente e la voce vengono riutilizzati.
* Normalizza e revisiona il testo prima della sintesi. La punteggiatura influenza ritmo e intonazione.
* Salva l'output con l'estensione di file corretta in base al formato di risposta del modello.

## Risorse Correlate

<Tip>
  Devi narrare qualcosa di più lungo di poche frasi? [Narrare articoli con il Text-to-Speech](/guides/media/article-narration) copre il limite di 4096 caratteri in input, la suddivisione del testo sui confini delle frasi, l'unione dei pezzi in un unico file audio e lo streaming per la riproduzione interattiva.
</Tip>

* [API Audio Speech](/api-reference/endpoint/audio/speech)
* [Modelli Text-to-Speech](/models/text-to-speech)
* [Narrare articoli con il Text-to-Speech](/guides/media/article-narration)
* [Guida al Voice Cloning](/guides/media/voice-cloning)
