Cactus Compute hat mit Whistle ein 16,9 MB großes, abhängigkeitsfreies Speech-to-Text-Modell veröffentlicht, das auf CPUs lauffähig ist und sich dieselbe C++-Inferenz-Engine wie das Sprachmodell Needle teilt. Die Architektur verarbeitet bis zu 30 Sekunden 16-kHz-Mono-Audio in sieben Sprachen und generiert bei gemeinsamer Einbindung direkte Funktionsaufrufe (Tool Calls), ohne dass ein Zwischentranskript an die aufrufende Anwendung übergeben werden muss. Auf einem Apple M4 Pro erzielt das System eine Latenz bis zum ersten Token von 11,1 ms und einen Dekodierdurchsatz von 1.319 Token/s. Auf Benchmarks wie LibriSpeech und SPGISpeech unterbietet Whistle die Wortfehlerrate von Whisper Base, verliert jedoch auf Datensätzen wie TED-LIUM und AMI.
Wichtigste Punkte
Modell-Footprint und Laufzeit: Whistle umfasst eine einzelne Datei mit 16,9 MB, läuft ohne externe Abhängigkeiten auf Standard-CPUs und nutzt denselben C++-Container sowie identische Quantisierungen wie das Needle-LLM.
Audio-Vorverarbeitung: 16-kHz-Mono-Audio (maximal 30 s bzw. 480.000 Samples) wird über eine 80-Kanal-Log-Mel-Filterbank (25-ms-Fenster, 10-ms-Hop, Bandbreite 250–3500 Hz) in 3.000 Frames zerlegt. Ein Convolutional Stem (128 Kanäle, Kernel-Größe 9) reduziert diese Zahl über drei Halbierungsschritte auf 375 Frames (ein Frame pro 80 ms).
Encoder-Architektur: Besteht aus acht nicht-kausalen Simple Attention-Blöcken mit vier mHC-Residual-Bahnen und einem Monarch Hadamard MLP anstelle herkömmlicher Feed-Forward-Netzwerke, wodurch Frames über das gesamte Zeitfenster hinweg bidirektional verknüpft werden.
Decoder und Gated Cross Attention: Verwendet acht Laddered Simple Attention-Blöcke (Breite 512, Grouped-Query Attention mit 8 Query- zu 2 KV-Heads, Dimensionen: 48 QK / 64 V, 3-Tap-Kausalkonvolution sowie Engram-Lookups auf Schichten 3 und 7 über 18.432 Slots). Die Verbindung zum Encoder erfolgt über eine lernbare Gated Cross Attention ($x \leftarrow x + \sigma(g) \cdot \text{softmax}(\dots) V$), deren Key- und Value-Projektionen nur einmalig pro Clip berechnet werden.
Inferenz und Beam-Suche: Nutzt eine Beam-Suche mit fünf Pfaden und längennormalisierter Log-Wahrscheinlichkeit. Ein integrierter Aho-Corasick-Automat führt ein Keyword-Biasing durch, um die Wahrscheinlichkeit vorgegebener Fachbegriffe dynamisch anzuheben.
Vokabular und Sprachabdeckung: Beinhaltet 8.192 Text-Token und 7 Sprach-Token für Englisch, Deutsch, Französisch, Spanisch, Italienisch, Niederländisch und Polnisch. Die erkannte Sprache wird als separater Token ausgegeben; Wort-Zeitstempel werden direkt aus der Decoder-Attention abgeleitet.
Variable Dekodiertiefe (Decoder Ladder): Über das Flag --audio-depth kann die Anzahl der aktiven Decoder-Schichten zur Laufzeit ab zwei Schichten skaliert werden; der Encoder läuft stets über alle acht Schichten. Eine integrierte Lautstärkeschwellen-Prüfung verwirft Abschnitte mit Stille vor der Beam-Suche vollständig.
Latenz- und Durchsatz-Benchmarks: Auf einer Apple M4 Pro CPU erreicht Whistle bei einem 10-Sekunden-Audioclip 11,1 ms bis zum ersten Token (5,9 ms bei 5 s; 36,3 ms bei 30 s) und verarbeitet 1.319 Token/s. Whisper Base benötigt 73,2 ms (266 Token/s, 145,3 MB); Moonshine tiny v2 benötigt 22,8 ms (262 Token/s, 41,9 MB).
Wortfehlerraten (WER): Getestet an 86.174 Äußerungen übertrifft Whistle Whisper Base auf LibriSpeech (test-clean/test-other), SPGISpeech, Earnings-22 und FLEURS, liegt jedoch auf TED-LIUM, AMI und MLS hinter Whisper Base zurück.
Direkte Tool-Ausführung: Über den C++-Befehl needle_complete verarbeitet die Engine Audio-Clips ohne Zwischenschritte direkt gegen JSON-Tool-Definitionen und liefert ein JSON-Objekt mit den Funktionsaufrufen und Konfidenzwerten zurück.
Plattformunterstützung: Bereitstellung vorkompilierter Binärdateien und Header (needle_load, needle_transcribe, needle_embed) für 17 Architekturen, darunter Linux, macOS, Android, iOS, watchOS, Windows on ARM, RISC-V, MIPS und WebAssembly (WASI).
Diskussions-Highlights
Hohe Fehlerraten und Halluzinationen: In der Praxis berichten mehrere Nutzer von Transkriptionsproblemen und Kontextverlust bei freier Sprache (z. B. Ersetzung von "guns" durch "cannons" oder Auslassung von Verneinungen). Bei TV-Audio verfiel das Modell mehrfach in Endlosschleifen und gab minutenlang ausschließlich "Thank you." aus.
Optimierung über Grammatik-Templates: Ein Nutzer ersetzte die Cloud-Anbindung eines Amazon Echo Show durch Whistle auf der integrierten CPU. Bei freier Transkription schnitt Whistle gegenüber einem Qwen-1.7B-ASR-Modell schwach ab (70/170 vs. 168/170 korrekte Befehle). Durch das Vorschalten eines kleinen Netzwerks zur Erkennung fixer Satzschablonen (analog zu JSGF/Sphinx4) stieg Whistles Trefferquote trotz starkem Akzent auf 164/170.
Fehlende Streaming-Fähigkeit: Bemängelt wird das Fehlen einer echten Streaming-Transkription (Textausgabe während des Sprechens vor Betätigung der Stopp-Taste), was den Einsatz für interaktive Live-Diktatanwendungen erschwert.
Vergleich mit alternativen Modellen: Diskussionsteilnehmer verweisen auf NVIDIA Parakeet (bzw. Parakeet Unified EN 0.6B) und Qwen ASR als genauere Alternativen. Als CPU-basierte Alternative wird die CLI yapsnap (Zipformer ASR mit Diarisierung für 10 Sprachen) genannt; Multi-Modell-Ansätze wie ZWhispr werden für maximale Genauigkeit empfohlen.
Sprachliche und phonetische Grenzen: Nutzer testen Whistle in verschiedenen Sprachen: Während technisches Englisch (z. B. Fachbegriffe wie ASP.NET) präzise erkannt wird, schwächelt Polnisch bei normaler Sprechlautstärke, Spanisch neigt zu fehlerhaften Wortschöpfungen, und flämische Sprecher werden fälschlicherweise als Deutsch klassifiziert. Zudem wird das Fehlen asiatischer Sprachen (insbesondere Chinesisch) kritisiert.
Projekte und Integrationen: Aus der Community wurden mehrere Erweiterungen vorgestellt: Ein Sprach-Diktat-GUI für Linux wurde mit minimalen Codeanpassungen von Parakeet auf Whistle portiert; für das Framework DeepSeek Harness entstand ein eigenes Plugin (dsh-stt), und für ESP32-Mikrocontroller wurde ein Hardware-Projekt (earwing) zur Trennung von Audio-Beamforming und Transkription verlinkt.
Glossar
Aho-Corasick-Automat: Ein Algorithmus zur Zeichenkettensuche, der mehrere Suchbegriffe gleichzeitig in einem Text oder Token-Strom findet. Whistle nutzt ihn, um vordefinierte Schlüsselwörter während der Dekodierung gezielt zu bevorzugen.
ASR / STT (Automated Speech Recognition / Speech to Text): Automatische Spracherkennung; Technologien und Algorithmen zur Umwandlung gesprochener Audiosignale in geschriebenen Text.
Beam Search (Strahlen-Suche): Ein heuristischer Suchalgorithmus, der bei der Textgenerierung zu jedem Schritt nur eine feste Anzahl (hier: fünf) der wahrscheinlichsten Wortfolgen (Beams) beibehält, um den Rechenaufwand zu begrenzen.
Convolutional Stem: Eine vorgeschaltete Schicht aus Faltungsoperationen (Convolutional Layers), die hochfrequente Rohdaten oder Spektrogramme komprimiert und in dichte Merkmalsvektoren für nachfolgende Attention-Schichten überführt.
Diarisierung (Speaker Diarization): Die automatische Segmentierung einer Audioaufnahme zur Beantwortung der Frage „Wer hat wann gesprochen?“, um Aussagen bestimmten Sprechern zuzuordnen.
Engram Lookup: Ein Verfahren zur schnellen Speicherung und zum Abruf von n-Gramm-Mustern über Hash-Tabellen oder feste Speicher-Slots, wodurch das Modell wiederkehrende Phrasen ohne tiefe Transformer-Berechnung abrufen kann.
Gated Cross Attention: Ein Aufmerksamkeitsmechanismus, der Informationen aus dem Encoder in den Decoder einspeist, wobei der Einfluss der Audioinformationen über ein mathematisches Steuerungstor (Gate $\sigma(g)$) reguliert wird.
Grouped-Query Attention (GQA): Eine ressourceneffiziente Variante von Multi-Head Attention, bei der sich mehrere Query-Heads gemeinsame Key- und Value-Heads teilen, was Speicherbandbreite und Cache-Größe reduziert.
JSGF (Java Speech API Grammar Format): Ein Spezifikationsstandard zur Definition präziser Grammatikregeln für Spracherkenner, mit dem zulässige Sätze und Befehle starr eingegrenzt werden.
Log-Mel-Filterbank (Log-mel bins): Eine Frequenzdarstellung von Audiosignalen, die das menschliche Gehör nachahmt, indem Frequenzen auf der Mel-Skala logarithmisch zusammengefasst werden.
Monarch Hadamard MLP: Eine mathematisch strukturierte, recheneffiziente Schicht in neuronalen Netzen, die Standard-Matrixmultiplikationen durch faktorisierte Block- und Hadamard-Transformationen ersetzt, um Rechenaufwand und Parameter zu minimieren.
Time to First Token (TTFT): Die gemessene Zeitspanne von der Eingabe des Audiosignals bis zur Generierung des ersten Text-Tokens; eine zentrale Kennzahl für die Reaktionsfähigkeit eines Modells.
WASI (WebAssembly System Interface): Eine standardisierte Systemschnittstelle, die es WebAssembly-Programmen ermöglicht, sicher und plattformunabhängig außerhalb des Webbrowsers direkt auf Betriebssystemfunktionen zuzugreifen.
Word Error Rate (WER): Die standardisierte Fehlerrate in der Spracherkennung, berechnet aus der Summe von Ersetzungen, Auslassungen und Einfügungen geteilt durch die Gesamtzahl der gesprochenen Wörter (niedrigere Werte stehen für höhere Genauigkeit).