Traducere automată · Originalul în engleză

Omnilingv ASR

Meta Omnilingual ASR este un limbaj-agnostic vorbire de recunoaștere familia acoperă Limbi 1,672 traversat 32 scripturi distincte bază cea mai largă acoperire lingvistică a oricărui dispozitiv ASR model pe Apple Silicon. Soniqo porturi varianta CTC la ambele CoreML (Neural Engine) și MLX (Metal GPU), cu patru dimensiuni model de la 300De la M la 7 Parametrii B.

CTC pentru agnosticul limbajului

Spre deosebire de Qwen3-ASR sau Parakeet TDT, CTC Omnilingual nu ia un indiciu de limbă la ora de deducţie 10,288-introducerea vocabularul SentincePiece se întinde pe fiecare limbă susținută. Trece orice discurs în orice limbă susținută și modelul produce automat script-ul corect.

Canale audio, rata de eșantionare și formatul de intrare

Utilizați PCM mono Float32 la 16 kHz. CLI acceptă fișiere comune de citire AVFoundation, cum ar fi WAV, MP3, M4A, și CAF, apoi le reevaluează 16 kHz automat. Pentru fișiere stereo sau multicanal, AudioFileLoader.load media tuturor canalelor implicit, astfel încât vorbirea pe orice canal este reținut; utilizarea channelSelection: .first sau .select([indices]) pentru rutare explicită. Pentru înregistrări lungi, AudioFileLoader.stream oferă piese de memorie cu comandă de tragere. atunci când trece o [Float] tamponul direct, furnizează rata sa reală de prelevare de probe CoreML şi MLX punerea în aplicare a reeșantionării interne.

Arhitectură

Omnilingual CTC este un fin-tune supravegheat de Meta's wav2vec 2.0 coloana vertebrală cu un cap CTC liniar peste un vocabular multilingv comun. Conducta este paralelă și non-autoregresivă

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]

La intrarea 16 kHz, encodorul de 320× jos produce rata de cadru de 50 Hz. Un clip de 10 secunde produce 499 de cadre de logits. Decodarea CTC lacom se prăbușește duplicate consecutive și sare jetoane speciale prin tokenizerul SentencePiece.

Model Variante

Zece variante sunt publicate sub aufklater namespace on HuggingFace Doi CoreML dimensiuni ferestre plus opt MLX combinaţii de cuantizare:

Variantă StraturiDimCapeteDimensiune Timp de execuție
CTC-300M-CoreML-INT8 (5 s fereastră) 24102416312 MONeural Engine
CTC-300M-CoreML-INT8 (10 s window) 24102416312 MONeural Engine
CTC-300M-MLX-4bit24102416193 MOMetal GPU
CTC-300M-MLX-8bit24102416342 MOMetal GPU
CTC-1B-MLX-4bit48128020549 MOMetal GPU
CTC-1B-MLX-8bit481280201006 MOMetal 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

Utilizarea 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 suport

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)

Platformă MLX

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

Ambele backend-uri produc în esenţă transcrieri identice modulo 1-2 caractere (cantizare şi diferenţe de timp de funcţionare). Alegeţi pe baza ţintei de implementare:

CoreMLMLX
Calculează țintaNeural EngineMetal GPU
Lungimea de intrareFereastra fixă (5 s sau 10 s) Orice lungime de până la 40 s
Dimensiuni modele Numai 300M300 M / 1B / 3B / 7B
CuantificareINT8 palettizare4-bit sau 8-bit QuantizedLinear
Rulează concomitent cu GPU TTSDa (ANE este independent)Contends with GPU TTS
Sprijin iOSiOS 18+ Orice Apple Silicon iOS

Detalii privind preprocesarea

Omnilingv necesită nivel de exprimare-norm pe forma de undă brută, potrivire fairseq2's apply_audio_normalization:

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

Portul Swift normalizează conținutul audio real înainte de zero-padding la CoreML fereastra fixă, astfel încât intrările sub-fereastra se potrivesc exact cu statisticile conductei de referință. Aceasta este singura cea mai comună groapă portuară HuggingFace Implementarea lui wav2vec2 face grup-norm per-featură, fără a declara strat-norm.

Conducta de referință aplică un capac dur de 40 de secunde (MAX_ALLOWED_AUDIO_SEC) pe audio de intrare. Portul Swift aplică aceeași limită de intrare mai lungă aruncă o eroare clară care indică SpeechVAD sau ParakeetStreamingASR pentru prelucrarea segmentată.

Acoperirea limbii

Suporturi omnilinguale Limbi 1,672 în scripturi 32, inclusiv limbaje 500+ cu sursă redusă, adăugate prin colectarea datelor comunitare.

ScriptLimbi Coduri de eșantionare
Latină1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabă70arb_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, …
Chirilică51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Etiopic10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengali8ben_Beng, asm_Beng, mni_Beng, …
Thai / Lao / Myanmar / Tibetan9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (simplificat / traditional)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Japoneză / coreeană1 / 1jpn_Jpan, kor_Hang
Armeană, georgiană, ebraică, greacă, gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, plus încă 448 Vezi lista completă →

Lista de coduri completă ISO 639-3 + ISO 15924 cu numele în limba engleză în lang_ids.py sursă și grupate pe script cu indicii de țară în model card.

Rezultat verificat

Transcripții din portul Swift pe portul FLEURS de referință, CoreML 300M:

LimbaReferințăIeșire
Engleză Prietenii luptători au plătit şi ei tribut lui Luna.fellow wrestlers also paid tribute to luna
Arabăكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
FrancezăPensez à l'itinéraire de ski comme à un itineraire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

Varianta MLX 300M-4bit produce practic identice cu cele 1-2 caractere de ieșire. Variante mai mari (1B, 3B, 7B) reduc erorile reziduale progresiv.

Referință