Qwen3-ASR

Qwen3-ASR, sektörün en gelişmiş çok dilli otomatik konuşma tanıma modellerinden biridir. MLX üzerinden Metal GPU hızlandırması ile cihaz üzerinde çalışır ve verimli bellek kullanımı için 4-bit nicemleme kullanır. 0.6B ve 1.7B parametreli iki varyant olarak sunulur.

Pipeline

Qwen3-ASR çıkarım pipeline'ı sesi dört aşamada işler:

AşamaAçıklama
Ses girişiHam ses, 16 kHz mono'ya yeniden örneklenir
Mel spektrogramDalga formundan 128 bantlı mel filterbank öznitelikleri çıkarılır
Ses kodlayıcıBlock attention'lı 18 katmanlı transformer; mel çerçevelerini ses embedding'lerine dönüştürür
Metin kod çözücüGrouped-query attention (GQA) ve rotary position embedding (RoPE) içeren 28 katmanlı Qwen3 transformer; otoregresif olarak metin token'ları üretir

Performans

BackendRTFZirve bellekNotlar
Qwen3-ASR 1.7B MLX 5-bit0.0271.92 GBWER 1.32% (new accuracy leader)
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.0141.03 GBWER 1.74% (near-8-bit at ~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 rebuild)

Apple M5 Pro, 48 GB. LibriSpeech test-clean n=200, isolated per-engine. RTF < 1.0 = gerçek zamandan hızlı.

Model Varyantları

ModelBackendBoyutHuggingFace
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 Kullanımı

Varsayılan Qwen3-ASR modeliyle bir ses dosyasını yazıya dökün:

.build/release/speech transcribe recording.wav

Seçenekler

# 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

Sesi programatik olarak yazıya dökmek için Qwen3ASR modülünü kullanın:

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 Kodlayıcı (Neural Engine)

Ses kodlayıcıyı CoreML üzerinden Neural Engine'de, metin kod çözücüyü ise MLX üzerinden GPU'da çalıştırın. Bu hibrit yaklaşım güç tüketimini düşürür ve eş zamanlı iş yükleri için GPU'yu serbest bırakır.

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 palettized (180 MB, kosinüs benzerliği > 0.999) varsayılan seçenektir. Boyut kısıtlamalı dağıtımlar için ayrıca INT4 varyantı (90 MB) mevcuttur.

Akış Modu

Akış modu, sesi parçalara ayırmak ve artımlı olarak yazıya dökmek için VAD (ses etkinliği tespiti) kullanır. Bu, uzun kayıtlar veya gerçek zamanlı işleme için kullanışlıdır.

# 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 bayrağı, saniye cinsinden maksimum parça süresini denetler. --partial bayrağı, kelimeleri kod çözüldükçe gösteren kısmi sonuç çıkışını etkinleştirir.

Desteklenen Formatlar

Qwen3-ASR aşağıdaki ses formatlarını kabul eder. Tüm girdiler dahili olarak 16 kHz mono'ya otomatik yeniden örneklenir.

Önemli

Modeller ilk kullanımda HuggingFace'ten indirilir ve ~/Library/Caches/qwen3-speech/ dizininde önbelleğe alınır. 4-bit 0.6B modeli yaklaşık 1.5 GB'tır.

Odaklı seçim rehberi için Qwen3-ASR vs Whisper: doğruluk, hız ve bellek sayfasına bakın.

İşbirlikli iptal

MLX transkripsiyonunda Qwen3ASRModel.transcribeCheckingCancellation(audio:sampleRate:options:), özellik çıkarımı, kodlama, kod çözücü ön doldurması veya bir kod çözme adımından önce görev iptalini algıladığında CancellationError fırlatır. GPU’ya gönderilmiş işler tamamlanabilir. Eşzamanlı transcribe ve transcribeBatch API’leri hata fırlatmayan davranışlarını korur ve görev iptalini yok sayar. speech-server, Qwen3-ASR için iptal destekli giriş noktasını kullanır.

MLX önbellek bütçesi

Qwen3-ASR yüklendiğinde süreç genelinde paylaşılan MLX yeniden kullanılabilir Metal tampon havuzuna sınır uygulanır: 0.6B için min(1 GiB, RAM / 8), 1.7B için min(4 GiB, RAM / 4). Diğer MLX modelleri de bu havuzu paylaşır. Sınırlar önbellekte tutulan geçici tamponlar içindir; etkin ağırlıkları veya sürecin toplam bellek kullanımını kapsamaz.

Etkin sınır, çağıranın mevcut MLX.Memory.cacheLimit değeri ile yüklü tüm ASR örneklerinin sınırlarının en küçüğüdür. Örnekler herhangi bir sırayla kaldırılabilir. Son örnek kaldırıldığında veya yok edildiğinde çağıranın bütçesi geri yüklenir. Modeller yüklüyken çağıranın belirlediği daha sıkı bir sınır korunur.

Tek girdili transkripsiyonda, kod çözücü döndüğünde veya hata attığında yeniden kullanılabilir tamponlar serbest bırakılır; kod çözme sırasında iptal de buna dahildir. Etkin diziler ve model ağırlıkları yüklü kalır. transcribeBatch açgözlü kod çözücüsü gruplar arasında sınırlı havuzu korur. API seçenekleri veya CLI bayrakları değişmez.

Tampon havuzunu temizlemek tutulan belleği azaltır, ancak sonraki isteklerde yeni ayırmalar gerektirir; bu nedenle kısa istekler daha uzun sürebilir. Gönderilmiş kod çözücü işinin tamamlanmasını beklemek, iptal durumunda da güvenilir temizleme sağlar. Gecikme ve işlem belleği donanıma, modele ve sese bağlıdır.