Skip to content

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
  • 오디오 처리: numpy, scipy

시스템 요구사항 및 권장사항

  • 운영체제: 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 등 외부 엔진은 별도 라이선스 적용

See also

Favorite site