| --- |
| library_name: onnxruntime |
| pipeline_tag: automatic-speech-recognition |
| tags: |
| - onnx |
| - ctc |
| - forced-alignment |
| - word-timestamps |
| - mobile |
| - flutter |
| --- |
| |
| # Fluency NeMo Conformer CTC Aligner |
|
|
| This repository contains the mobile-distribution assets for Fluency's English word-level forced alignment pipeline. |
|
|
| The model is not used as a standalone ASR decoder in the app. Whisper provides the transcript, this model provides frame-level CTC log-probabilities, and the app runs constrained CTC Viterbi to recover word timestamps. |
|
|
| ## Runtime Pipeline |
|
|
| ```text |
| Whisper transcript |
| β text normalization |
| β SentencePiece tokenizer |
| β native log-mel feature extraction |
| β ONNX Runtime Mobile |
| β constrained CTC Viterbi |
| β word timestamps |
| ``` |
|
|
| ## Required App Assets |
|
|
| ```text |
| stt_en_conformer_ctc_small_features.onnx |
| metadata.json |
| tokenizer/tokenizer.model |
| tokenizer/vocab.txt |
| manifest.json |
| ``` |
|
|
| Optional debugging assets are under `parity/`. |
|
|
| ## ONNX Contract |
|
|
| - Input `processed_signal`: `[batch, 80, feature_frames]` float32 |
| - Input `processed_signal_length`: `[batch]` int64 |
| - Output `log_probs`: `[batch, encoded_frames, 1025]` float32 |
| - Output `encoded_len`: `[batch]` int64 |
| - CTC blank id: `1024` |
|
|
| ## Feature Contract |
|
|
| - Sample rate: `16000 Hz` |
| - Channels: mono |
| - Feature type: 80-bin log-mel spectrogram |
| - Window size: `25 ms` |
| - Window stride: `10 ms` |
| - FFT: `512` |
| - Window: Hann |
| - Normalization: `per_feature` |
|
|
| The ONNX graph intentionally starts after feature extraction. Mobile clients must implement NeMo-compatible log-mel features before invoking ONNX Runtime. |
|
|
| ## Validation |
|
|
| Validated on a 375.838s video using raw Whisper `text` fields only: |
|
|
| - Windows checked: 7 |
| - Segments checked: 110 |
| - Matched words checked: 1029 |
| - PyTorch feature+model total: 3.106s |
| - ONNX model total: 5.396s |
| - Log-prob mean abs diff: 0.000014 |
| - Word center delta p50/p95/max: 0.0ms / 0.0ms / 0.0ms |
|
|
| See `parity/parity_1gzKSyOBpZg.json` and `parity/parity_1gzKSyOBpZg.csv` for details. |
|
|
| ## Download URLs |
|
|
| ```text |
| https://huggingface.co/iamzhangship/fluency-nemo-conformer-ctc-aligner/resolve/main/stt_en_conformer_ctc_small_features.onnx |
| https://huggingface.co/iamzhangship/fluency-nemo-conformer-ctc-aligner/resolve/main/metadata.json |
| https://huggingface.co/iamzhangship/fluency-nemo-conformer-ctc-aligner/resolve/main/tokenizer/tokenizer.model |
| https://huggingface.co/iamzhangship/fluency-nemo-conformer-ctc-aligner/resolve/main/tokenizer/vocab.txt |
| https://huggingface.co/iamzhangship/fluency-nemo-conformer-ctc-aligner/resolve/main/manifest.json |
| ``` |
|
|
| ## Checksums |
|
|
| - ONNX sha256: `8998fd44bc2374c7d085f7c709fbfbd28ea6db09998622077071faf478db24fd` |
| - ONNX size: `53197388` bytes |
|
|
| Use `manifest.json` for full file sizes and sha256 checksums. |
|
|
| ## Source Model |
|
|
| - NeMo pretrained model: `stt_en_conformer_ctc_small` |
| - Export graph: Conformer encoder + CTC projection/log-softmax |
| - Export metadata model bytes: `53197388` |
|
|