Awtomatikong salin · Orihinal sa Ingles

Qwen3-ASR

MLX at CoreML ay gumagamit ng parehong Whisper-style input na mga katangian: 128 Slaney-normalized mel bins mula sa isang eksaktong 400-point STFT sa 16 kHz, na may 160 -sample hop at isang pana-panahong bintanang Hann.

Qwen3-ASR ay isang state-of-the-art languagenic automatic speech recognition model. Ito ay tumatakbo sa-device gamit ang Metal GPU Mabilis na paglalakbay MLX, kasama 4-bit, 5-bit, o kaya ay 8-bit quanization para sa mahusay na paggamit ng memorya. 0.6B at 1.7 Mga pagkakaiba sa parameter. 5-bit ay ang bagong katumpakan/memoryang matamis na batik – tingnan Mga marka.

Pipeline

Ang Qwen3-ASR producestic pipeline ay nakaririnig sa apat na yugto:

Bagsag Paglalarawan
Isang Istasyon ng Audio Ang Raw audio ay muling inilakip sa 16 na kHz mono
Mel Spectrogram128-bin mel filterbank tampok na hinango mula sa waveform
Pag - unlad ng Audio18-layer transformer na may block attention, proseso ang mga mel frames upang maging audio embedings
Decoder ng Teksto28-layer Qwen3 transformer na may nakagrupong-query na pansin (GQA) at mga torry position embeding (RoPE), autoregressive production tokens

Pag - aasikaso

LikodRTF Pinakamataas na Alaala Mga Noble
Qwen3-ASR 1.7B MLX 5-bit0.027 1.92 GBWER 1.32% (bagong lider ng katumpakan)
Qwen3-ASR 1.7B MLX 8-bit0.0332.7 GBWER 1.52%
Qwen3-ASR 0.6B MLX 8-bit0.0151.3 GBWER 1.82%
Qwen3-ASR 0.6B MLX 5-bit0.014 1.03 GBWER 1.74% (near-8-bit sa °4-bit RAM)
Qwen3-ASR 0.6B MLX 4-bit0.012 1.0 GBWER 2.20%
Qwen3-ASR 0.6B CoreML INT80.0981.4 GBWER 3.02% (pinasimpleng-attn muling itinayo)

Apple M5 Pro, 48 GB. LibriSpeech test-malinis n=200, nakabukod per-engine. RTF < 1.0 = mas mabilis kaysa sa tunay na panahon.

Modelong mga Variante

Huwaran Likod LakiHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 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)CoreML180 MB Aufklarer/Qwen3-ASR-CoreML
Qwen3-ASR-1.7B (4-bit)MLX2.1 GB Aufklarer/Qwen3-ASR-1.7B-MLX-4bit
Qwen3-ASR-1.7B (5-bit)MLX2.3 GB Aufklarer/Qwen3-ASR-1.7B-MLX-5bit
Qwen3-ASR-1.7B (8-bit)MLX3.2 GB Aufklarer/Qwen3-ASR-1.7B-MLX-8bit

Paggamit ng CLI

Isulat ang audio file na may default Qwen3-ASR model:

.build/release/speech transcribe recording.wav

Mga Mapagpipilian

# 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

Gamitin ang Qwen3ASR module upang isalin ang audio programmatly:

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)

Patakbuhin ang audio Neural Engine via CoreML, na may kasamang decoder sa GPU via pre MLX. Ang hybrid na ito ay nagpapababa sa pagkonsumo ng kuryente at nag - aalis sa GPU para sa mga complementload.

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 palettified (180 MB, cosine fender > 0.999) ay ang default. Ang isang INT4 variety (90 MB) ay makukuha rin para sa mga sukat-constrained na pag-play.

Nakapagpapasiglang Mode

Ang Streaming mode ay gumagamit ng VAD (voice activity detection) upang hatiin ang audio sa mga tipak at isalin ang mga ito sa inkrementally. Ito ay kapaki-pakinabang para sa mahabang rekording o real-time processing.

# 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

Ang --max-segment flag ay kumokontrol sa sukdulang stage sa mga segundo. Ang --partial flag ang nagpapangyari ng bahagyang resultang output, nagpapakita ng mga salita habang ito ay decoded.

