Moonshine Micro is the embedded voice stack from Moonshine Voice — Pete Warden's open toolkit for real-time voice agents, now shrunk to fit microcontrollers and DSPs. The reference platform is the Raspberry Pi RP2350, which retails for roughly 80 cents, and the full VAD → STT → TTS demo provisions ~468 KiB SRAM on a 520 KiB part — about 470 KB of usable RAM for the entire voice loop.
That number matters for physical AI and robotics builders who want local wake words and spoken confirmations without routing every utterance to a cloud API. A Unitree G1 teleop rig still needs a GPU for vision-language policies; a $0.80 MCU can handle "start recording", "emergency stop", or Wi-Fi provisioning while the heavy model runs elsewhere.
Repo: github.com/moonshine-ai/moonshine/micro · VAD docs: vad/README.md · STT docs: stt/README.md · Neural TTS: neural-tts/README.md · RP2350 demo: examples/rp2350
TL;DR — questions people ask first
| Question | Answer |
|---|---|
| What is it? | Embedded voice stack — VAD + command STT + neural TTS for MCUs |
| Who built it? | Pete Warden / Moonshine Voice (moonshine-ai/moonshine) |
| Reference chip? | Raspberry Pi RP2350 (~80¢ retail) |
| Minimum RAM? | ~470 KB provisioned (~468 KiB on 520 KiB RP2350) |
| License? | MIT — commercial-friendly |
| Neural runtime? | TensorFlow Lite Micro (bundled) |
| STT model? | SpellingCNN — command / custom-word recognition |
| TTS? | Neural diphone synth @ 16 kHz; phoneme-to-speech added July 2026 |
| Use parts alone? | Yes — VAD, STT, TTS are independent libraries |
| End-to-end demo? | Voice Wi-Fi setup on RP2350 (examples/rp2350/) |
| vs cloud voice? | On-device, no API keys; limited vocab, not open dictation |
| vs robot VLA? | Complements Robostral Navigate-class models — voice layer on cheap silicon |
Why embedded voice is having a moment
Cloud voice APIs got dramatically better in 2026 — but latency, connectivity, privacy, and BOM cost still block voice on battery-powered gadgets, factory edge nodes, and sub-$5 boards.
Moonshine Micro attacks the smallest viable stack:
- Voice Activity Detection (VAD) — TinyVadCNN, ~0.8 MMAC/frame
- Speech-to-Text (STT) — SpellingCNN for command recognition, not general dictation
- Neural Text-to-Speech (TTS) — diphone neural synth at 16 kHz, with phoneme-to-speech support landing July 16, 2026 (3 days before this post)
The README's pitch is not "replace Alexa." It is "run a credible voice loop on silicon that costs less than a coffee stirrer."
For LingBot-Map-style edge perception — streaming geometry on a GPU — Moonshine Micro is the audio complement on the other end of the BOM: wake, command, confirm, without a second radio hop to OpenAI.
Memory budget on RP2350 (measured, not marketing)
Figures below come from the RP2350 demo memory budget — flash via arm-none-eabi-size, SRAM as arena peak:
| Component | Flash | SRAM (arena peak) | Compute (active) |
|---|---|---|---|
| VAD (TinyVadCNN) | ~89 KiB | ~36 KiB | ~0.8 MMAC/frame (~25 MMAC/s) |
| STT (SpellingCNN) | ~1.3 MiB | ~346 KiB | ~36 MMAC/s |
| TTS (neural diphone @ 16 kHz) | ~1.8 MiB voice pack | ~340 KiB | ~37 MMAC typical (~65 MMAC/s out) |
| TOTAL demo pipeline | ~3.6 MiB | ~468 KiB provisioned | classify + speak ~0.7–1.0 s |
Critical detail: VAD, STT, and TTS run sequentially and time-share one ~384 KiB TFLM arena. SRAM is not additive — you do not need 36 + 346 + 340 KiB simultaneously. The Wi-Fi hardware firmware (wifi_hardware) lands around 491 KiB SRAM on the same 520 KiB part.
If you are budgeting firmware for a custom board, treat ~500 KiB SRAM and ~4 MiB flash (with headroom) as the planning envelope for the full interactive demo.
What each library actually does
Voice Activity Detection (vad/)
Lightweight TinyVadCNN — frames classified as speech vs silence before STT wakes up. At ~25 MMAC/s when active, VAD is the always-on gate that keeps STT from burning cycles on room noise.
Standalone use case: push-to-talk replacement — only buffer audio when VAD fires.
Speech-to-Text (stt/)
SpellingCNN targets command and custom-word recognition, not open-vocabulary transcription. Think "connect Wi-Fi", "start motor", "yes" / "no" — not meeting notes.
July 2026 added micro training docs for rolling your own word lists. That is the path if your product vocabulary does not match the default demo commands.
Neural TTS (neural-tts/)
Diphone neural synthesizer at 16 kHz — intelligible, low-footprint speech for confirmations and prompts. Recent commits (within the last week of July 2026):
- Full neural TTS path (~5 days before publication)
- Phoneme-to-speech (~3 days before publication) — feed phoneme strings directly instead of grapheme pipelines
Quality will not match ElevenLabs or cloud neural voices. For "Network connected" or "Say your password" on a microcontroller, it is the right trade.
RP2350 Wi-Fi setup — the end-to-end proof
The examples/rp2350 demo is the README's flagship: provision Wi-Fi using voice on the RP2350.
Typical flow:
- VAD detects speech
- STT recognizes network-related commands (SSID, password steps per demo firmware)
- Neural TTS speaks status back at 16 kHz
This is the demo that separates Moonshine Micro from "STT sample code on GitHub." It shows stateful product logic — not just inference in a loop.
Getting started (high level):
git clone https://github.com/moonshine-ai/moonshine.git
cd moonshine/micro/examples/rp2350
# Follow README for Pico SDK / toolchain setup, model assets, and firmware target
# Default target: moonshine_micro_echo (embedded voice pack in flash)
Exact toolchain pins live in the example README — ARM GCC, RP2350 board support, and TFLM arena flags change between SDK releases. Do not skip the memory budget section if you add custom prompts or enlarge the STT vocabulary.
Moonshine Micro vs cloud voice vs robot brains
| Layer | Example | Strength | Weakness |
|---|---|---|---|
| Moonshine Micro | RP2350 VAD/STT/TTS | Sub-dollar BOM, offline, MIT, ~470 KB RAM | Fixed vocab; 16 kHz TTS; no reasoning |
| Cloud realtime voice | GPT Realtime-class APIs | Open conversation, tool use, quality TTS | Latency, cost, connectivity, privacy |
| Robot VLA / navigation | Robostral Navigate, Genesis Eno GENE | Vision + action in complex environments | Needs GPU/NPU; not a wake-word chip |
| Sim / world models | Cosmos 3, Qwen-AgentWorld | Training data, simulation, agent environments | Not on-device voice firmware |
explainx.ai's read: Moonshine Micro belongs in the edge I/O layer — the same slot a physical button or OLED menu occupied, now replaced by spoken commands and spoken feedback. Pair it with a humanoid teleop dataset pipeline or a streaming 3D map on a separate compute module; do not expect SpellingCNN to parse "navigate to the kitchen via the hallway" like an 8B VLA.
Honest limitations
Moonshine Micro is early embedded infrastructure, not a finished consumer assistant.
| Limitation | Reality |
|---|---|
| Vocabulary | SpellingCNN = commands / custom words, not Whisper-scale open dictation |
| TTS quality | 16 kHz diphone neural — clear prompts, not podcast narration |
| Sequential pipeline | VAD → STT → TTS time-share one TFLM arena — not parallel duplex conversation |
| Platform focus | RP2350 is the reference; porting means re-validating arena sizes and flash maps |
| Ecosystem maturity | Active July 2026 commits (TTS, phoneme path, training docs) — APIs may shift |
| No cloud agent | Unlike language world models, no built-in reasoning or tool loop |
If your product needs natural multi-turn dialogue, plan a hybrid: Moonshine Micro for wake + local safety commands, cloud or edge GPU for the dialog brain.
Who should use it
| Persona | Fit |
|---|---|
| Embedded firmware engineer | MIT stack, TFLM, measured KiB budgets — ship voice on RP2350-class parts |
| Robotics integrator | Local estop / mode / calibrate voice on MCU while VLA runs on Jetson |
| IoT / smart home hacker | Voice Wi-Fi provisioning demo as template for captive-portal alternatives |
| Hardware startup | Commercial-friendly license; avoid cloud per-minute fees on high-volume SKUs |
| ML researcher wanting GPT-4o voice | Wrong tool — use cloud APIs or a larger edge SoC |
Recent changes (July 2026)
Worth checking git log before you pin firmware:
| Update | Timing (approx.) |
|---|---|
| Full neural TTS | ~5 days before July 19, 2026 |
| Phoneme-to-speech | ~3 days before July 19, 2026 |
| Micro STT training docs | ~4 days before July 19, 2026 |
The phoneme path matters if you already have a grapheme-to-phoneme pipeline elsewhere and want the MCU to only synthesize — smaller text front-end on-device.
Summary
Moonshine Micro puts VAD, SpellingCNN STT, and neural 16 kHz TTS on microcontrollers — ~3.6 MiB flash, ~468 KiB SRAM on the RP2350 reference, MIT-licensed, powered by TensorFlow Lite Micro. Pete Warden and Moonshine Voice target the 80-cent silicon tier: voice confirmations, command recognition, and a full Wi-Fi setup walkthrough without cloud round-trips.
For physical AI stacks, treat it as the cheap local voice layer next to GPU perception and VLA policies — not a replacement for them.
Related on explainx.ai
- 28.9M LLM on $8 ESP32 — Per-Layer Embeddings
- LingBot-Map — streaming 3D reconstruction at the edge
- HIW-500 — Unitree G1 in-the-wild teleop dataset
- Genesis Eno — agentic robot and GENE foundation model
- Mistral Robostral Navigate — map-less embodied navigation
- Qwen-AgentWorld — language world models for agents
- NVIDIA Cosmos 3 — open physical AI world models
Official links: Moonshine repo · Micro README · RP2350 example · STT training · TensorFlow Lite Micro
Memory figures, RP2350 pricing, and July 2026 commit timing reflect the public Moonshine Micro README as of July 19, 2026. Arena sizes shift with vocabulary and voice pack changes — re-measure with arm-none-eabi-size before locking BOM.
