Moonshine Micro: Voice AI on 80-Cent MCUs — RP2350 VAD, STT, and Neural TTS (2026)
Moonshine Micro (moonshine-ai/moonshine) runs VAD, SpellingCNN STT, and neural TTS on the RP2350 in ~470 KB RAM — MIT license, TFLM, Wi-Fi setup demo. explainx.ai memory budget, limits, and vs cloud voice.
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.
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:
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):
bash
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.
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
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.
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.