Nova 소개: Raspberry Pi 4용 오픈 소스 음성 비서
요약
Nova는 Raspberry Pi 4에서 구동되는 오픈 소스 음성 비서입니다. 웨이크 워드 감지, VAD, STT 등은 로컬에서 처리되어 프라이버시를 보장하며, LLM만 클라우드를 통해 연결할 수 있습니다. 이 구조 덕분에 사용자는 어떤 엔진이든 교체 가능한 모듈식 설계를 갖게 됩니다.
핵심 포인트
- 로컬 온디바이스 처리를 통해 높은 수준의 개인 정보 보호(Privacy by construction)를 제공합니다.
- 웨이크 워드, VAD 등 핵심 기능은 Pi에서 구동되어 데이터 전송을 최소화합니다.
- LLM 엔진은 Claude, AWS Bedrock 또는 Ollama 등 다양한 백엔드를 선택할 수 있습니다.
- 시스템 안정성을 위해 USB 마이크 복구 및 열 스로틀링 감지 등 견고한 설계가 적용되었습니다.
Nova
Nova는 Raspberry Pi 4에서 완전히 구동되는 오픈 소스 음성 비서입니다. 특정 키워드로 기기를 깨우고, 일상 언어로 말하면, 그에 대한 답변을 소리 내어 들려줍니다. 사용자가 실제로 말을 하기 전까지는 조용하고 로컬하게 유지되며, 오직 그때만 장치 외부로 데이터가 전송됩니다.
이 게시물은 Nova가 무엇인지, 그리고 이를 형성한 몇 가지 결정 사항들을 안내합니다.
파이프라인 (The pipeline)
모든 과정은 작은 상태 기계(state machine)(IDLE → LISTENING → THINKING → SPEAKING → IDLE)에 의해 제어되는 하나의 간단한 루프를 따릅니다:
- 웨이크 워드(Wake word). 휴지 상태에서 Nova는 소형 온디바이스 모델을 사용하여 'Nova'라는 단어를 로컬하게 듣기만 합니다. 아무것도 어딘가로 전송되지 않습니다.
- 듣기 (Listening). 깨어난 후, 음성 활동 감지(VAD, voice activity detection)를 통해 로컬에서 사용자가 말을 멈출 때까지 녹음합니다.
- 생각하기 (Thinking). 사용자의 음성을 텍스트로 전사(STT, speech-to-text)하고, 그 텍스트를 언어 모델(LLM, language model)에 보내 답변을 생성하게 합니다.
- 말하기 (Speaking). 답변을 음성으로 변환하여 재생합니다. 그런 다음 다시 휴식 상태로 돌아갑니다.
각 단계는 인터페이스 뒤에 위치하므로, 어떤 엔진이든 나머지 부분을 건드리지 않고 교체할 수 있습니다.
중요한 선택 사항들 (The choices that matter)
필요한 곳에서는 로컬로, 도움이 필요한 곳에서는 클라우드로. 웨이크 워드, VAD, 음성-텍스트 변환(speech-to-text), 그리고 음성 자체는 Pi에서 구동됩니다. 언어 모델은 기본적으로 클라우드에서 실행되는데, 이는 2GB의 Pi가 강력한 LLM을 원활하게 호스팅할 수 없기 때문입니다. LLM은 제공자 인터페이스 뒤에 존재하므로, Nova를 호스팅되는 Claude, AWS Bedrock 또는 LAN상의 로컬 Ollama 서버 중 어느 곳으로 연결할지 지정할 수 있습니다. 더 강력한 노드에서 완전히 로컬로 구동하는 설정은 향후 개발 계획(roadmap)에 포함되어 있습니다.
구조적 프라이버시 (Privacy by construction). 웨이크 워드가 온디바이스로 실행되기 때문에, Nova는 사용자의 방을 인터넷으로 스트리밍하지 않습니다. 오디오는 활성 대화 턴(active turn) 안에 있을 때만 전사되어 전송되며, 휴식 상태일 때는 절대 그렇지 않습니다. 짧은 비프음이 실제로 듣고 있다는 것을 알려줍니다.
스페인어 우선(Spanish-first)이지만 설정 가능합니다. Nova는 스페인어 발화 상호작용을 위해 구축되고 조정되었으며, 스페인어 발음에 맞춰 훈련된 사용자 지정 웨이크 워드 모델이 포함되어 있습니다 (영어 생성기는 단순히 일치하지 않았기 때문입니다). 언어와 음성은 코드가 아닌 설정 문제입니다.
견고성(Robustness)은 신성합니다. Nova는 몇 주 동안 무인으로 실행되도록 설계되었습니다. 이로 인해 많은 평범한 작업들이 필요했습니다: 플러그가 뽑히는 USB 마이크 복구, 멈춘 상황과 느린 상황을 구분할 수 있는 systemd watchdog, 깨끗한 시작(clean startup), 그리고 박스가 무엇을 하는지 알 수 있도록 매 턴별 지표 측정 — Pi의 열 스로틀링 상태를 읽는 것까지 포함합니다.
왜 오픈 소스인가 (Why open source)
전체 스택이 무료이며 공개되어 있습니다. 첫 번째 버전에서 발생하는 유일한 운영 비용은 선택하는 제공업체의 LLM 사용료입니다. 나머지 모든 것 — 웨이크 워드 트레이너, 설치 프로그램, 설계 문서 — 은 저장소에 있으며, 설계 문서는 진실의 원천으로 간주되어 코드와 일치하도록 유지됩니다.
향후 계획 (Where it's going)
Nova는 이미 엔드투엔드로 작동하며 서비스로 설치할 수 있습니다. 다음 순서로는 더 나은 문서화 및 프레젠테이션 사이트, 더 자연스러운 음성, 회귀 임계값(regression thresholds)을 갖춘 성능 벤치마크, 그리고 전체 파이프라인이 클라우드 없이 실행될 수 있는 완전 로컬 노드가 있습니다.
만약 이 내용 중 재미있어 보이는 것이 있다면, 저희와 함께해 주세요.
더 많은 맥락이나 구현 방식을 보고 싶으신가요?
Nova는 아직 완전히 공개되지는 않았지만, 저장소 — 모든 문서화 및 전체 소스 코드 — 에 대한 **조기 액세스(early access)**를 https://gitlab.com/gabrielhruiz1/nova 에서 얻을 수 있습니다.
메시지를 남겨주시면, 저희가 모든 것을 공식적으로 발표할 때까지 가능한 한 빨리 액세스를 부여해 드리겠습니다 (아직 몇 가지 부분은 작업 중입니다).
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기