Automatische vertaling · Engels origineel

Niet-linguaal ASR

Meta's Omnilingual ASR is een taal-agnostische spraakherkenningsfamilie die 1,672 talen omvat over 32 afzonderlijke scripts . . de breedste taaldekking van elk on-device ASR model op Apple Silicon. Soniqo ports the CTC› naar beide CoreML (Neural Engine) en MLX (Metal GPU), met vier modelgroottes van 300M naar 7B parameters.

Taalagnostische CTC

In tegenstelling tot Qwen3-ASR of Parakeet TDT, neemt Omnilingual CTC geen taalhint op het moment van het gevolggevingsgespreksgesprekken aan . Het gebruikt een gedeelde 10.288-entry SentencePiece woordenschat die alle ondersteunde talen omvat. Geef elke spraak door in elke ondersteunde taal en het model produceert automatisch het juiste script.

Audiokanalen, sample rate en invoerformaat

Gebruik mono Float32 PCM bij 16 kHz. De CLI accepteert gemeenschappelijke AVFoundation-leesbare bestanden, zoals WAV, MP3 en M4A. Vervolgens hersamplet ze automatisch naar 16 kHz. Voor stereo- of multichannelbestanden, AudioFileLoader.load gemiddelden alle kanalen standaard, zodat spraak op elk kanaal wordt behouden; gebruik channelSelection: .first of .select([indices]) voor expliciete routering. Voor lange opnames, AudioFileLoader.stream zorgt voor trek-gedreven, begrensd-geheugen brokken. [Float] buffer direct, de werkelijke sample rate te verstrekken de CoreML en MLX implementaties intern opnieuw te nemen.

Architectuur

Omnilingual CTC is een onder toezicht staande fijne tune van Meta's wav2vec 2.0 ruggengraat met een lineaire CTC hoofd over een gedeelde meertalige woordenschat. De pijplijn is parallel en niet-autoregressief een voorwaarts pas per uitdrukking, geen decoder 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]

Bij 16 kHz ingang, de 320× down sample encoder produceert 50 Hz frame rate. Een 10-seconde clip produceert 499 frames van logits. Hebzuchtige CTC decodering klapt opeenvolgende duplicaten en slaat speciale tokens over via de SentencePiece tokenizer.

Model Varianten

Tien varianten worden gepubliceerd onder de aufklarer namespace op HuggingFace 2 CoreML venstergrootte plus acht MLX quantification combinaties:

VariantLagenDim Hoofden GrootteStarttijd
CTC-300M-CoreML-INT8 (5 s venster)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (10 s venster)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-8bit128204832 6,63 GBMetal GPU

CLI-gebruik

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

Beide backends produceren in wezen identieke transcripten modulo 1-2 karakters (kwantisering en runtime verschillen). Kies op basis van uw inzetdoel:

CoreMLMLX
Doel berekenenNeural EngineMetal GPU
Invoerlengte Vast venster (5 s of 10 s) Elke lengte tot 40 s
ModelmatenUitsluitend 300M300M / 1B / 3B / 7B
KwantiseringINT8 palettisering4-bit of 8-bit QuantizedLinear
Runt gelijktijdig met GPU TTSJa (ANE is onafhankelijk)Contents with GPU TTS
iOS ondersteuningiOS 18+ Alle Apple Silicon iOS

Voorbewerkingsdetails

Omnilingual vereist een laag-norm op het niveau van de ruwe golfvorm, die overeenkomt met fairseq2 apply_audio_normalization:

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

De Swift poort normaliseert de werkelijke audio-inhoud voor nulvulling naar het CoreML vaste venster, dus subvenster-inputs komen exact overeen met referentie-pijpleidingstatistieken. Dit is de meest voorkomende poort-valkuil-... HuggingFace's wav2vec2 implementatie doet groepsnorm per feature, niet uitroeplaag-norm.

De referentiepijplijn dwingt een 40 seconden harde dop (MAX_ALLOWED_AUDIO_SEC) op input audio af. De Swift poort verplicht dezelfde limiet te handhaven . Langere ingangen gooien een duidelijke fout die wijst naar SpeechVAD of ParakeetStreamingASR voor gesegmenteerde verwerking.

Talendekking

Omnilingual ondersteunt 1,672 talen in 32 scripts, waaronder 500+ low-source talen toegevoegd via het verzamelen van communautaire gegevens.

Script Talen Monstercodes
Latijn1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabisch70arb_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, …
Cyrillisch51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Ethiopisch10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengaals8ben_Beng, asm_Beng, mni_Beng, …
Thais / Lao / Myanmar / Tibetaans9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (vereenvoudigd / traditioneel)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Japans / Koreaans1 / 1jpn_Jpan, kor_Hang
Armeens, Georgisch, Hebreeuws, Grieks, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, plus 4 meer48 Zie volledige lijst →

Volledige ISO 639-3 + ISO 15924 codelijst met Engelse namen in de lang_ids.py bron, en gegroepeerd op script met land hints in de modelkaart.

Geverifieerde uitvoer

Transcripts van de Swift poort op de FLEURS benchmark, CoreML 300M:

TaalReferentie Uitvoer
Engels Medeworstelaars brachten ook hulde aan Luna.fellow wrestlers also paid tribute to luna
Arabischكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
FransPensez à l'itinéraire de ski comme à un itinéraire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

De MLX 300M-4bit variant produceert in wezen identieke uitvoermodus 1-2 tekens. Grotere varianten (1B, 3B, 7B) verminderen de resterende fouten geleidelijk.

Referentie