Skip to content

Text to Speech (TTS)

Takes a string, returns natural-sounding audio. OpenAI audio/speech format.

Available models

ModelQualityLatencyUse where
blab-stable (recommended)HighMediumTraining video, product demo, podcast
blab-fast-tr-nazMidLowTurkish telephony (Naz voice)
blab-fast-en-emmaMidLowEnglish telephony (Emma voice)
blab-ttsLowVery lowPush notification, IVR menu
tts-1OpenAI sideIf an OpenAI-keyed channel exists

curl

bash
curl https://app.qevron.ai/v1/audio/speech \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{"model": "blab-stable", "input": "Hello world", "voice": "en"}' \
  -o output.wav

Python (openai SDK)

python
from openai import OpenAI

client = OpenAI(api_key="sk-...", base_url="https://app.qevron.ai/v1")

resp = client.audio.speech.create(
    model="blab-stable",
    input="Qevron serves your own models through one API.",
    voice="en",
)
resp.stream_to_file("output.wav")

Which model when?

  • blab-stable — quality matters, no telephony constraints. ~600–900 ms latency, top-tier natural tone.
  • blab-fast-tr-naz / blab-fast-en-emma — real-time conversation (phone agent). ~80–150 ms, fixed voice character (Naz Turkish, Emma English).
  • blab-tts — instant announcements, IVR menu prompts. CPU-only, never waits for GPU. Modest quality, near-zero latency.

voice parameter

  • blab-tts: language code (tr or en)
  • blab-fast-*: voice is fixed — parameter ignored
  • blab-stable: tr / en (default tr)
  • OpenAI tts-1: alloy, echo, fable, onyx, nova, shimmer

Streaming

python
stream = client.audio.speech.create(
    model="blab-stable",
    input="A long passage of text...",
    voice="en",
    stream=True,
)
with open("output.wav", "wb") as f:
    for chunk in stream.iter_bytes():
        f.write(chunk)

Legacy stream_format parameter

Before v2.2.0 you had to pass OpenAI's original stream_format: "sse" explicitly. As of v2.2.0 qevron auto-bridges stream: true (the SDK shape) → stream_format: "sse". Both work; an explicit stream_format still wins.

Troubleshooting

  • Silent file → did you set Content-Type: application/json? Send JSON, not form-data.
  • Wrong voiceblab-fast-* voices are fixed; switch model to switch voice.
  • MP3 or WAV? → WAV by default. Add "response_format": "mp3" for MP3.

Next: Telephony · STT — speech to text

Qevron — AI gateway. Arpanet / OpenAI / Anthropic / Gemini compatible.