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:

EtapaDescricao
Entrada de audioAudio bruto reamostrado para 16 kHz mono
Espectrograma melCaracteristicas do banco de filtros mel de 128 bins extraidas da forma de onda
Codificador de audioTransformer de 18 camadas com atencao por blocos, processa os frames mel em embeddings de audio
Decodificador de textoTransformer Qwen3 de 28 camadas com atencao de consulta agrupada (GQA) e embeddings de posicao rotatorios (RoPE), gera tokens de texto de forma autoregressiva

Desempenho

BackendRTFMemoria de picoNotas
MLX (GPU)~0.06~2.2 GBPadrao, 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

ModeloBackendTamanhoHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 MBaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (8-bit)MLX1.0 GBaufklarer/Qwen3-ASR-0.6B-MLX-8bit
Qwen3-ASR-0.6B (CoreML INT8)CoreML180 MBaufklarer/Qwen3-ASR-CoreML
Qwen3-ASR-1.7B (4-bit)MLX2.1 GBaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (8-bit)MLX3.2 GBaufklarer/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.

Importante

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.