Suportadong mga Pamahayan

Qwen3-ASR tanggapin ang mga sumusunod na audio format. Ang lahat ng input ay awtomatikong nai-resulta sa 16 kHz mono internasyunal.

Mahalaga

Ang mga modelo ay na-download mula HuggingFace sa unang gamit at cached sa ~/Library/Caches/qwen3-speech/. Ang 4-bit 0.6B model ay humigit-kumulang 1.5 GB.

May Pakikipagtulungang Pagkansela

Para sa MLX transcription, Qwen3ASRModel.transcribeCheckingCancellation(audio:sampleRate:options:) mga paghahagis CancellationError Kapag ang gawaing pagpapawalang - bisa ay napansin bago pa man matapos ang pag - aalis, pag - eesposi, pag - aalis ng laman sa katawan, o isang hakbang na nagpapawalang - bisa. ang gawaing GPU na isinumite na ay maaaring matapos. transcribe at transcribeBatch Pinananatili ng mga API ang kanilang hindi-paghagis na pag-uugali at binabalewala ang gawain. speech-server ay gumagamit ng puntos ng venge-acware entry para sa Qwen3-ASR.

MLX badyet ng cache

Ang pagkarga ng Qwen3-ASR ay gumagampan sa proseso-wide MLX pool ng mga reusable Metal buffers: min(1 GiB, RAM / 8) para sa 0.6B at min(4 GiB, RAM / 4) para sa 1.7B. Iba pa MLX Ang mga kisame ay kumakapit sa may - ukit na mga pangharang, hindi sa aktibong mga pabigat o sa kabuuang process footprint.

Ang mabisang limitasyon ang pinakamababa sa mga callificity na umiiral MLX.Memory.cacheLimit At ang bawat may kargang ASR iaziers na kisame.Ang mga instance ay maaaring magdiskarga ng anumang pagkakasunud-sunod; ang huling unload o premiere na pagkawasak ay nagpapanumbalik sa badyet ng caller rectivity. ang mas mahigpit na limitasyon na itinakda ng tumatawag habang ang mga modelo ay nai-iisyu.

Ang single-input transcription ay nagreresulta sa mga reusable na mga limpa kapag ang decoder return o mga cast nito, kabilang ang deconder. aktibong mga array at modelong mga pabigat ay nananatiling nakakarga. Ang sakim na transcribeBatch decoder ay nagpapanatili ng naka-taling pool sa pagitan ng mga porsyo. Walang API option o mga pagpipilian o CLI flagsili flagspors.

Ang paglilinis sa neutral na pool ay nagpapababa ng memorya ngunit nangangailangan ng bagong mga alegasyon sa mga kalaunang kahilingan, kaya't ang mga maikling kahilingan ay maaaring kumuha ng mas mahabang oras. ang paghihintay sa isinumite na gawaing decoder upang tapusin ay gumagawa sa paglilinis na deterministiko, kabilang na ang deterministic. aktuwal na latency at memoryang pangproseso ay nakasalalay sa hardware, modelo, at audio.

Optional model pagmamay-ari

Nagbibigay ang SpeechRuntime ng kabahaging pagkarga, cancellable FIFO accounted at serialized kill. ang Qwen3ASRRuntime ay pumipili ng MLX o buong CoreML sa pamamagitan ng mga detalyadong direksyon; ang mga katutubong bandilang API at CLI ay nananatiling makukuha.

Ang audio server ay humahawak ng isang bitayan sa pamamagitan ng bawat kumpletong kahilingan, kabilang ang streeted output, na may hanggang 32 requests naghihintay. ang ASR failures ay gumagawa ng mga pagkakamaling HTTP o WebSocket error events; ang mga tanggap na walang laman na transcription ay nananatiling matagumpay.Ang mga playback reservement ay nag-apaw ng mga sampol.Ang mga modelong creached at ang mga champling playback audio ay sumasakop pa rin sa memorya.

Pinamamahalaan ng CoreML transcription ay naglalabas ng pansamantalang mga lingutero pagkatapos ng bawat kahilingan, pati na ang paulit-ulit na tawag mula sa isang background na gawain.

import Qwen3ASRRuntime

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