首页 > 学院 > 开发设计 > 正文

2,HTK学习_基于HTK语音工具包进行孤立词识别的使用教程

2019-11-08 20:25:05
字体:
来源:转载
供稿:网友

参考连接: https://my.oschina.net/jamesju/blog/116151 http://blog.csdn.net/jojozhangju/article/details/18720085 http://www.ithao123.cn/content-8393537.html

1,孤立词识别系统

1.1 简介

在本系统中我们将要实现三个词的识别系统,词汇集为:{brightness, channel,color}。

1.2 搭建步骤

A:创建语料库,brightness, channel,color各录制5次

B:声学分析,把wavform的声音文件转换为mfcc格式

C:模型定义,为词典里面的每一个词建立一个HMM原型

D:模型训练,HMM模型初始化和迭代

E:问题定义,即语法定义

F:对测试结合进行识别

G:评测

2,搭建工作环境

2.1 创建如下目录结构

(1) data/:存储训练和测试数据(语音文件、语音标签、特征矢量文件)。子目录:data/train/lab data/train/wav data/train/mfcc data/test/lab data/test/wav data/test/mfcc

(2) analysis/: 存储声学分析步骤的文件

(3) training/: 存储初始化和训练步骤的文件

(4) model/: 存储识别系统的模型(HMMs)的相关文件。子目录:model/PRoto

(5) def/: 存储任务定义的相关文件

(6) test:/ 存储测试相关文件

创建后的目录

2.2 标准HTK工具选项

一些标准选项对于每个HTK工具都是通用的。

(1) -A: 显示命令行参数

(2) -D: 显示配置设置

(3) -T 1: 显示算法动作的相关信息

完整的选项列表请参见:htkbook

2.3 语料库的准备

我们来录制{brightness, channel,color}这个三个词的读音。同时每个录音都要进行标注,也就是有一个文本文件与其对应描述它的内容。

2.3.1 录音

将上述三个词各录制5次,保存为wav格式。并存放在 data/train/wav/brightness data/train/wav/channel data/train/wav/channel中。

这里写图片描述

这里写图片描述

这里写图片描述

备注:wav文件通过讯飞tts工具生成,格式为16Khz,16位,1声道。 看到其他资料是通过HSLab HTK工具,但是可能因为本机少装了一些库,运行不起来。

2.3.2 标注

用相关的语音处理软件进行标注。并把标注的文件放到 data/train/lab/brightness data/train/lab/brightness data/train/lab/color中。

这里写图片描述

这里写图片描述

这里写图片描述

备注:本文中标注使用的软件是praat,由于htk中标注的时间单位是100ns,用praat获取到秒的时间后乘2的7次方。标注文件中具体内容如下:

这里写图片描述

2.4 声学分析

从原始的声音文件转换为特征矢量文件:

需要创建的文件:

(1) analysis.conf

创建目录:training/

说明:配置文件,说明了特征矢量的特性

内容:

## Example of an acoustical analysis configuration file#SOURCEFORMAT = HTK # Gives the format of the speech filesSOURCEFORMAT = WAV TARGETKIND = MFCC_0_D_A # Indentifter of the coefficients to use # Uint = 0.1 micro-second :WINDOWSIZE = 250000.0 # = 25 ms = length of a time frameTARGETRATE = 100000.0 # = 10 ms = frame periodicityNUMCEPS = 12 # Number of MFCC coeffs (here from c1 to c2)USEHAMMING = T # Use of Hamming function for windowing framesPREEMCOEF = 0.97 # Pre-emphasis coefficientNUMCHANS = 26 # Number of filterbank channelsCEPLIFTER = 22 # Length of cepstral liftering# The End

注:参数意义详见:htkbook

(2) targetlist_train.txt

创建目录:training/

说明:列出源文件和目的的文件的位置,即声音文件和特征文件

内容:

