Summary
On an intermittent subset of our calls, the transcript orders agent and caller speech differently from what actually happened on the call. The caller waits for the agent’s question to finish and then answers; the transcript records them as interrupting mid-sentence, splitting the agent’s utterance and placing the answer inside the question.
On every one of these calls, the conversation flow then goes wrong at exactly that turn: the transition edge that should fire on the caller’s confirmation doesn’t, the node LLM improvises a final-sounding wrap-up in-node, and the caller hangs up before the terminal node that speaks our client’s closing message (business hours / callback promise). Multiple hotel clients have reported the missing message. Calls where the transcript ordering is correct transition cleanly every time.
What the caller heard vs what the transcript recorded (call_606f506ff90c580462902f2a37e, phone call)
From the multichannel recording: the agent channel’s audio for the confirmation question ends at 72.45s; the caller’s「はい」is at 73.8s — 1.35 seconds after the agent finished. The real exchange:
▎ Agent: ありがとうございます。折り返しのご連絡は、お電話いただいている「ゼロ ゴー ゼロの…」の番号でよろしいでしょうか?
▎ Caller: はい
The transcript records:
▎ Agent: ありがとうございます。折り返しのご連絡は、お電話いた—
▎ Caller (interruption): はい
▎ Agent: —だいている「ゼロ ゴー ゼロの…」の番号でよろしいでしょうか?
As written, the caller confirms a number they haven’t yet heard. The meaning of the turn is changed, and the flow behaves accordingly.
Timestamp findings
We compared transcript_object word timestamps against the multichannel recordings for six calls:
- On the mis-ordered calls, every agent-side character has an identical duration of ~0.393s, punctuation included: あ(66.59–66.99) り(66.99–67.38) が(67.38–67.77)… (call_a718…, response 15). On the correct calls — same agent, same voice, same half-hour — character durations vary naturally (0.08–0.2s, gaps at punctuation).
- As a result, agent utterances on the mis-ordered calls are 1.3–1.5× longer in the transcript than in the audio. In call_606f… the final utterance’s word timestamps extend to 129.8s while the recording ends at 123.5s — 6.3s of transcript past the end of the audio file.
- Caller-side timestamps match the caller audio channel within ~0.1s on all six calls. Only the agent side is inflated.
So the mis-ordering isn’t random: accurate caller timestamps are being merged against an agent timeline that runs long, and the caller’s answer lands inside the phantom tail of the agent’s utterance.
Environment / calls
- Agent voiceai_stg_3d5a9af7 / agent_041175132263898b633743a68f (v0); conversation flow conversation_flow_6be81a0f847b, shared component conversation_flow_component_2b28901e3c47; Japanese, fish_audio_tts. Calls 2026-07-23 03:53–04:19 UTC.
- Mis-ordered (~1.4× stretch): call_a718f3d0728598fd257d5b35de3, call_605830e9f5fae1fbc2a5626e429, call_606f506ff90c580462902f2a37e (phone), call_1f02569b347d42de3007cf4f83a
- Correct (~1.0×, same agent/voice/window): call_3df6c4fb9f3a4e24de23ba3b44c, call_85238edd84bfa1b4639c35320b3
Questions
- What causes agent word timestamps to come out as uniform ~0.39s/character on some calls and real alignment on others? Is this a known fallback path for Fish Audio / Japanese voices?
- Does interruption detection and edge evaluation use this same timeline? That would match everything we observe.
- Is there a fix or configuration workaround you recommend?
Channel-split audio analysis (per-channel speech segments vs word timestamps, all six calls) available on request.