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:

StufeBeschreibung
Audio-EingabeRohaudio, neu abgetastet auf 16 kHz Mono
Mel-SpektrogrammMerkmale einer 128-Bin-Mel-Filterbank, aus der Wellenform extrahiert
Audio-Encoder18-lagiger Transformer mit Block-Attention, verarbeitet Mel-Frames zu Audio-Embeddings
Text-Decoder28-lagiger Qwen3-Transformer mit Grouped-Query-Attention (GQA) und rotatorischen Positions-Embeddings (RoPE), erzeugt autoregressiv Text-Tokens

Leistung

BackendRTFSpitzenspeicherHinweise
MLX (GPU)~0,06~2,2 GBStandard, 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

ModellBackendGrößeHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 MBaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (8-bit)MLX1,0 GBaufklarer/Qwen3-ASR-0.6B-MLX-8bit
Qwen3-ASR-0.6B (CoreML INT8)CoreML180 MBaufklarer/Qwen3-ASR-CoreML
Qwen3-ASR-1.7B (4-bit)MLX2,1 GBaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (8-bit)MLX3,2 GBaufklarer/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.

Wichtig

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ß.