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.

Wika-agnostikong CTC

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 tagapaglatagDim Ulo Laki Oras ng Pagtakbo
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-4bit60204832 1.71 GBMetal GPU
CTC-3B-MLX-8bit602048323.16 GBMetal GPU
CTC-7B-MLX-4bit1282048323.55 GBMetal GPU
CTC-7B-MLX-8bit1282048326.63 GBMetal 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:

CoreMLMLX
Tumusunod na targetNeural EngineMetal GPU
Ilagay ang habaNakalagay na bintana (5 s o 10 s) Anumang haba hanggang 40 s
Modelong sukat300M lamang300M / / 1B / 3B / 7B
PagpapakahuluganINT8 paletization4-bit o 8-bit QuantizedLinear
Tumatakbong kasabay ng GPU TTS Oo (ang babae ay independiyente) Mga kombinatoryal na may GPU TTS
Tulong na iOSiOS 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
Latin1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabe70arb_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, …
Ang Cyrillic51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Ethiopiko10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengali8ben_Beng, asm_Beng, mni_Beng, …
Thai / Lao / Myanmar / Tibetano9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (pinasimple / tradisyunal)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Hapon / Koreano1 / 1jpn_Jpan, kor_Hang
Armenian, Georgian, Hebreo, Griego, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, at 4 pa48 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:

WikaSanggunianIlabas
Tagalog Ang mga kapwa wrestler ay nagbayad din ng tributo kay Luna.fellow wrestlers also paid tribute to luna
Arabeكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
PransesPensez à 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