Moonshine
Very low latency speech to text, intent recognition, and text to speech, for building voice agents and interfaces
Install / Use
npx skills add moonshine-ai/moonshineInstalls into whichever agent you are using.
README

Moonshine Voice
Voice Interfaces for Everyone
- Quickstart
- When should you choose Moonshine over Whisper?
- Using the Library
- Models
- API Reference
- Support
- Roadmap
- Acknowledgements
- License
Moonshine Voice is an open source AI toolkit for developers building real-time voice agents and applications.
- Everything runs on-device, so it's fast, private, and you don't need an account, credit card, or API keys.
- The framework and models are optimized for live streaming applications, offering low latency responses by doing a lot of the work while the user is still talking.
- All speech to text models are based on our cutting edge research and trained from scratch, so we can offer higher accuracy than Whisper Large V3 at the top end, down to tiny 1MB models for constrained deployments.
- It's easy to integrate across platforms, with the same library running on Python, iOS, Android, MacOS, Linux, Windows, Raspberry Pis, IoT devices, microcontrollers, DSPs, and wearables.
- Batteries are included. Its high-level APIs offer complete solutions for common tasks like transcription, text to speech, voice cloning, speaker identification (diarization), command recognition, and conversational agents, so you can build your voice application with a single library.
- It supports multiple languages, including English, Spanish, Mandarin, Japanese, Korean, Vietnamese, Ukrainian, and Arabic for STT, and English, Spanish, Arabic, German, French, Hindi, Italian, Japanese, Korean, Dutch, Portuguese, Russian, Turkish, Ukrainian, Vietnamese, and Mandarin for TTS.
Quickstart
Join our community on Discord to get live support.
Javascript
In node run npm install @moonshine-ai/moonshine-wasm, or for the web import directly from the CDN.
import { MicTranscriber, ModelArch } from 'https://cdn.jsdelivr.net/npm/@moonshine-ai/moonshine-wasm/dist/index.js';
const mic = new MicTranscriber()
.modelArch(ModelArch.MediumStreaming)
.onText((text) => showInProgress(text))
.onLine((line) => appendLine(line.text, line.lastTranscriptionLatencyMs));
await mic.load();
await mic.start();
You can see live examples running at moonshine.ai, or download the speech to text, text to speech, voice agent, dictation, or meeting note taker projects. To serve them run node serve.mjs and navigate to http://localhost:8080/.
Python
<!-- doc-test: parse-only -->pip install moonshine-voice
moonshine-voice mic --language en
Listens to the microphone and prints updates to the transcript as they come in.
<!-- doc-test: parse-only -->moonshine-voice agent
Runs a spoken wifi-setup conversation: it listens for a trigger phrase, asks questions, and confirms the answers. Matching is semantic, so natural language variations are recognized. For more, check out our "Getting Started" Colab notebook and video.
<!-- doc-test: parse-only -->moonshine-voice tts --language en_us --text "Hello world"
Synthesizes and speaks the text.
iOS
import MoonshineVoice
let mic = MicTranscriber()
.onText { [weak self] text in
Task { @MainActor in self?.liveText = text }
}
.onLine { [weak self] line in
Task { @MainActor in self?.lines.append(line.text) }
}
try await mic.load()
try mic.start()
Download github.com/moonshine-ai/moonshine/releases/latest/download/ios-Transcriber.tar.gz, extract it, and then open the Transcriber/Transcriber.xcodeproj project in Xcode.
Android
Add ai.moonshine:moonshine-voice:0.1.1 to your project's build.gradle.kts (or equivalent).
import ai.moonshine.voice.MicTranscriber;
mic = new MicTranscriber(this)
.onText(text -> transcriptText.setText(finishedLines + text))
.onLine(line -> {
finishedLines.append(line.text).append('\n');
transcriptText.setText(finishedLines.toString());
});
worker.execute(() -> {
mic.load();
mic.start();
});
Download github.com/moonshine-ai/moonshine/releases/latest/download/android-Transcriber.tar.gz, extract it, and then open the Transcriber folder in Android Studio.
Linux
Moonshine Voice ships prebuilt shared libraries for both x86_64 and arm64 Linux. The quickest way to try it is with the portable C++ example, which downloads the library, an English speech to text model, and a sample recording, then builds and runs a transcriber:
<!-- doc-test: skip -->curl -O -L https://github.com/moonshine-ai/moonshine/releases/download/v0.1.1/cpp-examples.tar.gz
tar xzf cpp-examples.tar.gz
cd c++
./download-library.sh
g++ transcriber.cpp -Imoonshine-voice/include -Lmoonshine-voice/lib -lmoonshine -Wl,-rpath,'$ORIGIN/moonshine-voice/lib' -o transcriber
./transcriber
MacOS
import MoonshineVoice
let mic = MicTranscriber()
.onText { [weak self] text in
Task { @MainActor in self?.liveText = text }
}
.onLine { [weak self] line in
Task { @MainActor in self?.lines.append(line.text) }
}
try await mic.load()
try mic.start()
This code is identical to the iOS version.
Download github.com/moonshine-ai/moonshine/releases/latest/download/macos-MicTranscription.tar.gz, extract it, and then open the MicTranscription/MicTranscription.xcodeproj project in Xcode.
Windows
Download github.com/moonshine-ai/moonshine/releases/latest/download/windows-cli-transcriber.tar.gz, extract it, and then open the cli-transcriber\cli-transcriber.vcxproj project in Visual Studio.
It's a self-contained archive that includes the library and model, so Ctrl+Shift+B or F7 will build the executable.
Raspberry Pi
You'll need a USB microphone plugged in to get audio input, but the Python pip package has been optimized for the Pi, so you can run:
<!-- doc-test: skip --> sudo pip install --break-system-packages moonshine-voice
moonshine-voice mic --language en
I've recorded a screencast on YouTube to help you get started, and you can also download github.com/moonshine-ai/moonshine/releases/latest/download/raspberry-pi-my-dalek.tar.gz for some fun, Pi-specific examples. The README has information about using a virtual environment for the Python install if you don't want to use --break-system-packages.
You can look at github.com/moonshine-ai/pi-help-bot for a more advanced example.
More examples
Example apps for the web, iOS, Android, macOS, Windows, and Raspberry Pi are published on GitHub Releases as separate archives (mostly {platform}-{Project}.tar.gz, matching folder names under examples/; Windows also ships moonshine-voice-windows-x86_64.tar.gz for the C++ sample). See the Examples section for the full list of release downloads.
When should you choose Moonshine over Whisper?
TL;DR - When you're working with live speech.
| Model | WER | # Parameters | MacBook Pro | Linux x86 | R. Pi 5 | Pixel 10a | iPad (A16) | | -------------------------- | ------ | ------------ | ----------- | --------- | --------- | --------- | ---------- | | Moonshine Medium Streaming | 6.65% | 245 million | 74ms | 269ms | 802ms | 916ms | 181ms | | Whisper Large v3 | 7.44% | 1
Related Skills
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
browser-automation
385.5kUse when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.
frontend-design
140.6kGuidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
docs-writer
106.4kAlways use this skill when the task involves writing, reviewing, or editing files in the `/docs` directory or any `.md` files in the repository.
