Awtomatikong salin · Orihinal sa Ingles
Omnilingual ASR
Meta's Omnilingual ASR ay isang wikang-agnostikong pananalita na kinikilalang takip ng pamilya 1,672 mga wika sa ibayo 32 Kakaibang mga iskrip — ang pinakamalawak na wika na sumasaklaw sa anumang on-device ASR modelo sa Apple Silicon. Soniqo ang CTC variable sa dalawang ito CoreML (Neural Engine) at MLX (Metal GPU), na may apat na huwarang sukat mula sa 300M to 7 Mga B parameter.
Hindi tulad ng Qwen3-ASR o Parakeet TDT, Omnilingual CTC ay hindi kumukuha ng pahiwatig ng wika sa oras ng repleksiyon – ito ay gumagamit ng kabahaging 10,288-entry na bokabularyong encreasePiece na sumasaklaw sa bawat suportadong wika. Dadaan ang anumang pagsasalita sa anumang suportadong wika at ang modelo ay gumagawa ng tamang iskrip nang kusa.
Mga channel ng audio, sampol, at input format
Gumamit ng mono Float32 PCM sa 16 kHz. Tinatanggap ng CLI ang karaniwang mga talaksang AVFoundation-readable tulad ng WAV, MP3, M4A, at ang CAF, pagkatapos ay muling mag - isip sa kanila 16 kHz. Para sa stereo o multichannel files, AudioFileLoader.load Ang lahat ng channel sa pamamagitan ng default song pagsasalita sa anumang channel ay pinananatili; gamitin channelSelection: .first o .select([indices]) Para sa mahabang rekording, AudioFileLoader.stream ay nagbibigay ng hila-drilln, naka-drove-memory na mga tipak. kapag dumadaan sa isang draft-dripn [Float] Botany direkta, magbigay ng aktwal na sampol na rate nito na staificthe CoreML at MLX na pagpapatupad na resample indibidwal.
Arkitektura
Ang Omnilingual CTC ay isang pinangangasiwaang pinong-tune ng wav2vec 2.0 gulugod na may linear CTC na ulo sa ibabaw ng isang kabahaging bokabularyong multilingwal. Ang tubo ay magkahanay at hindi-autoregressive – isang pasulong na pagpasa kada salita, walang decoder presipitasyon.
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]
Sa 16 kHz input, ang 320× downsampled regulator ay gumagawa ng 50 Hz frame rate. Ang isang 10-second clip ay gumagawa ng 499 frame ng logits.Ang kasakimang CTC decoding ay nagreresulta sa mga sunod sunod na paggaya at pag-eanalisa ng mga espesyal na token sa pamamagitan ng judgePiece totizer.
Modelong mga Variante
Sampung pagkakaiba ang inilalathala sa ilalim ng tagapagpakilala Pangalanspace sa HuggingFace — dalawa CoreML laki ng bintana at walo MLX Mga kombinasyon ng quansisyon:
| Kaurian | Mga tagapaglatag | Dim | Ulo | Laki | Oras ng Pagtakbo |
|---|---|---|---|---|---|
| CTC-300M-CoreML-INT8 (5 s window) | 24 | 1024 | 16 | 312 MB | Neural Engine |
| CTC-300M-CoreML-INT8 (10 s window) | 24 | 1024 | 16 | 312 MB | Neural Engine |
| CTC-300M-MLX-4bit | 24 | 1024 | 16 | 193 MB | Metal GPU |
| CTC-300M-MLX-8bit | 24 | 1024 | 16 | 342 MB | Metal GPU |
| CTC-1B-MLX-4bit | 48 | 1280 | 20 | 549 MB | Metal GPU |
| CTC-1B-MLX-8bit | 48 | 1280 | 20 | 1006 MB | Metal GPU |
| CTC-3B-MLX-4bit | 60 | 2048 | 32 | 1.71 GB | Metal GPU |
| CTC-3B-MLX-8bit | 60 | 2048 | 32 | 3.16 GB | Metal GPU |
| CTC-7B-MLX-4bit | 128 | 2048 | 32 | 3.55 GB | Metal GPU |
| CTC-7B-MLX-8bit | 128 | 2048 | 32 | 6.63 GB | Metal GPU |
Paggamit ng CLI
CoreML (Neural Engine)
# 10 s window (default)
.build/release/speech transcribe recording.wav --engine omnilingual
# 5 s window (lower memory, faster cold start)
.build/release/speech transcribe recording.wav --engine omnilingual --window 5
MLX (Metal GPU)
# 300M @ 4-bit (default MLX variant)
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx
# 1B @ 4-bit — higher accuracy
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 1B
# 3B @ 8-bit — approaching reference quality
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8
# 7B @ 4-bit — largest CTC variant, best accuracy
.build/release/speech 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 vs MLX
Ang parehong backends ay gumagawa ng halos magkaparehong transcripts modulo 1-2 characters (quantisation at runtime districts). Pumili batay sa iyong target na pang-setment:
| CoreML | MLX | |
|---|---|---|
| Tumusunod na target | Neural Engine | Metal GPU |
| Ilagay ang haba | Nakalagay na bintana (5 s o 10 s) | Anumang haba hanggang 40 s |
| Modelong sukat | 300M lamang | 300M / / 1B / 3B / 7B |
| Pagpapakahulugan | INT8 paletization | 4-bit o 8-bit QuantizedLinear |
| Tumatakbong kasabay ng GPU TTS | Oo (ang babae ay independiyente) | Mga kombinatoryal na may GPU TTS |
| Tulong na iOS | iOS 18+ | Anumang Apple Silicon iOS |
Pagproseso ng mga Detalye
Ang omnilingual ay nangangailangan ng telfy-level layer-norm sa hilaw na waveform, magkapares na fairseq2's apply_audio_normalization:
normalized = (audio - mean(audio)) / sqrt(variance(audio) + 1e-5)
Ang port na Swift ay normal na tumatalakay sa tunay na nilalamang audio bago Ang sero-panding sa CoreML ay nag-ayos ng window, kaya ang mga sub-window input ay eksaktong nagreresulta sa reference pipeline statistics. Ito ang nag-iisang pinaka-karaniwang port trap — ang HuggingFace's wav2vec2 na pagpapatupad ay gumagawa ng group-norm per-feature, hindi nagsasabi ng layer-norm.
Ang reference pipeline ay nagpapatupad ng 40-pangalawang matigas na takip (MAX_ALLOWED_AUDIO_SEC) sa input audio. Ang Swift port ay nagpapatupad din ng parehong limitasyon — mas mahabang inputs ay naghahagis ng malinaw na pagkakamali na nakaturo sa SpeechVAD o PAParakeetStreamingASR/3 segment para sa pagpoproseso.
Pagsaklaw ng Wika
Mga suporta ng mga omnilingwal 1,672 mga wika Sa ibayo ng 32 scripts, kabilang ang 500+ low-resource language idinagdag sa pamamagitan ng community data collection. Sample coverage:
| Script | Wika | Mga kodigo ng Sample |
|---|---|---|
| Latin | 1,398 | eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, … |
| Arabe | 70 | arb_Arab, arz_Arab, ary_Arab, arq_Arab, fas_Arab, urd_Arab, ckb_Arab, uig_Arab, … |
| Devanagari | 65 | hin_Deva, mar_Deva, nep_Deva, bho_Deva, mai_Deva, awa_Deva, brx_Deva, … |
| Ang Cyrillic | 51 | rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, … |
| Ethiopiko | 10 | amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, … |
| Bengali | 8 | ben_Beng, asm_Beng, mni_Beng, … |
| Thai / Lao / Myanmar / Tibetano | 9 / 1 / 3 / 6 | tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, … |
| Han (pinasimple / tradisyunal) | 6 | cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, … |
| Hapon / Koreano | 1 / 1 | jpn_Jpan, kor_Hang |
| Armenian, Georgian, Hebreo, Griego, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, at 4 pa | 48 | Tingnan ang buong listahan → |
Buong ISO 639-3 + ISO 15924 Listahan ng kodigo na may mga pangalang Ingles sa lang_ids.py at pinag - uugnay - ugnay sa pamamagitan ng iskrip na may mga pahiwatig ng lalawigan modelong kard.
Pinalitang I labas
Mga transcript mula sa Swift port sa FLEURS benchmark, CoreML 300M:
| Wika | Sanggunian | Ilabas |
|---|---|---|
| Tagalog | Ang mga kapwa wrestler ay nagbayad din ng tributo kay Luna. | fellow wrestlers also paid tribute to luna |
| Arabe | كما أثنى الزملاء المصارعون على لونا | كما أثنى الزملاء المصارعون على لونا |
| Hindi | लूना को साथी पहलवानों ने भी श्रद्धांजलि दी | लूना को साथी पहलवानों ने भी सरधांजलीदी |
| Pranses | Pensez à l'itinéraire de ski comme à un iinérairee de rundonnée similaire. | pense à létineraire desqui comme un étineraire de rent donner similaire |
Ang MLX 300M-4bit variant ay gumagawa ng halos magkaparehong output modulo 1-2 character. mas malaking variants (1B, 3B, 7B) unti-unting nababawasan ang mga pagkakamali sa pag-iral.
Sanggunian
- Papel: Omnilingual ASR (arXiv 2511.09690)
- Pagpapatupad sa itaas: facebookrese/omnilingual-asr (Apache 2.0)
- Swift port source: speech-swift/Sources/OmnilingualASR
- Modelong kard: docs/models/omnilingual-asr.md