Maskinoversettelse · Engelsk original

Qwen3-ASR

MLX og CoreML bruker de samme inngangsfunksjonene i Whisper-stil: 128 Slaney-normaliserte mel-biner fra en nøyaktig 400-punkt STFT ved 16 kHz, med 160-prøvehopp og et periodisk Hann-vindu.

Qwen3-ASR er en state-of-the-art flerspråklig automatisk talegjenkjennelsesmodell. Den kjører på enhet ved hjelp av Metal GPU akselerasjon via MLX, med 4-bit, 5-bit eller 8-bits kvantisering for effektiv minnebruk. Tilgjengelig i 0,6B og 1,7B parameter varianter. 5-biter er den nye nøyaktighet/minne søt spot — se benchmarks.

Pipeline

Qwen3-ASR inferensrørledning behandler lyd gjennom fire stadier:

Stage Beskrivelse
Lydinngang Rå lyd resampulert til 16 kHz mono
Mel Spectrogram128-bin mel filterbank funksjoner ekstrahert fra bølgeformen
Lydkoder18 lag transformator med blokk oppmerksomhet, prosesserer mel rammer i lydinnbygginger
Tekstdeskriptor28-lag Qwen3 transformator med gruppert-krok oppmerksomhet (GQA) og roterende posisjon innebyggere (RoPE), autoregressivt genererer tekst token

Ytelse

MotorRTFPeak MemoryNoter
Qwen3-ASR 1.7B MLX 5-bit0.0271.92 GBWER 1.32% (ny nøyaktighetsleder)
Qwen3-ASR 1.7B MLX 8-biters0.0332.7 GBWER 1.52%
Qwen3-ASR 0.6B MLX 8-bit0.0151.3 GBWER 1.82%
Qwen3-ASR 0.6B MLX 5-bit0.0141.03 GBWER 1,74% (near-8-bit på ~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% (chunked-attn gjenoppbygging)

Apple M5 Pro, 48 GB. Libri speed test-clean n=200, isolert per-motor. RTF < 1.0 = raskere enn sanntid.

Modell Varianter

ModellMotor StørrelseHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 MBaufklarer/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 MBaufklarer/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

CLI bruk

Overskriv en lydfil med standard Qwen3-ASR modell:

.build/release/speech transcribe recording.wav

Alternativer

# 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

Bruk Qwen3ASR-modulen til å transskribere lydprogrammatisk:

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)

Kjør lydkoderen på Neural Engine via CoreML, med tekstdekoderen på GPU via MLX Denne hybridtilnærmingen reduserer strømforbruket og frigjør det GPU for samtidige arbeidsbelastninger.

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 palettisert (180 MB, cosinuslikhet > 0.999) er standard. INT4 variant (90 MB) er også tilgjengelig for størrelsesbegrensede distribusjoner.

Strømmingsmodus

Streamingmodus bruker VAD (voice aktivitet deteksjon) til segment lyd i biter og transcriber dem gradvis. Dette er nyttig for lange opptak eller sanntidsbehandling.

# 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

--max-segment flagget kontrollerer maksimal bit varighet i sekunder. --partial flagg muliggjør delvis resultatutgang, som viser ord som dekodes.

Støttede formater

Qwen3-ASR godtar følgende lydformater. Alle innganger blir automatisk omdøplet til 16 kHz-mono internt.

Viktig

Modeller lastes ned fra HuggingFace ved første bruk og cached i ~/Library/Caches/qwen3-speech/. 4-bits 0,6B-modellen er omtrent 1,5 GB.

Samarbeidsavbestilling

For MLX transkripsjon, Qwen3ASRModel.transcribeCheckingCancellation(audio:sampleRate:options:) kaster CancellationError når oppgaveavbestilling observeres før utvinning av funksjon, koding, dekoder forhåndsfylling eller et dekodingstrinn. GPU arbeider allerede sendt kan avsluttes. Synkronen transcribe og transcribeBatch APIs beholder sin ikke-strekkende oppførsel og ignorerer oppgaveavbelysning. speech-server bruker avbestillingsvare-oppføringspunktet for Qwen3-ASR.

MLX cache budsjett

Laster Qwen3-ASR begrenser den prosessen-videre MLX bassenget med gjenbrukbare Metal buffere: min(1 GiB, RAM / 8) for 0,6B og min(4 GiB, RAM / 4) for 1,7B. Andre MLX modeller deler dette bassenget. Takene gjelder for cached ripe buffere, ikke aktive vekter eller den totale prosessen fotavtrykk.

Den effektive grensen er den laveste av anroperens eksisterende MLX.Memory.cacheLimit og hver lastet ASR instansens tak. Instanser kan losses i enhver rekkefølge; den siste lossing eller ødeleggelse gjenoppretter samtalers budsjett. En tettere grense satt av samtaleren mens modeller lastes er bevart.

Enkeltinput trankripsjon fjerner gjenbrukbare buffere når dekoderen returnerer eller kaster, inkludert kansellering inne i dekoderen. Aktive tabeller og modellvekter forblir lastet. Den grådige transcribeBatch dekoderen beholder det avgrensede bassenget mellom batcher. Nei API alternativer eller CLI flagg endres.

Å rydde bufferbassenget senker det beholdte minnet, men krever nye tildelinger på senere forespørsler, så korte forespørseler kan ta lengre tid. Venter på innsendt dekoderarbeid for å fullføre gjør rengjøring deterministisk, inkludert kansellering. Faktisk latens og prosessminnet avhenger av maskinvaren, modellen og lyden.

Valgfritt modelleierskap

SpeechRuntime gir delt lasting, kancellerbar FIFO-opptak og seriealisert utførelse. Qwen3ASRRuntime velger MLX eller full CoreML gjennom eksplisitte deskriptorer; innfødte API-er og CLI-flagg forblir tilgjengelige.

Lydserveren har én utføringstillatelse gjennom hver fullstendige forespørsel, inkludert streamingutgang, med opptil 32 forespørsler som venter. ASR feil produserer HTTP-feil eller WebSocket feilhenvisninger; gyldige tomme transkripsjoner forblir vellykket. Avspilling bevarer overflytprøver. Cachede modeller og avventende lyd fortsatt okkupasjonsminne.

Administrert CoreML trankripsjon utgir midlertidige buffere etter hver forespørsel, inkludert gjentatte samtaler fra en bakgrunnsoppgave.

import Qwen3ASRRuntime

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