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 audio | Audio brut reincludet la 16 kHz mono |
| Mel Spectrogramă | 128-bin mel filtrantbank caracteristici extrase din forma de undă |
| Codor audio | Transformator 18-strat cu atenție bloc, procesează rame mel în încrustații audio |
| Decodor text | 28-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ârf | Note |
|---|---|---|---|
| Qwen3-ASR 1.7B MLX 5-bit | 0.027 | 1.92 GB | WER 1,32% (nou lider de precizie) |
| 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 5-bit | 0.014 | 1,03 GB | WER 1,74% (near-8-bit la ~4-bit RAM) |
| 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% (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
| Model | Platformă | Dimensiune | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4-bit) | MLX | 680 MO | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| Qwen3-ASR-0.6B (5-bit) | MLX | 1.0 GB | aufklarer/Qwen3-ASR-0.6B-MLX-5bit |
| 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 MO | 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 (5-bit) | MLX | 2,3 GB | aufklarer/Qwen3-ASR-1.7B-MLX-5bit |
| Qwen3-ASR-1.7B (8-bit) | MLX | 3.2 GB | aufklarer/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.
- WAV
- M4A
- MP3
- CAF
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.
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()