Omnilingual ASR

Omnilingual ASR của Meta là một họ mô hình nhận dạng giọng nói không phụ thuộc ngôn ngữ, bao phủ 1.672 ngôn ngữ trên 32 hệ chữ viết khác nhau — phạm vi ngôn ngữ rộng nhất của bất kỳ mô hình ASR trên thiết bị nào trên Apple Silicon. Soniqo chuyển biến thể CTC sang cả CoreML (Neural Engine) lẫn MLX (GPU Metal), với bốn kích thước mô hình từ 300M đến 7B tham số.

CTC không phụ thuộc ngôn ngữ

Khác với Qwen3-ASR hay Parakeet TDT, Omnilingual CTC không nhận gợi ý ngôn ngữ tại thời điểm suy luận — nó sử dụng vốn từ vựng SentencePiece chia sẻ 10.288 mục trải khắp mọi ngôn ngữ được hỗ trợ. Truyền bất kỳ giọng nói nào bằng bất kỳ ngôn ngữ được hỗ trợ nào và mô hình sẽ tự động tạo ra hệ chữ viết đúng.

Kiến trúc

Omnilingual CTC là bản fine-tune có giám sát của backbone wav2vec 2.0 của Meta với một CTC head tuyến tính trên vốn từ vựng đa ngôn ngữ chia sẻ. Pipeline song song và không tự hồi quy — một forward pass cho mỗi câu thoại, không có vòng lặp 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]

Ở đầu vào 16 kHz, encoder downsample ×320 tạo ra tốc độ frame 50 Hz. Một clip 10 giây tạo ra 499 frame logits. Giải mã greedy CTC gộp các bản sao liên tiếp và bỏ qua các token đặc biệt thông qua tokenizer SentencePiece.

Biến thể mô hình

Có mười biến thể được công bố dưới namespace aufklarer trên HuggingFace — hai kích thước cửa sổ CoreML cộng với tám tổ hợp lượng tử hoá MLX:

Biến thểLớpDimHeadDung lượngRuntime
CTC-300M-CoreML-INT8 (cửa sổ 5 s)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (cửa sổ 10 s)24102416312 MBNeural Engine
CTC-300M-MLX-4bit24102416193 MBGPU Metal
CTC-300M-MLX-8bit24102416342 MBGPU Metal
CTC-1B-MLX-4bit48128020549 MBGPU Metal
CTC-1B-MLX-8bit481280201006 MBGPU Metal
CTC-3B-MLX-4bit602048321.71 GBGPU Metal
CTC-3B-MLX-8bit602048323.16 GBGPU Metal
CTC-7B-MLX-4bit1282048323.55 GBGPU Metal
CTC-7B-MLX-8bit1282048326.63 GBGPU Metal

Sử dụng CLI

CoreML (Neural Engine)

# cửa sổ 10 s (mặc định)
.build/release/speech transcribe recording.wav --engine omnilingual

# cửa sổ 5 s (bộ nhớ thấp hơn, khởi động nguội nhanh hơn)
.build/release/speech transcribe recording.wav --engine omnilingual --window 5

MLX (GPU Metal)

# 300M @ 4-bit (biến thể MLX mặc định)
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx

# 1B @ 4-bit — độ chính xác cao hơn
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 1B

# 3B @ 8-bit — tiến gần chất lượng tham chiếu
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8

# 7B @ 4-bit — biến thể CTC lớn nhất, độ chính xác tốt nhất
.build/release/speech transcribe recording.wav --engine omnilingual --backend mlx --variant 7B

API Swift

Backend CoreML

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)

Backend MLX

import OmnilingualASR

// Mặc định: 300M @ 4-bit
let model = try await OmnilingualASRMLXModel.fromPretrained()

// Biến thể lớn hơn
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 so với MLX

Cả hai backend đều tạo ra bản chuyển lời nói về cơ bản giống hệt nhau ngoại trừ 1-2 ký tự (khác biệt do lượng tử hoá và runtime). Hãy chọn theo mục tiêu triển khai của bạn:

CoreMLMLX
Mục tiêu tính toánNeural EngineGPU Metal
Độ dài đầu vàoCửa sổ cố định (5 s hoặc 10 s)Bất kỳ độ dài nào đến 40 s
Kích thước mô hìnhChỉ 300M300M / 1B / 3B / 7B
Lượng tử hoáPalettization INT84-bit hoặc 8-bit QuantizedLinear
Chạy đồng thời với TTS trên GPUCó (ANE độc lập)Tranh chấp với TTS trên GPU
Hỗ trợ iOSiOS 18+Mọi iOS Apple Silicon

Chi tiết tiền xử lý

Omnilingual yêu cầu layer-norm ở cấp câu thoại trên dạng sóng thô, tương ứng với apply_audio_normalization của fairseq2:

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

Bản chuyển sang Swift chuẩn hoá nội dung âm thanh thật trước khi zero-padding tới cửa sổ cố định của CoreML, do đó đầu vào nhỏ hơn cửa sổ vẫn khớp chính xác với thống kê pipeline tham chiếu. Đây là cạm bẫy thường gặp nhất khi chuyển port — bản triển khai wav2vec2 của HuggingFace dùng group-norm theo đặc trưng, không phải layer-norm cấp câu thoại.

Pipeline tham chiếu áp giới hạn cứng 40 giây (MAX_ALLOWED_AUDIO_SEC) trên âm thanh đầu vào. Bản chuyển sang Swift áp cùng giới hạn — đầu vào dài hơn sẽ ném một lỗi rõ ràng chỉ tới SpeechVAD hoặc ParakeetStreamingASR để xử lý theo phân đoạn.

Phạm vi ngôn ngữ

Omnilingual hỗ trợ 1.672 ngôn ngữ trên 32 hệ chữ viết, bao gồm hơn 500 ngôn ngữ tài nguyên thấp được bổ sung qua việc thu thập dữ liệu cộng đồng. Mẫu phạm vi:

Hệ chữ viếtNgôn ngữMã ví dụ
Latin1.398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Ả Rập70arb_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, …
Thái / Lào / Miến Điện / Tạng9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Hán (giản thể / phồn thể)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Nhật / Hàn1 / 1jpn_Jpan, kor_Hang
Armenia, Georgia, Hebrew, Hy Lạp, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, cộng thêm 4 hệ khác48Xem danh sách đầy đủ →

Danh sách mã ISO 639-3 + ISO 15924 đầy đủ với tên tiếng Anh có trong mã nguồn lang_ids.py, và được nhóm theo hệ chữ viết kèm gợi ý quốc gia trong thẻ mô hình.

Đầu ra đã xác thực

Các bản chuyển lời nói từ bản chuyển Swift trên benchmark FLEURS, CoreML 300M:

Ngôn ngữTham chiếuĐầu ra
Tiếng AnhFellow wrestlers also paid tribute to Luna.fellow wrestlers also paid tribute to luna
Tiếng Ả Rậpكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Tiếng Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
Tiếng PhápPensez à l'itinéraire de ski comme à un itinéraire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

Biến thể MLX 300M-4bit cho đầu ra về cơ bản giống hệt ngoại trừ 1-2 ký tự. Các biến thể lớn hơn (1B, 3B, 7B) giảm dần lỗi còn lại.

Tham khảo