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 |
|---|---|---|---|
| MLX (GPU) | ~0.06 | ~2.2 GB | Por defecto, el modelo único más rápido |
| CoreML + MLX (híbrido) | ~0.09 | ~400 MB (codificador) | Codificador en Neural Engine, decodificador en GPU |
M2 Max, 64 GB. 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/audio transcribe recording.wav
Opciones
# Usar el modelo más grande de 1.7B
.build/release/audio transcribe recording.wav --model 1.7b
# Especificar el idioma
.build/release/audio transcribe recording.wav --language en
# Modo streaming con resultados parciales
.build/release/audio transcribe recording.wav --stream --partial
API Swift
Usa el módulo Qwen3ASR para transcribir audio programáticamente:
import Qwen3ASR
// Carga el modelo (descarga desde HuggingFace en el primer uso)
let model = try await Qwen3ASRModel.loadFromHub()
// Transcribe un archivo de audio
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.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/audio 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.
# Streaming con tamaño de segmento por defecto
.build/release/audio transcribe recording.wav --stream
# Controlar la duración máxima del segmento
.build/release/audio transcribe recording.wav --stream --max-segment 15
# Mostrar resultados parciales (en progreso) a medida que llegan
.build/release/audio 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.