피드로 돌아가기
Dev.toAI/ML
원문 읽기
Sub-500ms Voice AI 구현을 위한 에코 캔슬레이션 해결 전략
I Built a Voice AI with Sub-500ms Latency. Here's the Echo Cancellation Problem Nobody Talks About
AI 요약
Context
Gemini 2.5 Flash Live API 기반의 Speech-to-Speech 파이프라인 설계. 브라우저 기본 AEC가 WebSocket PCM 데이터 스트림을 인식하지 못하는 구조적 한계 존재. AI 음성이 마이크로 재유입되어 자체 발화에 반응하거나 연결이 끊기는 피드백 루프 발생.
Technical Solution
- 서버 상태 기반의 Agent 발화 여부를 클라이언트에 전달하여 송신 데이터를 즉시 차단하는 Hard Suppress 방식 도입
- 발화 종료 후 잔향으로 인한 오인식을 방지하기 위해 1.5초간의 Cooldown 기간 설정
- Cooldown 기간 중 VAD 임계값을 0.03에서 0.05로 상향 조정하여 배경 소음과 실제 사용자 음성을 구분하는 2단계 RMS Gate 설계
- Tool Call 실행 중 발생하는 3~8초의 정적 구간을 해소하기 위해 800ms 초과 시 사전 정의된 Filler Audio를 재생하는 전략 적용
- Text Signal 기반의 트리거 방식을 통해 Proactive Audio의 중복 재생 버그 해결 및 안정적인 오디오 흐름 제어
Impact
- End-to-End Latency 300-500ms 달성
- Filler Audio 도입 후 '앱 고장' 관련 고객 지원 메시지 약 40% 감소
- 1011 WebSocket 종료 코드 발생 빈도 제거
Key Takeaway
사용자 경험을 결정짓는 핵심 요소는 고도화된 AI 로직보다 하드웨어 특성과 네트워크 환경을 고려한 물리적 신호 처리 설계에 있음.
실천 포인트
브라우저 기반 실시간 오디오 서비스 설계 시 기본 AEC에 의존하지 말고 RMS 기반의 커스텀 VAD 게이트와 발화 상태 동기화 로직을 구현할 것