Skip to main content
Last updated: 2026-06-06

Text-to-Speech (TTS)

POST /v1/audio/speech
Convert text to natural speech, compatible with the OpenAI TTS API format.

Request Parameters

ParameterTypeRequiredDescription
modelstringYesModel name: tts-1, tts-1, tts-1-hd-1106
inputstringYesText to convert, max 4096 characters
voicestringYesVoice character
response_formatstringNoOutput format: mp3 (default), opus, aac, flac, wav, pcm
speednumberNoSpeed, 0.25-4.0, default 1.0

Available Voices

VoiceCharacteristics
alloyNeutral, balanced
echoMale, steady
fableMale, warm
onyxMale, deep
novaFemale, lively
shimmerFemale, soft

Request Examples

curl -X POST https://api.crazyrouter.com/v1/audio/speech \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "tts-1",
    "input": "Hello, welcome to the Crazyrouter API. What a beautiful day!",
    "voice": "nova",
    "response_format": "mp3",
    "speed": 1.0
  }' \
  --output speech.mp3
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.crazyrouter.com/v1"
)

response = client.audio.speech.create(
    model="tts-1",
    input="Hello, welcome to the Crazyrouter API. What a beautiful day!",
    voice="nova",
    response_format="mp3",
    speed=1.0
)

response.stream_to_file("speech.mp3")
import OpenAI from "openai";
import fs from "fs";

const client = new OpenAI({
  apiKey: "YOUR_API_KEY",
  baseURL: "https://api.crazyrouter.com/v1",
});

const response = await client.audio.speech.create({
  model: "tts-1",
  input: "Hello, welcome to the Crazyrouter API.",
  voice: "nova",
});

const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync("speech.mp3", buffer);
The response is a binary audio stream. Save it directly to a file.

Model Comparison

ModelQualityLatencyDescription
tts-1StandardLowSuitable for real-time scenarios
tts-1-hd-1106HDMediumMore natural speech
tts-1HighestMediumLatest model, supports more languages and emotions
tts-1 supports multiple languages and automatically detects the input text language to use the corresponding pronunciation.
The response is a binary audio stream, not JSON. Use --output or stream-write to a file.