Downloads · 30 days
25
30% of all-time downloads
soniqo/Omnilingual-ASR-CTC-300M-LiteRT-INT8
Omnilingual-ASR-CTC-300M-LiteRT-INT8 is a automatic speech recognition model from soniqo. Use it when you need speech turned into text. It is set up for litert. The card lists the license as cc-by-nc-4.0.
Meta's 1600-language wav2vec2 CTC ASR, INT8 weight-only quantization.
Downloads · 30 days
25
30% of all-time downloads
All-time downloads
84
Public
Repo size
331 MB
Likes
0
Public
Click a slice to open those files.
.tflite330 MB · 100%
From the Hugging Face model README
Meta's 1600-language wav2vec2 CTC ASR, INT8 weight-only quantization.
Part of the soniqo.audio speech toolkit — an open, runtime-portable stack for speech AI. This bundle is the LiteRT export, designed to plug into the abstract interfaces in
speech-core(C++ voice-agent orchestration library). Browse all LiteRT bundles in the soniqo LiteRT collection.
Meta's Omnilingual ASR (Wav2Vec2-CTC, 300 M parameters) exported to LiteRT for Android. Supports 1600+ languages and doubles as a forced-alignment model via standard CTC Viterbi decoding on the output logits.
| Property | Value |
|---|---|
| Architecture | Wav2Vec2 temporal CNN frontend + 24-layer Transformer + CTC head |
| Parameters | ~300 M |
| Format | LiteRT (TFLite) |
| Quantization | INT8 dynamic weights (fp32 activations) |
| Sample rate | 16 000 Hz |
| Input length | 160 000 samples (10 s, fixed) |
| Frame rate | 50 Hz (320× downsample) |
| Vocab size | 10 288 (SentencePiece) |
| File | Size | Description |
|---|---|---|
omnilingual-ctc-300m.tflite | 315.2 MB | Full model, INT8 |
tokenizer.model | 89 KB | SentencePiece tokenizer |
config.json | 1 KB | Model + fbank specs |
Inputs:
audio [1, 160000] float32 z-score normalized 10 s @ 16 kHz
Outputs:
logits [1, 500, 10288] float32 per-frame CTC logits (50 Hz)
Standard CTC decoding: argmax per frame, collapse repeats, remove blanks,
decode with SentencePiece. Works across 1600+ languages.
Given a target transcription, run the CTC Viterbi forced-alignment algorithm
over the [T, vocab_size] posteriors to recover per-token start/end frame
positions. Convert frame indices to seconds with frame_rate = 50 Hz
(1 frame = 20 ms).
Reference implementations you can port directly:
torchaudio.functional.forced_alignctc-forced-aligner (MahmoudAshraf97)The full DP is ~100 lines of straightforward code and runs in microseconds per utterance on mobile CPUs.
val model = Interpreter(loadModelFile("omnilingual-ctc-300m.tflite"))
// 10 s of z-score normalized audio at 16 kHz
val audio = FloatArray(160_000)
val logits = Array(1) { Array(500) { FloatArray(10_288) } }
model.run(audio, logits)
// Greedy CTC → tokens
val tokens = logits[0].map { frame -> frame.indexOfMax() }
// Or: CTC forced alignment for timestamps
val alignment = ctcForcedAlign(logits[0], tokenize("hello world"))
Upstream: Meta Omnilingual ASR project (CC BY-NC 4.0). Paper: Omnilingual ASR Technical Report (2026).
STTInterface / TTSInterface / VADInterface / EnhancerInterface; LiteRT implementations plug straight into the interfaces.ASR / Transcription
VAD / Diarization
TTS / Voice Cloning
This bundle inherits the upstream model license (cc-by-nc-4.0). See the
linked base_model repository for the full terms.