Qwen3-ASR

Qwen3-ASR est un modèle de reconnaissance automatique de la parole multilingue à la pointe de la technologie. Il s'exécute sur l'appareil avec accélération GPU Metal via MLX, avec quantification 4 bits pour une utilisation mémoire efficace. Disponible en variantes de 0,6 Mrd et 1,7 Mrd de paramètres.

Pipeline

Le pipeline d'inférence de Qwen3-ASR traite l'audio en quatre étapes :

ÉtapeDescription
Entrée audioAudio brut rééchantillonné à 16 kHz mono
Spectrogramme melCaractéristiques de banc de filtres mel à 128 bins extraites de la forme d'onde
Encodeur audioTransformeur à 18 couches avec attention par blocs, transforme les trames mel en embeddings audio
Décodeur de texteTransformeur Qwen3 à 28 couches avec attention à requêtes groupées (GQA) et embeddings de position rotatifs (RoPE), génère les tokens de texte de façon autorégressive

Performance

BackendRTFMémoire de pointeNotes
Qwen3-ASR 1.7B MLX 8-bit0.0332.7 GBWER 1.52%
Qwen3-ASR 0.6B MLX 8-bit0.0151.3 GBWER 1.82%
Qwen3-ASR 0.6B MLX 4-bit0.0121.0 GBWER 2.20%
Qwen3-ASR 0.6B CoreML INT80.0981.4 GBWER 3.02% (chunked-attn rebuild)

Apple M5 Pro, 48 Go. LibriSpeech test-clean n=200, un processus par moteur. RTF < 1,0 = plus rapide que le temps réel.

Variantes du modèle

ModèleBackendTailleHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 Moaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (8-bit)MLX1,0 Goaufklarer/Qwen3-ASR-0.6B-MLX-8bit
Qwen3-ASR-0.6B (CoreML INT8)CoreML180 Moaufklarer/Qwen3-ASR-CoreML
Qwen3-ASR-1.7B (4-bit)MLX2,1 Goaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (8-bit)MLX3,2 Goaufklarer/Qwen3-ASR-1.7B-MLX-8bit

Utilisation en CLI

Transcrivez un fichier audio avec le modèle Qwen3-ASR par défaut :

.build/release/speech transcribe recording.wav

Options

# Use the larger 1.7B model
.build/release/speech transcribe recording.wav --model 1.7b

# Specify language
.build/release/speech transcribe recording.wav --language en

# Streaming mode with partial results
.build/release/speech transcribe recording.wav --stream --partial

API Swift

Utilisez le module Qwen3ASR pour transcrire l'audio par programmation :

import Qwen3ASR

// Load the model (downloads from HuggingFace on first use)
let model = try await Qwen3ASRModel.fromPretrained()

// Transcribe audio samples (16 kHz mono Float)
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)
print(text)

Encodeur CoreML (Neural Engine)

Exécutez l'encodeur audio sur le Neural Engine via CoreML, avec le décodeur de texte sur GPU via MLX. Cette approche hybride réduit la consommation d'énergie et libère le GPU pour les charges de travail concurrentes.

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/speech transcribe recording.wav --engine qwen3-coreml

INT8 palettisé (180 Mo, similarité cosinus > 0,999) est le choix par défaut. Une variante INT4 (90 Mo) est également disponible pour les déploiements contraints en taille.

Mode streaming

Le mode streaming utilise la VAD (détection d'activité vocale) pour segmenter l'audio en fragments et les transcrire de façon incrémentale. Utile pour les enregistrements longs ou le traitement temps réel.

# Stream with default segment size
.build/release/speech transcribe recording.wav --stream

# Control maximum segment duration
.build/release/speech transcribe recording.wav --stream --max-segment 15

# Show partial (in-progress) results as they arrive
.build/release/speech transcribe recording.wav --stream --partial

L'option --max-segment contrôle la durée maximale des fragments en secondes. L'option --partial active la sortie des résultats partiels, affichant les mots à mesure qu'ils sont décodés.

Formats pris en charge

Qwen3-ASR accepte les formats audio suivants. Toutes les entrées sont automatiquement rééchantillonnées à 16 kHz mono en interne.

Important

Les modèles sont téléchargés depuis HuggingFace à la première utilisation et mis en cache dans ~/Library/Caches/qwen3-speech/. Le modèle 0.6B 4 bits occupe environ 1,5 Go.