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 :
| Étape | Description |
|---|---|
| Entrée audio | Audio brut rééchantillonné à 16 kHz mono |
| Spectrogramme mel | Caractéristiques de banc de filtres mel à 128 bins extraites de la forme d'onde |
| Encodeur audio | Transformeur à 18 couches avec attention par blocs, transforme les trames mel en embeddings audio |
| Décodeur de texte | Transformeur 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
| Backend | RTF | Mémoire de pointe | Notes |
|---|---|---|---|
| MLX (GPU) | ~0,06 | ~2,2 Go | Par 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èle | Backend | Taille | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4-bit) | MLX | 680 Mo | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| Qwen3-ASR-0.6B (8-bit) | MLX | 1,0 Go | aufklarer/Qwen3-ASR-0.6B-MLX-8bit |
| Qwen3-ASR-0.6B (CoreML INT8) | CoreML | 180 Mo | aufklarer/Qwen3-ASR-CoreML |
| Qwen3-ASR-1.7B (4-bit) | MLX | 2,1 Go | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (8-bit) | MLX | 3,2 Go | aufklarer/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.
- WAV — PCM non compressé
- M4A — audio encodé en AAC
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
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.