Qwen3-ASR
Qwen3-ASR ist ein hochmodernes mehrsprachiges automatisches Spracherkennungsmodell. Es läuft auf dem Gerät mit Metal-GPU-Beschleunigung über MLX, mit 4-Bit-Quantisierung für effiziente Speichernutzung. Verfügbar in Varianten mit 0,6B und 1,7B Parametern.
Pipeline
Die Inferenz-Pipeline von Qwen3-ASR verarbeitet Audio in vier Stufen:
| Stufe | Beschreibung |
|---|---|
| Audio-Eingabe | Rohaudio, neu abgetastet auf 16 kHz Mono |
| Mel-Spektrogramm | Merkmale einer 128-Bin-Mel-Filterbank, aus der Wellenform extrahiert |
| Audio-Encoder | 18-lagiger Transformer mit Block-Attention, verarbeitet Mel-Frames zu Audio-Embeddings |
| Text-Decoder | 28-lagiger Qwen3-Transformer mit Grouped-Query-Attention (GQA) und rotatorischen Positions-Embeddings (RoPE), erzeugt autoregressiv Text-Tokens |
Leistung
| Backend | RTF | Spitzenspeicher | Hinweise |
|---|---|---|---|
| MLX (GPU) | ~0,06 | ~2,2 GB | Standard, schnellstes Einzelmodell |
| CoreML + MLX (hybrid) | ~0,09 | ~400 MB (Encoder) | Encoder auf Neural Engine, Decoder auf GPU |
M2 Max, 64 GB. RTF < 1,0 = schneller als Echtzeit.
Modellvarianten
| Modell | Backend | Größe | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4-bit) | MLX | 680 MB | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| Qwen3-ASR-0.6B (8-bit) | MLX | 1,0 GB | aufklarer/Qwen3-ASR-0.6B-MLX-8bit |
| Qwen3-ASR-0.6B (CoreML INT8) | CoreML | 180 MB | aufklarer/Qwen3-ASR-CoreML |
| Qwen3-ASR-1.7B (4-bit) | MLX | 2,1 GB | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (8-bit) | MLX | 3,2 GB | aufklarer/Qwen3-ASR-1.7B-MLX-8bit |
CLI-Verwendung
Transkribiere eine Audiodatei mit dem Standard-Qwen3-ASR-Modell:
.build/release/audio transcribe recording.wav
Optionen
# Das größere 1.7B-Modell verwenden
.build/release/audio transcribe recording.wav --model 1.7b
# Sprache angeben
.build/release/audio transcribe recording.wav --language en
# Streaming-Modus mit Teilergebnissen
.build/release/audio transcribe recording.wav --stream --partial
Swift-API
Verwende das Modul Qwen3ASR, um Audio programmatisch zu transkribieren:
import Qwen3ASR
// Modell laden (lädt beim ersten Gebrauch von HuggingFace herunter)
let model = try await Qwen3ASRModel.loadFromHub()
// Eine Audiodatei transkribieren
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)
CoreML-Encoder (Neural Engine)
Führe den Audio-Encoder über CoreML auf der Neural Engine aus, während der Text-Decoder über MLX auf der GPU läuft. Dieser hybride Ansatz senkt den Energieverbrauch und hält die GPU für parallele Arbeitslasten frei.
import Qwen3ASR
let encoder = try await CoreMLASREncoder.fromPretrained()
let model = try await Qwen3ASRModel.fromPretrained()
let text = try model.transcribe(
audio: samples, sampleRate: 16000,
coremlEncoder: encoder
)
# CLI
.build/release/audio transcribe recording.wav --engine qwen3-coreml
INT8 palettiert (180 MB, Kosinus-Ähnlichkeit > 0,999) ist die Standardeinstellung. Für speicherbeschränkte Bereitstellungen ist außerdem eine INT4-Variante (90 MB) verfügbar.
Streaming-Modus
Der Streaming-Modus verwendet VAD (Sprachaktivitätserkennung), um Audio in Abschnitte zu segmentieren und diese inkrementell zu transkribieren. Das eignet sich gut für lange Aufnahmen oder Echtzeit-Verarbeitung.
# Streaming mit Standard-Segmentgröße
.build/release/audio transcribe recording.wav --stream
# Maximale Segmentdauer festlegen
.build/release/audio transcribe recording.wav --stream --max-segment 15
# Teilergebnisse (in Bearbeitung) anzeigen, sobald sie eintreffen
.build/release/audio transcribe recording.wav --stream --partial
Der Schalter --max-segment steuert die maximale Segmentdauer in Sekunden. Der Schalter --partial aktiviert die Ausgabe von Teilergebnissen und zeigt Wörter an, sobald sie dekodiert werden.
Unterstützte Formate
Qwen3-ASR akzeptiert die folgenden Audioformate. Alle Eingaben werden intern automatisch auf 16 kHz Mono neu abgetastet.
- WAV — unkomprimiertes PCM
- M4A — AAC-kodiertes Audio
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
Modelle werden beim ersten Gebrauch von HuggingFace heruntergeladen und in ~/Library/Caches/qwen3-speech/ zwischengespeichert. Das 4-Bit-0,6B-Modell ist ungefähr 1,5 GB groß.