Vox 소개: 실시간 음성 레이어를 갖춘 '음성용 Ollama'
요약
Vox는 다양한 STT/TTS 모델을 통합하여 단일 API로 제공하는 음성 전용 로컬 런타임입니다. OpenAI 호환 엔드포인트를 지원하며, WebRTC를 통해 실시간 음성 처리 및 스트리밍 기능을 제공합니다.
핵심 포인트
- 다양한 음성 모델을 위한 자동 어댑터 및 단일 API 제공
- OpenAI 호환 엔드포인트로 기존 클라이언트와 높은 호환성 유지
- WebRTC 기반의 실시간 음성 활동 감지 및 스트리밍 지원
- 사용자는 LLM(뇌)만 연결하면 되는 '귀와 입' 역할 수행
새로운 STT/TTS 모델이 출시될 때마다, 각 모델은 자신만의 저장소(repo), 환경(env), 그리고 고유한 특성들을 가지고 나옵니다. 실제로 이를 시스템에 통합하려면 매번 글루 코드(glue code)를 다시 작성해야 했습니다. 그것이 제가 vox(https://github.com/eleven-am/vox)를 만든 이유입니다.
이는 음성 모델을 위한 로컬 런타임(local runtime)입니다. 모델을 풀(pull)하면 적절한 어댑터(adapter)를 자동으로 설치해주고, 하나의 API를 제공합니다. STT와 TTS 모두 OpenAI 호환 엔드포인트(endpoints) 뒤에 위치하므로, /v1/audio/speech 및 /v1/audio/transcriptions는 기존 클라이언트들과 대부분 바로 작동합니다. 모델은 적합한 백엔드(CTranslate2, ONNX, Torch, NeMo, vLLM 등)를 통해 실행되지만, 사용자는 어떤 백엔드인지 신경 쓸 필요가 없습니다.
제가 실제로 중요하게 생각하는 부분은 저의 주요 사용 사례인 WebRTC입니다. gRPC, POST+SSE 또는 WebSocket을 통해 에이전트를 Vox에 연결할 수 있습니다. 사용자가 브라우저를 통해 접속하면, Vox가 마이크 측면을 처리합니다: 음성 활동 감지(voice activity detection), 전사(transcription), 그리고 사용자가 말을 멈춘 시점을 파악하여 해당 이벤트들을 스트리밍합니다. 여러분은 실행 중인 어떤 LLM으로부터든 답변 텍스트를 보내기만 하면 되며, Vox는 이를 WebRTC를 통해 사용자에게 말해줍니다(끼어들기(barge-in) 기능 포함). 즉, Vox는 귀와 입 역할을 하고, 여러분은 뇌를 가져오면 됩니다.
이 프로젝트는 주로 개인적인 용도로 진행해 온 1인 프로젝트였습니다. 몇 달 동안 작업해 왔는데, 누군가 audio.cpp(https://www.reddit.com/r/LocalLLaMA/comments/1uk7khq/audiocpp_vibevoice_15b_released_90min_podcast_in/)에 대해 게시한 것을 보고 저의 것도 공유하기로 했습니다.
비판과 유지 관리자(maintainers) 모두 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기