Qwen3-ASR

Qwen3-ASR نموذج حديث متعدّد اللغات للتعرّف الآلي على الكلام. يعمل على الجهاز بتسارع GPU عبر Metal باستخدام MLX، مع تكميم 4-bit لاستهلاك ذاكرة فعّال. متوفّر بنسختين بسعة 0.6B و1.7B معاملات.

سير المعالجة

يعالج خطّ استدلال Qwen3-ASR الصوت عبر أربع مراحل:

المرحلةالوصف
دخل الصوتصوت خام يُعاد أخذ عيّناته إلى 16 kHz مونو
طيف melسمات بنك فلاتر mel بـ 128 خانة مستخرجة من الموجة الصوتية
مرمِّز الصوتمحوّل بـ 18 طبقة وانتباه بالكتل، يحوّل أُطر mel إلى تضمينات صوتية
مفكّك النصمحوّل Qwen3 بـ 28 طبقة مع انتباه استعلامي مجموع (GQA) وتضمينات موضع دوّارة (RoPE)، يولّد رموز النص بشكل انحداري ذاتي

الأداء

BackendRTFالذروة في الذاكرةملاحظات
MLX (GPU)~0.06~2.2 GBالافتراضي، الأسرع كنموذج واحد
CoreML + MLX (هجين)~0.09~400 MB (المرمِّز)المرمِّز على Neural Engine والمفكّك على GPU

M2 Max، 64 GB. RTF < 1.0 = أسرع من الزمن الحقيقي.

نسخ النموذج

النموذجBackendالحجمHuggingFace
Qwen3-ASR-0.6B (4-bit)MLX680 MBaufklarer/Qwen3-ASR-0.6B-MLX-4bit
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 (8-bit)MLX3.2 GBaufklarer/Qwen3-ASR-1.7B-MLX-8bit

الاستخدام عبر CLI

فرّغ ملفًا صوتيًا بنموذج Qwen3-ASR الافتراضي:

.build/release/speech transcribe recording.wav

الخيارات

# استخدام النموذج الأكبر 1.7B
.build/release/speech transcribe recording.wav --model 1.7b

# تحديد اللغة
.build/release/speech transcribe recording.wav --language en

# وضع البثّ مع نتائج جزئية
.build/release/speech transcribe recording.wav --stream --partial

واجهة Swift

استخدم وحدة Qwen3ASR لتفريغ الصوت برمجيًا:

import Qwen3ASR

// تحميل النموذج (يُنزَّل من HuggingFace في أوّل استخدام)
let model = try await Qwen3ASRModel.loadFromHub()

// تفريغ ملف صوتي
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)

مرمِّز CoreML (Neural Engine)

شغّل مرمِّز الصوت على Neural Engine عبر CoreML، مع تشغيل مفكّك النص على GPU عبر MLX. هذا النهج الهجين يخفض استهلاك الطاقة ويُحرّر GPU لأعباء عمل متزامنة.

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 ذو اللوحة اللونية (180 MB، تشابه جيب التمام > 0.999). تتوفّر أيضًا نسخة INT4 (90 MB) للنشر في بيئات محدودة الحجم.

وضع البثّ

يستخدم وضع البثّ VAD (كشف النشاط الصوتي) لتقسيم الصوت إلى مقاطع وتفريغها بشكل تدريجي. وهو مفيد للتسجيلات الطويلة أو المعالجة في زمن حقيقي.

# البثّ بحجم المقطع الافتراضي
.build/release/speech transcribe recording.wav --stream

# التحكّم في أقصى مدّة للمقطع
.build/release/speech transcribe recording.wav --stream --max-segment 15

# عرض النتائج الجزئية (قيد التقدّم) فور وصولها
.build/release/speech transcribe recording.wav --stream --partial

يتحكّم العَلَم --max-segment في أقصى مدّة للمقطع بالثواني. ويفعّل العَلَم --partial إخراج النتائج الجزئية، فيعرض الكلمات لحظة فكّ ترميزها.

الصيغ المدعومة

يقبل Qwen3-ASR الصيغ الصوتية التالية. يُعاد أخذ عيّنات كل دخل تلقائيًا إلى 16 kHz مونو داخليًا.

مهم

تُنزَّل النماذج من HuggingFace في أوّل استخدام وتُخزَّن مؤقّتًا في ~/Library/Caches/qwen3-speech/. يبلغ حجم نموذج 0.6B بـ 4-bit نحو 1.5 GB.