Automatische vertaling · Engels origineel
Qwen3-ASR
MLX en CoreML gebruiken dezelfde Whisper-stijl inputfuncties: 128 Slaney-genormaliseerde melbins van een exact 400-punts STFT op 16 kHz, met een 160-steekproef hop en een periodiek Hann venster.
Qwen3-ASR is een ultramoderne meertalige automatische spraakherkenning model. Het draait op het apparaat met behulp van Metal GPU versnelling via MLX, met 4-bit, 5-bit, of 8-bit quantization voor efficiënt geheugengebruik. Beschikbaar in 0.6B en 1.7B parametervarianten. 5-bit is de nieuwe nauwkeurigheid/herinnerlijke zoete plek benchmarks.
Pijpleiding
De Qwen3-ASR-inferentiepijplijn verwerkt audio via vier fasen:
| Fase | Omschrijving |
|---|---|
| Audioinvoer | Raw audio herverdeeld naar 16 kHz mono |
| Melspectrogram | 128-bin mel filterbank functies gewonnen uit de golfvorm |
| Audio-encoder | 18-laag transformator met blok aandacht, verwerkt mel frames in audio inbeddingen |
| Tekstdecoder | 28-laag Qwen3 transformator met gegroepeerde aandacht (GQA) en roterende positie-inbeddingen (RoPE), genereert automatisch teksttekens |
Prestaties
| Backend | RTF | Piekgeheugen | Opmerkingen |
|---|---|---|---|
| Qwen3-ASR 1.7B MLX 5-bit | 0.027 | 1,92 GB | WER 1,32% (nieuwe nauwkeurigheidsleider) |
| 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 at ~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% (herbouw van gechunked-attn) |
Apple M5 Pro, 48 GB. LibriSpeech test-clean n=200, geïsoleerd per motor. RTF < 1,0 = sneller dan real-time.
Model Varianten
| Model | Backend | Grootte | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4-bit) | MLX | 680 MB | 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 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 (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 |
CLI-gebruik
Een audiobestand met het standaard Qwen3-ASR model overschrijven:
.build/release/speech transcribe recording.wav
Opties
# 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
Gebruik de Qwen3ASR module om audio programmamatisch te transcriberen:
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)
Voer de audio-encoder op de Neural Engine via CoreML, met de tekst decoder op GPU via MLX. Deze hybride aanpak verlaagt het energieverbruik en bevrijdt de GPU voor gelijktijdige workloads.
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 gepaletteerd (180 MB, cosinus overeenkomst > 0,999) is de standaard. Een INT4 variant (90 MB) is ook beschikbaar voor toepassingen met beperkte afmetingen.
Streaming-modus
Streaming-modus gebruikt VAD (voice activity detection) om audio in brokken te segmenteren en ze geleidelijk over te schrijven. Dit is handig voor lange opnames of real-time verwerking.
# 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
De --max-segment vlag regelt de maximale brok duur in seconden. De --partial vlag maakt gedeeltelijke resultaatuitvoer mogelijk, waarbij woorden worden weergegeven zoals ze gedecodeerd zijn.
Ondersteunde formaten
Qwen3-ASR accepteert de volgende audioformaten. Alle invoer wordt automatisch intern herberekend naar 16 kHz mono.
- WAV
- M4A
- MP3
- CAF andere Apple Core Audio Format
Modellen worden gedownload van HuggingFace bij eerste gebruik en gecached in ~/Library/Caches/qwen3-speech/. Het 4-bit 0,6B-model is ongeveer 1,5 GB.
Parakeet TDT spraak-naar-tekst · CosyVoice3-stemklonen · Kokoro-82M TTS
Heb je een gerichte beslissingsgids nodig? Zie Qwen3-ASR vs Whisper: nauwkeurigheid, snelheid en geheugen.
Coöperatieve annulering
Voor MLX transcriptie, Qwen3ASRModel.transcribeCheckingCancellation(audio:sampleRate:options:) gooit CancellationError wanneer taakannulering wordt waargenomen voordat functie extractie, codering, decodering voorvulling of een decoderingstap. GPU werk reeds ingediend kan worden voltooid. De synchrone transcribe en transcribeBatch API's behouden hun niet-throwing-behavior en negeren taakannulatie. speech-server maakt gebruik van het annulerings-aware ingangspunt voor Qwen3-ASR.
MLX cachebudget
Het laden van Qwen3-ASR verbindt de procesbreed MLX pool van herbruikbare Metal buffers: min(1 GiB, RAM / 8) voor 0,6B en min(4 GiB, RAM / 4) voor 1,7B. Andere MLX modellen delen deze pool. De plafonds gelden voor gecachede krasbuffers, niet actieve gewichten of de totale procesvoetafdruk.
De effectieve limiet is de laagste van de bestaande beller... MLX.Memory.cacheLimit en elke geladen ASR instances plafond.Instanties kunnen in elke volgorde uitladen; de laatste uitladen of instantie vernietiging herstelt het budget van de beller. Een strakkere limiet die door de beller is ingesteld terwijl de modellen worden geladen, wordt behouden.
Single-input transcriptie clears herbruikbare buffers wanneer de decoder terugkeert of gooit, inclusief annulering in de decodeur. Actieve arrays en modelgewichten blijven geladen. De hebzuchtige transcribeBatch decoder behoudt de begrensde pool tussen batches. No API opties of CLI-vlaggen wijzigen.
Het wissen van de buffer pool verlaagt het bewaarde geheugen, maar vereist nieuwe toewijzingen op latere verzoeken, zodat korte verzoeken langer kunnen duren. Wachten op ingediende decoder werk om te voltooien maakt opruimen deterministisch, inclusief annulering. Werkelijke latentie en procesgeheugen zijn afhankelijk van de hardware, model en audio.
Facultatief modelbezit
SpeechRuntime biedt gedeelde laden, opzegbare FIFO-toegang en seriematige uitvoering. Qwen3ASRRuntime selecteert MLX of volledige CoreML via expliciete descriptoren; de oorspronkelijke API's en CLI-vlaggen blijven beschikbaar.
De audioserver heeft één uitvoervergunning door elke volledige aanvraag, inclusief gestreamde uitvoer, met maximaal 32 verzoeken die wachten. ASR storingen veroorzaken HTTP-fouten of WebSocket error events; geldige lege transcripten blijven succesvol. Afspelen behoudt overflowsamples. Gecachede modellen en in afwachting van afspeelaudio blijft het geheugen bezet.
Beheerd CoreML transcriptie geeft na elk verzoek tijdelijke buffers af, inclusief herhaalde oproepen van een achtergrondtaak.
import Qwen3ASRRuntime
let runtime = Qwen3ASRRuntime(descriptor: Qwen3ASRDescriptors.small)
let text = try await runtime.transcribe(audio: samples, sampleRate: 16000)
try await runtime.unload()