The HTK Book
Steve Young
Gunnar Evermann
Mark Gales
Thomas Hain
Dan Kershaw
Xunying (Andrew) Liu
Gareth Moore
Julian Odell
Dave Ollason
Dan Povey
Valtcho Valtchev
Phil Woodland
The HTK Book (for HTK Version 3.4)
c
°COPYRIGHT 1995-1999 Microsoft Corporation.
c
°COPYRIGHT 2001-2006 Cambridge University Engineering Depart-
ment.
All Rights Reserved
First published December 1995
Reprinted March 1996
Revised for HTK Version 2.1 March 1997
Revised for HTK Version 2.2 January 1999
Revised for HTK Version 3.0 July 2000
Revised for HTK Version 3.1 December 2001
Revised for HTK Version 3.2 December 2002
Revised for HTK Version 3.3 April 2005
Revised for HTK Version 3.4 December 2006
Contents
I Tutorial Overview 1
1 The Fundamentals of HTK 2
1.1 General Principles of HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Isolated Word Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Output Probability Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Baum-Welch Re-Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Recognition and Viterbi Decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 Continuous Speech Recognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7 Speaker Adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 An Overview of the HTK Toolkit 14
2.1 HTK Software Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Generic Properties of a HTK Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 The Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.1 Data Preparation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.2 Training Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.3 Recognition Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.4 Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 What’s New In Version 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.1 New In Version 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.2 New In Version 3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.3 New In Version 3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.4 New In Version 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.5 Features Added To Version 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 A Tutorial Example of Using HTK 23
3.1 Data Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1 Step 1 - the Task Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2 Step 2 - the Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.3 Step 3 - Recording the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.4 Step 4 - Creating the Transcription Files . . . . . . . . . . . . . . . . . . . . . 28
3.1.5 Step 5 - Coding the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2 Creating Monophone HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1 Step 6 - Creating Flat Start Monophones . . . . . . . . . . . . . . . . . . . . 31
3.2.2 Step 7 - Fixing the Silence Models . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.3 Step 8 - Realigning the Training Data . . . . . . . . . . . . . . . . . . . . . . 35
3.3 Creating Tied-State Triphones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.1 Step 9 - Making Triphones from Monophones . . . . . . . . . . . . . . . . . . 36
3.3.2 Step 10 - Making Tied-State Triphones . . . . . . . . . . . . . . . . . . . . . 38
3.4 Recogniser Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.1 Step 11 - Recognising the Test Data . . . . . . . . . . . . . . . . . . . . . . . 41
3.5 Running the Recogniser Live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.6 Adapting the HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.6.1 Step 12 - Preparation of the Adaptation Data . . . . . . . . . . . . . . . . . . 43
3.6.2 Step 13 - Generating the Transforms . . . . . . . . . . . . . . . . . . . . . . . 44
3.6.3 Step 14 - Evaluation of the Adapted System . . . . . . . . . . . . . . . . . . . 45
3.7 Semi-Tied and HLDA transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2
3.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
II HTK in Depth 48
4 The Operating Environment 49
4.1 The Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2 Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4 Standard Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.5 Error Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.6 Strings and Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.7 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.8 Input/Output via Pipes and Networks . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.9 Byte-swapping of HTK data files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5 Speech Input/Output 59
5.1 General Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Speech Signal Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3 Linear Prediction Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.4 Filterbank Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.5 Vocal Tract Length Normalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.6 Cepstral Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.7 Perceptual Linear Prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.8 Energy Measures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.9 Delta, Acceleration and Third Differential Coefficients . . . . . . . . . . . . . . . . . 68
5.10 Storage of Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.10.1 HTK Format Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.10.2 Esignal Format Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.11 Waveform File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.11.1 HTK File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.11.2 Esignal File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.11.3 TIMIT File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.11.4 NIST File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.11.5 SCRIBE File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.11.6 SDES1 File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.11.7 AIFF File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.11.8 SUNAU8 File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.11.9 OGI File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.11.10 WAV File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.11.11 ALIEN and NOHEAD File Formats . . . . . . . . . . . . . . . . . . . . . . . 74
5.12 Direct Audio Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.13 Multiple Input Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.14 Vector Quantisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.15 Viewing Speech with HList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.16 Copying and Coding using HCopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.17 Version 1.5 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.18 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6 Transcriptions and Label Files 86
6.1 Label File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.2 Label File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.1 HTK Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.2 ESPS Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.3 TIMIT Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.4 SCRIBE Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3 Master Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.1 General Principles of MLFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.3.2 Syntax and Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3.3 MLF Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.3.4 MLF Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4 Editing Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7 HMM Definition Files 97
7.1 The HMM Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.2 Basic HMM Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.3 Macro Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.4 HMM Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.5 Tied-Mixture Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.6 Discrete Probability HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.7 Input Linear Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.8 Tee Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.9 Binary Storage Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.10 The HMM Definition Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8 HMM Parameter Estimation 118
8.1 Training Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.2 Initialisation using HInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.3 Flat Starting with HCompV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.4 Isolated Unit Re-Estimation using HRest . . . . . . . . . . . . . . . . . . . . . . . . 126
8.5 Embedded Training using HERest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.6 Single-Pass Retraining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.7 Two-model Re-Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.8 Parameter Re-Estimation Formulae . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.8.1 Viterbi Training (HInit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.8.2 Forward/Backward Probabilities . . . . . . . . . . . . . . . . . . . . . . . . . 132
8.8.3 Single Model Reestimation(HRest) . . . . . . . . . . . . . . . . . . . . . . . 134
8.8.4 Embedded Model Reestimation(HERest) . . . . . . . . . . . . . . . . . . . . 134
8.8.5 Semi-Tied Transform Estimation(HERest) . . . . . . . . . . . . . . . . . . . 135
9 HMM Adaptation 136
9.1 Model Adaptation using Linear Transformations . . . . . . . . . . . . . . . . . . . . 137
9.1.1 Linear Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
9.1.2 Input/Output/Parent Transformations . . . . . . . . . . . . . . . . . . . . . . 138
9.1.3 Base Class Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
9.1.4 Regression Class Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
9.1.5 Linear Transform Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
9.1.6 Hierarchy of Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
9.1.7 Mutiple Stream Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.2 Adaptive Training with Linear Transforms . . . . . . . . . . . . . . . . . . . . . . . . 143
9.3 Model Adaptation using MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.4 Linear Transformation Estimation Formulae . . . . . . . . . . . . . . . . . . . . . . . 144
9.4.1 Mean Transformation Matrix (MLLRMEAN) . . . . . . . . . . . . . . . . . . . . 145
9.4.2 Variance Transformation Matrix (MLLRVAR, MLLRCOV) . . . . . . . . . . . . . . 145
9.4.3 Constrained MLLR Transformation Matrix (CMLLR) . . . . . . . . . . . . . . 146
10 HMM System Refinement 148
10.1 Using HHEd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.2 Constructing Context-Dependent Models . . . . . . . . . . . . . . . . . . . . . . . . 149
10.3 Parameter Tying and Item Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.4 Data-Driven Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
10.5 Tree-Based Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
10.6 Mixture Incrementing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.7 Regression Class Tree Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.8 Miscellaneous Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
11 Discrete and Tied-Mixture Models 159
11.1 Modelling Discrete Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
11.2 Using Discrete Models with Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
11.3 Tied Mixture Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
11.4 Parameter Smoothing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
12 Networks, Dictionaries and Language Models 165
12.1 How Networks are Used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
12.2 Word Networks and Standard Lattice Format . . . . . . . . . . . . . . . . . . . . . . 167
12.3 Building a Word Network with HParse . . . . . . . . . . . . . . . . . . . . . . . . . 169
12.4 Bigram Language Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
12.5 Building a Word Network with HBuild . . . . . . . . . . . . . . . . . . . . . . . . . 173
12.6 Testing a Word Network using HSGen . . . . . . . . . . . . . . . . . . . . . . . . . . 174
12.7 Constructing a Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
12.8 Word Network Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
12.9 Other Kinds of Recognition System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
13 Decoding with HVite 182
13.1 Decoder Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
13.2 Decoder Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
13.3 Recognition using Test Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
13.4 Evaluating Recognition Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
13.5 Generating Forced Alignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
13.6 Recognition using Direct Audio Input . . . . . . . . . . . . . . . . . . . . . . . . . . 191
13.7 N-Best Lists and Lattices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
III Language Modelling 194
14 Fundamentals of language modelling 195
14.1 n-gram language models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
14.1.1 Word n-gram models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
14.1.2 Equivalence classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
14.1.3 Class n-gram models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
14.2 Statistically-derived Class Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.2.1 Word exchange algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.3 Robust model estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
14.3.1 Estimating probabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
14.3.2 Smoothing probabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
14.4 Perplexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.5 Overview of n-Gram Construction Process . . . . . . . . . . . . . . . . . . . . . . . . 203
14.6 Class-Based Language Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
15 A Tutorial Example of Building Language Models 206
15.1 Database preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
15.2 Mapping OOV words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
15.3 Language model generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
15.4 Testing the LM perplexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
15.5 Generating and using count-based models . . . . . . . . . . . . . . . . . . . . . . . . 212
15.6 Model interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
15.7 Class-based models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
15.8 Problem solving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
15.8.1 File format problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
15.8.2 Command syntax problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
15.8.3 Word maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
15.8.4 Memory problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
15.8.5 Unexpected perplexities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218