ctc-aligner / README.md
sepehrn's picture
Upload README.md with huggingface_hub
a961906 verified
|
Raw
History Blame Contribute Delete
1.97 kB
metadata
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.