pyai-speak; the required scope is
speak:synthesize.
Synthesize your first clip
Choose a voice from the catalog
Do not hardcode assumptions about voice language, product support, or delivery mode. Read the catalog:voice_idis the canonical input.aliasesare permanent convenience inputs on the advertised surfaces.available_ontells you whether the voice works on Speak, Omni, or both.synthesis_modestells you whether streaming and/or buffered synthesis is supported.tierandpricingdescribe the customer-facing quality tier and any voice-specific amount above the base product rate.
source: "design". Cloned
voices are managed separately under /v1/voice/clones.
Streaming vs buffered delivery
stream defaults to true:
- Use
truewhen playback should start as bytes arrive. - Use
falsewhen your client requires a complete body andContent-Length. - If a catalog row advertises only
synthesis_modes: ["async"], sendstream: false; retrying it on the streaming lane will not make it compatible.
Output formats and sample rates
For
pcm, choose sample_rate from 8 kHz through 48 kHz. G.711 is always
8 kHz; omit sample_rate or pass exactly 8000. A conflicting G.711 sample
rate is rejected.
The telephony audio reference explains companding,
resampling, and the exact format to send to common phone transports.
Stock, cloned, or designed
- Stock: select a row from
GET /v1/voices; no enrollment required. - Clone: enroll a voice you have explicit permission to use. See Voice cloning.
- Design: create a new synthetic voice from a text description with
/v1/voice/design, preview candidates, and save one into your voice library.
GET /v1/voice/design/{design_id} until candidates are ready, preview
their signed URLs, then save one with
POST /v1/voice/design/{design_id}/save. Voice design requires
speak:design; cloning uses the separate speak:clone scope.
Compatibility and unsupported controls
OpenAI model aliasestts-1 and tts-1-hd, plus the preset names alloy,
echo, fable, onyx, nova, and shimmer, remain accepted for drop-in
compatibility. New integrations should prefer pyai-speak and canonical
catalog voice IDs.
speed, seed, and temperature are not active Speak controls. Sending them
returns 400 unsupported_parameter; do not assume they were silently applied.
Browse voices
Filter the live catalog and inspect surface/mode support.
Voice cloning
Enroll, test, use, and delete a consented voice.
Telephony audio
PCM and G.711 formats, rates, and resampling.
Language support
Choose a voice that matches the required language and product.