data/train/wav/brightness/brightness1.wav data/train/mfcc/brightness/brightness1.mfccdata/train/wav/brightness/brightness2.wav data/train/mfcc/brightness/brightness2.mfccdata/train/wav/brightness/brightness3.wav data/train/mfcc/brightness/brightness3.mfccdata/train/wav/brightness/brightness4.wav data/train/mfcc/brightness/brightness4.mfccdata/train/wav/brightness/brightness5.wav data/train/mfcc/brightness/brightness5.mfccdata/train/wav/channel/channel1.wav data/train/mfcc/channel/channel1.mfccdata/train/wav/channel/channel2.wav data/train/mfcc/channel/channel2.mfccdata/train/wav/channel/channel3.wav data/train/mfcc/channel/channel3.mfccdata/train/wav/channel/channel4.wav data/train/mfcc/channel/channel4.mfccdata/train/wav/channel/channel5.wav data/train/mfcc/channel/channel5.mfccdata/train/wav/color/color1.wav data/train/mfcc/color/color1.mfccdata/train/wav/color/color2.wav data/train/mfcc/color/color2.mfccdata/train/wav/color/color3.wav data/train/mfcc/color/color3.mfccdata/train/wav/color/color4.wav data/train/mfcc/color/color4.mfccdata/train/wav/color/color5.wav data/train/mfcc/color/color5.mfcc

这里写图片描述

指令:Hcopy -A -D -C training/analysis.conf -S training/targetlist_train.txt

运行结果:

这里写图片描述

会看到生成的文件:

这里写图片描述

这里写图片描述

这里写图片描述

2.5 HMM的定义

需要创建的文件:hmm_brightness hmm_channel hmm_color hmm_silb hmm_sile

创建目录:model/proto

说明:用来定义单词的HMM模型

内容:

hmm_brightness:

~o <VecSize> 39 <MFCC_0_D_A>~h "brightness"<BeginHMM><NumStates> 10<State> 2 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 3 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 4 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 5<Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 6 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 7 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 8 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<State> 9 <Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.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<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.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<TransP> 100.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.5 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.5 0.5 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.5 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.5 0.50.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0<EndHMM>

备注:hmm_channel hmm_color同hmm_brightness,不过最上面的名字要分别换成channel和color

hmm_silb:

~o <VecSize> 39 <MFCC_0_D_A>~h "silb"<BeginHMM><NumStates> 3<State> 2<Mean> 390.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0<Variance> 391.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.01.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.01.0 1.0<TransP> 30.0 1.0 0.00.0 0.5 0.50.0 0.0 0.0<EndHMM>

备注:hmm_sile同hmm_silb,只修改名字就好。

2.6 HMM训练

2.6.1 初始化

需要创建的文件:

(1) trainlist_brightness.txt trainlist_channel.txt trainlist_color.txt trainlist_silb.txt trainlist_sile.txt

创建目录:training/

说明:特征矢量文件路径

内容:

trainlist_brightness.txt:

data/train/mfcc/brightness/brightness1.mfccdata/train/mfcc/brightness/brightness2.mfccdata/train/mfcc/brightness/brightness3.mfccdata/train/mfcc/brightness/brightness4.mfccdata/train/mfcc/brightness/brightness5.mfcc

trainlist_channel.txt:

data/train/mfcc/channel/channel1.mfccdata/train/mfcc/channel/channel2.mfccdata/train/mfcc/channel/channel3.mfccdata/train/mfcc/channel/channel4.mfccdata/train/mfcc/channel/channel5.mfcc

trainlist_color.txt:

data/train/mfcc/color/color1.mfccdata/train/mfcc/color/color2.mfccdata/train/mfcc/color/color3.mfccdata/train/mfcc/color/color4.mfccdata/train/mfcc/color/color5.mfcc

trainlist_silb.txt:

