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
| Parameter | Type | Required | Description |
|---|
model | string | Yes | Text-to-speech model ID. |
voice | string | Yes | Voice ID supported by the selected model. |
input | string | Yes | Text 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.