اختبارات الأداء
قيمة RTF (عامل الزمن الحقيقي) أقل من 1.0 تعني أسرع من الزمن الحقيقي.
Apple Silicon (MLX + CoreML)
كل الاختبارات تمت على M2 Max، 64 GB، macOS 14 بإصدارات release وملف metallib مُجمَّع.
ASR — معدل خطأ الكلمات
تم التقييم على LibriSpeech test-clean (2620 نطقًا، نحو 5.4 ساعات من الكلام المقروء بالإنجليزية).
| النموذج | Bits | الحجم | WER% | RTF |
|---|---|---|---|---|
| Qwen3-ASR 1.7B | 8-bit | 2.3 GB | 2.35 | 0.090 |
| Qwen3-ASR 1.7B | 4-bit | 1.2 GB | 2.57 | 0.045 |
| Parakeet TDT 0.6B | INT8 | 634 MB | 2.74 | 0.089 |
| Qwen3-ASR 0.6B | 8-bit | 960 MB | 2.80 | 0.025 |
| Qwen3-ASR 0.6B | 4-bit | 675 MB | 3.34 | 0.023 |
مقارنة مع النماذج المنشورة
| النموذج | المعاملات | الحجم | الدقة | WER% | المصدر |
|---|---|---|---|---|---|
| Qwen3-ASR 1.7B | 1.7B | 2.3 GB | 8-bit | 2.35 | هذا الاختبار |
| Whisper Large v3 Turbo | 809M | 1.6 GB | FP16 | 2.5 | OpenAI (2024) |
| Qwen3-ASR 1.7B | 1.7B | 1.2 GB | 4-bit | 2.57 | هذا الاختبار |
| Whisper Large v3 | 1.5B | 3.1 GB | FP16 | 2.7 | OpenAI (2023) |
| Parakeet TDT 0.6B | 600M | 634 MB | INT8 | 2.74 | هذا الاختبار |
| Qwen3-ASR 0.6B | 600M | 960 MB | 8-bit | 2.80 | هذا الاختبار |
| Whisper Medium | 769M | 1.5 GB | FP16 | 3.0 | OpenAI (2022) |
| Qwen3-ASR 0.6B | 600M | 675 MB | 4-bit | 3.34 | هذا الاختبار |
| Whisper Small | 244M | 483 MB | FP16 | 3.4 | OpenAI (2022) |
الاستقرار في الصيغة الطويلة (حِمل مستمر على Neural Engine)
200 نطق من LibriSpeech تمت معالجتها بالتتابع (~30 دقيقة من الصوت، M2 Max). الاختبار يتحقق مما إذا كان WER أو التأخير يتراجعان تحت التفريغ المستمر.
| المقياس | أول 25% | آخر 25% | الإجمالي |
|---|---|---|---|
| WER% | 1.30 | 1.23 | 2.43 |
| RTF | 0.672 | 0.400 | 0.539 |
لم يُكتشف أي تراجع. يظل WER ثابتًا طوال الجلسة. بل يتحسن RTF مع تسخين CoreML لذاكرة خطة التنفيذ. لا يحدث أي خفض حراري بعد 42 دقيقة من الاستدلال المتواصل على Neural Engine. يعالج Parakeet كل جزء بشكل مستقل — دون تراكم للحالة بين الأجزاء.
النتائج متعددة اللغات (FLEURS)
يُستخدم CER للغات CJK (لا توجد حدود للكلمات). يدعم Parakeet نحو 25 لغة أوروبية (دون CJK).
| اللغة | المقياس | Qwen3 4-bit | Qwen3 8-bit | Parakeet INT8 |
|---|---|---|---|---|
| الإسبانية | WER | 6.44 | 5.06 | 5.18 |
| الإنجليزية | WER | 6.57 | 5.64 | 9.30 |
| الصينية | CER | 8.41 | 7.71 | — |
| الألمانية | WER | 9.45 | 6.81 | 12.33 |
| الفرنسية | WER | 11.42 | 8.50 | 13.02 |
| اليابانية | CER | 16.11 | 8.64 | — |
| الروسية | WER | 16.35 | 10.52 | 11.49 |
| الكورية | WER | 19.95 | 6.89 | — |
| الهندية | WER | 25.93 | 18.57 | — |
| العربية | WER | 33.47 | 20.31 | — |
فرق الضغط
فقدان الدقة عند التكميم إلى عرض بت أقل.
| الإصدار | WER% | الاستبدالات | الإدخالات | الحذوفات | إجمالي الأخطاء | الحجم |
|---|---|---|---|---|---|---|
| Qwen3 0.6B 8-bit | 2.80 | 1111 | 92 | 268 | 1471 | 960 MB |
| Qwen3 0.6B 4-bit | 3.34 | 1323 | 123 | 308 | 1754 | 675 MB |
| الفرق | +0.54 | +212 | +31 | +40 | +283 | -30% |
| Parakeet TDT INT8 | 2.74 | 990 | 125 | 308 | 1423 | 634 MB |
يحقق Qwen3-ASR 1.7B 8-bit نسبة 2.35% WER — متفوّقًا على Whisper Large v3 Turbo (2.5%) وWhisper Large v3 (2.7%) مع التشغيل بمعدل 11× الزمن الحقيقي على Apple Silicon.
TTS — وضوح ذهابًا وإيابًا
تركيب النص، ثم إعادة تفريغ الصوت باستخدام Qwen3-ASR 0.6B وحساب WER مقارنة بالنص الأصلي. تم التقييم على 30 جملة محادثة مدمجة باللغة الإنجليزية.
| المحرّك | النموذج | المعاملات | الحجم | WER% | RTF |
|---|---|---|---|---|---|
| CosyVoice3 | 0.5B 4-bit | 500M | ~1.9 GB | 3.25 | 0.59 |
| Qwen3-TTS | 1.7B 4-bit | 1.7B | ~2.3 GB | 3.47 | 0.79 |
| Qwen3-TTS | 1.7B 8-bit | 1.7B | ~3.5 GB | 3.66 | 0.85 |
| Kokoro-82M | CoreML | 82M | ~170 MB | 3.90 | 0.17 |
| Qwen3-TTS | 0.6B 8-bit | 600M | ~960 MB | 9.74 | 0.76 |
| Qwen3-TTS | 0.6B 4-bit | 600M | ~675 MB | 15.58 | 0.76 |
تفصيل التأخير (Qwen3-TTS)
| المرحلة | الوقت | % من الإجمالي | الوصف |
|---|---|---|---|
| Embed | 1-3 ms | <1% | تضمين النص (TTFT) |
| Generate | 2-6 s | ~92% | رموز codec ذاتية الانحدار |
| Decode | 244-457 ms | ~8% | فك ترميز codec إلى موجة صوتية |
كل محركات TTS تعمل أسرع من الزمن الحقيقي (RTF < 1.0). يتصدّر CosyVoice3 من حيث الوضوح (3.25% WER). أما Kokoro فهو الأسرع (RTF 0.17) بحجم 170 MB فقط.
VAD — دقة الكشف
التقييم على FLEURS (10 لغات، 250 ملفًا)
التقييم بالمقارنة مع المرجع البايثوني FireRedVAD عند نفس العتبة.
| المحرّك | المعاملات | Backend | F1% | FAR% | MR% | RTF |
|---|---|---|---|---|---|---|
| FireRedVAD | 588K | CoreML (ANE) | 99.12 | 2.52 | 0.47 | 0.007 |
| Silero v5 | 309K | CoreML (ANE) | 95.13 | 15.76 | 1.89 | 0.022 |
| Silero v5 | 309K | MLX (GPU) | 95.11 | 15.85 | 1.89 | 0.027 |
| Pyannote | 1.5M | MLX (GPU) | 94.86 | 14.71 | 2.92 | 0.358 |
التقييم على VoxConverse (متعدد المتحدثين)
5 ملفات محادثة متعددة المتحدثين، تم تقييمها بدقة إطار 10 ms.
| المحرّك | المعاملات | Backend | F1% | FAR% | MR% | RTF |
|---|---|---|---|---|---|---|
| Pyannote | 1.5M | MLX (GPU) | 98.22 | 50.09 | 0.19 | 0.358 |
| Silero v5 | 309K | CoreML (ANE) | 97.52 | 33.29 | 2.69 | 0.022 |
| Silero v5 | 309K | MLX (GPU) | 95.98 | 21.02 | 5.88 | 0.027 |
| FireRedVAD | 588K | CoreML (ANE) | 94.21 | 40.12 | 5.05 | 0.007 |
مقارنة مع الأرقام المنشورة
| النموذج | F1% | FAR% | MR% | المعاملات | Dataset |
|---|---|---|---|---|---|
| Pyannote (لدينا) | 98.22 | 50.09 | 0.19 | 1.5M | VoxConverse |
| FireRedVAD (paper) | 97.57 | 2.69 | 3.62 | 588K | FLEURS-VAD-102 |
| Silero (لدينا) | 95.98 | 21.02 | 5.88 | 309K | VoxConverse |
| Silero-VAD (paper) | 95.95 | 9.41 | 3.95 | 309K | FLEURS-VAD-102 |
| FireRedVAD (لدينا) | 94.21 | 69.33 | 5.05 | 588K | VoxConverse |
يحقق FireRedVAD نسبة 99.12% F1 على FLEURS مع أدنى معدل إنذار كاذب (2.52%) ويعمل بسرعة 135× الزمن الحقيقي. يوفّر Silero v5 أفضل خيار للبث المباشر بـ 32 ms لكل جزء.
تضمينات المتحدث
تأخير الاستخراج
مقطع صوتي مدته 20 ثانية، 10 تكرارات بعد التسخين.
| النموذج | Dim | Backend | التأخير |
|---|---|---|---|
| CAM++ (3D-Speaker) | 192 | CoreML (ANE) | 12 ms |
| WeSpeaker ResNet34-LM | 256 | MLX (GPU) | 64 ms |
| WeSpeaker ResNet34-LM | 256 | CoreML (ANE) | 143 ms |
جودة التضمينات (VoxConverse)
تشابه جيب التمام بين التضمينات على مستوى المقاطع من 5 تسجيلات متعددة المتحدثين. كلما زاد الفصل، تحسّن التمييز بين المتحدثين.
| النموذج | Backend | داخل المتحدث | بين المتحدثين | الفصل |
|---|---|---|---|---|
| WeSpeaker | MLX | 0.726 | 0.142 | 0.584 |
| WeSpeaker | CoreML | 0.726 | 0.143 | 0.582 |
| CAM++ | CoreML | 0.723 | 0.395 | 0.328 |
المحركات الثلاثة جميعها تطابق مرجع pyannote البايثوني (فصل 0.577، تشابه جيب التمام >0.96). يحقق WeSpeaker فصلًا قدره 0.584 على كلٍّ من MLX وCoreML. أما CAM++ فيعمل أسرع 5× (12 ms مقابل 65 ms) مع فصل جيد (0.328).
فصل المصادر — SDR
نسبة الإشارة إلى التشويه (SDR) على MUSDB18-HQ (50 مسارًا اختباريًا بطول كامل، استريو 44.1 kHz). الأعلى أفضل. حجمان للنموذج: HQ (8.9M معاملات لكل stem) وL (28.3M معاملات لكل stem).
| الهدف | UMX-HQ (MLX) | UMX-L (MLX) | UMX-HQ (المنشور) |
|---|---|---|---|
| الأصوات | 6.23 dB | ~10.5 dB | 6.32 dB |
| الطبول | 6.44 dB | ~7.0 dB | 5.73 dB |
| الجيتار البيس | 4.56 dB | ~5.5 dB | 5.23 dB |
| أخرى | 3.41 dB | ~4.5 dB | 4.02 dB |
| النموذج | معاملات/stem | الحجم | RTF | السرعة |
|---|---|---|---|---|
| Open-Unmix HQ | 8.9M | 136 MB | 0.23 | 4.3× الزمن الحقيقي |
| Open-Unmix L | 28.3M | 432 MB | 0.21 | 4.8× الزمن الحقيقي |
يطابق UMX-HQ قيم SDR المنشورة في الأصوات والطبول بنموذج خفيف حجمه 8.9M. ويوفّر UMX-L تحسينًا قدره +2 إلى +4 dB بحجم نموذج يساوي 3 أضعاف. كلاهما يتضمّن ما بعد تصفية EM Wiener متعدد القنوات ويعمل أسرع من الزمن الحقيقي على Apple Silicon.
إعادة الإنتاج
# ASR benchmarks (LibriSpeech test-clean)
make build
python scripts/benchmark_asr.py --batch --engine qwen3 --model 0.6B
python scripts/benchmark_asr.py --batch --engine qwen3 --model 0.6B-8bit
python scripts/benchmark_asr.py --batch --engine parakeet
python scripts/benchmark_asr.py --batch --engine parakeet --model int8
# ASR multilingual (FLEURS, auto-download)
python scripts/benchmark_asr.py --dataset fleurs --language en_us --batch
# TTS round-trip
python scripts/benchmark_tts.py --compare
# VAD comparison
python scripts/benchmark_vad.py --compare
# Speaker embeddings comparison
python scripts/benchmark_speaker.py --compare
# Source separation (MUSDB18-HQ, download from Zenodo)
python scripts/benchmark_separation.py --data-dir benchmarks/data/musdb18-hq