Omnilingual ASR

Omnilingual ASR من Meta عائلة تعرّف على الكلام مستقلّة عن اللغة تغطّي 1,672 لغة عبر 32 نظام كتابة مميَّزاً — أوسع تغطية لغوية لأيّ نموذج ASR يعمل على الجهاز على Apple Silicon. تنقل Soniqo متغيّر CTC إلى كلٍّ من CoreML (Neural Engine) وMLX (GPU عبر Metal)، بأربعة أحجام نموذج من 300M إلى 7B معامل.

CTC مستقلّ عن اللغة

بعكس Qwen3-ASR أو Parakeet TDT، لا يأخذ Omnilingual CTC تلميحاً للغة وقت الاستدلال — فهو يستخدم مفردات SentencePiece مشتركة من 10,288 مدخلاً تشمل كل لغة مدعومة. مرّر أيّ كلام بأيّ لغة مدعومة وسينتج النموذج نظام الكتابة الصحيح تلقائياً.

البنية المعمارية

Omnilingual CTC ضبط دقيق خاضع للإشراف لعمود wav2vec 2.0 من Meta مع رأس CTC خطّي على مفردات متعدّدة اللغات مشتركة. خط الأنابيب متوازٍ وغير ذاتيّ الانحدار — تمريرة أمامية واحدة لكل منطوق، بلا حلقة فاكّ ترميز.

raw audio [1, samples]
  → wav2vec2 feature extractor (7 strided CNN layers, ×320 downsample)
  → weight-normalised Conv1d positional encoder
  → N × pre-norm Transformer encoder layers
  → final layer norm
  → linear CTC head → logits [1, T, 10288]

عند مدخل 16 kHz، يُنتج المرمّز بتنزيل عيّنات ×320 معدّل إطار 50 Hz. مقطع من 10 ثوانٍ يُنتج 499 إطار logits. تفكيك CTC الجشع يُسقط التكرارات المتتالية ويتخطّى الرموز الخاصة عبر مفكِّك SentencePiece.

متغيّرات النموذج

تُنشَر عشرة متغيّرات تحت نطاق aufklarer على HuggingFace — حجما نافذة CoreML إضافة إلى ثماني تركيبات تكميم MLX:

المتغيّرالطبقاتالأبعادالرؤوسالحجمزمن التشغيل
CTC-300M-CoreML-INT8 (نافذة 5 ث)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (نافذة 10 ث)24102416312 MBNeural Engine
CTC-300M-MLX-4bit24102416193 MBGPU عبر Metal
CTC-300M-MLX-8bit24102416342 MBGPU عبر Metal
CTC-1B-MLX-4bit48128020549 MBGPU عبر Metal
CTC-1B-MLX-8bit481280201006 MBGPU عبر Metal
CTC-3B-MLX-4bit602048321.71 GBGPU عبر Metal
CTC-3B-MLX-8bit602048323.16 GBGPU عبر Metal
CTC-7B-MLX-4bit1282048323.55 GBGPU عبر Metal
CTC-7B-MLX-8bit1282048326.63 GBGPU عبر Metal

استخدام CLI

CoreML (Neural Engine)

# نافذة 10 ث (افتراضية)
.build/release/speech transcribe recording.wav --engine omnilingual

# نافذة 5 ث (ذاكرة أقل، إقلاع بارد أسرع)
.build/release/speech transcribe recording.wav --engine omnilingual --window 5

MLX (GPU عبر Metal)

# 300M @ 4-bit (متغيّر MLX الافتراضي)
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx

# 1B @ 4-bit — دقّة أعلى
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 1B

# 3B @ 8-bit — يقترب من جودة المرجع
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8

# 7B @ 4-bit — أكبر متغيّر CTC، وأفضل دقّة
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 7B

واجهة Swift

الواجهة الخلفية CoreML

import OmnilingualASR
import AudioCommon

let model = try await OmnilingualASRModel.fromPretrained()
let audio = try AudioFileLoader.load(url: url, targetSampleRate: 16000)
let text = try model.transcribeAudio(audio, sampleRate: 16000)
print(text)

الواجهة الخلفية MLX

import OmnilingualASR

// افتراضياً: 300M @ 4-bit
let model = try await OmnilingualASRMLXModel.fromPretrained()

