The HTK Book
Steve Young
Dan Kershaw
Julian Odell
Dave Ollason
Valtcho Valtchev
Phil Woodland
The HTK Book (for HTK Version 3.0)
c
°COPYRIGHT 1995-1999 Microsoft Corporation.
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
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 Whats New In Version 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1 Features Added To Version 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 A Tutorial Example of Using HTK 21
3.1 Data Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Step 1 - the Task Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2 Step 2 - the Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.3 Step 3 - Recording the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.4 Step 4 - Creating the Transcription Files . . . . . . . . . . . . . . . . . . . . . 26
3.1.5 Step 5 - Coding the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Creating Monophone HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Step 6 - Creating Flat Start Monophones . . . . . . . . . . . . . . . . . . . . 29
3.2.2 Step 7 - Fixing the Silence Models . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.3 Step 8 - Realigning the Training Data . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Creating Tied-State Triphones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 Step 9 - Making Triphones from Monophones . . . . . . . . . . . . . . . . . . 34
3.3.2 Step 10 - Making Tied-State Triphones . . . . . . . . . . . . . . . . . . . . . 36
3.4 Recogniser Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.1 Step 11 - Recognising the Test Data . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 Running the Recogniser Live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.6 Adapting the HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.6.1 Step 12 - Preparation of the Adaptation Data . . . . . . . . . . . . . . . . . . 41
3.6.2 Step 13 - Generating the Transforms . . . . . . . . . . . . . . . . . . . . . . . 42
3.6.3 Step 14 - Evaluation of the Adapted System . . . . . . . . . . . . . . . . . . . 42
3.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2
II HTK in Depth 44
4 The Operating Environment 45
4.1 The Command Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2 Script Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 Standard Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.5 Error Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6 Strings and Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.7 Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.8 Input/Output via Pipes and Networks . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.9 Byte-swapping of HTK data files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5 Speech Input/Output 54
5.1 General Mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.2 Speech Signal Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3 Linear Prediction Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4 Filterbank Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.5 Energy Measures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.6 Delta and Acceleration Coefficients . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.7 Storage of Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.7.1 HTK Format Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.7.2 Esignal Format Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.8 Waveform File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.8.1 HTK File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.8.2 Esignal File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.8.3 TIMIT File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.8.4 NIST File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.8.5 SCRIBE File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.8.6 SDES1 File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.8.7 AIFF File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.8.8 SUNAU8 File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.8.9 OGI File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.8.10 WAV File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.8.11 ALIEN and NOHEAD File Formats . . . . . . . . . . . . . . . . . . . . . . . 67
5.9 Direct Audio Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.10 Multiple Input Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.11 Vector Quantisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.12 Viewing Speech with HList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.13 Copying and Coding using HCopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.14 Version 1.5 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.15 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6 Transcriptions and Label Files 79
6.1 Label File Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2 Label File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2.1 HTK Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2.2 ESPS Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.3 TIMIT Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.4 SCRIBE Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.3 Master Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.1 General Principles of MLFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.3.2 Syntax and Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3.3 MLF Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3.4 MLF Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4 Editing Label Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7 HMM Definition Files 90
7.1 The HMM Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.2 Basic HMM Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.3 Macro Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.4 HMM Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.5 Tied-Mixture Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.6 Discrete Probability HMMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.7 Tee Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.8 Regression Class Trees for Adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.9 Binary Storage Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.10 The HMM Definition Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8 HMM Parameter Estimation 111
8.1 Training Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.2 Initialisation using HInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.3 Flat Starting with HCompV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8.4 Isolated Unit Re-Estimation using HRest . . . . . . . . . . . . . . . . . . . . . . . . 119
8.5 Embedded Training using HERest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8.6 Single-Pass Retraining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.7 Parameter Re-Estimation Formulae . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.7.1 Viterbi Training (HInit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.7.2 Forward/Backward Probabilities . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.7.3 Single Model Reestimation(HRest) . . . . . . . . . . . . . . . . . . . . . . . 126
8.7.4 Embedded Model Reestimation(HERest) . . . . . . . . . . . . . . . . . . . . 127
9 HMM Adaptation 128
9.1 Model Adaptation using MLLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.1.1 Maximum Likelihood Linear Regression . . . . . . . . . . . . . . . . . . . . . 129
9.1.2 MLLR and Regression Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.1.3 Transform Model File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
9.2 Model Adaptation using MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
9.3 Using HEAdapt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
9.4 MLLR Formulae . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.4.1 Estimation of the Mean Transformation Matrix . . . . . . . . . . . . . . . . . 136
9.4.2 Estimation of the Variance Transformation Matrix . . . . . . . . . . . . . . . 137
10 HMM System Refinement 138
10.1 Using HHEd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
10.2 Constructing Context-Dependent Models . . . . . . . . . . . . . . . . . . . . . . . . 139
10.3 Parameter Tying and Item Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.4 Data-Driven Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
10.5 Tree-Based Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
10.6 Mixture Incrementing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.7 Regression Class Tree Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
10.8 Miscellaneous Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
11 Discrete and Tied-Mixture Models 149
11.1 Modelling Discrete Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
11.2 Using Discrete Models with Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
11.3 Tied Mixture Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
11.4 Parameter Smoothing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
12 Networks, Dictionaries and Language Models 155
12.1 How Networks are Used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
12.2 Word Networks and Standard Lattice Format . . . . . . . . . . . . . . . . . . . . . . 157
12.3 Building a Word Network with HParse . . . . . . . . . . . . . . . . . . . . . . . . . 159
12.4 Bigram Language Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
12.5 Building a Word Network with HBuild . . . . . . . . . . . . . . . . . . . . . . . . . 163
12.6 Testing a Word Network using
HSGen
. . . . . . . . . . . . . . . . . . . . . . . . . . 164
12.7 Constructing a Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
12.8 Word Network Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
12.9 Other Kinds of Recognition System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
13 Decoding 172
13.1 Decoder Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
13.2 Decoder Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
13.3 Recognition using Test Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
13.4 Evaluating Recognition Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
13.5 Generating Forced Alignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
13.6 Decoding and Adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
13.6.1 Recognition with Adapted HMMs . . . . . . . . . . . . . . . . . . . . . . . . 181
13.6.2 Unsupervised Adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
13.7 Recognition using Direct Audio Input . . . . . . . . . . . . . . . . . . . . . . . . . . 182
13.8 N-Best Lists and Lattices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
III Reference Section 185
14 The HTK Tools 186
14.1 HBuild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
14.1.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
14.1.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
14.1.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
14.2 HCompV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
14.2.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
14.2.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
14.2.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
14.3 HCopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
14.3.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
14.3.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
14.3.3 Trace Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
14.4 HDMan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
14.4.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
14.4.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
14.4.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
14.5 HEAdapt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
14.5.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
14.5.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
14.5.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
14.6 HERest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
14.6.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
14.6.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
14.6.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
14.7 HHEd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14.7.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14.7.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
14.7.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
14.8 HInit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
14.8.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
14.8.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
14.8.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
14.9 HLEd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
14.9.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
14.9.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
14.9.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
14.10HList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
14.10.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
14.10.2 Use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
14.10.3 Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217