- Framework für Echtzeit-Spracherkennung, das alle Verarbeitungsschritte On-Device ausführt
- Durch eine streamingbasierte Modellarchitektur wird Text in Echtzeit erzeugt, während der Nutzer spricht, und dabei eine niedrigere Fehlerrate als Whisper Large v3 (WER 6,65 %) erreicht
- Läuft mit derselben API auf Python, iOS, Android, MacOS, Linux, Windows, Raspberry Pi und weiteren Plattformen und ist auf Basis eines C++-Kerns und OnnxRuntime optimiert
- Enthält sprachspezifische Modelle (Englisch, Koreanisch, Japanisch, Spanisch usw.) sowie Intent Recognition, sodass Entwickler Sprachschnittstellen einfach aufbauen können
- Behebt Whispers Grenzen bei 30 Sekunden festem Input, fehlendem Caching und sprachspezifischer Genauigkeit und gilt als interessante Alternative für die Umsetzung latenzarmer Sprachschnittstellen in Edge-Umgebungen
Überblick über Moonshine Voice
- Moonshine Voice ist ein Open-Source-AI-Toolkit zur Entwicklung von Echtzeit-Sprachanwendungen
- Sämtliche Berechnungen werden auf dem lokalen Gerät ausgeführt, was schnelle Reaktionen und Datenschutz gewährleistet
- Dank Streaming-Verarbeitung kann Text aktualisiert werden, während der Nutzer spricht
- Die Modelle basieren auf eigener Forschung und einer von Grund auf trainierten Architektur und bieten höhere Genauigkeit als Whisper Large v3
- Verfügbar in verschiedenen Größen, von einem ultrakompakten 26-MB-Modell bis zu einem mittelgroßen Modell mit 245 Mio. Parametern
- Unterstützt mehrere Sprachen, darunter Englisch, Koreanisch, Japanisch, Chinesisch, Spanisch, Vietnamesisch, Arabisch und Ukrainisch
Wichtige Verbesserungen gegenüber Whisper
- Entfernt Whispers festes 30-Sekunden-Eingabefenster und unterstützt Eingaben variabler Länge
- Fügt Caching hinzu, um doppelte Berechnungen beim Streaming zu reduzieren und die Latenz deutlich zu verkürzen
- Erzielt durch Training eines einzelnen Modells pro Sprache eine höhere Genauigkeit bei gleicher Modellgröße
- Ermöglicht über eine plattformübergreifende C++-Core-Bibliothek dieselbe API in Python, Swift, Java und weiteren Sprachen
- Erreicht mit einem 245M-Parameter-Modell eine niedrigere Fehlerrate als Whisper Large v3 (1,5B Parameter)
Hauptfunktionen und API-Struktur
- Integriert die gesamte Spracherkennungs-Pipeline in einer einzigen Bibliothek und verarbeitet Mikrofoneingabe, Sprachaktivitätserkennung (VAD), Textumwandlung, Sprechererkennung und Befehlsinterpretation gesammelt
- Zentrale Klassen:
- Transcriber: wandelt Audioeingaben in Text um
- MicTranscriber: verarbeitet Mikrofoneingaben automatisch
- IntentRecognizer: erkennt natürlichsprachliche Befehle
- Ereignisbasierte Struktur zur Echtzeiterkennung von Statusänderungen wie LineStarted / LineUpdated / LineCompleted
Modelle und Leistung
- Moonshine Medium Streaming (245M): WER 6,65 %, besser als Whisper Large v3 (7,44 %)
- Moonshine Small Streaming (123M): WER 7,84 %
- Moonshine Tiny Streaming (34M): WER 12,00 %
- Das koreanische Tiny-Modell wurde mit einer WER von 6,46 % bewertet
- Alle Modelle werden im .ort-Format auf Basis von OnnxRuntime bereitgestellt und durch 8-Bit-Quantisierung verschlankt
Entwicklung und Deployment
- Installation in wichtigen Umgebungen möglich, darunter Python (
pip install moonshine-voice), Swift (SPM), Android (Maven) und Windows (C++-Header)
- Optimiertes Paket für Raspberry Pi verfügbar, mit Echtzeiterkennung über USB-Mikrofon
- Veröffentlicht unter der MIT-Lizenz (englische Modelle) und der Moonshine Community License (Modelle für andere Sprachen)
- Geplante Roadmap: schlankere Mobile-Binaries, zusätzliche Sprachen, verbesserte Sprechererkennung, Domain-Customizing
Benchmarks und Einsatzmöglichkeiten
- Mit einer mehr als 5-fach höheren Verarbeitungsgeschwindigkeit als Whisper gut für Echtzeit-Sprachschnittstellen geeignet
- Auf eine Antwortlatenz von unter 200 ms ausgelegt und damit für dialogorientierte Anwendungen nutzbar
- Über das Intent-Recognition-Beispiel können auch natürlich variierte Befehle wie „Turn on the lights“ erkannt werden
- Öffentliche Leistungsvalidierung im HuggingFace OpenASR Leaderboard abgeschlossen
1 Kommentare
Hacker-News-Kommentare
Laut dem OpenASR Leaderboard liefern Parakeet V2/V3 und Canary-Qwen (eine feinabgestimmte Version von Qwen) bessere Ergebnisse als Moonshine
Alle drei Modelle sind Open Source, aber Parakeet ist das kleinste Modell
Ich nutze Parakeet V3 lokal zusammen mit Handy, und es funktioniert sehr gut
Deshalb finde ich einen direkten Vergleich schwierig
Ich bin überrascht, dass auf dem Leaderboard keine Informationen zur Modellgröße stehen
Ich schreibe diesen Beitrag gerade auch per Sprache mit Handy
Die automatische Zeichensetzung ist perfekt, und dass Sprache lokal direkt in Text umgewandelt wird, ist viel komfortabler als Google Docs
Früher habe ich sogar den Orion-Browser installiert, um sprachbasiertes Diktieren auf Chrome-Basis zu nutzen, aber jetzt reicht Handy allein
Ich tippte bisher mit 100–120 WPM, aber das hier ist noch schneller
Das ist wirklich ein Tool, das die Lebensqualität verbessert
Wenn ich auf macOS codex-cli zusammen mit Handy nutze, führt der Standard-Shortcut (Option+Space) dazu, dass mitten im Sprechen Leerzeichen eingefügt werden
Stattdessen funktioniert die Kombination Left Ctrl + Fn sauber
Mich würde interessieren, welche Shortcuts andere verwenden
Nachdem ich es selbst ausprobiert habe, finde ich es wirklich hervorragend
Ab jetzt werde ich es bei allen Kundenprojekten als Standard-App verwenden
Glückwunsch zu den Ergebnissen
Persönlich finde ich die Streaming-Funktion am interessantesten
Ich habe mit Voxtral Realtime die Diktier-App LocalVoxtral für macOS gebaut, und der UX-Unterschied zwischen Streaming und Offline-STT ist enorm
Wenn Wörter schon während des Sprechens direkt erscheinen, ist die Feedback-Schleife komplett anders
Man kann Fehler in Echtzeit erkennen und Sätze korrigieren, was sich viel natürlicher anfühlt
Mich würde interessieren, wie hoch die Streaming-Latenz von Moonshine in der Praxis tatsächlich ist
Außerdem würde ich gern wissen, ob es einen mit OpenAI Realtime kompatiblen WebSocket-Endpunkt gibt
Ich habe Moonshine als Standard gewählt, weil es die beste Balance zwischen Genauigkeit und Latenz bietet
Künftig möchte ich ein objektives Benchmarking hinzufügen, das mehrere Modelle mit denselben Audiodaten vergleicht
Außerdem gibt es einen benutzerdefinierten WebSocket-Server (rift-local), der nach dem Vorbild der Sherpa-onnx-API gebaut wurde
Er ist für eine einzelne Verbindung optimiert und daher für mehrere Verbindungen nicht ideal
Ich habe mehreren Twitch-Streamern dabei geholfen, mit obs-localvocal Transkriptions- und Übersetzungsfunktionen in ihre Streams einzubauen
Hauptsächlich ging es darum, deutsche Sprache in englische Untertitel umzuwandeln
Wir brauchen eine schnellere und präzisere Alternative zu Whisper, aber Streamer bevorzugen installierbare OBS-Plugins
Moonshine hat keine Übersetzungsfunktion und unterstützt auch keine automatische Erkennung mehrerer Sprachen, was für Streamer mit häufigem Code-Switching eine Einschränkung ist
Ideal wäre eine Funktion, die die Sprache automatisch erkennt und das Modell entsprechend wechselt
Zu behaupten, die Genauigkeit sei höher als bei Whisper Large v3, ist ein mutiger Ansatz
Mich würde interessieren, ob bei der Evaluierung das Problem der Halluzinationsschleife von Whisper berücksichtigt wurde
Außerdem würde ich gern wissen, ob die VRAM-Nutzung für die Bereitstellung auf Edge-Geräten zu einem 8-GB-Mac passt
Falls es ohne Quantisierung läuft, wäre das ziemlich bedeutend
In einer Streaming-Umgebung ist partielle Stabilität wichtiger als reines WER
Bei Sprachassistenten leidet die UX, wenn sich partielle Transkriptionen alle paar hundert ms ändern
Metriken wie First-Token-Latenz, Echtzeitfaktor und Anteil der nach 1 Sekunde bzw. 3 Sekunden revidierten Token würden Vergleiche viel praxisnäher machen
Wenn diese Werte gut sind, wäre das für lokale Assistant-Pipelines sehr vielversprechend
Ich erlebe auch, dass ich während des Sprechens meine eigene Aussage noch einmal rückwirkend interpretiere, und das passiert vermutlich oft unbewusst
Dann müsste diese Rate vielleicht gar nicht besonders niedrig sein
Die aktuell unterstützten Sprachen sind Englisch, Arabisch, Japanisch, Koreanisch, Chinesisch, Spanisch, Ukrainisch und Vietnamesisch; die meisten sind in der Größe Base (58M Parameter) verfügbar
Ich verstehe nicht, warum in der Raspberry-Pi-Installationsanleitung
'sudo pip install --break-system-packages moonshine-voice'empfohlen wirdAllerdings nennt die Dokumentation auch eine Alternative mit uv
Mit
uv runmuss man keinen zusätzlichensource-Befehl ausführenEs ist unklar, ob sich die „verbesserte Genauigkeit“ auf Englisch oder auf Mehrsprachigkeit bezieht
Zum Vergleich sollte es zumindest eine WER-Tabelle nach Sprache geben
Mich würde interessieren, ob JavaScript-Support im Browser geplant ist
Früher gab es einmal eine Demo, aber sie ist inzwischen verschwunden
Es lief einmal lokal im Browser, aber irgendwann ist es ohne ersichtlichen Grund kaputtgegangen
Außerdem gibt es ein Vergleichsdokument, das Offline-Transkriptionslösungen im Browser zusammenfasst
Zusätzlich existiert eine separate Moonshine-Demo auf Basis von transformers.js (mit WebGPU und WASM-Fallback)
Wer Moonshine mit einer Browser-GUI ausprobieren möchte, kann den folgenden Befehl ausführen
Dadurch öffnet sich RIFT, ein Web-Frontend für lokale Transkription, mit Kopier-Button
Man kann es auch mit der Web Speech API und anderen Modellen vergleichen, einschließlich Cloud-APIs
Verwandte Links: rift-local, RIFT-Demo