Traducere automată · Originalul în engleză

Qwen3-ASR

MLX și CoreML utilizează aceleași caracteristici de intrare în stil Whisper: 128 de containere mel normalizate Slaney dintr-un STFT exact 400 puncte la 16 kHz, cu un hop de 160 de eșantioane și o fereastră periodică Hann.

Qwen3-ASR este un model multilingv de recunoaştere automată a vorbirii de ultimă generaţie. Metal GPU accelerație prin intermediul MLXCu 4- bit, 5- bit, sau 8-cuantizare bit pentru utilizarea eficienta a memoriei. 0.6B și 1.7 Variante ale parametrului B. 5-Bit este noul punct de acuratete/morie dulce Criterii de referință.

Conductă

Conducta de inferență Qwen3-ASR procesează audio prin patru etape:

Etape Descriere
Intrare audioAudio brut reincludet la 16 kHz mono
Mel Spectrogramă128-bin mel filtrantbank caracteristici extrase din forma de undă
Codor audioTransformator 18-strat cu atenție bloc, procesează rame mel în încrustații audio
Decodor text28-strat Qwen3 transformator cu atenție grupată (GQA) și inserții rotative de poziție (RoPE), generează automat jetoane de text

Performanță

PlatformăRTF Memorie de vârfNote
Qwen3-ASR 1.7B MLX 5-bit0.0271.92 GB WER 1,32% (nou lider de precizie)
Qwen3-ASR 1.7B MLX 8-bit0.0332,7 GBWER 1.52%
Qwen3-ASR 0,6B MLX 8-bit0.015 1,3 GBWER 1.82%
Qwen3-ASR 0,6B MLX 5-bit0.0141,03 GBWER 1,74% (near-8-bit la ~4-bit RAM)
Qwen3-ASR 0,6B MLX 4-bit0.0121.0 GBWER 2.20%
Qwen3-ASR 0,6B CoreML INT80.0981,4 GBWER 3,02% (reconstrucție cu conținut redus)

Apple M5 Pro, 48 GB. LibriSpeech test-clean n=200, izolat per-motor. RTF < 1,0 = mai rapid decât în timp real.

Model Variante

ModelPlatformăDimensiuneHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 MOaufklarer/Qwen3-ASR-0.6B-MLX-4bit
Qwen3-ASR-0.6B (5-bit)MLX1.0 GBaufklarer/Qwen3-ASR-0.6B-MLX-5bit
Qwen3-ASR-0.6B (8-bit)MLX1.0 GBaufklarer/Qwen3-ASR-0.6B-MLX-8bit
Qwen3-ASR-0.6B (CoreML INT8)CoreML180 MOaufklarer/Qwen3-ASR-CoreML
Qwen3-ASR-1.7B (4-bit)MLX2.1 GBaufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (5-bit)MLX2,3 GBaufklarer/Qwen3-ASR-1.7B-MLX-5bit
Qwen3-ASR-1.7B (8-bit)MLX3.2 GBaufklarer/Qwen3-ASR-1.7B-MLX-8bit

Utilizarea CLI

Transcrie un fișier audio cu modelul implicit Qwen3-ASR:

.build/release/speech transcribe recording.wav

Opțiuni

# 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

Swift API

Utilizați modulul Qwen3ASR pentru a transcrie programatic audio:

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)

CoreML Encoder (Neural Engine)

Rulați codorul audio pe Neural Engine prin CoreML, cu decodorul de text pe GPU prin MLX Această abordare hibridă reduce consumul de energie și eliberează GPU pentru volumul de muncă asociat.

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 paletizat (180 MB, similaritate cosinus > 0,999) este implicit. O variantă INT4 (90 MB) este, de asemenea, disponibilă pentru desfășurări cu dimensiuni limitate.

Mod de streaming

Modul de streaming folosește VAD (detectarea activității vocale) pentru a segmenta audio în bucăți și transcrie-le treptat. Acest lucru este util pentru înregistrări lungi sau prelucrare în timp 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

