Streaming Text To Speech
Generate speech from text using real-time streaming, allowing audio playback to begin before the entire synthesis is complete.
This endpoint streams audio data in chunks, enabling low-latency audio playback for applications requiring immediate feedback.
Streaming Format:
- WAV format: First chunk contains WAV header (size=0xFFFFFFFF for streaming) followed by raw PCM data. Subsequent chunks contain only PCM data.
- MP3 format: Each chunk contains post-processed MP3 data that can be decoded independently.
Use Cases:
- Conversational AI, chatbots and real-time voice assistants
- Interactive applications requiring immediate audio feedback
- Long-form content where waiting for full synthesis is impractical
Request Parameters:
Uses the same TTSRequest schema as the standard TTS endpoint. Set output.audio_format to "wav" or "mp3" to control the streaming format.
/v1/text-to-speech/streamAuthorizations
X-API-KEYstringheaderrequiredAPI key for authentication. You can obtain an API key from the Typecast API Console.
Text-to-speech streaming request parameters
seedintegerUnsigned integer seed for reproducible speech generation. The same seed with the same input parameters will produce identical audio output.
- Must be a non-negative integer (≥ 0). Negative values are not accepted.
- If omitted, the server generates a random seed each time, producing slight variations.
textstringrequiredText to convert to speech. Minimum 1 character, maximum 2000 characters. Credits consumed based on text length. Supports multiple languages including English, Korean, Japanese, and Chinese. Special characters and punctuation are handled automatically.
modelssfm-v30 | ssfm-v21requiredVoice model to use for speech synthesis.
- ssfm-v30: Latest model with improved prosody and additional emotion presets (recommended)
- ssfm-v21: Stable production model with reliable quality
ssfm-v30ssfm-v21outputobjectStreaming audio output settings including pitch (-12 to +12 semitones), tempo (0.5x to 2.0x), format (wav/mp3), and target_lufs (-70 to 0 LUFS). Note: volume is not available in streaming mode.
Also supports remove_silence_ms (integer, 0–1000 ms) for silence removal.
Show nested model
audio_pitchintegerAdjusts the pitch in semitones to affect perceived gender and age: -12 (one octave lower, deeper voice), -6 (half octave lower), 0 (original pitch, default), +6 (half octave higher), +12 (one octave higher, higher voice)
audio_temponumberControls speech speed: 0.5 (half speed, very slow and clear), 0.75 (slightly slower than normal), 1.0 (normal speaking speed, default), 1.5 (50% faster than normal), 2.0 (double speed, very fast speech)
target_lufsnumberSets the target absolute loudness (LUFS) for streaming output audio. This normalizes generated audio to a consistent loudness regardless of the original source. Cannot be used with the volume parameter.
Recommended values: -14 (common streaming standard), -23 (broadcast standard).
audio_formatwav | mp3Output audio format for streaming.
WAV format:
- Uncompressed PCM audio
- 16-bit depth, mono channel, 32000 Hz sample rate
- Chunked transfer: first chunk contains the WAV header (size = 0xFFFFFFFF), subsequent chunks contain raw PCM data
- Recommended when you want to play audio as it arrives
MP3 format:
- Compressed MPEG Layer III audio
- 320 kbps bitrate, 44100 Hz sample rate
- Chunked transfer: each chunk contains independently decodable MPEG frames
- Recommended for bandwidth-constrained clients
wavmp3remove_silence_msintegerWhen enabled, shortens detected silences longer than the specified duration to that duration. The value is in milliseconds (ms). The value is the duration of silence to retain, not the amount to remove.
Accepted values:
- An integer from 0 to 1000, with a recommended range of 0 to 200.
- Omitted or
null: silence removal is disabled. 0: removes detected silence longer than 0 ms. This does not disable the feature.- Booleans, strings, fractional values, and out-of-range values are invalid.
Example: 100 shortens detected silences longer than 100 ms to 100 ms. Lower values include shorter silence segments for removal and leave less silence in each affected segment.
promptPromptEmotion and style settings for the generated speech, including emotion type (happy/sad/angry/normal) and intensity (0.0 to 2.0) to control the emotional expression
SmartPrompt (ssfm-v30)
next_textstringText that comes AFTER the text field in TTSRequest. Provides forward context for emotion inference.
The model analyzes the flow: previous_text → text (synthesized) → next_text
- Maximum 2000 characters
- Helps the model anticipate emotional transitions
- Leave empty if no following context is available
emotion_typestringDiscriminator field to identify the prompt type. Must be set to "smart" for context-aware emotion inference.
previous_textstringText that comes BEFORE the text field in TTSRequest. Provides backward context for emotion inference.
The model analyzes the flow: previous_text → text (synthesized) → next_text
- Maximum 2000 characters
- Helps the model understand emotional build-up and context
- Leave empty if no preceding context is available
PresetPrompt (ssfm-v30)
emotion_typestringDiscriminator field to identify the prompt type. Must be set to "preset" for preset-based emotion control.
emotion_presetnormal | sad | happy | angry | whisper | toneup | tonedownEmotion preset to apply to the generated speech.
Supported emotions: normal, happy, sad, angry, whisper, toneup, tonedown
Check available emotions for each voice through the /v2/voices API.
normalsadhappyangrywhispertoneuptonedownemotion_intensitynumberControls the strength of emotional expression in the generated speech.
- 0.0: Completely neutral, no emotional coloring
- 0.5: Subtle emotional hints
- 1.0: Standard emotional expression (default)
- 1.5: Strong emotional emphasis
- 2.0: Maximum intensity, highly expressive
Prompt (ssfm-v21)
emotion_presetobjectEmotion preset to apply.
Supported emotions for ssfm-v21: normal, happy, sad, angry
Check available emotions for each voice through the /v2/voices API.
emotion_intensityobjectControls the strength of emotional expression (0.0 to 2.0).
- 0.0: Completely neutral
- 1.0: Standard expression (default)
- 2.0: Maximum intensity
languagestringLanguage code following ISO 639-3 standard. Case-insensitive (both "ENG" and "eng" are accepted). If not provided, will be auto-detected based on text content.
ssfm-v30 Supported Languages (37)
| Code | Language |
|---|---|
| ARA | Arabic |
| IND | Indonesian |
| POR | Portuguese |
| BEN | Bengali |
| ITA | Italian |
| RON | Romanian |
| BUL | Bulgarian |
| JPN | Japanese |
| RUS | Russian |
| CES | Czech |
| KOR | Korean |
| SLK | Slovak |
| DAN | Danish |
| MSA | Malay |
| SPA | Spanish |
| DEU | German |
| NAN | Min Nan |
| SWE | Swedish |
| ELL | Greek |
| NLD | Dutch |
| TAM | Tamil |
| ENG | English |
| NOR | Norwegian |
| TGL | Tagalog |
| FIN | Finnish |
| PAN | Punjabi |
| THA | Thai |
| FRA | French |
| POL | Polish |
| TUR | Turkish |
| HIN | Hindi |
| UKR | Ukrainian |
| VIE | Vietnamese |
| HRV | Croatian |
| YUE | Cantonese |
| ZHO | Chinese |
| HUN | Hungarian |
ssfm-v21 Supported Languages (27)
| Code | Language |
|---|---|
| ARA | Arabic |
| IND | Indonesian |
| RON | Romanian |
| BUL | Bulgarian |
| ITA | Italian |
| RUS | Russian |
| CES | Czech |
| JPN | Japanese |
| SLK | Slovak |
| DAN | Danish |
| KOR | Korean |
| SPA | Spanish |
| DEU | German |
| MSA | Malay |
| SWE | Swedish |
| ELL | Greek |
| NLD | Dutch |
| TAM | Tamil |
| ENG | English |
| POL | Polish |
| TGL | Tagalog |
| FIN | Finnish |
| POR | Portuguese |
| UKR | Ukrainian |
| FRA | French |
| HRV | Croatian |
| ZHO | Chinese |
voice_idstringrequiredVoice identifier. Two prefixes are supported:
tc_— Built-in Typecast voices (e.g.,tc_60e5426de8b95f1d3000d7b5). See Listing all voices for available IDs.uc_— Custom voices created via Instant cloning (e.g.,uc_64a1b2c3d4e5f6a7b8c9d0e1). Only the owner of a cloned voice can use it.
Case-sensitive: must use lowercase prefix.