How It Works
1
Chunk the text
The input is split into segments under the 2,000-character API limit. The chunking algorithm looks for natural break points in the following priority order:
- Paragraph breaks (
\n\n) - Line breaks (
\n) - Sentence endings (
.!?) - Last space (fallback)
2
Synthesize each chunk
Each chunk is sent to the TTS API with controlled concurrency and automatic retry logic for rate limits. Chunks are processed in parallel (default: 2 concurrent requests) to speed up synthesis while respecting API rate limits.
3
Stitch the audio
The individual audio responses are combined into a single output file. The Python script produces a WAV file with configurable silence between segments, while the JavaScript script produces an MP3 file and uses ffmpeg to merge segments with correct duration metadata.
Configuration
Both scripts share the same tunable parameters:Running the Scripts
Prerequisites
- An Inworld API key set as the
INWORLD_API_KEYenvironment variable - A text file with your long-form content
- Python 3 (for the Python script) or Node.js (for the JavaScript script)
- ffmpeg (optional, for the JS script — produces correct MP3 duration metadata)
Python
JavaScript
Code Examples
Python
WAV output with splice report and configurable silence between segments
JavaScript
Compressed MP3 output with ffmpeg-based segment merging
Next Steps
Synthesize Speech
Learn about the standard (non-streaming) synthesis API.
Streaming API
Use streaming for real-time playback of shorter content.
Latency Best Practices
Optimize time-to-first-audio for real-time use cases.