500KB 미만으로 구현하는 음성 인식과 TTS
마이크로컨트롤러용 Moonshine Micro
470KB RAM에서도 실시간 음성 인터페이스 실행
Moonshine Voice는 실시간 음성 에이전트·애플리케이션 개발용 오픈소스 AI 툴킷
Moonshine Micro는 마이크로컨트롤러와 DSP 같은 임베디드 프로세서에 맞춘 버전으로, 소매가 80센트인 Raspberry Pi RP2350을 기준 플랫폼으로 사용
음성 활동 감지(VAD), 명령 인식, 신경망 음성 합성을 포함하며 최소 470KB RAM에서 구동
전체 동작 과정은 함께 제공된 영상에서 확인 가능
RP2350 데모의 메모리·연산 예산
구성요소 | Flash | SRAM(arena 최대치) | 연산량 |
|---|---|---|---|
VAD(Voice Activity Detection) | ~89 KiB | ~36 KiB | ~0.8 MMAC/frame (~25 MMAC/s) |
STT(SpellingCNN Speech-to-Text) | ~1.3 MiB | ~346 KiB | ~36 MMAC/s |
TTS(neural diphone synth @ 16 kHz) | ~1.8 MiB voice pack | ~340 KiB | 일반적인 응답 ~37 MMAC(출력 중 ~65 MMAC/s) |
합계(데모 파이프라인) | ~3.6 MiB | 할당량 ~468 KiB | 분류 + 발화 ~0.7--1.0초 |
메모리 수치는 순차 실행과 arena 공유를 반영
Flash는 내장 신경망 음성 팩을 포함한 기본
moonshine_micro_echo펌웨어를arm-none-eabi-size로 측정한.text+.rodata; SRAM은.bss+ heap + stacksVAD·STT·신경망 TTS가 순차 실행되며 약 384 KiB의 TFLM arena 하나를 시간 분할로 공유하므로 SRAM 사용량을 단순 합산하지 않음
약 468 KiB는 520 KiB RP2350에 할당된 전체 RAM이며,
wifi_hardware구성에서는 약 491 KiB
MAC은 multiply-accumulate 1회, MMAC/s는 활성 상태에서 초당 수백만 회를 뜻함
독립 사용 가능한 음성 라이브러리와 완전한 구현 예제
RP2350 MCU에서 음성으로 마이크로컨트롤러의 Wi-Fi 연결을 설정하는 엔드투엔드 예제 제공
VAD·STT·TTS 라이브러리는 서로 독립적으로 사용할 수 있으며, 신경망 연산에는 포함된 TensorFlow Lite Micro를 활용
문서
라이선스
상용 애플리케이션에 사용할 수 있는 허용적 MIT License 적용
third-party/의 소스를 제외한 코드는 이 디렉터리와 저장소 루트의 LICENSE에 따라 MIT License로 배포models/의 SpellingCNN·TinyVadCNN 모델도 MIT License 적용third-party/코드는 원본 오픈소스 프로젝트의 조건을 따르며, 세부 내용은 각 하위 폴더의 LICENSE 파일에 명시
source https://github.com/moonshine-ai/moonshine/tree/main/micro
HN에서는 500KB 안팎의 메모리로 음성 인식과 합성을 구동한다는 점에 기대가 컸지만, 작은 크기만으로 실용성을 판단하기는 어렵다는 반응도 뚜렷했다. 특히 현업 경험자들은 TTS 자체보다 인식 정확도를 확보하는 일이 더 어렵다며 벤치마크를 요구했다. 제한된 명령어는 작은 모델로도 처리할 수 있지만, 억양과 발음이 달라지면 비슷한 소리를 혼동하기 쉽다는 경험도 나왔다.
그럼에도 자원이 제한된 기기에서는 충분히 매력적이다. 전체 파이프라인은 VAD·STT·TTS가 메모리를 번갈아 사용해 약 468KiB의 SRAM에 들어간다. 음성 팩 등을 포함한 플래시 사용량은 약 3.6MiB이므로 ‘500KB’가 전체 설치 용량을 뜻하지는 않는다. 기존 초경량 합성기보다 음질과 메모리 사용량이 나을지 비교해 보려는 반응이 이어졌고, VAD만 떼어 실시간 발화자 표시 등에 활용해도 가치가 있다는 평가가 있었다.
음성 인터페이스의 효용은 사용 환경에 따라 갈렸다. 코딩 에이전트에 긴 맥락을 말로 전달하거나 화면을 보기 어려운 상황에서 작업하는 이용자들은 실제 생산성이 높아졌다고 했다. 반면 말하는 방식과 잘 다듬은 프롬프트의 차이, 긴 응답과 코드 블록을 음성으로 듣는 불편도 지적됐다. 잘 정의된 프로젝트와 안전장치가 있을 때 특히 잘 맞으며, 로컬 실행은 음성 데이터를 외부 서버로 보내고 싶지 않은 사용자에게 중요한 장점이다.
실무에서는 모델 크기뿐 아니라 정확도와 지연 시간, 대상 발음, 명령 범위를 함께 확인해야 한다. 브라우저에 넣을 때도 모델보다 범용 추론 런타임이 더 큰 용량을 차지할 수 있다. 결국 이 프로젝트의 강점은 모든 음성 작업을 대체하는 데 있지 않다. 제한된 하드웨어에서 필요한 기능만 골라 빠르게 로컬로 처리할 수 있는지가 도입 여부를 가르는 기준이다.
