Skip to main content
Text-to-speech turns written text into spoken audio. Choose a TTS model, select a voice supported by that model, send text to /audio/speech, and save the binary audio response. Use this guide for standard voice generation. If you want to create speech from a custom reference voice, see Voice Cloning.

Basic Usage

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)
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()));
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

Choose a Model and Voice

Voices are model-specific. The voice value must be valid for the model you choose. Use the Text-to-Speech Models page to browse available models and voices. The voice picker lists the exact voice IDs to pass in your request.
Voice IDs are case-sensitive. If you switch TTS models, update the voice value at the same time.

Request Shape

ParameterTypeRequiredDescription
modelstringYesText-to-speech model ID.
voicestringYesVoice ID supported by the selected model.
inputstringYesText to synthesize.

Production Tips

  • Cache generated audio when the source text and voice are reused.
  • Normalize and proofread text before synthesis. Punctuation affects pacing and intonation.
  • Store output with the correct file extension for the model’s response format.