Qwen3-ASR
Qwen3-ASR es un modelo de reconocimiento automático del habla multilingüe de última generación. Se ejecuta en el dispositivo con aceleración GPU Metal mediante MLX, con cuantización de 4 bits para un uso eficiente de memoria. Disponible en variantes de 0.6B y 1.7B parámetros.
Pipeline
El pipeline de inferencia de Qwen3-ASR procesa el audio en cuatro etapas:
| Etapa | Descripción |
|---|---|
| Entrada de audio | Audio en bruto remuestreado a 16 kHz mono |
| Espectrograma mel | Características del banco de filtros mel de 128 bins extraídas de la forma de onda |
| Codificador de audio | Transformer de 18 capas con atención por bloques, procesa los fotogramas mel en embeddings de audio |
| Decodificador de texto | Transformer Qwen3 de 28 capas con atención de consulta agrupada (GQA) y embeddings de posición rotatorios (RoPE), genera tokens de texto de forma autorregresiva |
Rendimiento
| Backend | RTF | Memoria pico | Notas |
|---|---|---|---|
| Qwen3-ASR 1.7B MLX 8-bit | 0.033 | 2.7 GB | WER 1.52% |
| Qwen3-ASR 0.6B MLX 8-bit | 0.015 | 1.3 GB | WER 1.82% |
| Qwen3-ASR 0.6B MLX 4-bit | 0.012 | 1.0 GB | WER 2.20% |
| Qwen3-ASR 0.6B CoreML INT8 | 0.098 | 1.4 GB | WER 3.02% (chunked-attn rebuild) |
Apple M5 Pro, 48 GB. LibriSpeech test-clean n=200, isolated per-engine. RTF < 1.0 = más rápido que tiempo real.
Variantes del modelo
| Modelo | Backend | Tamaño | 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 |
Uso de CLI
Transcribe un archivo de audio con el modelo Qwen3-ASR por defecto:
.build/release/speech transcribe recording.wav
Opciones
# 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
Usa el módulo Qwen3ASR para transcribir audio programáticamente:
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)
Codificador CoreML (Neural Engine)
Ejecuta el codificador de audio en el Neural Engine mediante CoreML, con el decodificador de texto en GPU mediante MLX. Este enfoque híbrido reduce el consumo de energía y libera la GPU para cargas de trabajo 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 con paleta (180 MB, similitud coseno > 0.999) es la opción por defecto. También está disponible una variante INT4 (90 MB) para despliegues con restricciones de tamaño.
Modo streaming
El modo streaming usa VAD (detección de actividad vocal) para segmentar el audio en chunks y transcribirlos de forma incremental. Es útil para grabaciones largas o procesamiento en tiempo real.
# 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
El flag --max-segment controla la duración máxima del chunk en segundos. El flag --partial habilita la salida de resultados parciales, mostrando palabras a medida que se decodifican.
Formatos soportados
Qwen3-ASR acepta los siguientes formatos de audio. Toda la entrada se remuestrea automáticamente a 16 kHz mono internamente.
- WAV — PCM sin comprimir
- M4A — audio codificado en AAC
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
Los modelos se descargan desde HuggingFace en el primer uso y se almacenan en caché en ~/Library/Caches/qwen3-speech/. El modelo 0.6B de 4 bits ocupa aproximadamente 1.5 GB.