Qwen3-ASR
Qwen3-ASR e um modelo de reconhecimento automatico de fala multilingue de ultima geracao. Executa no dispositivo com aceleracao de GPU Metal via MLX, com quantizacao de 4 bits para uso eficiente de memoria. Disponivel em variantes de 0.6B e 1.7B parametros.
Pipeline
O pipeline de inferencia do Qwen3-ASR processa o audio em quatro etapas:
| Etapa | Descricao |
|---|---|
| Entrada de audio | Audio bruto reamostrado para 16 kHz mono |
| Espectrograma mel | Caracteristicas do banco de filtros mel de 128 bins extraidas da forma de onda |
| Codificador de audio | Transformer de 18 camadas com atencao por blocos, processa os frames mel em embeddings de audio |
| Decodificador de texto | Transformer Qwen3 de 28 camadas com atencao de consulta agrupada (GQA) e embeddings de posicao rotatorios (RoPE), gera tokens de texto de forma autoregressiva |
Desempenho
| Backend | RTF | Memoria de 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 = mais rapido que tempo real.
Variantes do modelo
| Modelo | Backend | Tamanho | 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 do CLI
Transcreva um arquivo de audio com o modelo Qwen3-ASR padrao:
.build/release/speech transcribe recording.wav
Opcoes
# 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
Use o modulo Qwen3ASR para transcrever audio programaticamente:
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)
Execute o codificador de audio no Neural Engine via CoreML, com o decodificador de texto na GPU via MLX. Esta abordagem hibrida reduz o consumo de energia e libera a GPU para cargas de trabalho concorrentes.
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 paletizado (180 MB, similaridade de cosseno > 0.999) e o padrao. Uma variante INT4 (90 MB) tambem esta disponivel para implantacoes com restricao de tamanho.
Modo streaming
O modo streaming usa VAD (deteccao de atividade de voz) para segmentar o audio em chunks e transcreve-los incrementalmente. E util para gravacoes longas ou processamento em tempo 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
A flag --max-segment controla a duracao maxima do chunk em segundos. A flag --partial habilita a saida de resultados parciais, exibindo palavras conforme sao decodificadas.
Formatos suportados
Qwen3-ASR aceita os seguintes formatos de audio. Toda entrada e automaticamente reamostrada para 16 kHz mono internamente.
- WAV — PCM nao comprimido
- M4A — audio codificado em AAC
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
Os modelos sao baixados do HuggingFace no primeiro uso e armazenados em cache em ~/Library/Caches/qwen3-speech/. O modelo 0.6B de 4 bits tem aproximadamente 1.5 GB.