Maskinöversättning · Engelskt original
Qwen3-ASR
MLX och CoreML använder samma Whisper-style ingångsfunktioner: 128 Slaney-normalized mel bins från en exakt 400-punkts STFT vid 16 kHz, med en 160-prov hop och ett periodiskt Hann-fönster.
Qwen3-ASR är en state-of-the-art flerspråkig automatisk taligenkänningsmodell. Det körs på-enhet med hjälp av Metal GPU acceleration via MLX, med 4-bit, 5-bit, eller 8-bit kvantisering för effektiv minnesanvändning. Finns i 0.6B och 1.7B parameter varianter. 5-bit är den nya noggrannheten / minnet söt plats - se Benchmarks.
Pipeline
Qwen3-ASR inferenspipeline processer ljud genom fyra steg:
| Steg | Beskrivning |
|---|---|
| Ljudindata | Rått ljud samplas om till 16 kHz mono |
| Mel-spektrogram | 128-bin mel filterbank funktioner extraherade från vågformen |
| Ljudkodare | 18-lagers transformator med block uppmärksamhet, processer mel ramar in i ljudinbäddningar |
| Textavkodare | 28-skikt Qwen3 transformator med grupperad fråga uppmärksamhet (GQA) och roterande positionsinbäddningar (RoPE), genererar autoregressivt texttokens |
Prestanda
| Backend | RTF | Högsta minnesanvändning | Anmärkningar |
|---|---|---|---|
| Qwen3-ASR 1.7B MLX 5-bitars | 0.027 | 1,92 GB | WER 1,32% (ny noggrannhetsledare) |
| Qwen3-ASR 1.7B MLX 8-bit | 0.033 | 2.7 GB | WER 1.52% |
| Qwen3-ASR 0,6B MLX 8-bitars | 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 vid ~4-bit RAM) |
| Qwen3-ASR 0,6B MLX 4-bitars | 0.012 | 1.0 GB | WER 2.20% |
| Qwen3-ASR 0,6B CoreML INT8 | 0.098 | 1.4 GB | WER 3,02% (chunked-attn rebuild) |
Apple M5 Pro, 48 GB LibriSpeech test-clean n=200, isolerad per-engine. RTF < 1,0 = snabbare än realtid.
Modellvarianter
| Modell | Backend | Storlek | HuggingFace |
|---|---|---|---|
| Qwen3-ASR-0.6B (4-bitars) | 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-bitars) | MLX | 2.1 GB | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (5-bitars) | 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 Användning
Transkribera en ljudfil med standard Qwen3-ASR modell:
.build/release/speech transcribe recording.wav
Alternativ
# 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
Använda Qwen3ASR modul för att transkribera ljudprogrammatiskt:
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)
Kör ljudkodaren på Neural Engine via CoreML, med textavkodaren på GPU genom MLX. Denna hybridmetod sänker strömförbrukningen och frigör GPU för samtidiga arbetsbelastningar.
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 palettiserad (180 MB, kosin likhet & gt; 0.999) är standard. En INT4 variant (90 MB) är också tillgänglig för storleksbegränsade utplaceringar.
Streaming Mode
Streaming läge använder VAD (detektering av röstaktivitet) för att segmentera ljud i bitar och transkribera dem stegvis. Detta är användbart för långa inspelningar eller realtidsbehandling.
# 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 flaggan kontrollerar den maximala bitlängden på några sekunder. --partial flaggan möjliggör delvis resultatutgång, visar ord som de avkodas.
Stödda format
Qwen3-ASR accepterar följande ljudformat. All ingång skickas automatiskt till 16 kHz mono internt.
- WAV -- okomprimerad PCM
- M4A -- AAC-kodad ljud
- MP3 -- MPEG Layer III
- CAF - Apple Core Audio Format
Modeller hämtas från HuggingFace vid första användning och cachad i ~/Library/Caches/qwen3-speech/. 4-bitars 0,6B-modellen är ca 1,5 GB.
Parakeet TDT tal-till-text · CosyVoice3 röst kloning · Kokoro-82M TTS
Behöver du en fokuserad beslutsguide? Se Qwen3-ASR vs Whisper: noggrannhet, hastighet och minne.
Kooperativ avbokning
För MLX transkription, Qwen3ASRModel.transcribeCheckingCancellation(audio:sampleRate:options:) kastar CancellationError när uppgiftsavbokning observeras före funktionsutvinning, kodning, dekoderprefill eller ett avkodningssteg. GPU-arbete som redan lämnats in kan avslutas. transcribe och transcribeBatch API behåller sitt icke-kastande beteende och ignorerar uppgiftsavbokning. speech-server använder annulleringsmedveten ingångspunkt för Qwen3-ASR.
MLX cachebudget
Laddar Qwen3-ASR gränsar processen bred MLX pool av återanvändbar Metal buffertar: min(1 GiB, RAM / 8) för 0,6B och min(4 GiB, RAM / 4) för 1,7B. Övrt MLX delar denna pool till
Den effektiva gränsen är den lägsta av caller befintliga MLX.Memory.cacheLimit och varje laddad ASR instansens tak. Instanser kan lossa i någon ordning; den sista lossningen eller instansförstöringen återställer uppringarens budget. En tätare gräns som ställs av uppmaningen medan modeller är laddade bevaras.
Single-input transkription rensar återanvändbara buffertar när dess dekoder returnerar eller kastar, inklusive avbokning inuti avkodaren. Aktiva matriser och modellvikter förblir laddade. Den giriga transcribeBatch dekoder behåller den bundna poolen mellan satser. No API optioner eller CLI flaggor förändring.
Att rensa buffertpoolen sänker behållet minne men kräver nya tilldelningar på senare förfrågningar, så korta förfrön kan ta längre tid. Väntar på inlämnat dekoderarbete för att slutföra gör rensningen deterministisk, inklusive avbokning. Faktiskt latens- och processminne beror på hårdvara, modell och ljud.
Valfri modell ägande
SpeechRuntime tillhandahåller delad lastning, avbokningsbar FIFO-antagning och serialiserad avrättning. Qwen3ASRRuntime väljer MLX eller full CoreML genom explicita deskriptorer; inhemska API och CLI-flaggor finns tillgängliga.
Ljudservern har ett genomförandetillstånd genom varje fullständig förfrågan, inklusive strömmat utgång, med upp till 32 förfrågningar som väntar. ASR fel ger HTTP-fel eller WebSocket felhändelser; giltiga tomma utskrifter förblir framgångsrika. Playback bevarar överflödesprover. Cachade modeller och pending uppspelningsljud upptar fortfarande minne.
Hanterade CoreML transkription frigör tillfälliga buffertar efter varje begäran, inklusive upprepade samtal från en bakgrundsuppgift.
import Qwen3ASRRuntime
let runtime = Qwen3ASRRuntime(descriptor: Qwen3ASRDescriptors.small)
let text = try await runtime.transcribe(audio: samples, sampleRate: 16000)
try await runtime.unload()