Omnilingual ASR

Meta का Omnilingual ASR एक भाषा-अज्ञेय स्पीच रिकग्निशन परिवार है जो 32 अलग लिपियों में 1,672 भाषाओं को कवर करता है — Apple Silicon पर किसी भी ऑन-डिवाइस ASR मॉडल की सबसे व्यापक भाषा कवरेज। Soniqo CTC variant को CoreML (Neural Engine) और MLX (Metal GPU) दोनों पर पोर्ट करता है, 300M से 7B पैरामीटर तक चार मॉडल आकारों के साथ।

भाषा-अज्ञेय CTC

Qwen3-ASR या Parakeet TDT के विपरीत, Omnilingual CTC इन्फ़रेंस समय पर भाषा संकेत नहीं लेता है — यह प्रत्येक समर्थित भाषा को span करने वाले एक साझा 10,288-entry SentencePiece vocabulary का उपयोग करता है। किसी भी समर्थित भाषा में कोई भी ऑडियो pass करें और मॉडल स्वचालित रूप से सही script उत्पन्न करता है।

आर्किटेक्चर

Omnilingual CTC Meta के wav2vec 2.0 backbone का एक शेयर्ड बहुभाषी vocabulary पर linear CTC head के साथ supervised fine-tune है। पाइपलाइन parallel और non-autoregressive है — प्रति utterance एक forward pass, कोई decoder loop नहीं।

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 input पर, 320× downsampled encoder 50 Hz frame rate उत्पन्न करता है। एक 10-सेकंड clip logits के 499 frames उत्पन्न करता है। Greedy CTC decoding लगातार duplicates को collapse करता है और SentencePiece tokenizer के माध्यम से special tokens को skip करता है।

मॉडल वेरिएंट

HuggingFace पर aufklarer namespace के तहत दस वेरिएंट प्रकाशित हैं — दो CoreML window sizes प्लस आठ MLX quantisation combinations:

वेरिएंटLayersDimHeadsआकारRuntime
CTC-300M-CoreML-INT8 (5 s window)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (10 s window)24102416312 MBNeural Engine
CTC-300M-MLX-4bit24102416193 MBMetal GPU
CTC-300M-MLX-8bit24102416342 MBMetal GPU
CTC-1B-MLX-4bit48128020549 MBMetal GPU
CTC-1B-MLX-8bit481280201006 MBMetal GPU
CTC-3B-MLX-4bit602048321.71 GBMetal GPU
CTC-3B-MLX-8bit602048323.16 GBMetal GPU
CTC-7B-MLX-4bit1282048323.55 GBMetal GPU
CTC-7B-MLX-8bit1282048326.63 GBMetal GPU

CLI उपयोग

CoreML (Neural Engine)

# 10 s window (default)
.build/release/audio transcribe recording.wav --engine omnilingual

# 5 s window (lower memory, faster cold start)
.build/release/audio transcribe recording.wav --engine omnilingual --window 5

MLX (Metal GPU)

# 300M @ 4-bit (default MLX variant)
.build/release/audio transcribe recording.wav --engine omnilingual --backend mlx

# 1B @ 4-bit — higher accuracy
.build/release/audio transcribe recording.wav --engine omnilingual --backend mlx --variant 1B

# 3B @ 8-bit — approaching reference quality
.build/release/audio transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8

# 7B @ 4-bit — largest CTC variant, best accuracy
.build/release/audio transcribe recording.wav --engine omnilingual --backend mlx --variant 7B

Swift API

CoreML backend

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 backend

import OmnilingualASR

// Default: 300M @ 4-bit
let model = try await OmnilingualASRMLXModel.fromPretrained()

// Larger variants
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

दोनों बैकएंड modulo 1-2 characters (quantisation और runtime अंतर) अनिवार्य रूप से समान transcripts उत्पन्न करते हैं। अपने डिप्लॉयमेंट टारगेट के आधार पर चुनें:

CoreMLMLX
Compute targetNeural EngineMetal GPU
Input lengthFixed window (5 s या 10 s)40 s तक कोई भी length
मॉडल आकारकेवल 300M300M / 1B / 3B / 7B
QuantisationINT8 palettization4-bit या 8-bit QuantizedLinear
GPU TTS के साथ समवर्ती चलता हैहाँ (ANE स्वतंत्र है)GPU TTS से competition करता है
iOS समर्थनiOS 17+कोई भी Apple Silicon iOS

प्रीप्रोसेसिंग विवरण

Omnilingual raw waveform पर utterance-level layer-norm की आवश्यकता होती है, fairseq2 के apply_audio_normalization से मेल खाते हुए:

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

Swift port CoreML fixed window पर zero-padding से पहले real audio content को normalise करता है, इसलिए sub-window inputs reference pipeline statistics से बिल्कुल मेल खाते हैं। यह एकमात्र सबसे सामान्य port pitfall है — HuggingFace का wav2vec2 कार्यान्वयन utterance layer-norm नहीं, per-feature group-norm करता है।

Reference पाइपलाइन input audio पर एक 40-सेकंड hard cap (MAX_ALLOWED_AUDIO_SEC) लागू करती है। Swift port भी समान सीमा लागू करता है — लंबे inputs segmented प्रोसेसिंग के लिए SpeechVAD या ParakeetStreamingASR की ओर इशारा करते हुए स्पष्ट error throw करते हैं।

भाषा कवरेज

Omnilingual 32 लिपियों में 1,672 भाषाओं का समर्थन करता है, जिसमें समुदाय डेटा संग्रह के माध्यम से जोड़ी गई 500+ low-resource भाषाएँ शामिल हैं। नमूना कवरेज:

लिपिभाषाएँनमूना कोड
Latin1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabic70arb_Arab, arz_Arab, ary_Arab, arq_Arab, fas_Arab, urd_Arab, ckb_Arab, uig_Arab, …
Devanagari65hin_Deva, mar_Deva, nep_Deva, bho_Deva, mai_Deva, awa_Deva, brx_Deva, …
Cyrillic51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Ethiopic10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengali8ben_Beng, asm_Beng, mni_Beng, …
Thai / Lao / Myanmar / Tibetan9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (simplified / traditional)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Japanese / Korean1 / 1jpn_Jpan, kor_Hang
Armenian, Georgian, Hebrew, Greek, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, और 4 अधिक48पूर्ण सूची देखें →

पूर्ण ISO 639-3 + ISO 15924 कोड सूची lang_ids.py source में English नामों के साथ, और model card में country hints के साथ script द्वारा समूहित।

सत्यापित आउटपुट

FLEURS benchmark पर Swift port से transcripts, CoreML 300M:

भाषाReferenceआउटपुट
EnglishFellow wrestlers also paid tribute to Luna.fellow wrestlers also paid tribute to luna
Arabicكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
FrenchPensez à 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 variant modulo 1-2 characters अनिवार्य रूप से समान output उत्पन्न करता है। बड़े variants (1B, 3B, 7B) क्रमिक रूप से residual errors को कम करते हैं।

संदर्भ