함수 호출 기능 및 양방향 오디오 스트리밍을 지원하는 실시간 음성 AI 어시스턴트
피트니스 및 영양 플랫폼은 사용자와 실시간으로 자연스러운 대화를 나누고, 도메인별 계산(식단 조정, 칼로리 추적)을 실행하며, 음성으로 응답할 수 있는 음성 우선 AI 어시스턴트가 필요했습니다. 이 모든 과정은 진정한 대화형 경험을 위해 1초 미만의 지연 시간으로 이루어져야 했습니다.
프로젝트 상담하기
과제
프로덕션 수준의 음성 AI 어시스턴트를 구축하는 것은 다음과 같은 고유한 실시간 엔지니어링 과제를 안고 있었습니다:
- 지연 시간 — 기존의 STT(음성-텍스트 변환) → LLM → TTS(텍스트-음성 변환) 파이프라인은 3-5초의 지연 시간을 추가하여 대화 흐름을 방해했습니다.
- 함수 호출 — 어시스턴트는 단순히 채팅하는 것을 넘어 대화 도중 도메인 로직(영양 계산, 식단 계획 조정)을 실행해야 했습니다.
- 오디오 스트리밍 — 양방향 오디오는 버퍼링 간격이나 에코 문제 없이 지속적으로 흘러야 했습니다.
- 맥락 인식 — 어시스턴트는 대화 턴 전체에 걸쳐 대화 맥락을 유지하고 중단 상황을 처리해야 했습니다.
- 다국어 지원 — 사용자는 다양한 언어로 말했으며, 동일한 언어로 응답받기를 기대했습니다.
- 세션 격리 — 각 음성 세션은 상호 간섭 없이 독립적인 상태 관리가 필요했습니다.
우리의 솔루션
저희는 Google의 Gemini Live API를 기반으로 하는 실시간 음성 AI 어시스턴트를 구축했습니다. 이 어시스턴트는 네이티브 오디오 기능, 도메인별 계산을 위한 맞춤형 함수 호출 기능, 그리고 WebSocket 기반 오디오 스트리밍을 사용하는 React 프런트엔드를 갖추고 있습니다.
아키텍처
- AI 모델: 네이티브 오디오 입/출력 및 함수 호출 기능을 갖춘 Gemini
- 백엔드: 양방향 오디오를 위한 WebSocket 엔드포인트를 갖춘 Python/FastAPI
- 오디오 파이프라인: 실시간 스트리밍을 위한 마이크/스피커 I/O용 PyAudio
- 프런트엔드: 세션 제어 UI를 위한 Vite 및 Tailwind CSS를 사용한 React
- 통신: 저지연 JSON 메시징 및 바이너리 오디오 전송을 위한 WebSocket
- 멀티모달: 시각적 맥락을 위한 선택적 카메라 및 화면 캡처
실시간 오디오 파이프라인
양방향 스트리밍
시스템은 양방향으로 지속적인 오디오 스트림을 유지합니다:
- 입력: 16kHz 모노로 캡처된 마이크 오디오를 작은 프레임으로 분할하여 AI 모델로 실시간 스트리밍
- 출력: 24kHz로 수신된 AI 생성 음성을 스피커를 통해 즉시 재생
- 배칭 없음: 오디오 청크는 캡처되는 즉시 전송 — 축적 지연 없음
- 인터럽트 처리: 사용자가 어시스턴트의 응답 중간에 자연스럽게 중단할 수 있음
오디오 처리
- 입력 및 출력 모두 16비트 PCM 형식
- 음성 최적화를 위한 별도의 샘플 속도(16kHz 캡처, 24kHz 재생)
- 최소 지연 시간을 위한 작은 버퍼 크기
- 턴 사이의 시작/정지 간격 없는 연속 스트리밍
함수 호출 통합
작동 방식
도메인별 계산이 필요할 때 AI 모델은 대화 도중 로컬 Python 함수를 호출할 수 있습니다:
- 사용자가 요청을 말합니다 (예: "오늘 점심을 놓쳤어요")
- AI 모델이 음성을 텍스트로 변환하고 의도를 이해합니다.
- 모델은 함수 호출이 필요하다고 판단하고 구조화된 요청을 보냅니다.
- 백엔드는 함수 이름, 인수, 호출 ID를 추출합니다.
- 로컬 함수가 도메인 계산을 실행합니다.
- 결과는 구조화된 응답으로 모델에 다시 전송됩니다.
- 모델은 결과를 포함하는 자연어 음성 응답을 생성합니다.
도메인 함수
시스템은 다음과 같은 시나리오에 대한 영양 중심의 함수 호출을 지원합니다:
- 놓친 식사 — 놓친 다량 영양소를 남은 식사에 재분배합니다.
- 계획되지 않은 음식 — 예상치 못한 섭취량에 맞춰 다가오는 식사를 조정합니다.
- 식사 대체 — 매크로 목표를 유지하면서 재료를 교체합니다.
- 활동 추적 — 칼로리 소모량을 추정하고 영양 버퍼를 조정합니다.
각 함수는 식품별 영양 프로필을 가진 매크로 데이터베이스를 사용하며, 자연스러운 응답을 위해 약간의 확률적 변동을 포함한 동적 계산을 수행합니다.
실행 안전성
- 함수 실행 중 마이크 입력은 중복을 방지하기 위해 일시 중지됩니다.
- 오래된 컨텍스트를 피하기 위해 대기 중인 오디오 프레임은 삭제됩니다.
- 함수 실행이 실패할 경우 오류 응답이 정상적으로 반환됩니다.
- 함수 완료 직후 정상적인 스트리밍이 재개됩니다.
백엔드 아키텍처
FastAPI WebSocket 서버
- 모든 클라이언트 통신을 위한 단일 WebSocket 엔드포인트
- 세션 라이프사이클 관리 (시작, 중지, 핑/퐁 헬스 체크)
- 세션 잠금으로 한 번에 하나의 활성 세션
- 개발 환경을 위한 CORS 미들웨어
- 모니터링을 위한 헬스 체크 엔드포인트
세션 관리
- 클라이언트 연결 시 모드 선택(오디오 전용, 카메라 또는 화면)과 함께 세션이 생성됩니다.
- 백그라운드 비동기 작업이 오디오 캡처, 처리 및 재생을 동시에 처리합니다.
- 리소스 정리와 함께 정상적인 연결 해제
- API 키 유효성 검사 및 오류 전파
멀티모달 입력 (선택 사항)
음성 외에도 시스템은 선택적 시각적 맥락을 지원합니다:
- 카메라 모드 — 대화의 시각적 맥락을 위해 웹캠 프레임(1fps)을 스트리밍합니다.
- 화면 모드 — 화면 정보 논의를 위해 화면 콘텐츠를 캡처합니다.
- 이미지는 전송 전에 크기가 조정되고 압축됩니다.
- 시각적 맥락은 AI가 관련성 높은 응답을 제공하는 능력을 향상시킵니다.
프런트엔드 인터페이스
- 세션 제어 — 명확한 상태 표시기와 함께 듣기 시작/중지
- 상태 표시 — 실시간 연결 및 세션 상태 (유휴, 연결 중, 활성, 오류)
- 테마 지원 — 지속성을 가진 밝은/어두운 모드
- 가이드 워크스루 — 첫 사용자들을 위한 단계별 데모
- WebSocket 관리 — 자동 재연결 로직
AI 모델 구성
- 네이티브 오디오 모달리티 (별도의 STT/TTS 파이프라인 없음)
- 여러 사전 설정된 음성 중 구성 가능한 음성 선택
- 어시스턴트의 개성, 응답 스타일 및 언어 처리를 정의하는 시스템 지침
- 매개변수 스키마를 포함한 모든 사용 가능한 함수에 대한 도구 정의
- 동일 언어 응답을 포함한 자동 언어 감지
주요 기능
- 1초 미만 지연 시간 — 네이티브 오디오 모델은 STT/TTS 파이프라인 오버헤드를 제거합니다.
- 실시간 양방향 오디오 — 청크당 50ms 미만의 지연 시간으로 연속 스트리밍
- 함수 호출 — 대화 도중 실행되는 도메인별 계산
- 자연스러운 중단 — 사용자는 특별한 명령 없이 어시스턴트를 자연스럽게 중단할 수 있습니다.
- 다국어 지원 — 동일 언어 응답을 포함한 자동 언어 감지
- 멀티모달 입력 — 시각적 이해를 위한 선택적 카메라 및 화면 컨텍스트
- 세션 관리 — 잠금 및 리소스 정리 기능을 포함한 세션 라이프사이클 제어
- 매크로 계산 — 식품별 매크로 프로필을 통한 동적 영양 조정
- 오류 복구 — 함수 실패 및 네트워크 중단에 대한 정상적인 처리
- 확장 가능 — 스키마 및 핸들러 정의를 통해 새로운 함수 추가 가능 — 아키텍처 변경 없음
결과
기술 스택
caseStudyDetail.more 사례 연구
더 많은 기술 구현 사례를 살펴보세요
Catant HR 및 인력 관리 플랫폼
Catant는 기업이 단일 대시보드에서 직원, 급여, 근태 및 규정 준수를 관리하도록 돕는 모듈형 HR 및 인력 관리 플랫폼입니다.
Kickly: 스타트업을 위한 AI 기반 프로젝트 플랫폼
Kickly는 스마트한 작업 자동화, 팀 협업, 실시간 진행 상황 추적 기능을 하나의 제품에 결합하여 스타트업을 위해 구축된 AI 기반 프로젝트 관리 플랫폼입니다.
OCR 및 QuickBooks 연동을 통한 AI 기반 송장 처리
매월 수백 건의 공급업체 송장을 처리하는 중견 기업은 AI/OCR을 사용하여 송장 데이터를 자동으로 추출하고 이를 QuickBooks에 직접 동기화하여 장부 정리 및 지급 추적을 함으로써 수동 데이터 입력을 없애야 했습니다.
자주 묻는 질문
MicrocosmWorks는 실시간 청크로 사용자 음성을 ASR 엔진으로 스트리밍하고, 사용자가 말하기를 마치기 전에 스트리밍 전사를 사용하여 LLM 추론을 시작하며, 응답의 첫 토큰에서 텍스트-음성 합성을 시작하는 양방향 WebSocket 오디오 파이프라인을 설계했습니다. 이러한 파이프라이닝 접근 방식은 발화 종료부터 첫 오디오 출력까지 800ms 미만의 응답 지연 시간을 달성하며, 이는 사용자들이 자연스러운 대화의 차례 주고받기로 인식합니다.
MicrocosmWorks는 LLM이 대화 문맥에 따라 예약, 데이터베이스 쿼리 또는 워크플로우 트리거와 같은 미리 정의된 API를 호출할 수 있는 구조화된 함수 호출을 통합했으며, 그 결과는 호출자에게 자연스럽게 음성으로 전달됩니다. 시스템에는 결제나 취소와 같은 중요한 작업을 위한 확인 절차가 포함되어 있으며, 어시스턴트는 세부 정보를 구두로 확인하고 실행하기 전에 호출자의 명시적인 승인을 기다립니다.
예, MicrocosmWorks는 발신자가 비서의 응답 도중에 끼어들어 즉시 오디오 재생을 중단하고 새로운 발화를 처리할 수 있도록 하는 barge-in 감지 기능을 구현했습니다. ASR 파이프라인은 노이즈 캔슬링 전처리 기능을 포함하며 다양한 억양에 맞춰 미세 조정된 모델을 지원하여, 자동차, 사무실 또는 공공장소에서의 일반적인 전화 통화와 같은 시끄러운 환경에서 90% 이상의 전사 정확도를 달성합니다.
MicrocosmWorks는 SIP trunk 통합 및 Twilio 연결 기능을 통해 음성 비서를 구축했습니다. 이는 발신자가 어떤 앱도 설치하거나 특별한 인터페이스를 사용할 필요 없이 기존 비즈니스 전화번호, IVR 시스템 및 컨택 센터 플랫폼에 배포를 지원합니다. 이 플랫폼은 AI가 대화에 사람의 전문 지식이 필요하다고 판단할 때 통화 라우팅, 큐 관리, 그리고 상담원에게로의 따뜻한 전송을 처리합니다.
MicrocosmWorks는 시간당 $30-$50의 요율로 맞춤형 음성 AI 어시스턴트를 개발합니다. 초기 구축 비용은 관리형 플랫폼 설정 비용을 초과하지만, 맞춤형 솔루션은 Dialogflow CX 또는 Amazon Lex와 같은 플랫폼이 부과하는 분당 사용 요금을 피할 수 있으며, 이는 통화량이 많아질수록 상당한 부담이 됩니다. 또한 맞춤형 구축은 LLM, 음성 페르소나 및 함수 호출 로직에 대한 완전한 제어권을 제공하며, 이는 관리형 플랫폼이 엄격한 대화 흐름 패러다임으로 제한하는 부분입니다.