Konekäännös · Englanninkielinen alkuperäinen
Kokokielinen ASR
Meta Omnilingual ASR on kieli-agnostinen puheentunnistus perhe kattaa 1,672 kielet yli 32 erilliset skriptit ... Laajin kieli kattavuus on-laite ASR malli Apple Silicon. Soniqo portit CTC-variantti molempiin CoreML (Neural Engine) ja MLX (Metal GPU), jossa on neljä mallikokoa 300M- 7B parametrit.
Toisin kuin Qwen3-ASR tai Parakeet TDT, Omnilingual CTC ei ota kielivihjettä päättelyaikaan . Se käyttää yhteistä 10,288-entry SentencePiece -sanastoa, joka kattaa kaikki tuetut kielet. Syötä kaikki puheet millä tahansa tuetulla kielellä ja malli tuottaa oikean skriptin automaattisesti.
Äänikanavat, näytteenottonopeus ja syöttömuoto
Käytetään mono-Float32 PCM:tä 16 kHz:ssä. CLI hyväksyy yhteiset AVFounducation-luettavat tiedostot, kuten WAV, MP3, M4A, ja CAF, sitten uudelleen näytetään ne 16 KHES automaattisesti. Stereo- tai monikanavatiedostoja varten AudioFileLoader.load keskiarvot kaikki kanavat oletusarvoisesti, joten puhe millä tahansa kanavalla säilytetään; channelSelection: .first tai .select([indices]) suorassa reitityksessä. Pitkän tallennuksen osalta AudioFileLoader.stream tarjoaa veto-ohjattuja, rajoitettu-muisti paloja. [Float] puskuri suoraan, anna sen todellinen näytteenottonopeus.... CoreML ja MLX-toteutukset otetaan uudelleen sisäisesti.
Arkkitehtuuri
Omnilingual CTC on valvottu hienosäätö Metan wav2vec 2.0 selkäranka, jossa on lineaarinen CTC pää jaetussa monikielisessä sanastossa. Putkijohto on rinnakkainen ja ei-autoreaggressiivinen .
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]
16 kHz:n sisääntulolla 320× alas otettu enkooderi tuottaa 50 Hz:n kuvanopeuden. 10 sekunnin leike tuottaa 499 lokikirjaketta. Ahne CTC-koodaus romahtaa peräkkäisiä kaksoiskappaleita ja ohittaa erikoiskuponkia SentencePiece-potentisoijan kautta.
Mallivaihtoehdot
Kymmenen versiota on julkaistu alla aufklareri nimiavaruus HuggingFace ... kahdella CoreML-ikkunakoolla sekä kahdeksalla MLX:n kvantitointiyhdistelmällä:
| Variantti | Tasot | Dim | Pää | Koko | Suoritusaika |
|---|---|---|---|---|---|
| CTC-300M-CoreML-INT8 (5 s-ikkuna) | 24 | 1024 | 16 | 312 Mt | Neural Engine |
| CTC-300M-CoreML-INT8 (10 s-ikkuna) | 24 | 1024 | 16 | 312 Mt | Neural Engine |
| CTC-300M-MLX-4bit | 24 | 1024 | 16 | 193 Mt | Metal GPU |
| CTC-300M-MLX-8bit | 24 | 1024 | 16 | 342 Mt | Metal GPU |
| CTC-1B-MLX-4bit | 48 | 1280 | 20 | 549 Mt | Metal GPU |
| CTC-1B-MLX-8bit | 48 | 1280 | 20 | 1006 Mt | 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 |
CLI-käyttö
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
Molemmat taustaosat tuottavat pääosin identtisiä transkriptejä modulo 1-2 merkkiä (määräys ja ajoajan erot). Valitse käyttökohteesi perusteella:
| CoreML | MLX | |
|---|---|---|
| Laske kohde | Neural Engine | Metal GPU |
| Syötön pituus | Kiinteä ikkuna (5 s tai 10 s) | Pituus enintään 40 s |
| Mallikoot | Ainoastaan 300 M | 300M / 1B / 3B / 7B |
| Määrä | INT8 paletisaatio | 4-bittinen tai 8-bittinen QuantizedLinear |
| Toimii samanaikaisesti GPU TTS | Kyllä (ANE on itsenäinen) | Sisältää GPU TTS |
| iOS tuki | iOS 18+ | Mikä tahansa Apple Silicon iOS |
Esikäsittelytiedot
Kaikki kielivaatimukset edellyttävät lausetasonormia raaka-aaltomuodossa, joka vastaa fairseq2's apply_audio_normalization:
normalized = (audio - mean(audio)) / sqrt(variance(audio) + 1e-5)
Swift -portti normalisoi todellisen äänisisällön ennen nollatahdistuksen CoreML kiinteään ikkunaan, joten alaikkunan syötteet vastaavat täsmälleen vertailuputkitilastoja. Tämä on yleisin sataman sudenkuoppa HuggingFace's wav2vec2 -toteutus ei ole lausekerros-norm.
Viiteputkistolla on 40-sekunnin kova korkki (MAX_ALLOWED_AUDIO_SEC) syöteääni. Swift-portti valvoo samaa rajaa ... PuheVAD tai ParakeetStreamingASR jaetun käsittelyn osalta.
Kielikate
Omnilingual supports 1,672 languages across 32 skriptiä, mukaan lukien 500+ vähäresurssikielet lisätty yhteisön tiedonkeruun kautta.
| Skripti | Kieli | Näytteen koodit |
|---|---|---|
| latina | 1,398 | eng_Latn, fra_Latn, spa_Latn, pcm_Latn, swh_Latn, zul_Latn, … |
| arabia | 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, … |
| kyrillinen | 51 | rus_Cyrl, ukr_Cyrl, bel_Cyrl, bul_Cyrl, srp_Cyrl, mkd_Cyrl, kaz_Cyrl, … |
| Etionikaalinen | 10 | amh_Ethi, tir_Ethi, wal_Ethi, sgw_Ethi, … |
| Bengali | 8 | ben_Beng, asm_Beng, mni_Beng, … |
| Thai / Lao / Myanmar / Tiibeti | 9 / 1 / 3 / 6 | tha_Thai, lao_Laoo, mya_Mymr, bod_Tibt, dzo_Tibt, … |
| Han (yksinkertaistettu / perinteinen) | 6 | cmn_Hans, cmn_Hant, yue_Hans, yue_Hant, cdo_Hans, … |
| Japani / korea | 1 / 1 | jpn_Jpan, kor_Hang |
| Armenia, Georgia, heprea, kreikka, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Sinhala, Tamil, Telugu, Tifinagh, Thana, plus 4 lisää | 48 | Katso täydellinen luettelo → |
Täysi ISO 639-3 + ISO 15924 -koodiluettelo, jossa on englanninkieliset nimet lang_ids.py -lähde, ja ryhmiteltynä skriptikohtaisesti, johon sisältyy maaviitteitä mallikortissa .
Varmennettu tulos
Swift -portista FLEURS -vertailuarvon CoreML 300M:
| Kieli | Vertailu | Tuotos |
|---|---|---|
| Finnish | Kaveripainijat myös kunnioittivat Lunaa. | fellow wrestlers also paid tribute to luna |
| arabia | كما أثنى الزملاء المصارعون على لونا | كما أثنى الزملاء المصارعون على لونا |
| Hindi | लूना को साथी पहलवानों ने भी श्रद्धांजलि दी | लूना को साथी पहलवानों ने भी सरधांजलीदी |
| ranska | Pensez à l'itinéraire de ski comme à un itinéraile de randonnée similaire. | pense à létineraire desqui comme un étineraire de rent donner similaire |
MLX 300M-4bittinen variantti tuottaa pääosin identtisen modulo 1-2 merkkiä. Suuremmat vaihtoehdot (1B, 3B, 7B) vähentävät jäännösvirheitä asteittain.
Vertailu
- Paperi: Omnilingual ASR (arXiv 2511,09690)
- Toteutus alkuvaiheessa: facebookresearch/omakielinen tutkimus (Apache 2,0)
- Swift porttilähde: speech-swift/Sources/OmnilingualASR
- Mallikortti: docs/models/omnilingual-asr.md