# Moonshine - 엣지 디바이스용 고속·고정확도 음성 인식(ASR) 오픈소스

> Clean Markdown view of GeekNews topic #27103. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=27103](https://news.hada.io/topic?id=27103)
- GeekNews Markdown: [https://news.hada.io/topic/27103.md](https://news.hada.io/topic/27103.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-03-01T11:11:23+09:00
- Updated: 2026-03-01T11:11:23+09:00
- Original source: [github.com/moonshine-ai](https://github.com/moonshine-ai/moonshine)
- Points: 10
- Comments: 1

## Summary

**Moonshine**은 모든 연산을 **온디바이스에서 수행하는 스트리밍 음성 인식 프레임워크**로, Whisper의 고정 입력 구조와 지연 문제를 개선했습니다. C++ 코어와 OnnxRuntime 기반으로 최적화되어 Python, iOS, Android 등 다양한 플랫폼에서 동일한 API로 동작하며, Whisper Large v3보다 낮은 오류율(WER 6.65%)을 기록합니다. 다국어 모델과 명령 인식 기능을 포함해, 엣지 환경에서도 실시간 음성 인터페이스를 손쉽게 구현할 수 있습니다.

## Topic Body

- 모든 처리를 **온디바이스에서 수행하는 실시간 음성 인식 프레임워크**  
- **스트리밍 기반 모델 구조**를 통해 사용자가 말하는 동안에도 실시간으로 텍스트를 생성하며, **Whisper Large v3보다 낮은 오류율(WER 6.65%)** 을 달성  
- **Python, iOS, Android, MacOS, Linux, Windows, Raspberry Pi** 등 다양한 플랫폼에서 동일한 API로 동작하며, **C++ 코어와 OnnxRuntime**을 기반으로 최적화  
- **언어별 모델(영어, 한국어, 일본어, 스페인어 등)** 과 **명령 인식(Intent Recognition)** 기능을 포함해, 개발자가 손쉽게 음성 인터페이스를 구축 가능  
- **Whisper의 30초 고정 입력·캐시 부재·언어 정확도 한계**를 개선해, **엣지 환경에서의 저지연 음성 인터페이스 구현**에 적합한 대안으로 주목  
  
---  
  
### Moonshine Voice 개요  
- Moonshine Voice는 **실시간 음성 애플리케이션 개발용 오픈소스 AI 툴킷**  
  - 모든 연산이 **로컬 디바이스에서 수행**되어 빠른 응답과 개인 정보 보호 보장  
  - **스트리밍 처리**로 사용자가 말하는 중에도 텍스트 업데이트 가능  
- 모델은 자체 연구 기반으로 **처음부터 학습된 구조**이며, **Whisper Large v3보다 높은 정확도**를 제공  
- **26MB 초소형 모델부터 245M 파라미터 중형 모델까지** 다양한 크기 제공  
- **영어, 한국어, 일본어, 중국어, 스페인어, 베트남어, 아랍어, 우크라이나어** 등 다국어 지원  
  
### Whisper 대비 주요 개선점  
- Whisper의 **30초 고정 입력 윈도우**를 제거해, **가변 길이 입력**을 지원  
- **캐싱 기능**을 추가해 스트리밍 중 중복 연산을 줄이고 **지연(latency)을 대폭 단축**  
- **언어별 단일 모델 학습**으로 동일 크기 대비 더 높은 정확도 확보  
- **크로스플랫폼 C++ 코어 라이브러리**를 통해 Python, Swift, Java 등에서 동일 API 사용 가능  
- **Whisper Large v3(1.5B 파라미터)** 보다 작은 **245M 파라미터 모델**로 더 낮은 오류율 달성  
  
### 주요 기능 및 API 구조  
- 음성 인식 파이프라인을 단일 라이브러리로 통합해 **마이크 입력, 음성 감지(VAD), 텍스트 변환, 화자 식별, 명령 인식**을 일괄 처리  
- 핵심 클래스:  
  - **Transcriber**: 오디오 입력을 텍스트로 변환  
  - **MicTranscriber**: 마이크 입력 자동 처리  
  - **IntentRecognizer**: 자연어 기반 명령 인식  
- 이벤트 기반 구조로, **LineStarted / LineUpdated / LineCompleted** 등 상태 변화를 실시간 감지  
  
### 모델 및 성능  
- **Moonshine Medium Streaming (245M)**: WER 6.65%, Whisper Large v3(7.44%)보다 우수  
- **Moonshine Small Streaming (123M)**: WER 7.84%  
- **Moonshine Tiny Streaming (34M)**: WER 12.00%  
- **한국어 Tiny 모델**은 WER 6.46%로 평가됨  
- 모든 모델은 **OnnxRuntime 기반 .ort 포맷**으로 제공되며, **8비트 양자화**로 경량화  
  
### 개발 및 배포  
- **Python (pip install moonshine-voice)**, **Swift (SPM)**, **Android (Maven)**, **Windows (C++ 헤더)** 등 주요 환경에서 설치 가능  
- **Raspberry Pi 최적화 패키지** 제공, USB 마이크로 실시간 인식 가능  
- **MIT 라이선스**(영어 모델) 및 **Moonshine Community License**(기타 언어 모델)로 공개  
- 향후 로드맵: **모바일용 바이너리 경량화, 추가 언어, 개선된 화자 식별, 도메인 커스터마이징**  
  
### 벤치마크 및 활용  
- **Whisper 대비 5배 이상 빠른 처리 속도**로 실시간 음성 인터페이스에 적합  
- **200ms 이하 응답 지연 목표**로 설계되어, 대화형 애플리케이션에 활용 가능  
- **명령 인식 예제**를 통해 “Turn on the lights” 등 자연어 변형 명령도 인식 가능  
- **HuggingFace OpenASR Leaderboard**에서 공개 성능 검증 완료

## Comments



### Comment 52121

- Author: neo
- Created: 2026-03-01T11:11:23+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47143755) 
- [OpenASR Leaderboard](https://huggingface.co/spaces/hf-audio/open_asr_leaderboard)에 따르면 Parakeet V2/V3와 Canary-Qwen(Qwen 파인튜닝 버전)이 Moonshine보다 성능이 좋음  
  세 모델 모두 오픈소스이지만 Parakeet이 가장 **작은 모델**임  
  나는 Parakeet V3를 Handy와 함께 로컬에서 사용 중인데, 매우 잘 작동함
  - Parakeet V3는 Moonshine Medium(245M)보다 **두 배 이상 많은 파라미터 수(600M)** 를 가짐  
    그래서 단순 비교는 어렵다고 생각함  
    모델 크기 정보가 리더보드에 없다는 점이 의외임
  - Handy를 방금 써봤는데 정말 놀라움  
    지금 이 글도 Handy로 말하면서 쓰고 있음  
    **구두점 자동 처리**도 완벽하고, 로컬에서 음성을 바로 텍스트로 바꿔주니 Google Docs보다 훨씬 편함  
    예전엔 Chrome 기반으로 음성 입력을 쓰려고 Orion 브라우저까지 설치했는데, 이제는 Handy 하나로 충분함  
    타이핑 속도가 100~120WPM이었는데, 이건 그보다 빠름  
    진짜 **삶의 질 향상 도구**임
  - 나는 로컬 우선 iOS 전사 앱을 개발 중인데, Whisper Medium에서 Parakeet V3로 전환하려 함  
    macOS에서 codex-cli와 Handy를 함께 쓸 때 기본 단축키(Option+Space)가 말 중간에 공백을 넣는 문제가 있음  
    대신 **Left Ctrl + Fn** 조합이 깔끔하게 작동함  
    다른 사람들은 어떤 단축키를 쓰는지 궁금함
  - WhisperX 모델을 써왔는데 Handy는 처음 알게 되었음  
    직접 써보니 정말 훌륭함  
    이제 모든 클라이언트 작업에서 **기본 앱**으로 쓸 예정임
  - Handy는 정말 **품질 좋은 앱**임

- 결과 축하함  
  개인적으로는 **스트리밍 기능**이 가장 흥미로움  
  나는 Voxtral Realtime 기반으로 macOS용 받아쓰기 앱 [LocalVoxtral](https://github.com/T0mSIlver/localvoxtral)을 만들었는데, 스트리밍과 오프라인 STT의 UX 차이는 엄청남  
  말하는 도중에 단어가 바로 뜨면 피드백 루프가 완전히 달라짐  
  실시간으로 오류를 잡고 문장을 수정할 수 있어 훨씬 자연스러움  
  Moonshine의 **스트리밍 지연(latency)** 이 실제로 어느 정도인지 궁금함  
  또한 OpenAI Realtime과 호환되는 WebSocket 엔드포인트가 있는지도 알고 싶음
  - 내 앱은 [moonshine-voice](https://rift-transcription.vercel.app/local-setup) Python 패키지를 사용함  
    Moonshine을 기본으로 둔 이유는 **정확도와 지연시간의 균형**이 가장 좋기 때문임  
    향후 여러 모델을 동일 오디오 데이터로 비교하는 **객관적 벤치마크**를 추가할 예정임  
    또한 Sherpa-onnx API를 참고해 만든 커스텀 WebSocket 서버([rift-local](https://github.com/Leftium/rift-local))도 있음  
    단일 연결에 최적화되어 있어 다중 연결에는 적합하지 않음

- 여러 Twitch 스트리머들이 [obs-localvocal](https://github.com/royshil/obs-localvocal)을 통해 스트림에 **전사 및 번역 기능**을 추가하도록 도와왔음  
  주로 독일어 음성을 영어 자막으로 바꾸는 용도였음  
  Whisper보다 빠르고 정확한 대안이 필요하지만, 스트리머들은 설치형 OBS 플러그인 형태를 선호함  
  Moonshine은 번역 기능이 없고, **다국어 자동 감지**도 지원하지 않아 코드스위칭이 잦은 스트리머에게는 한계가 있음  
  언어를 자동 감지해 모델을 전환하는 기능이 있다면 이상적일 것 같음

- Whisper Large v3보다 높은 정확도를 주장하는 건 **대담한 시도**임  
  평가 시 Whisper의 **환각 루프(hallucination loop)** 문제를 고려했는지 궁금함  
  또한 엣지 디바이스 배포 시 VRAM 사용량이 8GB Mac에 맞는지도 알고 싶음  
  양자화 없이 돌아간다면 꽤 큰 의미가 있음

- 스트리밍 환경에서는 단순한 WER보다 **부분 안정성(partial stability)** 이 더 중요함  
  음성 비서의 경우, 부분 전사가 몇백 ms마다 바뀌면 UX가 망가짐  
  **첫 토큰 지연, 실시간 비율, 1초/3초 후 수정된 토큰 비율** 같은 지표가 있다면 비교가 훨씬 실용적일 것 같음  
  이런 수치가 좋다면 로컬 어시스턴트 파이프라인에 매우 유망함
  - 인간의 경우에도 ‘부분 수정률’이 존재하는지 궁금함  
    나도 말을 하다 스스로 **되짚어 해석**하는 경험이 있는데, 무의식적으로도 자주 일어날 것 같음  
    그렇다면 이 비율이 너무 낮을 필요는 없을 수도 있음

- 현재 지원 언어는 영어, 아랍어, 일본어, 한국어, 중국어, 스페인어, 우크라이나어, 베트남어이며 대부분 **Base(58M 파라미터)** 크기임

- Raspberry Pi 설치 가이드에서 `'sudo pip install --break-system-packages moonshine-voice'`를 권장하는 이유를 모르겠음  
  다만 문서에서는 uv를 이용한 대안도 제시함  
  uv run을 쓰면 별도로 source 명령을 실행할 필요가 없음

- “정확도 향상”이 영어 기준인지, 다국어 기준인지 불분명함  
  언어별 **WER 표**가 최소한 제공되어야 비교가 가능함

- 브라우저에서의 **JavaScript 지원 계획**이 있는지 궁금함  
  예전에 데모가 있었는데 지금은 사라졌음  
  로컬에서 작동하던 적이 있지만, 어느 순간부터 이유 없이 깨졌음
  - [moonshine-js](https://github.com/moonshine-ai/moonshine-js)라는 **WASM 기반 포트**가 있음  
    또한 브라우저 내 오프라인 전사 솔루션들을 정리한 [비교 문서](https://github.com/Leftium/rift-transcription/blob/main/reference/streaming-transcription-demos.md#in-browser--wasm-offline-no-server)도 있음  
    transformers.js(WebGPU 사용, WASM 폴백) 기반의 별도 Moonshine 데모도 존재함

- 브라우저 GUI로 Moonshine을 써보려면 아래 명령을 실행하면 됨  
  ```
  uv tool install rift-local && rift-local serve --open
  ```  
  이렇게 하면 로컬 전사용 웹 프론트엔드 **RIFT**가 열리며, 복사 버튼도 있음  
  Web Speech API 및 다른 모델(클라우드 API 포함)과 비교도 가능함  
  관련 링크: [rift-local](https://github.com/Leftium/rift-local), [RIFT 데모](https://rift-transcription.vercel.app/local-setup)
