RealtimeVoiceChat
RealtimeVoiceChat - 약 500ms 지연 시간의 실시간 AI 음성 채팅
About
- 브라우저 마이크를 이용해 AI와 자연스러운 음성 대화를 실시간으로 나눌 수 있는 시스템
- STT → LLM → TTS 흐름을 통해 사용자의 음성을 텍스트로 바꾸고, AI 응답을 다시 음성으로 변환해 재생
- 핵심 구성요소는 FastAPI 서버, WebSocket 스트리밍, Pod 기반 음성 처리 모듈, 다양한 LLM 백엔드
- Docker 기반 배포 환경이 제공되며, GPU 사용 시 더욱 낮은 지연시간과 성능 향상을 기대할 수 있음
- 사용자 인터럽트 감지, 모델 교체, 음성 선택 등 고급 설정 변경 가능성이 뛰어난 커스터마이징 환경을 제공
실시간 AI 음성 채팅
- 이 프로젝트는 실시간 양방향 음성 대화를 위해 설계된 클라이언트-서버 아키텍처임
- 사용자는 브라우저에서 말을 하고, AI가 응답을 음성으로 반환함
- 인터럽트 처리, 부분 텍스트 응답 표시, 다양한 TTS 선택이 가능함
주요 동작 흐름
- 음성 입력: 브라우저에서 사용자의 음성을 캡처
- 스트리밍 전송: 오디오 청크를 WebSocket을 통해 Python 백엔드로 전송
- 음성 인식: RealtimeSTT가 음성을 텍스트로 변환
- LLM 처리: 텍스트를 LLM에 전달하여 응답 생성
- 음성 변환: RealtimeTTS가 응답 텍스트를 음성으로 변환
- 응답 재생: 생성된 음성을 브라우저로 다시 스트리밍
- 인터럽트 감지: 사용자의 끼어들기를 자동으로 감지 및 처리
주요 기능
- 실시간 음성 대화 및 부분 전사/응답 미리보기
- 낮은 지연시간을 위한 오디오 청크 기반 스트리밍
- 정적/동적 침묵 탐지(turn detection) 지원
- 다양한 LLM 백엔드: Ollama 기본, OpenAI 선택 가능
- 여러 TTS 엔진 지원: Kokoro, Coqui, Orpheus
- 웹 인터페이스 제공: Web Audio API 기반의 Vanilla JS UI
- Docker Compose 기반 배포 제공
기술 스택
- 백엔드: Python 3.x, FastAPI
- 프론트엔드: HTML, CSS, JavaScript (Web Audio API)
- 통신: WebSockets
- 컨테이너화: Docker, Docker Compose
- AI/ML 라이브러리:
- RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
- ollama, openai
시스템 요구사항 및 권장사항
- 운영체제: Linux에서 Docker 사용 권장 (GPU 통합 유리)
- Python 3.9+, CUDA 12.1 이상 NVIDIA GPU 권장
- Docker 사용 시 NVIDIA Container Toolkit 필수
- Ollama 또는 OpenAI API Key 필요시 설정
설치 방법
옵션 A: Docker 설치 (권장)
- 리포지토리 클론 후 docker compose build
- docker compose up -d로 앱 및 Ollama 시작
- 별도로 Ollama 모델 다운로드 (예: docker compose exec ollama ollama pull ...)
- 서비스 종료: docker compose down
- 재시작: docker compose up -d
옵션 B: 수동 설치
- Python venv 설정 후 의존성 설치
- CUDA 버전에 맞는 PyTorch 수동 설치
- server.py 실행하여 FastAPI 서버 시작
실행 방법
- 브라우저에서 http://localhost:8000 접속
- 마이크 권한 허용 후 "Start" 클릭
- "Stop"으로 종료, "Reset"으로 대화 초기화
설정 변경 안내
- TTS 엔진/음성 변경: server.py, audio_module.py에서 수정
- LLM 모델/백엔드 변경: server.py, llm_module.py에서 설정
- STT 모델/침묵 기준 변경: transcribe.py, turndetect.py
- SSL 설정 가능: server.py에서 HTTPS 사용 여부 및 인증서 설정
라이선스
- MIT 라이선스 기반으로 공개됨
- Coqui 등 외부 엔진은 별도 라이선스 적용