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.
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:
| Varianta | Vrstvy | DimGenericName | Hlavy | Velikost | Běh |
|---|---|---|---|---|---|
| CTC-300M-CoreML-INT8 (okno 5) | 24 | 1024 | 16 | 312 MB | Neural Engine |
| CTC-300M-CoreML-INT8 (okno 10) | 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 |
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í:
| CoreML | MLX | |
|---|---|---|
| Vypočítejte cíl | Neural Engine | Metal GPU |
| Délka vstupu | Pevné okno (5 s nebo 10 s) | Jakákoliv délka až 40 s |
| Velikost modelu | Pouze 300M | 300M / 1B / 3B / 7B |
| Kvantizace | Palettizace INT8 | 4- bit nebo 8-bit QuantizedLinear |
| Běží souběžně s GPU TTS | Ano (ANE je nezávislá) | Obsahuje GPU TTS |
| Podpora iOS | iOS 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.
| Script | Jazyky | Kódy vzorků |
|---|---|---|
| Latinsky | 1,398 | eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, … |
| Arabština | 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, … |
| Cyrilice | 51 | rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, … |
| Etiopie | 10 | amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, … |
| Bengálsko | 8 | ben_Beng, asm_Beng, mni_Beng, … |
| Thai / Lao / Myanmar / Tibet | 9 / 1 / 3 / 6 | tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, … |
| Han (zjednodušený / tradiční) | 6 | cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, … |
| Japonská / korejská | 1 / 1 | jpn_Jpan, kor_Hang |
| Arménské, gruzínské, hebrejské, řecké, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sindala, Tamil, Telugu, Tifinagh, Thaana, plus 4 další | 48 | Viz ú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:
| Jazyk | Reference | Výstup |
|---|---|---|
| English | Kolegové zápasníci také složili Luně hold. | fellow wrestlers also paid tribute to luna |
| Arabština | كما أثنى الزملاء المصارعون على لونا | كما أثنى الزملاء المصارعون على لونا |
| Hindština | लूना को साथी पहलवानों ने भी श्रद्धांजलि दी | लूना को साथी पहलवानों ने भी सरधांजलीदी |
| Francouzština | Pensez à 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
- Papír: Omilingual ASR (arXiv 2511.09690)
- Provedení směrem nahoru: facebookresearch / omnilingual- asr (Apache 2.0)
- Zdroj portu Swift: speech-swift / Zdroje / OmnilingualaSR
- Vzorová karta: docs / models / omnilingual- asr.md