CI Model Building Requirements
This document outlines what’s needed to build Context-Independent (CI) acoustic models in pstrain.
Overview
CI models are monophone (context-independent) HMM-GMM acoustic models trained using Baum-Welch (EM algorithm). They are the first step in acoustic model training, before context-dependent (CD) models.
Prerequisites (Dependencies)
1. Flat Models
Stage:
flat(flat initialization)What it is: Initial HMM models with uniform distributions
Output: Flat model directory with:
mdef- Model definition filetransition_matrices- Initial transition probabilitiesmeans- Initial Gaussian meansvariances- Initial Gaussian variancesmixture_weights- Initial mixture weights
Program:
mk_flat(SphinxTrain)
2. Features
Stage:
features(feature extraction)What it is: Extracted acoustic features from audio files
Input: Audio files,
feat.params(config file for sphinx_fe)Output: Feature directory with:
.mfcfiles - Mel-frequency cepstral coefficients (one per audio file)feat.defs- Feature definition file (may be needed for some programs)
Program:
sphinx_fe(SphinxTrain)Note:
feat.paramsis an INPUT (config file), not an output. It should be created before feature extraction (during setup or as a separate config step).Note: Features are shared across experiments
Note:
feat.defsmay be needed formk_flator other initialization steps
3. Dictionary
Stage:
setup(project setup)What it is: Pronunciation dictionary
Output: Dictionary file (
.dictformat)Contains: Word → phone sequence mappings
Note: Dictionary is created during project setup
4. Training Transcriptions
Stage:
split(data splitting)What it is: Training set transcriptions (word-level text)
Output: Transcript file(s) with word-level transcriptions
Format: One transcription per utterance ID:
<fileid> <word1> <word2> ...Note: Split stage divides data into train/test sets
CI Training Process
Step 1: Flat Initialization
Program:
mk_flatInputs:
Dictionary (phone inventory)
Feature parameters (
feat.paramsorfeat.defs)Feature directory (for feature statistics)
Outputs:
Flat model directory (iteration 0)
Model definition (
mdef)Initial Gaussian parameters
Note: May require
feat.defsfile (feature definition) in addition to or instead offeat.params
Step 2: Baum-Welch Training
Program:
bw(Baum-Welch)Inputs:
Flat models (iteration 0) or previous iteration models
Features (
.mfcfiles)Training transcriptions
Dictionary
Control file (list of utterance IDs)
Outputs:
Updated model parameters (means, variances, mixture weights, transitions)
Log likelihood (for convergence checking)
Optional: Phone alignments (
phsegfiles)
Iterations:
Runs multiple iterations (typically 3-10)
Each iteration refines model parameters
Checks convergence (relative log likelihood improvement)
Stops when converged or max iterations reached
Step 3: Normalization (Optional)
Program:
normWhat it is: Normalizes feature vectors
When: Between iterations or after training
Note: This is optional for CI training but available if needed
Step 4: Gaussian Splitting (Optional)
Program:
mixw_interpor custom splitting, thenbwretrainingWhat it is: Increases number of Gaussians per state
Schedule: Start with 1 Gaussian, split to 2, 4, 8, 16, etc.
Process:
Train with initial Gaussians (e.g., 1G) from flat
Split Gaussians (e.g., 1G → 2G) using
mixw_interpor similarRetrain with more Gaussians using
bw(starts from split model, not flat)Repeat until target count reached
pstrain Implementation: Use
--from-ci-configto start CI training from a previous CI model instead of flat
CI Training Parameters
Required Parameters
max_iterations- Maximum training iterations (default: 10)convergence_threshold- Relative LL improvement threshold (default: 0.001)min_iterations- Minimum iterations before checking convergence (default: 3)abeam- Alpha beam width (default: 1e-100)bbeam- Beta beam width (default: 1e-100)topn- Top N Gaussians for CI (default: 1, not 4 like CD)
Optional Parameters
use_splitting- Enable Gaussian splitting scheduleuse_lda- Use LDA transformation (requires LDA file from LDA stage)save_alignments- Save phone alignments during training
Workflow Dependencies
setup (dictionary, phone_file)
↓
features (audio) ──┐
↓ │
split (corpus) ────┼──→ flat (features, dictionary, phone_file)
│ ↓
└─────────┴──→ ci (flat, features, dictionary, split)
Dependency chain:
setup - Creates project structure, dictionary, phone_file
features - Extracts features from audio (depends on audio files, can run in parallel with setup)
split - Splits data into train/test (depends on corpus/audio files, NOT features - can run in parallel with features)
flat - Initializes flat models (depends on: features, dictionary, phone_file)
ci - Trains CI models (depends on: flat, features, dictionary, and split for training transcriptions)
Key points:
featuresandsplitcan run in parallel (both only need audio/corpus files)flatneeds bothfeaturesANDsetup(dictionary, phone_file)cineedsflat,features,dictionary, ANDsplit(for training transcriptions)
Implementation for pstrain
Phase 1: Prerequisites
[ ] Setup stage - Project initialization, dictionary creation
[ ] Feature extraction -
sphinx_fewrapper[ ] Data splitting - Train/test split
[ ] Flat initialization -
mk_flatwrapper
Phase 2: CI Training
[ ] CI training stage -
bwwrapper with iteration loop[ ] Convergence checking - Log likelihood comparison
[ ] Model copying - Copy final model to output directory
[ ] Progress tracking - Track iterations, log likelihood
Phase 3: Advanced Features
[ ] Gaussian splitting - Support for Gaussian increment schedule
[ ] LDA integration - Optional LDA transform support
[ ] Alignment output - Optional phone alignment saving
Key Programs Needed
mk_flat- Flat model initializationbw- Baum-Welch training (main CI training)norm- Feature normalization (optional)sphinx_fe- Feature extraction (prerequisite)mixw_interp- Gaussian splitting (optional)
Output Products
After CI training completes:
models/ci/{ci_config}/model/hmm/directory containing:mdef- Model definitionmeans- Gaussian meansvariances- Gaussian variancesmixture_weights- Mixture weightstransition_matrices- Transition probabilitiesfeat.params- Feature parameters (copied from features stage)sendump- Optional sendump file for faster loading
Implementation Notes
CI uses
topn=1(not 4 like CD models)First iteration uses
-2passvar no, subsequent iterations use-2passvar yesFeatures are shared across experiments (stored in
shared/features/)Models are experiment-specific (stored in
experiments/<exp>/models/ci/hmm/)Progress tracking includes:
Current iteration
Log likelihood per iteration
Iteration timings
Convergence status
Next Steps
After CI models are built:
CD training - Context-dependent models (depends on CI)
Testing - Evaluate CI model performance
LDA training - Linear Discriminant Analysis (optional, can use CI models)