HTK的数据准备工具主要是针对语言文件和语音标签数据文件的处理,前面介绍了处理语音标签数据文件的处理工具,如下:
- HLEd。根据发音词典,自动对标签文件进行标记。该工具还可以对标签文件进行编辑处理,其实主要是对标签文件进行编辑,按照发音词典进行扩展也是编辑的一种,另外可以对发音词典进行替换、删除、写入等编辑操作。参见:数据准备工具-HLEd
- HLStats。这个工具主要是对标签文件根据发音词典展开之后的标记文件和HMM模型列表进行统计。参见:数据准备工具-HLStats
上面的两个工具都是对标签文件进行处理,包括自动标记及统计等功能,当然,需要发音词典作为输入,其实也是根据发音词典而统计的单音列表。
本文讨论对音频数据文件的处理工具:HCopy。这个工具是将原始的音频数据文件(如WAV)转换成HTK格式的参数文件。
一,使用语法
- HCopy [options] sa1 [+sa2+...] ta [sb1 + [+sb2+...] tb ...]
- HCopy srcA.wav + srcB.wav targetAB.wav srcC.wav targetC.wav
不是所有的文件都可以自由转换的,这个工具支持的输入和输出转换格式如下图所示:
一般用的比较多的是从WAVEFORM转换至MFCC。
二,命令选项
命令的一些常用选项如下:
- -C configfile。指定工具命令的配置文件,这个文件可以指定源文件类型以及目标文件的类型,还可以源文件和目标文件的一些基本头属性。
- -s f 。从源文件开始复制至目标文件的时间,默认是0.0。这个的意思是说,从源文件的什么时间开始复制至目标文件,如源文件的前3秒钟,我们不需要。就可以用到这个选项了。如我们需要指定从0.1秒开始,就需要指定-s 1E6,因为是以100ns为单位的。
- -e f。和上面的选项对应,表示从源文件复制的结束时间,就是从开始复制到多少时间之后,就结束复制。
- -i mlf。输出标签标记文件,如果输入文件是HTK的标记文件的话。
- -l s。指定标签标记文件的输出目录,默认是当前目录。
- -F fmt,指定源文件数据格式。
- -G fmt,指定标签标记文件格式。
- -I mlf。加载标签标记文件。
三,实际例子
假如现在有sample01.wav sample02.wav等10个音频文件,我需要把这些文件全部转换成Mel倒谱系数MFCC特征文件,操作如下:
完成脚本文本,如下。script.scp
- ./wav/sample01.wav ./mfcc/sample01.mfcc
- ./wav/sample02.wav ./mfcc/sample02.mfcc
- ./wav/sample03.wav ./mfcc/sample03.mfcc
- ./wav/sample04.wav ./mfcc/sample04.mfcc
- ./wav/sample05.wav ./mfcc/sample05.mfcc
- ./wav/sample06.wav ./mfcc/sample06.mfcc
- ./wav/sample07.wav ./mfcc/sample07.mfcc
- ./wav/sample08.wav ./mfcc/sample08.mfcc
- ./wav/sample09.wav ./mfcc/sample09.mfcc
- ./wav/sample10.wav ./mfcc/sample10.mfcc
- SOURCEKIND = WAVEFORM
- SOURCEFORMAT = WAV
- SOURCERATE = 1250
- TARGETKIND = MFCC_E_D_A_Z
- TARGETRATE = 160000.0
- WINDOWSIZE = 320000.0
- NUMCHANS = 24
- NUMCEPS = 12
然后执行命令,结果如下
- [root@localhost data]# HCopy -A -D -T 1 -C ./config -S ./script.scp
- HCopy -A -D -T 1 -C ./config -S ./script.scp
- HTK Configuration Parameters[8]
- Module/Tool Parameter Value
- # NUMCEPS 12
- # NUMCHANS 24
- # WINDOWSIZE 320000.000000
- # TARGETRATE 160000.000000
- # TARGETKIND MFCC_E_D_A_Z
- # SOURCERATE 1250
- # SOURCEFORMAT WAV
- # SOURCEKIND WAVEFORM
- ./wav/sample01.wav -> ./mfcc/sample01.mfcc
- ./wav/sample02.wav -> ./mfcc/sample02.mfcc
- ./wav/sample03.wav -> ./mfcc/sample03.mfcc
- ./wav/sample04.wav -> ./mfcc/sample04.mfcc
- ./wav/sample05.wav -> ./mfcc/sample05.mfcc
- ./wav/sample06.wav -> ./mfcc/sample06.mfcc
- ./wav/sample07.wav -> ./mfcc/sample07.mfcc
- ./wav/sample08.wav -> ./mfcc/sample08.mfcc
- ./wav/sample09.wav -> ./mfcc/sample09.mfcc
- ./wav/sample10.wav -> ./mfcc/sample10.mfcc
- HTK Configuration Parameters[8]
- Module/Tool Parameter Value
- NUMCEPS 12
- NUMCHANS 24
- WINDOWSIZE 320000.000000
- TARGETRATE 160000.000000
- TARGETKIND MFCC_E_D_A_Z
- SOURCERATE 1250
- SOURCEFORMAT WAV
- SOURCEKIND WAVEFORM
命令执行完成后,就会生成10个mfcc格式文件,完成数据源的复制,也是数据训练的准备。