Tłumaczenie automatyczne · Oryginał angielski

Wszechjęzyczny ASR

Meta. Wszechjęzyczny ASR jest języko- agnostyczne rozpoznawanie mowy rodziny pokrycie Języki 1,672 wzdłuż 32 różne skrypty - najszerszy zakres językowy dowolnego urządzenia ASR model na Apple Silicon. Soniqo wprowadza wariant CTC do obu CoreML (Neural Engine) oraz MLX (Metal GPU), z czterema rozmiarami modelu z 300M do 7Parametry B.

CTC Language- agnostic

W przeciwieństwie do Qwen3-ASR lub Parakeet TDT, Omnillingual CTC nie przyjmuje podpowiedzi językowej w czasie składania wniosków - używa wspólnego słownictwa 10,288- entry SentencePiece, rozchodzącego się po każdym obsługiwanym języku. Przekazywać wszelkie mowy w dowolnym obsługiwanym języku, a model automatycznie tworzy poprawny skrypt.

Kanały audio, częstotliwość próbkowania i format wejściowy

Używać mono Float32 PCM w 16 kHz. CLI akceptuje wspólne pliki do odczytu AVFoundation- dating, takie jak WAV, MP3 i M4A oraz CAF, a następnie automatycznie przetwarza je na 16 kHz. Dla plików stereo lub wielkanałowych, AudioFileLoader.load średnia wartość wszystkich kanałów domyślnie, więc mowa na każdym kanale jest zachowana; channelSelection: .first lub .select([indices]) dla wyraźnego routingu. Dla długich nagrań, AudioFileLoader.stream zapewnia pull- napędzane, odbite-pamięci fragmentów. [Float] bufor bezpośrednio, podać jego rzeczywistą częstotliwość próbkowania - implementacje CoreML i MLX ponownie wewnętrznie.

Architektura

Omnillingual CTC jest nadzorowaną finestracją wav2vec Meta 2.0 kręgosłup z liniową głowicą CTC nad wspólnym wielojęzycznym słownictwem. Gazociąg jest równoległy i nie-autoregresywny - jeden przełęcz do przodu na wymowę, bez pętli dekodera.

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]

Przy wejściu 16 kHz koder 320 × w dół tworzy szybkość ramową 50 Hz. 10-sekundowy klip wytwarza 499 ramek logarytmów. Chciwe dekodowanie CTC zapada kolejne duplikaty i pomija specjalne żetony za pomocą tokenizera SentencePiece.

Warianty modelu

Dziesięć wariantów są publikowane w ramach aufklarer przestrzeń nazw na HuggingFace - dwa rozmiary okien CoreML plus osiem kombinacji kwantyfikacji MLX:

WariantWarstwyDimOrzełRozmiarCzas działania
CTC-300M-CoreML-INT8 (okno 5)24102416312 MBNeural Engine
CTC-300M-CoreML-INT8 (okno 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

Zastosowanie 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

Wtyczka 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)

Wtyczka 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

Oba tła produkują zasadniczo identyczne transkrypcje modulo 1-2 znaków (kwantyfikacja i różnice w czasie biegu). Wybierz na podstawie celu rozmieszczenia:

CoreMLMLX
Oblicz celNeural EngineMetal GPU
Długość wejściaOkno stałe (5 s lub 10 s)Długość do 40 s
Rozmiary modeluWyłącznie 300M300M / 1B / 3B / 7B
IlośćPaletyzacja INT84- bit lub 8-bit QuantizedLinear
Działa jednocześnie z GPU TTSTak (ANE jest niezależna)Podtrzymuje za pomocą GPU TTS
Obsługa iOSiOS 18+Każdy Apple Silicon iOS

Szczegóły dotyczące wstępnego przetwarzania

Wszechjęzyczny wymaga wymownego poziomu layer- norma na surowej formie fali, dopasowanie fairseq2 apply_audio_normalization:

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

Port Swift normalizuje rzeczywistą zawartość dźwięku przed zero- patting do stałego okna CoreML, więc wejścia podokienne pasują dokładnie do danych statystycznych dotyczących rurociągu odniesienia. Jest to jeden z najczęstszych pułapek portowych - implementacja wav2vec2 przez HuggingFace wykonuje funkcję group- norma per- funkcja, a nie utterance layer- norma.

Rurociąg referencyjny 40- druga twarda nasadka (MAX_ALLOWED_AUDIO_SEC) na wejściu audio. Port Swift wymusza ten sam limit - dłuższe wejścia rzucają wyraźny błąd wskazujący na Przemówienie lub ParakeetStreamingASR do przetwarzania segmentowego.

Pokrycie językowe

Wsporniki wszechjęzyczne Języki 1,672 w różnych skryptach 32, w tym w językach niskozasobowych 500+ dodanych poprzez zbieranie danych społeczności.

SkryptJęzykiKody próbek
Łaciński1,398eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, …
Arabski70arb_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, …
Cyrylica51rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, …
Etiopia10amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, …
BengalCity in Germany8ben_Beng, asm_Beng, mni_Beng, …
Tajski / Lao / Myanmar / Tybetański9 / 1 / 3 / 6tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, …
Han (uproszczony / tradycyjny)6cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, …
Japoński / Koreański1 / 1jpn_Jpan, kor_Hang
Ormianin, Gruzini, Hebrajski, Grecki, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thaana, plus 4 więcej48Patrz pełna lista →

Pełny ISO 639-3 + ISO 15924 lista kodów z angielskimi nazwami w lang_ids.py źródła, i zgrupowane według skryptu z podpowiedzi kraju w karta modelowa.

Zweryfikowane wyjście

Transkrypty z portu Swift na FLEURS benchmark, CoreML 300M:

JęzykPróbka referencyjnaWyjście
AngielskiKoledzy zapaśnicy również oddali hołd Lunie.fellow wrestlers also paid tribute to luna
Arabskiكما أثنى الزملاء المصارعون على لوناكما أثنى الزملاء المصارعون على لونا
Hindiलूना को साथी पहलवानों ने भी श्रद्धांजलि दीलूना को साथी पहलवानों ने भी सरधांजलीदी
FrancuskiPensez à l 'itinéraire de ski comme à un itinéRaire de randonnée similaire.pense à létineraire desqui comme un étineraire de rent donner similaire

W MLX 300M-4wariant bitowy produkuje zasadniczo identyczne modulo wyjściowe 1-2 znaki. Większe warianty (1B, 3B, 7B) stopniowe zmniejszanie błędów resztowych.

Próbka referencyjna