🗣️ Voice Batches
The batch renderer turns validated JSONL text items into cached MP3s with the selected voice through the app proxy.
🎤 Request
- method:
POST. - route:
/api/elevenlabs/tts?stream=true. - voice_id:
nsiEp1alHkdiizNqCK2X. - model_id:
eleven_v3. - output_format:
mp3_44100_128. - voice_settings:
{ "stability": 0.5, "similarity_boost": 0.75 }.
🔁 Render Loop
- read
batches/wwtbam-de-eleven3-batch.jsonl. - parse one JSON object per line.
- reject raw placeholders before any paid call.
- render with max two concurrent requests.
- write each response to a temp file.
- validate MP3 magic and size.
- atomically replace the final filename.
- skip already-valid MP3 files on resume.
📁 Outputs
- audio_dir:
batches/audio/. - manifest:
batches/wwtbam-de-eleven3-audio-manifest.json. - log:
batches/audio-generation-log.jsonl. - expected_count: 600 MP3 files.
- observed_valid: 600 MP3 files.
- failed_renders: 0.
🛡️ Public Boundary
- keep provider credentials in server/runtime files only.
- never publish private credentials, session material, direct upstream details, or raw loopback URLs.
- keep generated audio outside Quartz content unless a future public release explicitly requires publishing it.