Strojový překlad · Anglický originál

Omilingual ASR

Meta 's Omilingual ASR je jazyk-agnostická řeč uznání rodina krytí 1,672 jazyky napříč 32 odlišné skripty - nejširší jazykové pokrytí jakéhokoli on- zařízení ASR model Apple Silicon. Soniqo portuje variantu CTC na obě CoreML (Neural Engine) a MLX (Metal GPU), se čtyřmi rozměry modelu od 300M až 7B parametry.

Language- agnostic CTC

Na rozdíl od Qwen3-ASR nebo Parakeet TDT, Omnilingual CTC nebere jazykovou nápovědu v čase inference - používá sdílený 10,288-entry SentencePick slovní zásobu, která překrývá každý podporovaný jazyk. Projít jakoukoliv řeč v jakémkoli podporovaném jazyce a model automaticky produkuje správný skript.

Zvukové kanály, rychlost odběru vzorků a vstupní formát

Používejte mono Float32 PCM na 16 kHz. CLI přijímá běžné AVFoundation- čitelné soubory, jako například WAV, MP3, M4Aa CAF, pak je přetvoří na 16 automaticky kHz. Pro stereo nebo multikanálové soubory, AudioFileLoader.load průměr všech kanálů ve výchozím nastavení, takže řeč na libovolném kanálu je zachována; použití channelSelection: .first nebo .select([indices]) pro explicitní směrování. Pro dlouhé nahrávky, AudioFileLoader.stream poskytuje pull- poháněné, přeskakující paměťové kousky. [Float] Buffer přímo, poskytnout svůj skutečný počet vzorků - CoreML a MLX implementace resumply interně.

Architektura

Omilingual CTC je pod dohledem fine- tune Meta je wav2vec 2.0 páteře s lineární CTC hlavu přes sdílené vícejazyčné slovní zásoba. Plynovod je paralelní a non-autoregresivní - jeden přední průsmyk na slovo, žádný dekodér smyčka.

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]

Při vstupu 16 kHz, 320 × enkodér se snímkovým vzorkem produkuje 50 Hz frekvenci rámu. 10- sekundový klip produkuje 499 snímků logitů. Greedy CTC dekódování se zhroutí po sobě jdoucích duplikátů a přeskočí speciální tokenenizer SentenSbit.

Vzor Variantů

10 variant je publikováno pod aufklarer jmenný prostor na HuggingFace - dvě velikosti okna CoreML plus osm kombinací kvantifikace MLX:

VariantaVrstvyDimGenericNameHlavyVelikostBěh
CTC-300M-CoreML-INT8 (okno 5)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (okno 10)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

Použití 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

Oba backends produkují v podstatě identické transkripce modulo 1-2 znaky (quanizace a runtime differences). Vyberte si na základě vašeho cíle nasazení:

CoreMLMLX
Vypočítejte cílNeural EngineMetal GPU
Délka vstupuPevné okno (5 s nebo 10 s)Jakákoliv délka až 40 s
Velikost modeluPouze 300M300M / 1B / 3B / 7B
KvantizacePalettizace INT84- bit nebo 8-bit QuantizedLinear
Běží souběžně s GPU TTSAno (ANE je nezávislá)Obsahuje GPU TTS
Podpora iOSiOS 18+Jakékoliv Apple Silicon iOS

Podrobnosti o předběžném zpracování

Omnilingual vyžaduje uterance- level layer- norm na surové vlny, odpovídající fairseq2 apply_audio_normalization:

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

port Swift normalizuje skutečný audio obsah před CoreML pevné okno, takže sub- okenní vstupy přesně odpovídají referenčním statistikám potrubí. Jedná se o nejběžnější portový úskalí - HuggingFace je implementace wav2vec2 má group- norm per- funkce, ne uterance laier- norm.

Referenční ropovod upevní druhou tvrdou patici 40- (MAX_ALLOWED_AUDIO_SEC) na vstupním audio. port Swift prosazuje stejný limit - delší vstupy hází jasnou chybu ukazující na SpeechVAD nebo ParakeetStreamingASR pro částečné zpracování.

Jazykové pokrytí

Omnilingual supports 1,672 jazyky napříč skripty 32, včetně jazyků 500+ low-resource přidaných prostřednictvím sběru dat komunity.

ScriptJazykyKódy vzorků
Latinsky1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabština70arb_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, …
Cyrilice51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Etiopie10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengálsko8ben_Beng, asm_Beng, mni_Beng, …
Thai / Lao / Myanmar / Tibet9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (zjednodušený / tradiční)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Japonská / korejská1 / 1jpn_Jpan, kor_Hang
Arménské, gruzínské, hebrejské, řecké, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sindala, Tamil, Telugu, Tifinagh, Thaana, plus 4 další48Viz úplný seznam →

Plná ISO 639-3 + ISO 15924 číselník s anglickými jmény v lang_ids.py zdroj, a seskupeno podle skriptu s náznaky země v vzorová karta.

Ověřený výstup

Přepisy z portu Swift na FLEURS referenční hodnota, CoreML 300M:

JazykReferenceVýstup
EnglishKolegové zápasníci také složili Luně hold.fellow wrestlers also paid tribute to luna
Arabštinaكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindštinaलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
FrancouzštinaPensez à l 'itinéraire de ski comme à un itinéreire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

V MLX 300M...4bitová varianta produkuje v podstatě identický výstupní modul 1-2 znaky. Větší varianty (1B, 3B, 7B) postupně snižovat zbytkové chyby.

Reference