ctc-aligner / README.md
sepehrn's picture
Upload README.md with huggingface_hub
a961906 verified
|
Raw
History Blame Contribute Delete
1.97 kB
---
license: apache-2.0
library_name: onnxruntime
tags: [forced-alignment, ctc, phoneme, lipsync, omote]
---
# omote-ai/ctc-aligner
~2.4 MB conv-CTC forced-alignment student. Input `mfcc` `[1,T,39]`
(16 kHz Rust-parity MFCC: 13 cepstra + Ξ” + ΔΔ) β†’ output `logits` `[1,T,40]`
(39 ARPABET phones + blank). Consumed by the Omote runtime's phoneme-timing
tier; staggered Viterbi decoding happens in the runtime.
**Files:** `ctc_aligner.onnx` uses ONNX external data β€” **`ctc_aligner.onnx.data`
is required** alongside it, plus `ctc_aligner.meta.json` (phone table).
Distilled from `facebook/wav2vec2-lv-60-espeak-cv-ft` (Apache-2.0, offline
teacher β€” never ships) via frame-level cross-entropy on a mixed
synthetic (Supertonic + Kokoro) + natural (LibriSpeech train-clean-100,
CC-BY 4.0) corpus.
## Evaluation (held-out, vs teacher alignments)
| Metric | Value |
|---|---|
| Median phone-onset abs error (ms) | **7** |
| Mean / p90 onset error (ms) | 17 / 16 |
| Onsets within 20 ms | 94 % |
| Onsets within 50 ms | 99 % |
| Onsets within 100 ms | 99 % |
| Degenerate-span rate (>600 ms), raw | 1.8 % (177/9,650) |
| β€” of which teacher-pause artifacts | 173 |
| β€” real student errors | **4 (0.04 %)** |
**Evaluation-set provenance (read before comparing numbers):** the original
held-out set from the training run was lost (data-custody RCA, 2026-07-22, in
the Omote repo). These figures come from a **regenerated** held-out set,
synthesized 2026-07-22: 150 committed evaluation sentences
(`scripts/train-ctc-aligner/eval_texts_v2.txt` in the source repo) rendered
through both TTS engines β†’ 300 utterances / 9,650 phone onsets, none of which
the student ever saw. They are therefore a genuine unseen-data measurement,
but they are **not numerically comparable to development-time figures**. The
real-degenerate rate (0.04 %) independently reproduces the rate recorded
during original development.
Full provenance: `provenance.json` in this repo.