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.
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:
| Varian | Lapisan | Dim | Kepala | Ukuran | Runtime |
|---|---|---|---|---|---|
| CTC-300M-CoreML-INT8 (jendela 5) | 24 | 1024 | 16 | 312 MB | Neural Engine |
| CTC-300M-CoreML-INT8 (jendela 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 |
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:
| CoreML | MLX | |
|---|---|---|
| Target komputer | Neural Engine | Metal GPU |
| Panjang masukan | Jendela tetap (5 s atau 10 s) | Panjang hingga 40 s |
| Ukuran model | 300 juta saja | 300M / 1B / 3B / 7B |
| Kuantisasi | INT8 paletisasi | 4-bit atau 8- bit QuantizedLinear |
| RUNS SAAT dengan GPU TTS | Ya (ANE independen) | Contending with GPU TTS |
| Dukungan iOS | iOS 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:
| Skrip | Bahasa | Kode sampel |
|---|---|---|
| Latin | 1,398 | eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, … |
| Arab | 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, … |
| Cyrillic | 51 | rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, … |
| Ethiopic | 10 | amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, … |
| Bengali | 8 | ben_Beng, asm_Beng, mni_Beng, … |
| Thailand / Lao / Myanmar / Tibetan | 9 / 1 / 3 / 6 | tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, … |
| Han (disederhanakan / tradisional) | 6 | cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, … |
| Jepang / Korea | 1 / 1 | jpn_Jpan, kor_Hang |
| Armenia, Georgia, Ibrani, Yunani, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, ditambah 4 lagi | 48 | Lihat 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:
| Bahasa | Referensi | Keluaran |
|---|---|---|
| Inggris | Sesama pegulat juga membayar upeti pada Luna. | fellow wrestlers also paid tribute to luna |
| Arab | كما أثنى الزملاء المصارعون على لونا | كما أثنى الزملاء المصارعون على لونا |
| Hindi | लूना को साथी पहलवानों ने भी श्रद्धांजलि दी | लूना को साथी पहलवानों ने भी सरधांजलीदी |
| Perancis | Pensez à 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
- Kertas: Omnilingual ASR (arXiv 2511.09690)
- implementasi upstream: facebookresearch / omnibahasa-asr (Apache 2.0)
- Swift Sumber port: speech-swift / Sumber / OmnilinggualASR
- Kartu model: docs / model / omnibahasa-asr.md