data/train/mfcc/brightness/brightness1.mfccdata/train/mfcc/brightness/brightness2.mfccdata/train/mfcc/brightness/brightness3.mfccdata/train/mfcc/brightness/brightness4.mfccdata/train/mfcc/brightness/brightness5.mfccdata/train/mfcc/channel/channel1.mfccdata/train/mfcc/channel/channel2.mfccdata/train/mfcc/channel/channel3.mfccdata/train/mfcc/channel/channel4.mfccdata/train/mfcc/channel/channel5.mfccdata/train/mfcc/color/color1.mfccdata/train/mfcc/color/color2.mfccdata/train/mfcc/color/color3.mfccdata/train/mfcc/color/color4.mfccdata/train/mfcc/color/color5.mfcc

trainlist_sile.txt:

data/train/mfcc/brightness/brightness1.mfccdata/train/mfcc/brightness/brightness2.mfccdata/train/mfcc/brightness/brightness3.mfccdata/train/mfcc/brightness/brightness4.mfccdata/train/mfcc/brightness/brightness5.mfccdata/train/mfcc/channel/channel1.mfccdata/train/mfcc/channel/channel2.mfccdata/train/mfcc/channel/channel3.mfccdata/train/mfcc/channel/channel4.mfccdata/train/mfcc/channel/channel5.mfccdata/train/mfcc/color/color1.mfccdata/train/mfcc/color/color2.mfccdata/train/mfcc/color/color3.mfccdata/train/mfcc/color/color4.mfccdata/train/mfcc/color/color5.mfcc

(2) hmm0目录

创建目录:model/

说明:初始化后的HMM模型存放的位置

指令:

Hinit -A -D -T 1 -S training/trainlist_brightness.txt -M model/hmm0 -H model/proto/hmm_brightness -l brightness -L data/train/lab/brightness brightness Hinit -A -D -T 1 -S training/trainlist_channel.txt -M model/hmm0 -H model/proto/hmm_channel -l channel -L data/train/lab/channel channel Hinit -A -D -T 1 -S training/trainlist_color.txt -M model/hmm0 -H model/proto/hmm_color -l color -L data/train/lab/color colorHinit -A -D -T 1 -S training/trainlist_silb.txt -M model/hmm0 -H model/proto/hmm_silb -l silb -L data/train/lab/brightness silbHinit -A -D -T 1 -S training/trainlist_sile.txt -M model/hmm0 -H model/proto/hmm_sile -l sile -L data/train/lab/brightness sile

初始化之后我们可以再hmm0文件夹中看到:

这里写图片描述

2.6.2 训练

需要创建的目录:hmm1 hmm2 hmm3

创建位置: model/

每次,HRest迭代(即当前再估计迭代中的迭代)显示在屏幕上,通过change

量度标示收敛性。一旦这个量度值不再从一个HRest迭代到下个迭代减少(绝对值),过程就该停止了,迭代一般2-3次就可以了。

指令:

HRest -A -D -T 1 -S training/trainlist_brightness.txt -M model/hmm1 -H model/hmm0/hmm_brightness -l brightness -L data/train/lab/brightness brightnessHRest -A -D -T 1 -S training/trainlist_brightness.txt -M model/hmm2 -H model/hmm1/hmm_brightness -l brightness -L data/train/lab/brightness brightnessHRest -A -D -T 1 -S training/trainlist_brightness.txt -M model/hmm3 -H model/hmm2/hmm_brightness -l brightness -L data/train/lab/brightness brightnessHRest -A -D -T 1 -S training/trainlist_channel.txt -M model/hmm1 -H model/hmm0/hmm_channel -l channel -L data/train/lab/channel channelHRest -A -D -T 1 -S training/trainlist_channel.txt -M model/hmm2 -H model/hmm1/hmm_channel -l channel -L data/train/lab/channel channelHRest -A -D -T 1 -S training/trainlist_channel.txt -M model/hmm3 -H model/hmm2/hmm_channel -l channel -L data/train/lab/channel channelHRest -A -D -T 1 -S training/trainlist_color.txt -M model/hmm1 -H model/hmm0/hmm_color -l color -L data/train/lab/color colorHRest -A -D -T 1 -S training/trainlist_color.txt -M model/hmm2 -H model/hmm1/hmm_color -l color -L data/train/lab/color colorHRest -A -D -T 1 -S training/trainlist_color.txt -M model/hmm3 -H model/hmm2/hmm_color -l color -L data/train/lab/color colorHRest -A -D -T 1 -S training/trainlist_silb.txt -M model/hmm1 -H model/hmm0/hmm_silb -l silb -L data/train/lab/brightness silbHRest -A -D -T 1 -S training/trainlist_silb.txt -M model/hmm2 -H model/hmm1/hmm_silb -l silb -L data/train/lab/brightness silbHRest -A -D -T 1 -S training/trainlist_silb.txt -M model/hmm3 -H model/hmm2/hmm_silb -l silb -L data/train/lab/brightness silbHRest -A -D -T 1 -S training/trainlist_sile.txt -M model/hmm1 -H model/hmm0/hmm_sile -l sile -L data/train/lab/brightness sileHRest -A -D -T 1 -S training/trainlist_sile.txt -M model/hmm2 -H model/hmm1/hmm_sile -l sile -L data/train/lab/brightness sileHRest -A -D -T 1 -S training/trainlist_sile.txt -M model/hmm3 -H model/hmm2/hmm_sile -l sile -L data/train/lab/brightness sile

