Maskinoversættelse · Engelsk original

Omnilingual ASR

Meta 's Omnilingual ASR er en sprog- agnostic talegenkendelse familie dækker 1,672 sprog på tværs 32 særskilte scripts - den bredeste sprogdækning af enhver on- enhed ASR model den Apple Silicon. Soniqo sender CTC-varianten til begge CoreML (Neural Engine) og MLX (Metal GPU), med fire modeller størrelser fra 300M til 7B parametre.

Language- agnostic CTC

I modsætning til Qwen3-ASR eller Parakeet TDT, tager Omnilingual CTC ikke et sprogvink på inferens tid - det bruger en delt 10,288- entry SentencePiece ordforråd, der spænder over alle understøttede sprog.

Lydkanaler, samplingfrekvens og inputformat

Brug mono Float32 PCM på 16 kHz. CLI accepterer almindelige AVFoundation- læsbare filer såsom WAV, MP3 og M4A samt CAF, derefter resamples dem til 16 kHz automatisk. AudioFileLoader.load gennemsnit alle kanaler som standard, så tale på enhver kanal er bevaret; brug channelSelection: .first eller .select([indices]) for eksplicitte ruter. AudioFileLoader.stream giver pull- drevne, hoppet-memory stykker. [Float] buffer direkte, give sin faktiske stikprøve rate - CoreML og MLX implementeringer genample internt.

Arkitektur

Omnilingual CTC er en overvåget fine- tune af Meta 's wav2vec 2.0 rygrad med en lineær CTC hoved over et delt flersproget ordforråd. Rørledningen er parallel og ikke-auto-regressive - en fremadrettet pass per ytterance, ingen dekoder 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]

Ved 16 kHz input producerer 320 × downsamples encoder 50 Hz frame rate. En 10-sekunders klip producerer 499 rammer logits. Greedy CTC dekodning kollapser på hinanden følgende duplikater og springer specielle tokens via SentenePiece Requizer.

Model Variants

Der offentliggøres ti varianter i henhold til unit synonyms for matching user input namespace på HuggingFace - to CoreML vinduesstørrelser plus otte MLX kvantificeringskombinationer:

VariantLagDimHovederStørrelseLøbetid
CTC-300M-CoreML-INT8 (5 s vindue)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (10 s vindue)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-brug

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-motor

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-motor

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

Begge backends producere stort set identiske transskripter modulo 1-2 tegn (kvantisering og runtime forskelle). Vælg baseret på din implementering mål:

CoreMLMLX
Beregn målNeural EngineMetal GPU
InputlængdeFast vindue (5 s eller 10 s)Enhver længde op til 40 s
StandardstørrelserKun 300M300M / 1B / 3B / 7B
KvantificeringINT8 palætisering4- bit eller 8-bit QuantizedLinear
Kører samtidig med GPU TTSJa (ANE er uafhængig)Påstår med GPU TTS
iOS støtteiOS 18+Enhver Apple Silicon iOS

Forbehandling af oplysninger

Omnilingual kræver uterance- niveau layer- normen på rå kurveform, matchende fairseq2 'er apply_audio_normalization:

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

Swift porten normaliserer det virkelige lydindhold før zero- polstring til CoreML fast vindue, så undervinduesindgange matcher referencerørledningsstatistik nøjagtigt. Dette er den mest almindelige havnefaldgrube - HuggingFace's wav2vec2 implementering er gruppe- normen per- feature, ikke ytter- normen.

Referencerørledningen gennemtvinger en 40- anden hård hætte (MAX_ALLOWED_AUDIO_SEC) på input audio. Swift port håndhæver den samme grænse - længere indgange kaster en klar fejl peger på SpeechVAD eller ParakeetStreamingASR for segmenteret forarbejdning.

Sprogdækning

Omnillingual support 1,672 sprog på tværs af 32 scripts, herunder 500+ lavressourcesprog tilføjet via community dataindsamling. Stikprøvedækning:

ScriptSprogStikprøvekoder
LatinName1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabisk70arb_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, …
Kyrillisk51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
etiopisk10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengali8ben_Beng, asm_Beng, mni_Beng, …
Thai / Lao / Myanmar / tibetansk9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (forenklet / traditionel)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Japansk / koreansk1 / 1jpn_Jpan, kor_Hang
Armensk, georgisk, hebraisk, græsk, Gujarati, Gurmukhi, Kannada, malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, plus 4 mere48Se fuld liste →

Fuld ISO 639-3 + ISO 15924 kodeliste med engelske navne i lang_ids.py kilde, og grupperet efter script med land hints i modelkort.

Verificeret output

Udskrifter fra Swift havn på FLEURS benchmark, CoreML 300M:

SprogReferenceOutput
EngelskKollektive brydere har også hyldet Luna.fellow wrestlers also paid tribute to luna
Arabiskكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
FranskPensez à l 'itinéraire de ski comme à un itinéracire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

Den MLX 300M-4bit variant producerer stort set identiske output modulo 1-2 tegn. Større varianter (1B 3B 7B) reducere resterende fejl gradvist.

Reference