// متغيّرات أكبر
let big = try await OmnilingualASRMLXModel.fromPretrained(variant: .b1, bits: 4)
let huge = try await OmnilingualASRMLXModel.fromPretrained(variant: .b3, bits: 8)
let max = try await OmnilingualASRMLXModel.fromPretrained(variant: .b7, bits: 4)

let text = try model.transcribeAudio(audio, sampleRate: 16000)

CoreML مقابل MLX

تُنتج الواجهتان الخلفيّتان تفريغات متطابقة جوهرياً باستثناء حرف أو حرفين (فروقات التكميم وزمن التشغيل). اختر بحسب وجهة النشر:

CoreMLMLX
هدف الحوسبةNeural EngineGPU عبر Metal
طول المدخلنافذة ثابتة (5 ث أو 10 ث)أيّ طول حتى 40 ث
أحجام النموذج300M فقط300M / 1B / 3B / 7B
التكميمتكميم INT8 بالألوان4-bit أو 8-bit بـ QuantizedLinear
التشغيل بالتوازي مع TTS على GPUنعم (ANE مستقلّ)يتنافس مع TTS على GPU
دعم iOSiOS 18+أيّ iOS على Apple Silicon

تفاصيل المعالجة المسبقة

يتطلّب Omnilingual تطبيق layer-norm على مستوى المنطوق على الموجة الخام، بما يطابق apply_audio_normalization من fairseq2:

normalized = (audio - mean(audio)) / sqrt(variance(audio) + 1e-5)

يُطبِّع نقل Swift محتوى الصوت الفعلي قبل الحشو بالأصفار إلى النافذة الثابتة لـ CoreML، فتتطابق المدخلات الأقصر من النافذة تماماً مع إحصاءات خط الأنابيب المرجعي. هذا أشيع مزلق في نقل النموذج — تنفيذ wav2vec2 على HuggingFace يقوم بـ group-norm لكل خاصية، لا layer-norm على مستوى المنطوق.

يفرض خط الأنابيب المرجعي حدّاً صارماً قدره 40 ثانية (MAX_ALLOWED_AUDIO_SEC) على الصوت المدخل. ويفرض نقل Swift الحدّ ذاته — المدخلات الأطول تُلقي خطأً واضحاً يُحيل إلى SpeechVAD أو ParakeetStreamingASR للمعالجة المقسَّمة.

تغطية اللغات

يدعم Omnilingual 1,672 لغة عبر 32 نظام كتابة، تتضمّن أكثر من 500 لغة قليلة الموارد أُضيفت عبر جمع بيانات مجتمعي. عيّنة من التغطية:

نظام الكتابةاللغاترموز عيّنة
اللاتينيّة1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
العربيّة70arb_Arab, arz_Arab, ary_Arab, arq_Arab, fas_Arab, urd_Arab, ckb_Arab, uig_Arab, …
الديفاناغاريّة65hin_Deva, mar_Deva, nep_Deva, bho_Deva, mai_Deva, awa_Deva, brx_Deva, …
السيريليّة51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
الإثيوبيّة10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
البنغاليّة8ben_Beng, asm_Beng, mni_Beng, …
التايلانديّة / اللاويّة / البورمية / التبتيّة9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
هان (المبسّطة / التقليديّة)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
اليابانيّة / الكوريّة1 / 1jpn_Jpan, kor_Hang
الأرمنيّة، الجورجيّة، العبريّة، اليونانيّة، الغوجاراتيّة، الغورموخيّة، الكناديّة، المالايالاميّة، الأوريا، السنهاليّة، التاميليّة، التيلوغو، التيفيناغ، الثاآنا، و4 أخرى48انظر القائمة الكاملة ←

قائمة كاملة برموز ISO 639-3 + ISO 15924 بأسماء إنجليزية في مصدر lang_ids.py، ومجمَّعة بحسب نظام الكتابة مع إشارات بلدية في بطاقة النموذج.

خرج موثَّق

تفريغات من نقل Swift على معيار FLEURS، CoreML 300M:

اللغةالمرجعالخرج
الإنجليزيةFellow wrestlers also paid tribute to Luna.fellow wrestlers also paid tribute to luna
العربيةكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
الهنديةलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
الفرنسيةPensez à l'itinéraire de ski comme à un itinéraire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

متغيّر MLX 300M-4bit يُنتج خرجاً متطابقاً جوهرياً باستثناء حرف أو حرفين. المتغيّرات الأكبر (1B و3B و7B) تخفّض الأخطاء المتبقّية تدريجياً.

المراجع