오픈소스 모델로 내 컴퓨터에서 돌아가는 음성 대화 에이전트
마이크로 말을 걸면 스피커에서 바로 답이 돌아오는 환경을 내 컴퓨터에서 만들 수 있습니다. 오픈소스 모델만으로 구성된 이 파이프라인은 음성 인식부터 텍스트 생성, 음성 합성까지 모든 과정을 로컬에서 처리합니다. API 키나 클라우드 서비스 없이도 실시간 음성 대화를 구현할 수 있어, 데이터 프라이버시가 중요한 환경이나 인터넷 연결이 불안정한 곳에서 유용합니다.
네 단계로 이어지는 로컬 음성 파이프라인
음성 입력은 Silero VAD로 말의 경계를 감지한 뒤, Parakeet TDT가 텍스트로 변환합니다. 이어 Qwen3.5-4B 언어 모델이 답변을 생성하고, Qwen3-TTS가 이를 음성으로 합성해 출력합니다. 각 단계는 독립된 스레드에서 실행되며 큐로 연결되어 지연 시간을 최소화합니다. 모든 구성 요소는 CLI 플래그로 교체할 수 있어, 특정 하드웨어나 요구 사항에 맞는 모델을 자유롭게 조합할 수 있습니다.
OpenAI Realtime 프로토콜 호환 서버
이 저장소는 WebSocket과 WebRTC를 통해 OpenAI Realtime 프로토콜을 지원합니다. 기존 OpenAI Realtime API를 대상으로 개발한 앱이나 클라이언트를 수정 없이 이 로컬 서버로 연결할 수 있습니다. serve 명령어로 서버만 실행하면 ws://127.0.0.1:8765/v1/realtime 주소에서 실시간 음성 세션을 처리합니다. OpenAI Agents SDK와 LiveKit Agents 등 주요 프레임워크와의 호환성도 테스트되어 있어, 기존 생태계의 도구들을 그대로 활용할 수 있습니다.
플랫폼별 최적화된 모델 선택
실행 환경에 따라 가장 적합한 모델을 자동으로 선택합니다. Apple Silicon Mac에서는 MLX LM을 통해 4-bit 양자화된 Qwen3.5-4B를 실행하며, 통합 메모리 16GB를 권장합니다. NVIDIA GPU가 있는 Linux나 Windows에서는 Transformers를 통해 모델을 실행하며, VRAM 24GB를 권장합니다. 다른 환경에서는 CPU로 실행되지만 응답 속도가 느려질 수 있습니다. 첫 실행 시 모델 다운로드에 몇 분 정도 시간이 소요되며, 이후에는 인터넷 연결 없이도 완전히 오프라인으로 작동합니다.
설치 및 실행 방법
Python 3.10 이상(3.11 권장) 환경에서 pip install speech-to-speech로 설치합니다. Ubuntu 사용자는 libportaudio2와 libsndfile1 오디오 라이브러리를 먼저 설치해야 합니다. speech-to-speech local 명령어로 서버와 마이크 클라이언트를 하나의 프로세스에서 실행할 수 있으며, Ctrl+C로 종료합니다. 헤드폰을 착용하거나 --local_audio_block_mic_during_playback 옵션을 추가해 마이크가 스피커 소리를 다시 듣는 것을 방지해야 합니다.
사용 전 확인해야 할 하드웨어 요구 사항
이 도구는 로컬에서 모든 모델을 실행하므로, 하드웨어 사양이 성능을 결정합니다. Apple Silicon Mac은 통합 메모리 16GB, NVIDIA GPU 환경은 VRAM 24GB를 권장하며, 이 중 약 8GB가 음성 파이프라인에 사용됩니다. CPU만 있는 환경에서는 실행은 가능하지만 응답 지연이 길어질 수 있습니다. 또한 Qwen3-TTS의 Linux용 기본 휠은 CUDA 12.8과 Ubuntu 24.04를 대상으로 하므로, 다른 CUDA 버전이나 구형 glibc를 사용하는 시스템에서는 Hugging Face 휠하우스에서 맞는 버전을 별도로 설치해야 합니다. 데이터가 외부로 나가지 않는 완전한 오프라인 작동을 원한다면, 첫 실행 후 HF_HUB_OFFLINE=1 환경 변수를 설정해 Hugging Face Hub 요청을 차단할 수 있습니다.