2.7 任务定义

2.7.1 建立语法规则和字典

需要创建的文件:

(1) gram.txt

创建的目录:def

说明:在使用我们的单词模型之前,要定义识别器的基本结构(任务语法)。我们首先定义最简单的语法:开始停顿、接着简单单词(这里指brightness, channel, color)、结束停顿。

内容:

/* * Task grammer */$Word = BRIGHTNESS | CHANNEL | COLOR;({START_SIL}[ $WORD ]{END_SIL})

备注:用括号{}括住START_SIL和END_SIL表示其可不存在或者重复多次(允许在单词之前或之后长时间的停顿,或者根本没有停顿)。括号[]括住$WORD表示零个或一次出现(如果没有单词,可能只是识别停顿)。

(2) dict.txt

创建的目录:def

说明:系统要知道HMM模型与语法变量BRIGHTNESS、CHANNEL、COLOR、START_SIL和END_SIL的对应关系。这种信息存储在文本文件中,命名为任务字典。

内容:

BRIGHTNESS [brightness] brightnessCHANNEL [channel] channelCOLOR [color] colorSTART_SIL [silb] silbEND-SIL [sile] sile

2.7.2 网络

建立任务网络:

生成的文件:net.slf

命令:Hparse -A -D -T 1 def/gram.txt def/net.slf

运行结果:

这里写图片描述

2.8 识别

2.8.1 准备测试数据

需要准备的文件:

(1) hmmlist.txt

创建的目录:test/

说明:列出了要使用的模型的名字(brightness, channel,color,silb,sile) ,每个一行,最后要加一个空行。

内容:

brightnesschannelcolorsilbsile

(2) targetlist_test.txt

创建的目录:test/

内容:

data/test/wav/brightness/brightness1.wav data/test/mfcc/brightness/brightness1.mfccdata/test/wav/brightness/brightness2.wav data/test/mfcc/brightness/brightness2.mfccdata/test/wav/brightness/brightness3.wav data/test/mfcc/brightness/brightness3.mfccdata/test/wav/channel/channel1.wav data/test/mfcc/channel/channel1.mfccdata/test/wav/channel/channel2.wav data/test/mfcc/channel/channel2.mfccdata/test/wav/channel/channel3.wav data/test/mfcc/channel/channel3.mfccdata/test/wav/color/color1.wav data/test/mfcc/color/color1.mfccdata/test/wav/color/color2.wav data/test/mfcc/color/color2.mfccdata/test/wav/color/color3.wav data/test/mfcc/color/color3.mfcc

这里写图片描述

命令:

Hcopy -A -D -C test/analysis.conf -S test/targetlist_test.txt

运行结果:

这里写图片描述

2.8.2 识别

