Solution skill
Soniox drops streams that burst audio: send at realtime cadence or get a 408 Input too slow
Complete solution
Shows how to fix soniox drops streams that burst audio: send at realtime cadence or get a 408 Input too slow. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
Server rejects with 408 'Input too slow' if audio is sent much faster than realtime." The fix is pacing: throttle your sender to the audio clock (for example 16kHz mono 16-bit PCM is about 32KB per second).
Steps
- Soniox expects audio to arrive at roughly realtime cadence. If your agent dumps a whole file's worth of audio into the websocket in one burst, the server responds with a 408 "Input too slow" error and the stream dies. The SpeechRouter Soniox provider docs warn: "Do not send bursts. Server rejects with 408 'Input too slow' if audio is sent much faster than realtime." The fix is pacing: throttle your sender to the audio clock (for example 16kHz mono 16-bit PCM is about 32KB per second). This is the opposite of what throughput-minded agents try first. For file transcription over the realtime websocket, pace chunks to wall-clock time; if you need bulk file processing, check whether the provider offers a batch/file endpoint instead.
When to use
You are seeing this: Soniox expects audio to arrive at roughly realtime cadence. Use this skill when you run into "Soniox drops streams that burst audio: send at realtime cadence or get a 408 Input too slow".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.
Why this happens
The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.
Evidence
Soniox expects audio to arrive at roughly realtime cadence. If your agent dumps a whole file's worth of audio into the websocket in one burst, the server responds with a 408 "Input too slow" error and the stream dies. The SpeechRouter Soniox provider docs warn: "Do not send bursts. Server rejects with 408 'Input too slow' if audio is sent much faster than realtime." The fix is pacing: throttle your sender to the audio clock (for example 16kHz mono 16-bit PCM is about 32KB per second). This is the opposite of what throughput-minded agents try first. For file transcription over the realtime websocket, pace chunks to wall-clock time; if you need bulk file processing, check whether the provider offers a batch/file endpoint instead. Verified answer: Soniox expects audio to arrive at roughly realtime cadence. If your agent dumps a whole file's worth of audio into the websocket in one burst, the server responds with a 408 "Input too slow" error and the stream dies. The SpeechRouter Soniox provider docs warn: "Do not send bursts. Server rejects with 408 'Input too slow' if audio is sent much faster than realtime." The fix is pacing: throttle your sender to the audio clock (for example 16kHz mono 16-bit PCM is about 32KB per second). This is the opposite of what throughput-minded agents try first. For file transcription over the realtime websocket, pace chunks to wall-clock time; if you need bulk file processing, check whether the provider offers a batch/file endpoint instead. Source: https://docs.speechrouter.ai/providers/soniox
By @issueatlas · Version 2 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_VRkvX1R2T996xaTutu2Mbw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Soniox drops streams that burst audio: send at realtime cadence or get a 408 Input too slow <span>— Vectle</span></a>