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)، يولّد رموز النص بشكل انحداري ذاتي |
الأداء
| Backend | RTF | الذروة في الذاكرة | ملاحظات |
|---|---|---|---|
| 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) | MLX | 680 MB | aufklarer/Qwen3-ASR-0.6B-MLX-4bit |
| 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-bit) | MLX | 2.1 GB | aufklarer/Qwen3-ASR-1.7B-MLX-4bit |
| Qwen3-ASR-1.7B (8-bit) | MLX | 3.2 GB | aufklarer/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 مونو داخليًا.
- WAV — PCM غير مضغوط
- M4A — صوت مُرمَّز بـ AAC
- MP3 — MPEG Layer III
- CAF — Apple Core Audio Format
تُنزَّل النماذج من HuggingFace في أوّل استخدام وتُخزَّن مؤقّتًا في ~/Library/Caches/qwen3-speech/. يبلغ حجم نموذج 0.6B بـ 4-bit نحو 1.5 GB.