General Questions
When should I choose Moonshine over Whisper?
When should I choose Moonshine over Whisper?
TL;DR - When you’re working with live speech.Moonshine is specifically optimized for real-time voice applications, while Whisper excels at batch processing. Here’s why Moonshine is better for live speech:1. Flexible Input Windows
Choose Whisper if: You’re doing bulk offline processing with GPUs where throughput matters more than latency.Choose Moonshine if: You’re building voice interfaces that need to respond quickly to users.
- Whisper always operates on a 30-second input window, wasting computation on padding
- Moonshine accepts any length of audio, spending compute only on actual speech
- Result: Much lower latency on short phrases (most voice interfaces)
- Whisper starts from scratch on every call, even for repeated audio
- Moonshine caches encoding and decoder state, skipping redundant work
- Result: Can provide updates while the user is still talking
- Moonshine Medium Streaming: 6.65% WER, 245M parameters
- Whisper Large v3: 7.44% WER, 1.5B parameters
- Moonshine achieves higher accuracy with 6x fewer parameters
| Model | WER | Parameters | MacBook Pro | Linux x86 | Raspberry Pi 5 |
|---|---|---|---|---|---|
| Moonshine Medium Streaming | 6.65% | 245M | 107ms | 269ms | 802ms |
| Whisper Large v3 | 7.44% | 1.5B | 11,286ms | 16,919ms | N/A |
| Moonshine Small Streaming | 7.84% | 123M | 73ms | 165ms | 527ms |
| Whisper Small | 8.59% | 244M | 1940ms | 3,425ms | 10,397ms |
What languages does Moonshine support?
What languages does Moonshine support?
Moonshine Voice currently supports:
- English (Tiny, Tiny Streaming, Base, Small Streaming, Medium Streaming)
- Arabic (Base)
- Japanese (Base)
- Korean (Tiny)
- Mandarin Chinese (Base)
- Spanish (Base)
- Ukrainian (Base)
- Vietnamese (Base)
What platforms does Moonshine support?
What platforms does Moonshine support?
Moonshine Voice runs on:
- Python (pip install)
- iOS (Swift Package Manager)
- Android (Maven)
- macOS (Swift Package Manager)
- Linux (x86_64, ARM)
- Windows (Visual Studio)
- Raspberry Pi (ARM)
- IoT devices (via C++ core)
Does Moonshine require an internet connection?
Does Moonshine require an internet connection?
No! Everything runs on-device:
- No API keys required
- No account or credit card needed
- Complete privacy - audio never leaves your device
- Works offline
- No usage limits or quotas
What are the license terms?
What are the license terms?
Code and English Models: MIT License
- Free for any use (commercial or non-commercial)
- Modify, distribute, use privately
- Free for research and non-commercial use
- Free for commercial use if revenue < $1,000,000 USD/year
- Commercial license required if revenue ≥ $1,000,000 USD/year
Technical Questions
How do I improve transcription accuracy?
How do I improve transcription accuracy?
1. Use the Right Model4. For Non-Latin Languages
- Larger models = better accuracy
- Language-specific models outperform multilingual models
- Choose based on your accuracy vs. speed tradeoff
- Use a good microphone
- Minimize background noise
- Test with
save_input_wav_pathoption to verify audio quality
- Set
max_tokens_per_secondto 13.0 (default is 6.5) - This prevents false hallucination detection
- For specialized vocabulary, consider commercial fine-tuning
- Community project: finetune-moonshine-asr
What's the difference between streaming and non-streaming models?
What's the difference between streaming and non-streaming models?
Non-Streaming (Tiny, Base):
- Process complete audio segments
- Lower memory usage
- Good for shorter phrases
- Simpler architecture
- Cache encoder output and decoder state
- Process audio incrementally
- Much lower latency for real-time use
- Can update transcription while user is still speaking
- Ideal for interactive applications
How do I handle multiple audio sources?
How do I handle multiple audio sources?
Use Streams to process multiple inputs with a single transcriber:This shares model weights, reducing memory usage.
Can I use Moonshine with a GPU or NPU?
Can I use Moonshine with a GPU or NPU?
Moonshine uses ONNX Runtime, which supports hardware acceleration:
- CPU: Works out of the box (optimized for ARM and x86_64)
- GPU: ONNX Runtime can use CUDA, DirectML, or CoreML
- NPU: Some platforms support neural processing units
How do I debug transcription issues?
How do I debug transcription issues?
1. Enable Logging2. Save Input AudioListen to the saved WAV files to verify audio quality.3. Check Audio FormatSee Debugging Guide for more details.
- Ensure audio is mono (not stereo)
- Sample rate is handled automatically
- Values should be in range [-1.0, 1.0]
What's the memory footprint?
What's the memory footprint?
Model sizes (quantized):
- Tiny: ~26 MB (26M parameters)
- Tiny Streaming: ~34 MB (34M parameters)
- Base: ~58 MB (58M parameters)
- Small Streaming: ~123 MB (123M parameters)
- Medium Streaming: ~245 MB (245M parameters)
- Small overhead for audio buffers
- Caching state for streaming models
- Multiple streams share model weights
Integration Questions
How do I integrate Moonshine into my app?
How do I integrate Moonshine into my app?
Python:iOS/macOS:
Add Swift package: Windows/C++:
Download pre-built libraries from GitHub releasesSee Installation Guide for details.
https://github.com/moonshine-ai/moonshine-swift/Android:
Add to gradle/libs.versions.toml:How do I handle microphone permissions?
How do I handle microphone permissions?
Moonshine Voice doesn’t handle permissions directly - that’s platform-specific:iOS: Add to Info.plist:Android: Add to AndroidManifest.xml:And request at runtime (see Android examples).Web: Use Web Audio API with
getUserMedia()See platform examples in /resources/examples for complete implementations.Can I use Moonshine with React Native or Flutter?
Can I use Moonshine with React Native or Flutter?
Yes, but you’ll need to create bindings:React Native:
- Create a native module wrapping the iOS/Android SDKs
- Use bridge to communicate with JavaScript
- Create a plugin using platform channels
- Call native iOS/Android code
How do I bundle models with my app?
How do I bundle models with my app?
iOS/macOS:
- Add model files to Xcode project
- Ensure they’re in “Copy Bundle Resources”
- Access via
Bundle.main.url(forResource:withExtension:)
- Place models in
src/main/assets/ - Access via
AssetManager
- Models download to cache directory automatically
- Set custom location with
MOONSHINE_VOICE_CACHEenvironment variable
Still Have Questions?
If you don’t see your question answered here:- Join our Discord community for live support
- Search GitHub issues
- Ask on GitHub Discussions
- Contact us directly