基本方法:

需要创建的文件:

(1) result文件夹

(2) reco.mlf

创建的目录:result/

初始内容:

#!MLF!#

(3) hmmsdef.mmf

创建的目录:test

命令等同于:-H model/hmm3/hmm_brightness -H model/hmm3/hmm_channel -H model/hmm3/hmm_color -H model/hmm_silb -H model/hmm3/hmm_sile

内容:hmm3中的所有文件的内容一起粘贴。

注意:只保留一个”~O”

命令:

Hvite -A -D -T 1 -H test/hmmsdef.mmf -i result/reco.mlf -w def/net.slf def/dict.txt test/hmmlist.txt data/test/mfcc/brightness/brightness1.mfcc

运行结果:

这里写图片描述

结果会在reco.mlf中显示:

#!MLF!#"data/test/mfcc/brightness/brightness1.rec"0 300000 silb -255.737076300000 6400000 brightness -3955.9787606400000 7000000 sile -281.805115.

交互方式:

需要创建的文件:

directin.conf

创建的目录:test

说明:是Hvite的配置文件,允许使用直接音频输入,为了允许从输入信号中直接提取声学系数,这个文件必须包含前面训练数据使用的声学分析配置参数。

内容:

## HVite Configuration Variables for DIRECT AUDIO INPUT## Parameters of the input signalSOURCERATE = 625.0 # = 16 khzSOURCEKIND = HAUDIO#SOURCEFORMAT = HTKSOURCEFORMAT = WAV# Conversion parameters of the input signalTARGETKIND = MFCC_0_D_A # Identifier of the coefficients to useWINDOWSIZE = 250000.0 # = 25 ms = length of a time frameTARGETRATE = 100000.0 # = 10 ms = frame periodicityNUMCEPS = 12 # Number of MFCC coeffs (here form c1 to c12)USEHAMMING = T # Use of Hamming function for windowing framesPREEMCOEF = 0.97 # Pre-emphasis coefficientNUMCHANS = 26 # Number of filterbank channelsCEPLIFTER = 22 # Length of cepstral liftering# Defines the signal to be used for remote controlAUDIOSIG = -1 # Negative value = key-press control# The End

指令:

Hvite -A -D -T 1 -C test/directin.conf -g -H test/hmmsdef.mmf -w def/net.slf def/dict.txt test/hmmlist.txt

运行结果: 这里写图片描述

备注:该结果中出现错误,是由于麦克风没有声音。

2.9 性能测试

2.9.1 主标签文件

在性能评测之前,我们需要创建两个文件,命名为主标签文件,扩展名是.mlf:

第一个文件包含整个训练集的正确副本,即是通过手工标注的副本。把ref.mlf记作参考副本。

第二个文件包含整个测试集的识别副本,即识别器产生的假设副本。把reco.mlf记为识别副本。

通过比较每项数据的参考副本和识别假设,进行性能评测。

内容:

ref.mlf:

#!MLF!#"data/test/lab/brightness/brightness1.lab"0 272310 silb272310 6459620 brightness6459620 7200000 sile."data/test/lab/brightness/brightness2.lab"0 272310 silb272310 6459620 brightness6459620 7200000 sile."data/test/lab/brightness/brightness3.lab"0 272310 silb272310 6459620 brightness6459620 7200000 sile."data/test/lab/brightness/brightness4.lab"0 272310 silb272310 6459620 brightness6459620 7200000 sile."data/test/lab/brightness/brightness5.lab"0 272310 silb272310 6459620 brightness6459620 7200000 sile."data/test/lab/channel/channel1.lab"0 336940 silb336940 5433710 channel5433710 5600000 sile."data/test/lab/channel/channel2.lab"0 336940 silb336940 5433710 channel5433710 5600000 sile."data/test/lab/channel/channel3.lab"0 336940 silb336940 5433710 channel5433710 5600000 sile."data/test/lab/channel/channel4.lab"0 336940 silb336940 5433710 channel5433710 5600000 sile."data/test/lab/channel/channel5.lab"0 336940 silb336940 5433710 channel5433710 5600000 sile."data/test/lab/color/color1.lab"0 363070 silb363070 4260410 color4260410 4400000 sile."data/test/lab/color/color2.lab"0 363070 silb363070 4260410 color4260410 4400000 sile."data/test/lab/color/color3.lab"0 363070 silb363070 4260410 color4260410 4400000 sile."data/test/lab/color/color4.lab"0 363070 silb363070 4260410 color4260410 4400000 sile."data/test/lab/color/color5.lab"0 363070 silb363070 4260410 color4260410 4400000 sile.

