HC 모드 리얼타임 전사 타임아웃 턴 폐기 — 흐름 시각화 분석미수정 시점 사례

마지막 업데이트 2026-10-02

2026-10-02 사례: 2026-09-29 17:31~17:49 KST, 한 수업(roomId 8a73bc7b…_2) 활동 4개에서 4건 apps/livekit-agent

1. 코드 경로

2. 목적 요약

HC(Half Cascade) 모드에서는 아동 턴을 커밋한 뒤 OpenAI 리얼타임 전사(gpt-4o-transcribe)의 completed(final)를 2.5초 안에 받아야 응답한다. 기한을 넘기면 agent가 그 턴을 조용히 버리고, AI는 아무 말도 하지 않는다. 이 문서는 한 수업에서 연달아 난 4건을 로그 시각 그대로 그림으로 옮겨, 폐기 턴이 정상 턴과 어디서 갈리는지 보여 준다.

요점: 4건 모두 짧은 발화였고 interim은 정상 시각(+0.5~0.6초)에 왔다. 갈린 곳은 interim이 끝난 뒤 completed까지의 공백 하나다. 같은 수업의 정상 턴 중에도 이 공백이 1.4~1.7초로 늘어나 기한 직전에 겨우 통과한 턴이 3개 있었다.

3. 입출력 흐름 — 한 건을 구성 요소별로 (HR01 turn-5)

시각은 agent 서버 시계(KST). 아동 PC 시계는 agent보다 약 1.5초 느려 보정했다.

아동 단말Windows Chrome LiveKit agentVAD · 판정 · Typecast OpenAI Realtimegpt-realtime + gpt-4o-transcribe 진행자모니터 48.207 아동 짧은 대답 (0.47초 발화) 48.680 무음 감지 → 2.4초 대기 51.187 input_audio_buffer.commit committed (item_id) — 경고 없음 → 수신 추정 51.80~81 delta ×2 (interim 2자, +0.61~0.62초) completed 대기 중… 1.88초간 이벤트 없음 ✗ completed 안 옴(정상은 delta 후 0.2초) 53.686 커밋 +2.50초 → 턴 폐기 (응답 안 함) conversation.item.delete (폐기 item 삭제) 53.7~56.9 AI 무응답 · 아바타 idle (약 4.5초) 56.877 텍스트 1글자 전송 58.388 응답 생성 요청 → 답변 텍스트 59.0~ Typecast 음성 재생 (회복)

그림 1. 초 단위 시각만 표시(17:32 생략). 정상 턴이었다면 completed 직후 입력 게이트 판정 → 응답 생성 → Typecast 합성 순으로 약 1.5초 안에 소리가 났다.

아동 대답 → 무음 2.4초 → 커밋 → interim +0.6초 (정상) → completed 미도착 → 커밋 +2.5초 턴 폐기 → AI 무응답 → 진행자 텍스트 → AI 응답 (회복)

4. 세부 — 폐기 4건 vs 같은 수업의 정상 턴 (커밋 시점 정렬)

각 줄을 그 턴의 커밋 시각을 0초로 맞춰 겹쳤다. 빨간 점선이 2.5초 기한이다.

-8s -6s -4s -2s 커밋 +2s +4s +6s +8s +10s +12s +14s 2.5초 기한 VAD 턴 확정 → OpenAI commit HR01 turn-4 · 정상 final +0.81 WS01② turn-4 · 아슬아슬 통과 final +1.95 WS01① turn-7 · 아슬아슬 통과 final +2.30 WS01① turn-4 · 아슬아슬 통과 final +2.35 HR01 turn-5 · 폐기 AI 응답 +7.2s HR03 turn-1 · 폐기 (활동 첫 발화) AI 응답 +14.0s WS01① turn-1 · 폐기 (활동 첫 발화) AI 응답 +9.3s WS01② turn-8 · 폐기 AI 응답 +11.5s 아동 발화(VAD) 무음 대기 2.4초 interim(delta) 도착 interim 끝 → final 공백 final(completed) 도착 턴 폐기 진행자 텍스트 AI 응답 시작

그림 2. 아동 발화가 끝나고 정확히 2.4초 뒤 커밋되며, interim은 어느 줄이나 +0.5~0.6초에 온다. 차이는 interim 뒤 공백(주황·빨강 막대)뿐이다. 정상 턴은 0.2초, 아슬아슬 통과 턴은 1.4~1.7초, 폐기 턴은 1.9초를 넘겨 기한에 걸렸다.

턴커밋발화 길이 / 재개첫 interim마지막 interimfinalinterim 끝 → final진행자 텍스트AI 응답 시작
HR01 turn-4 · 정상17:32:38.0380.6초 / 0회+0.60+0.60+0.810.21초—+1.5초
WS01② turn-4 · 아슬아슬 통과17:47:18.9542.8초 / 1회+0.55+0.58+1.951.37초—+2.5초
WS01① turn-7 · 아슬아슬 통과17:45:48.4480.6초 / 0회+0.63+0.63+2.301.67초—+3.0초
WS01① turn-4 · 아슬아슬 통과17:45:17.8482.8초 / 0회+0.62+0.92+2.351.43초—+3.0초
HR01 turn-5 · 폐기17:32:51.1870.5초 / 0회+0.61+0.62없음1.88초+ (미도착)+5.7초 (1글자)+7.2초
HR03 turn-1 · 폐기 (활동 첫 발화)17:41:11.5965.3초 / 2회+0.53+0.61없음1.89초+ (미도착)+12.2초 (10글자)+14.0초
WS01① turn-1 · 폐기 (활동 첫 발화)17:44:30.3971.3초 / 0회+0.52+0.60없음1.90초+ (미도착)+7.9초 (8글자)+9.3초
WS01② turn-8 · 폐기17:48:08.4552.7초 / 0회+0.50+0.60없음1.90초+ (미도착)+9.7초 (15글자)+11.5초

읽는 법

배제한 원인 (이 수업 기준)

후보결과
아동측 마이크·업링크배제 — VAD가 발화를 감지했고 interim이 정상 생성됨
commit 응답(committed) 누락 → 격리·재연결배제 — 4개 job 모두 commit acknowledgement·quarantined 경고 0건
agent 이벤트 루프 정체배제 — 정체 경고는 세션 시작·종료 시점뿐, 폐기 구간에 0건
OpenAI 전사 실패 알림배제 — failed to transcribe 0건

5. 주의사항 · 이슈 히스토리