farshed/sage

Self-hosted voice chat with LLMs

Sage – 음성으로 LLM과 대화하기

소개 – Sage는 대규모 언어 모델(LLM)과 음성으로 대화할 수 있는 오픈소스 애플리케이션입니다. 음성 인식 모델, LLM(Ollama를 통한 자체 호스팅 또는 클라우드 API 액세스), 텍스트 음성 변환 구성 요소를 하나로 묶어 모든 것이 로컬에서 실행되므로 데이터가 외부로 유출되지 않습니다.

중요성 – 대부분의 음성 비서 데모는 독점 서비스에 의존합니다. Sage는 완전히 오픈된 모델들을 조합하여 일반적인 하드웨어에서도 적절한 지연 시간으로 실행되는 음성-LLM 파이프라인을 구축할 수 있음을 보여줍니다.


핵심 구성 요소

구성 요소 역할 사용 모델 예시
음성 인식 마이크 입력을 텍스트로 변환 Whisper (ggml‑large‑v3‑turbo)
LLM 응답 생성 Ollama에서 제공하는 모든 모델 (예: deepseek-r1:7b) 또는 클라우드 제공업체 (OpenAI, Anthropic, Deepseek, Together.ai)
텍스트 음성 변환 LLM 응답을 소리 내어 읽기 명시되지 않았으나 voices.json 카탈로그를 통해 제공

이 세 단계는 Bun(빠른 JavaScript 런타임)으로 작성된 소형 Node 스타일 서버로 연결됩니다. README의 아키텍처 다이어그램은 마이크 → Whisper → LLM → 음성 합성 → 스피커로 이어지는 데이터 흐름을 보여줍니다.


시작하기

  1. 언어 모델 선택
    • 자체 호스팅 – Ollama를 설치하고 모델을 선택한 후 .env 파일에서 OLLAMA_MODEL을 설정합니다.
    • 클라우드 – OpenAI, Anthropic, Deepseek 또는 Together.ai에 맞는 *_API_KEY 및 *_MODEL 변수를 추가합니다.
  2. 스택 설치
    • Docker 방식(간편) – 3개의 모델 파일을 models/ 폴더에 넣고 bun docker-build를 실행한 다음 bun docker-run을 실행합니다. UI는 http://localhost:3000에서 확인할 수 있습니다(참고: Whisper는 Docker 내부에서 4‑5배 느리게 실행됩니다).
    • 네이티브 방식(빠름) – Bun, Rust, OpenSSL, LLVM/Clang, CMake를 설치합니다. 플랫폼별 setup‑unix.sh 또는 setup‑win.bat를 실행하여 가중치를 다운로드하고 Whisper 바이너리를 컴파일합니다. bun start로 시작합니다.
  3. 대화 – 웹 UI를 열고 마이크에 대고 말하면 모델의 답변을 들을 수 있습니다.

README에서 강조하는 설계 목표

  • 개방성 – 커뮤니티에서 관리하는 음성 모델(Whisper, Kokoro 음성 인코더) 사용.
  • 효율성 – 소비자용 CPU/GPU를 타겟팅하며, 유일하게 무거운 Whisper도 최신 노트북에서 실시간으로 실행 가능.
  • 자체 호스팅 – 클라우드 LLM을 선택하지 않는 한 외부 서비스 불필요.
  • 모듈화 – LLM 제공업체 변경은 환경 변수 수정만으로 가능.

로드맵(README 기준)

  • ✅ Docker 패키징(이미 제공)
  • ⬜ 추론 속도 향상을 위한 CUDA 가속
  • ⬜ 사용자 지정 Ollama 엔드포인트 지원
  • ⬜ 다국어 음성 지원
  • ⬜ Whisper 구성 옵션 노출
  • ⬜ 시스템 프롬프트 사용자 지정
  • ⬜ 일반적인 파이프라인 최적화
  • ⬜ Sage를 재사용 가능한 라이브러리로 배포

결론

Sage는 완전히 오픈소스 구성 요소로 구축된 음성 우선 AI 비서의 실용적인 엔드투엔드 데모입니다. 폐쇄적인 API에 의존하지 않고 음성 LLM 상호작용을 실험하려는 애호가들에게 유용하며, 음성 모델, LLM 백엔드, TTS를 가볍고 독립적인 패키지로 통합하는 방법을 명확하게 보여줍니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트