13 Punkte von GN⁺ 2026-02-12 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Mistral Voxtral Realtime 4B: eine nur in C implementierte Inferenz-Pipeline, als eigenständige Ausführung ohne jegliche externe Abhängigkeiten
  • Unterstützt Metal-GPU-Beschleunigung (MPS) und BLAS-Backends (OpenBLAS/Accelerate) und verarbeitet über eine Streaming-API Spracheingaben in Echtzeit sowie Token-Ausgaben
  • Speicherabgebildete BF16-Gewichte, ein Encoder auf Basis eines Sliding Window und ein Rolling KV Cache halten den Speicherverbrauch auch bei langen Audioeingaben konstant
  • Unterstützt verschiedene Audioeingaben über Mikrofon, stdin-Pipe und ffmpeg-Konvertierung; bietet Anzeige alternativer Tokens und die Latenzsteuerungsoption -I
  • Veröffentlicht unter der MIT-Lizenz und erreicht auf einem Apple M3 Max etwa das 2,5-Fache der Echtzeitgeschwindigkeit, was eine schlanke lokale Spracherkennung ermöglicht

Überblick über Voxtral.c

  • Eine reine C-basierte Inferenz-Engine für das Voxtral Realtime 4B-Modell von Mistral AI, ohne Abhängigkeiten außer der C-Standardbibliothek
    • Das MPS-Backend bietet schnelle Inferenz, BLAS (OpenBLAS/Accelerate) läuft in CPU-basierten Umgebungen
    • Vollständige lokale Inferenz auch ohne Python-Runtime, CUDA oder vLLM
  • Mit der Datei python_simple_implementation.py wird zusätzlich eine einfache Python-Referenzimplementierung bereitgestellt
    • Benötigt nur PyTorch, safetensors, soundfile und soxr

Hauptfunktionen

  • Zero dependencies: Ausführung nur mit C, ohne externe Bibliotheken
  • Metal-GPU-Beschleunigung: wird auf Apple Silicon automatisch aktiviert, mit Fusion von GPU-Operationen und gebatchter Attention-Verarbeitung
  • Streaming-Ausgabe: erzeugte Tokens werden sofort auf stdout ausgegeben
  • Streaming C API: Audio wird fortlaufend eingespeist, Token-Strings werden in Echtzeit empfangen
  • Speicherabgebildete Gewichte: safetensors-Dateien werden direkt per mmap geladen und sind sofort nutzbar
  • Unterstützung für Mikrofoneingabe (macOS): inklusive automatischer Stilleerkennung
  • Chunked Encoder: verarbeitet Audio in überlappenden Chunks und hält den Speicherverbrauch konstant
  • Rolling KV Cache: automatische Cache-Komprimierung mit Sliding Window über 8192 Positionen, wodurch Audio beliebiger Länge verarbeitet werden kann

Verwendung

  • Grundlegende Befehle
    • ./voxtral -d voxtral-model -i audio.wav : dateibasierte Spracherkennung
    • ./voxtral -d voxtral-model --from-mic : Echtzeit-Erkennung über Mikrofon (macOS)
    • Eingaben in verschiedenen Audioformaten sind über eine ffmpeg-Pipe möglich
  • Anzeige alternativer Tokens
    • Mit der Option --alt <cutoff> können zusätzlich ähnlich klingende Kandidaten angezeigt werden
    • Je höher der Wert cutoff, desto mehr Kandidaten werden angezeigt
  • Latenzsteuerung (Option -I)
    • Legt das Aufrufintervall des Encoders in Sekunden fest
    • Niedrige Werte (z. B. 0,5 Sekunden) bedeuten geringe Latenz, aber höhere GPU-Last / hohe Werte (z. B. 5 Sekunden) ermöglichen effizientere Verarbeitung
    • Standard ist 2,0 Sekunden; für Echtzeit-Streaming werden 1,0 bis 2,0 Sekunden empfohlen

Struktur der C API

  • Bietet eine Streaming-API auf Basis von vox_stream_t
    • feed() : Audio einspeisen
    • get() : Tokens empfangen
    • finish() : verbleibendes Audio verarbeiten
    • flush() : Puffer zwangsweise verarbeiten
  • Mit vox_stream_set_alt() kann die Anzahl alternativer Tokens festgelegt werden
  • Mit der Funktion vox_transcribe() ist auch Stapelverarbeitung einer einzelnen Datei möglich

Modelldownload und Konfiguration

  • Download von rund 8,9 GB Modellgewichten von HuggingFace
    • consolidated.safetensors (BF16-Gewichte)
    • tekken.json (Tokenizer-Vokabular)
    • params.json (Modellkonfiguration)
  • Apache-2.0-lizenziertes Modell, MIT-lizenzierter Code

Performance-Benchmarks

  • Basierend auf Apple M3 Max (40-Core-GPU, 128 GB RAM)
    • MPS-Backend: Encoder 284 ms, Decoder 23,5 ms/Schritt
    • BLAS-Backend: Encoder etwa 8 Sekunden, Decoder 335 ms/Schritt
  • Durchschnittlich 31,6 ms/Schritt bei 60 Sekunden Audio, also rund 2,5-mal schneller als Echtzeit
  • Der Decoder führt die gesamte Berechnung pro Token in einem einzigen Metal-Command-Buffer-Aufruf aus

Modellarchitektur

  • Streaming-Sprach-zu-Text-Modell mit insgesamt 4 Milliarden Parametern (4B)
    • Audio-Encoder: 32-lagiger causal Transformer, 1280 Dimensionen, 32 Heads, Fenstergröße 750
    • Adapter: Linear(5120→3072) → GELU → Linear(3072→3072)
    • LLM-Decoder: 26-lagiger Transformer (basierend auf Ministral-3), 3072 Dimensionen, GQA (32 Heads/8KV)
  • Tekken-Tokenizer, Vokabulargröße 131.072
  • Unterstützte Sprachen: Englisch, Spanisch, Französisch, Portugiesisch, Hindi, Deutsch, Niederländisch, Italienisch, Arabisch, Russisch, Chinesisch, Japanisch, Koreanisch

Speicheranforderungen

  • Modellgewichte: 8,9 GB (On-Demand-mmap)
  • GPU-Cache: etwa 8,4 GB (nach BF16→F16-Konvertierung)
  • KV-Cache: maximal 1,8 GB (durch Sliding-Window-Begrenzung)
  • Arbeitsbuffer: etwa 200 MB

Build und Plattformen

  • macOS Apple Silicon: make mps (am schnellsten)
  • macOS Intel / Linux(OpenBLAS) : make blas
  • Ubuntu/Debian: sudo apt install libopenblas-dev
  • Fedora: sudo dnf install openblas-devel

Lizenz

  • Code: MIT
  • Modell: Apache-2.0
  • Als Open-Source-Projekt kann es von allen modifiziert und weiterverbreitet werden

Noch keine Kommentare.

Noch keine Kommentare.