logo资料库

HTK应用实例.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
HTK 应用实例 一、简介: 下面详细讲述了使用 HTK 工具进行语音识别训练的步骤,包括特征提取、语音特 征 HMM 初始化、音素字典的生成、词汇列表转换音素列表网络、维特比语音音素强制 匹配、混合模型。 二、环境的建立 将所有的 HTK 工具拷贝到工作目录下,运行 cmd 并进入工作目录。 三、录音 使用 HSLab ,在提示符下输入 hslab speech.wav 即可进入图形界面,按“rec”按 钮开始录音。 录音结束后按“stop”按钮停止录音,并按 save 进行保存。按“new”进行下一条语音 的录制。所有的语音将以 speech_*.wav 的名字进行保存,其中的*为序号。我们可以把 这些语音存在 wavs 文件夹中以便接下来调用。 四、声学分析——提取 MFCC 特征 这一步使用 Hcopy,将标准的 wav 格式语音在规定的规则下提取 MFCC 特征参数 并输出。所需文件:config、lists\wav2mfcc.Scp、wav\*.wav。生成:mfccs\*.mfc 我们首先要规定特征提取的规则,建立一个名为 config 的配置文件,可以通过文本 输入,其内容如下: # # Example of an acoustical analysis configuration file # SOURCEFORMAT = HTK # Gives the format of the speech files TARGETKIND = MFCC_0_D_A # Identifier of the coefficients to use
# Unit = 0.1 micro-second : WINDOWSIZE = 250000.0 # = 25 ms = length of a time frame TARGETRATE = 100000.0 # = 10 ms = frame periodicity NUMCEPS = 12 # Number of MFCC coeffs (here from c1 to c12) USEHAMMING = T # Use of Hamming function for windowing frames PREEMCOEF = 0.97 # Pre-emphasis coefficient NUMCHANS = 26 # Number of filterbank channels CEPLIFTER = 22 # Length of cepstral liftering # The End 这样的一个配置文件,生成一个 MFCC 参数(Mel Frequency Cepstral Coefficient)。 对于每一帧的信号,提取下面的系数: 前 12 维 MFCC 系数[c1,…,(NUMCEPS = 12)。 对于表现每一帧的总体能量 MFCC 的 c0 系数,这里为“NULL”。(在 TARGETKIND 的 后 缀 “_0” )。 13 维 的 delta-MFCC 系 数 [c0,c1,…,c12] ( TARGETKIND 的 后 缀 “_D” )。 13 维 的 delta-delta-MFCC 系 数 [c0,c1,…,c12] ( TARGETKIND 的后缀“_A”)。 对于每一帧的信号提取 39 维的系数矢量。 下面建立叙述 wav 文件以及将生成的 mfcc 参数文件位置的脚本文件。文件名为 wav2mfc.scp,其内容的格式大致如下,其内容将随着语音文件不同的数量以及文件名而改 变: wavs\speech_0.wav mfccs\speech_0.mfc wavs\speech_1.wav mfccs\speech_1.mfc … 在 cmd 中输入:hcopy -T 1 -C config -S lists\wav2mfcc.scp。其中-T 表示的是显示该 程序的运行过程,后面的 1 表示显示的细致程度。-C 是读入配置文件;-S 是读入脚本 文件。 这里需要说明的是,所有程序的参数如-T、-C 等是区分大小写的。而且在使用文 件夹之前需要手动建立,比如 mfccs 文件夹就必须提前建立。当实际操作中可能语音文 件的数量比较大,这个时候可以使用 perl 脚本进行脚本列表的生成。 五、语音特征的 HMM 初始化 这一步使用 Hcompv 对已生成的特征进行处理,得到新的 HMM 参数。这里需要文 件:config.xwrd(由于这里使用的模型相当于 1 状态 HMM 模型,而这个模型与前面的 config 生成的 mfcc 参数不匹配,所以我们将使用 config.xwrd 替代 config,并用新的.mfc 文件代替前面生成的)、train\protos\proto、lists\mfclist.txt 这里需要我们给出一个模型原型,这个模型的参数并不重要,但是它可以定义出模 型的布局。train\protos\proto 的定义内容如下: ~o 39 1 39 ~h "proto" 3 2 1 1 1 1.0000 39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 39 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 3 0.000e+0 1.000e+0 0.000e+0 0.000e+0 5.000e-1 5.000e-1 0.000e+0 0.000e+0 0.000e+0 这里我们定义了 3 个状态,但是由于 HTK 本身的原因,第一个和最后一个状态永 远都是 0,所以我们只用给出第二个状态的初始参数,均值都赋值为 0,方差都赋值为 1,转移矩阵只需满足行求和为 1 即可。由于我们的 mfcc 参数向量为 39 维,所以均值 方差都有 39 个。 特征文件地址列表的脚本 mfclist.txt 如下: mfccs\M_4AAA0101.mfc mfccs\M_4AAA0102.mfc mfccs\M_4AAA0103.mfc mfccs\M_4AAA0104.mfc mfccs\M_4AAA0105.mfc mfccs\M_4AAA0106.mfc mfccs\M_4AAA0107.mfc mfccs\M_4AAA0108.mfc … 类似于 wav2mfc.scp,他的内容也是将随着语音文件不同的数量以及文件名而改变的。 其 运 行 语 句 如 下 :HCompV -A -C config.xwrd -S lists\mfclist.txt -f 0.01 -m -M hmm0 train\protos\proto。其中的-A 表示 Print command line arguments,-m 表示更新均值,-M 表示生成 文件保存的位置,-C 与-S 与前面相同。 这里生成的文件为hmm0\ proto以及hmm0\ vFloors。其内容分别为:~o 1 39 39 ~h "proto" 3 2 39 -3.226477e-007 -2.055142e-007 -3.762481e-007 1.046791e-007 4.133040e-008 3.711740e-008 1.525903e-007 -5.938169e-008 1.397053e-007 1.168568e-008 -1.035720e-007 -3.035970e-008 1.300820e-003 -1.645357e-003 3.590006e-004 -2.905202e-003 6.430279e-003 4.917722e-003 6.626321e-003 -1.286292e-003 -1.974371e-003 -8.522092e-004 1.776146e-003 -6.884728e-005 2.419279e-003 -2.042643e-003 -9.647572e-003 -6.847233e-004 -1.516271e-003 4.880212e-003 6.277185e-004 -6.853148e-003 -5.254100e-003 -6.047130e-004 2.524465e-003 1.134476e-004
-1.289115e-007 -4.657659e-004 4.212272e-004 39 7.768848e+001 4.376433e+001 4.852225e+001 3.506544e+001 8.342268e+001 3.663837e+001 3.104375e+001 1.732644e+001 8.974630e+000 6.149627e+000 2.668962e+000 2.898889e-001 5.064310e+001 3.153122e+001 2.635785e+001 2.447005e+001 5.128450e+001 2.423689e+001 2.316732e+001 1.302834e+001 8.215710e+000 3.947228e+000 1.481609e+000 2.213556e-001 9.966378e+001 7.182365e+001 5.426299e+001 5.805888e+001 1.138109e+002 5.916534e+001 5.929281e+001 3.245048e+001 2.113041e+001 1.007805e+001 3.891507e+000 5.514889e-001 1.111364e+001 1.143466e+000 2.927150e+000 1.774086e+002 3 0.000000e+000 1.000000e+000 0.000000e+000 0.000000e+000 5.000000e-001 5.000000e-001 0.000000e+000 0.000000e+000 0.000000e+000 以及 ~v varFloor1 39 7.768849e-001 4.376433e-001 4.852225e-001 3.506544e-001 8.342267e-001 3.663837e-001 3.104374e-001 1.732644e-001 8.974630e-002 6.149627e-002 2.668962e-002 2.898888e-003 5.064310e-001 3.153122e-001 2.635785e-001 2.447005e-001 5.128450e-001 2.423689e-001 2.316732e-001 1.302834e-001 8.215710e-002 3.947228e-002 1.481609e-002 2.213556e-003 9.966378e-001 7.182365e-001 5.426299e-001 5.805888e-001 1.138109e+000 5.916534e-001 5.929281e-001 3.245048e-001 2.113041e-001 1.007805e-001 3.891506e-002 5.514889e-003 1.111363e-001 1.143466e-002 2.927150e-002 很明显,它已经将原来的均值以及方差进行了更新。
分享到:
收藏