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 |
|---|---|---|---|
| MLX (GPU) | ~0.06 | ~2.2 GB | Padrao, modelo unico mais rapido |
| CoreML + MLX (hibrido) | ~0.09 | ~400 MB (codificador) | Codificador no Neural Engine, decodificador na GPU |
M2 Max, 64 GB. 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/audio transcribe recording.wav
Opcoes
# Usar o modelo maior de 1.7B
.build/release/audio transcribe recording.wav --model 1.7b
# Especificar o idioma
.build/release/audio transcribe recording.wav --language en
# Modo streaming com resultados parciais
.build/release/audio transcribe recording.wav --stream --partial
API Swift
Use o modulo Qwen3ASR para transcrever audio programaticamente:
import Qwen3ASR
// Carrega o modelo (baixa do HuggingFace no primeiro uso)
let model = try await Qwen3ASRModel.loadFromHub()
// Transcreve um arquivo de audio
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.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/audio 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.
# Streaming com tamanho de segmento padrao
.build/release/audio transcribe recording.wav --stream
# Controlar a duracao maxima do segmento
.build/release/audio transcribe recording.wav --stream --max-segment 15
# Mostrar resultados parciais (em andamento) conforme chegam
.build/release/audio 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.