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
MLX (GPU)~0,06~2,2 GoPar défaut, le modèle unique le plus rapide
CoreML + MLX (hybride)~0,09~400 Mo (encodeur)Encodeur sur Neural Engine, décodeur sur GPU

M2 Max, 64 Go. 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/audio transcribe recording.wav

Options

# Utiliser le modèle plus grand 1.7B
.build/release/audio transcribe recording.wav --model 1.7b

# Spécifier la langue
.build/release/audio transcribe recording.wav --language en

# Mode streaming avec résultats partiels
.build/release/audio transcribe recording.wav --stream --partial

API Swift

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

import Qwen3ASR

// Charge le modèle (téléchargement depuis HuggingFace à la première utilisation)
let model = try await Qwen3ASRModel.loadFromHub()

// Transcrit un fichier audio
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.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/audio 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.

# Streaming avec la taille de segment par défaut
.build/release/audio transcribe recording.wav --stream

# Contrôler la durée maximale des segments
.build/release/audio transcribe recording.wav --stream --max-segment 15

# Afficher les résultats partiels (en cours) au fil de leur arrivée
.build/release/audio 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.