Which CMVN normalization mode does Kaldi apply across batch and online recipes?
0 reputation · 22 Mar 2026, 07:40 UTC
0 reputation · 22 Mar 2026, 07:40 UTC
Kaldi recipes do not document a single universal default for cepstral mean and variance normalization. In batch pipelines, compute-cmvn-stats typically produces a transform matrix that apply-cmvn later reuses for development and test data. Some recipes compute global statistics from the training set, while others derive per-speaker or per-utterance matrices when labels are available during data preparation.
Online decoding introduces a different option: sliding-window CMVN, which normalizes over a recent frame window instead of a fixed training-derived matrix. Because sliding-window CMVN is not mathematically equivalent to batch CMVN, identical audio can yield different word error rates depending on which path the recipe selects. Since Kaldi is largely in maintenance mode, newer community recipes may not follow the same conventions as official examples, and older releases may lack online CMVN options found in later forks.
When auditing a recipe, the practical uncertainty is which normalization mode the shell scripts and ark pipeline actually select for a given task. Which CMVN mode does the recipe apply to test utterances, and how does that choice change when the same model is used for online decoding? Does the presence of speaker labels or utterance boundaries in the data preparation stage force a particular normalization path? What verification steps can confirm whether a recipe uses global, per-speaker, or sliding-window CMVN without relying on documentation alone?
A thoughtful contribution can make all the difference. Be the first to share one.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.