Steagul --max-segment controlează durata maximă a bucății în câteva secunde. Steagul --partial permite ieșirea parțială a rezultatului, arătând cuvintele așa cum sunt decodate.

Formate acceptate

Qwen3-ASR acceptă următoarele formate audio. Toate intrările sunt reincluse automat la 16 kHz mono intern.

Important

Modelele sunt descărcate de la HuggingFace la prima utilizare și cache în ~/Library/Caches/qwen3-speech/. Modelul de 4 biți 0,6B este de aproximativ 1,5 GB.

Ghiduri conexe

Parakeet TDT speech-to-text · Clonarea vocală CosyVoice3 · Kokoro-82M TTS

Aveți nevoie de un ghid decizional concentrat? A se vedea Qwen3-ASR vs Whisper: precizie, viteză și memorie.

Anulare cooperativă

Pentru MLX transcription, Qwen3ASRModel.transcribeCheckingCancellation(audio:sampleRate:options:) aruncări CancellationError atunci când anularea sarcinii este observată înainte de extragerea caracteristicilor, codificarea, prefillarea decodorului sau o etapă de decodare. GPU munca depusă deja poate fi terminată. Cronhous transcribe și transcribeBatch API își păstrează comportamentul de non-ascensiune și ignoră anularea sarcinilor. speech-server folosește punctul de intrare pentru anulare-aware pentru Qwen3-ASR.

MLX buget cache

Se încarcă Qwen3-ASR se leagă la nivel de proces MLX piscină reutilizabilă Metal tampoane: min(1 GiB, RAM / 8) pentru 0,6B și min(4 GiB, RAM / 4) pentru 1.7B. Altele MLX modele împărtășesc această piscină. Plafoanele se aplică tampoanelor cu zgârieturi, greutăților neactive sau amprentei totale a procesului.

Limita efectivă este cea mai mică dintre plafonul apelantului existent MLX.Memory.cacheLimit și fiecare sarcină ASR instance.Instanțele pot descărca în orice ordine; ultima descărcare sau distrugere în instanță restabilește bugetul apelantului.O limită mai strictă stabilită de apelant în timp ce modelele sunt încărcate este păstrată.

Transcrierea într-un singur loc curăță tampoane reutilizabile atunci când decodorul său se întoarce sau aruncă, inclusiv anularea în interiorul decodorului. Array-urile active și greutățile model rămân încărcate. Trascribul lacom transcribeBatch decodorul păstrează piscina delimitată între loturi. Nr API opțiuni sau schimbarea steagurilor CLI.

Curățarea piscina tampon scade memoria reținut, dar necesită noi alocări pe cereri ulterioare, astfel încât cererile scurte pot dura mai mult. Așteptarea pentru munca de decodor depuse pentru a termina face curat determinist, inclusiv anularea. Latență reală și memorie proces depinde de hardware, model, și audio.

Proprietate opțională a modelului

SpeechRuntime oferă încărcare comună, admitere FIFO canelabilă și execuție serializată. Qwen3ASRRuntime selectează MLX sau complet CoreML prin descriptori expliciti; API-urile native și steagurile CLI rămân disponibile.

Serverul audio deţine un permis de execuţie prin fiecare cerere completă, inclusiv fluxul de ieşire, cu până la 32 de cereri de aşteptare. ASR eşecuri produc erori HTTP sau WebSocket evenimente de eroare; transcrieri goale valabile rămân de succes. Playback păstrează mostrele de supraîncărcare. Modele cache şi audio în curs de redare ocupa încă memorie.

Gestionat CoreML transcriere eliberează tampoane temporare după fiecare cerere, inclusiv apeluri repetate dintr-o sarcină de fundal.

import Qwen3ASRRuntime

let runtime = Qwen3ASRRuntime(descriptor: Qwen3ASRDescriptors.small)
let text = try await runtime.transcribe(audio: samples, sampleRate: 16000)
try await runtime.unload()