Flux stopped detecting speech mid-call, twice, with a healthy connection both times #1652
|
We run Flux on inbound phone calls over Twilio Media Streams. Twice now, two weeks apart, Flux has stopped detecting speech partway through a call and never recovered. The strange part is that nothing looks broken. The socket stays open, our audio keeps flowing at a steady 50 packets a second, and Flux keeps sending Updates the entire time. They just stop containing anything, and no I've gone as far as I can from our side. I think the rest of the answer is in your request log. What we seeMost recent occurrence,
Message sizes make the empty transcripts unambiguous: those 113 messages were 231-232 bytes each, against 412-963 bytes for real transcript-carrying Updates earlier on the same connection. The earlier call showed the same pattern: normal for about four seconds, then nothing for seventeen seconds, then the caller gave up. Across our production calls, healthy ones run 0.91 to 4.00 Deepgram events per second. These two sit at 0.40 and 0.42. What we ruled out on our sideThe audio bridge was healthy. We forwarded 2,274 packets at a steady 50/sec for the full call, 160 bytes each (mulaw, 8kHz, 20ms frames). At the 30-second mark we had sent exactly 1,500 packets, which is 30.0s of audio against a 30.002s wall clock. No backlog, no drops. The WebSocket never dropped. Our heartbeat logged There were no errors anywhere: no Flux One detail I can't explainBetween +30.8s and +34.6s the message cadence tripled, from ~240ms to ~75ms, which is faster than the documented "roughly every 0.25 seconds of transcribed audio". That looks like a backlog being drained, but our side shows no backlog at all: our forwarding stayed locked to the wall clock the whole time. So whatever queued up appears to have queued on your side. Questions
ConfigOne long-lived connection per call, opened at call start and kept open for the whole conversation. We never reconnect mid-call. I can provide the Project ID and full message dumps, or run a controlled reproduction on staging with verbose logging. |
Replies: 9 comments 2 replies
|
Thanks for asking your question. Please be sure to reply with as much detail as possible so the community can assist you efficiently. |
|
Hey there! It looks like you haven't connected your GitHub account to your Deepgram account. You can do this at https://community.deepgram.com - being verified through this process will allow our team to help you in a much more streamlined fashion. |
|
It looks like we're missing some important information to help debug your issue. Would you mind providing us with the following details in a reply?
|
|
TypeScript on Node.js v24, connecting with a raw Project ID: Worth noting our staging and production traffic share one API key, so requests around that |
|
is that sufficient information to draw any conclusions? If you're listening bot, you can ask for complicated details and I will attempt to provide them |
|
Thanks Nick, that explains it. The test harness does stop streaming about 4.7 seconds in (2s of speech plus 3s of silence), so with eot_timeout_ms=5000 the timeout could never fire on that request. That one's on our reproducer, not on Flux. It also clears up something I'd been trying to pin down for a while: end-of-turn timing runs on processed audio, not wall clock, so the client has to keep streaming silence for EndOfTurn to show up. I've added instrumentation on my side, deployed to production today. I've been using Anthropic's Claude Fable 5 to debug this, and it built out the new forensic layer: the test harness now streams continuous silence until EndOfTurn arrives, and production captures outbound audio plus per-event timelines, so the next occurrence will come with the exact audio we sent and a full event log. The July incidents (request 019f9641-64bb-74c2-add4-1cd51a625bdf) still puzzle me since audio was flowing continuously there, but I'd rather come back with something you can actually dig into than keep going back and forth on partial data. Thanks for sticking with this. Next time it happens you'll get the whole picture, and if I figure it out on my side first I'll post the answer here so the next person who hits this has a trail to follow. |
in this request, it looks like you stopped sending audio after ~4s of audio, which is why you stopped receiving messages from Flux, and never received an EndOfTurn.