Terjemahan mesin · Versi asli bahasa Inggris

Omnilingual ASR

Meta Omnilingual ASR adalah sebuah Lmpage- agnostik pengenalan bahasa keluarga meliputi Bahasa 1,672 di seluruh 32 skrip berbeda - cakupan bahasa terluas dari perangkat on- ASR Model hidup Apple Silicon. Soniqo port varian CTC untuk keduanya CoreML (Neural Engine) dan MLX (Metal GPU), dengan empat ukuran model dari 300M ke 7Parameter B.

Bahasa - agnostic CTC

Tidak seperti Qwen3-ASR atau Parakeet TDT, Omnibahasa CTC tidak mengambil petunjuk bahasa pada waktu inferensi - menggunakan berbagi 10,288-entry Kosakata SentencePiece spanning setiap bahasa yang didukung. Pass setiap pidato dalam bahasa yang didukung dan model menghasilkan script yang benar secara otomatis.

Kanal audio, rate cuplikan, dan format masukan

Gunakan mono Float32 PCM at 16 kHz. CLI menerima common AVFountation-dapat dibaca berkas seperti WAV, MP3, M4A, dan CAF, kemudian sampel ulang mereka untuk 16 kHz secara otomatis. Untuk berkas stereo atau multichannel, AudioFileLoader.load rata-rata semua kanal secara baku sehingga bahasa pada saluran apapun dipertahankan; gunakan channelSelection: .first atau .select([indices]) Untuk routing eksplisit Untuk rekaman panjang, AudioFileLoader.stream menyediakan katrol-didorong, bounded- potongan memori. Ketika melewati sebuah [Float] buffer secara langsung, menyediakan nilai sampel aktual - CoreML dan implementasi MLX secara internal.

Arsitektur

Omnilingual CTC adalah fine- lagu Meta yang diawasi wav2vec 2.0 tulang belakang dengan kepala linear CTC lebih dari sebuah kosakata multibahasa bersama. Pipa pipa paralel dan bukan-autoregresif - satu lulus maju per kata, tidak ada loop decoder.

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]

Pada masukan 16 kHz, enkoder 320 × downsabled menghasilkan 50 Hz frame rate. Sebuah klip 10 detik menghasilkan 499 frame logits. Greedy CTC decoding runtuh berturut-turut duplikasi dan melewati token khusus melalui SentencePiece tokenizer.

Variants Model

Sepuluh varian yang diterbitkan di bawah aufklarer namespace on HuggingFace - Dua CoreML ukuran jendela ditambah delapan MLX Kombinasi kuantisasi:

VarianLapisanDimKepalaUkuranRuntime
CTC-300M-CoreML-INT8 (jendela 5)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (jendela 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

Penggunaan 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

Kedua backends menghasilkan pada dasarnya transkrip modulo 1-2 karakter (kuantisasi dan perbedaan waktu-jalan). Pilih berdasarkan target penyebaran anda:

CoreMLMLX
Target komputerNeural EngineMetal GPU
Panjang masukanJendela tetap (5 s atau 10 s)Panjang hingga 40 s
Ukuran model300 juta saja300M / 1B / 3B / 7B
KuantisasiINT8 paletisasi4-bit atau 8- bit QuantizedLinear
RUNS SAAT dengan GPU TTSYa (ANE independen)Contending with GPU TTS
Dukungan iOSiOS 18+Apple Silicon iOS

Preprosesing Detail

Omnibahasa memerlukan tingkat standar pada waveform mentah, pencocokan fairseq2 apply_audio_normalization:

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

Port Swift menormalkan isi audio sebenarnya sebelum zero- padding ke CoreML jendela tetap, sehingga sub- jendela memasukkan statistik referensi pipeline persis. Ini adalah pitfall port tunggal paling umum - HuggingFace's wav2vec2 implementasi melakukan grup-norm per-feature, bukan ucapan layer- norm.

Pipa referensi memaksa sebuah 40- tutup keras kedua (MAX_ALLOWED_AUDIO_SEC) pada audio masukan. Port Swift memaksa batas yang sama - lebih lama masukan melemparkan kesalahan yang jelas menunjuk ke SpeechVAD atau ParakeetStreadmingASR untuk pemrosesan tersegmentasi.

Lipatan Bahasa

Dukungan Omnibahasa Bahasa 1,672 di seluruh 32 skrip, termasuk 500+ Bahasa-bahasa sumber daya rendah ditambahkan melalui pengumpulan data komunitas. cakupan contoh:

SkripBahasaKode sampel
Latin1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arab70arb_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, …
Cyrillic51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Ethiopic10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
Bengali8ben_Beng, asm_Beng, mni_Beng, …
Thailand / Lao / Myanmar / Tibetan9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (disederhanakan / tradisional)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Jepang / Korea1 / 1jpn_Jpan, kor_Hang
Armenia, Georgia, Ibrani, Yunani, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, ditambah 4 lagi48Lihat daftar lengkap.

ISO lengkap 639-3 + ISO 15924 daftar kode dengan nama Inggris dalam lang_ids.py sumber, dan dikelompokkan menurut skrip dengan petunjuk negara di Kartu model.

Keluaran Terverifikasi

Transkrip dari port Swift pada FLEURS benchmark, CoreML 300M:

BahasaReferensiKeluaran
InggrisSesama pegulat juga membayar upeti pada Luna.fellow wrestlers also paid tribute to luna
Arabكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
PerancisPensez à l 'itinéraire de ski comme à un itinéRAire de ranelonnésilaire.pense à létineraire desqui comme un étineraire de rent donner similaire

The MLX 300M-4varian bit menghasilkan pada dasarnya modulo keluaran identik 1-2 karakter, varian besar (1B, 3B, 7B) mengurangi residual error secara progresif.

Referensi