需要创建的文件:testlist.txt

说明:测试路径

内容:

data/test/mfcc/brightness/brightness1.mfccdata/test/mfcc/brightness/brightness2.mfccdata/test/mfcc/brightness/brightness3.mfccdata/test/mfcc/channel/channel1.mfccdata/test/mfcc/channel/channel2.mfccdata/test/mfcc/channel/channel3.mfccdata/test/mfcc/color/color1.mfccdata/test/mfcc/color/color2.mfccdata/test/mfcc/color/color3.mfcc

命令:

Hvite -A -D -T 1 -S test/testlist.txt -H test/hmmsdef.mmf -i result/reco.mlf -w def/net.slf def/dict.txt test/hmmlist.txt

运行结果:

这里写图片描述

运行之后会看到reco.mlf中:

#!MLF!#"data/test/mfcc/brightness/brightness1.rec"0 300000 silb -255.737076300000 6400000 brightness -3955.9787606400000 7000000 sile -281.805115."data/test/mfcc/brightness/brightness2.rec"0 300000 silb -255.737076300000 6400000 brightness -3955.9787606400000 7000000 sile -281.805115."data/test/mfcc/brightness/brightness3.rec"0 300000 silb -255.737076300000 6400000 brightness -3955.9787606400000 7000000 sile -281.805115."data/test/mfcc/channel/channel1.rec"0 300000 silb -241.981781300000 5400000 channel -2758.620117."data/test/mfcc/channel/channel2.rec"0 300000 silb -241.981781300000 5400000 channel -2758.620117."data/test/mfcc/channel/channel3.rec"0 300000 silb -241.981781300000 5400000 channel -2758.620117."data/test/mfcc/color/color1.rec"0 300000 silb -236.930679300000 4200000 color -1779.554565."data/test/mfcc/color/color2.rec"0 300000 silb -236.930679300000 4200000 color -1779.554565."data/test/mfcc/color/color3.rec"0 300000 silb -236.930679300000 4200000 color -1779.554565.

9.2 错误率

需要创建的文件:

labellist.txt

说明:出现在副本文件中的标签列表

创建的目录:result

内容:

data/test/lab/brightness/brightness1.labdata/test/lab/brightness/brightness2.labdata/test/lab/brightness/brightness3.labdata/test/lab/channel/channel1.labdata/test/lab/channel/channel2.labdata/test/lab/channel/channel3.labdata/test/lab/color/color1.labdata/test/lab/color/color2.labdata/test/lab/color/color3.lab

results.txt

创建的目录:result

说明:存放错误率结果

命令:

HResults -A -D -T 1 -e ??? sil -I result/ref.mlf result/labellist.txt result/reco.mlf > result/results.txt

最后显示结果为:

这里写图片描述

备注: 第一行(SENT)给出句子的识别率(%Correct=100.00),第二行(WORD)给出的是单词的识别率(%Corr=100.00)。上图中,这两个比率是相同的,这是因为我们的任务语法仅使用一个单词(除了停顿之外)作为句子。这是孤立词识别任务。这里只要考虑第一行(SENT)就够了。H=9 给出的是测试数据被正确识别的数量,S=0,表示识别相反的数量。N=0表示测试数据总数。

最后,附工作文件夹下载地址: http://download.csdn.net/detail/everything_at_once/9755627


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表