← Docs hub

LLM Live 음성 인터랙션 기획

Live 적용은 모델 교체가 아니라 턴 중심 명령 경험을 세션 중심 대화 경험으로 바꾸는 일이다. 이 페이지는 구현값이 아니라 사용자가 느끼는 변화와 제품 정책만 다룬다. 현재 상태와 조절값은 기기 Runtime튜닝 파라미터에서 확인한다.

기존 음성 인터랙션과 Live 적용 후 변화

기존과 Live 적용 후

사용자 경험 기존 음성 처리 Live 적용 후
대화 단위 한 번의 발화와 응답 하나의 세션에서 여러 턴
마이크 입력마다 시작·종료 Live 대화 동안 유지
발화 종료 F3 중심 Gemini VAD 중심, F3 보조
후속 질문 필요한 멀티턴에서만 수집 모든 답변 뒤 5초 대기
응답 음성 로컬 TTS 중심 Gemini 24 kHz PCM, 현재 Leda
Barge-in 제한적 Echo gate와 Gemini VAD로 지원
제품 명령 기기 Device API 동일. Live 안에서는 rewrite_query로 기기에 전달
종료 한 턴 또는 멀티턴 상태에 따라 결정 명시 종료, 무발화, 오류를 하나의 종료 gate로 처리
대화 문맥 Cloud REST 최대 16턴 현재 WebSocket 세션에서 Gemini가 유지
데이터 처리 기존 STT/S3 정책 Gemini Live라는 외부 처리 목적지 추가

핵심 변화는 답변이 끝나도 대화가 즉시 끝나지 않는다는 점이다. 사용자는 자연스럽게 이어 말할 수 있지만, 기기가 언제 듣고 있고 언제 완전히 종료됐는지 예측하기 어려워질 수 있다.

기획에서 결정해야 하는 항목

대화 정책

결정 질문 현재값 권장 시작안
Live 진입 범위 SK_19 일반 대화만 Live, 제품 명령은 기존 경로 유지
답변 후 대기 5초 기본 5초, 모델이 질문한 경우 연장 검토
명시 종료 종료 문구와 end_conversation 음성, 마이크, 연결, UI 즉시 동시 종료
최대 세션 14분 값만 정의 시간·비용 상한과 안전한 회전 정책 확정
생각 중 Barge-in WAITING_RESPONSE에서 미지원 출시 범위를 명시하고 후속 기능으로 분리
F1/F3 VAD 보조 세션 시작/종료 확정 신호로 확대하지 않음

제품 명령과 음성

결정 질문 위험 권장 시작안
명령 후 세션 종료 모든 결과를 같은 방식으로 종료 결과 유형별 유지/종료 결정
추가 정보가 필요한 명령 질문이 효과음으로 사라질 수 있음 NEEDS_USER_INPUT이면 같은 Live 음성으로 질문
상태 조회 로컬/Live 음성이 섞임 Live 안에서는 Gemini 음성, 오프라인은 로컬 TTS
단순 성공·거부 긴 TTS가 대화를 방해 짧은 효과음 또는 짧은 Live 응답
목소리 일관성 Leda와 로컬 TTS 음색 차이 동일화보다 온라인/오프라인 역할을 예측 가능하게 표현
중복 실행 fallback에서 같은 명령 재실행 가능 공통 turn/command ID, Device API 정확히 1회

화면, 장애와 개인정보

결정 질문 권장 시작안
두 번째 이후 자막 모든 user/assistant 턴에 partial/final과 화자를 동일 규칙으로 표시
상태 표시 듣는 중, 생각 중, 말하는 중을 구분하고 종료 시 즉시 숨김
연결 실패 안내 첫 응답 전과 응답 중 실패를 구분해 한 번만 안내
fallback 보존 입력을 REST 또는 로컬 안내로 한 번만 처리
외부 전송 Gemini 전송과 기존 S3 로그의 목적, 보존, 삭제와 처리자 승인
디버그 로그 key, 원본 PCM, 전체 전사와 사전 서명 URL 마스킹

권장 Interaction 정책 v1

영역 v1 정책
진입 SK_19만 Live Primary로 전환
후속 입력 답변 소진 뒤 5초 대기, 명시 종료는 즉시 처리
Barge-in Gemini가 확정하면 PCM queue를 비우고 같은 세션에서 새 턴 시작
제품 결과 COMPLETED, REJECTED, NEEDS_USER_INPUT, INFORMATION으로 구분
추가 질문 NEEDS_USER_INPUTexpectedSlot과 세션 유지
음성 Live는 Gemini 음성, 오프라인은 기존 로컬 TTS 보존
화면 모든 턴의 자막과 듣기/생각/말하기 상태 표시
종료 AudioRecord, AudioTrack, WebSocket과 UI가 함께 IDLE로 수렴
안전 제품 명령의 최종 검증은 기기, Device API는 정확히 한 번

후속 개선 후보는 질문형 응답의 대기 시간 연장, WAITING_RESPONSE 취소, resumption, 사용자별 대기 시간과 음성 선호다. v1 승인 전에는 기능 범위를 넓히지 않는다.

KPI

목표값은 Release APK 실기기 기준선을 측정한 뒤 확정한다.

KPI 시작과 끝
Live 진입 성공률 Wake-up -> Gemini setup 완료/실패
첫 음성 응답 시간 사용자 발화 종료 -> 첫 PCM 재생
Barge-in 정지 시간 사용자 발화 확정 -> 기존 답변 정지
오중단 / 미검출률 Echo 표본과 실제 사용자 발화 표본
후속 대화 성공률 답변 소진 -> 다음 입력 전사
의도치 않은 종료율 종료 직후 재호출 또는 같은 질문 반복
제품 명령 완료율 rewrite_query -> Device API 결과
명령 중복 실행 동일 command ID의 물리 호출 수, 목표 0건
자막 완전성 모든 user/assistant partial/final 표시 비율
종료 수렴 시간 종료 의도 -> 오디오·녹음·연결·UI 해제
세션 비용·자원 연결 시간, byte, 메모리와 thread 회수

기획 승인 체크리스트

관련 문서

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date