应用HTK建立连续语音识别系统
MatLab环境下调用HTK的连续语音识别方法

MatLab环境下调用HTK的连续语音识别方法【摘要】本文根据HTK(HMM Toolkit)的基本原理,在MatLab环境下通过调用HTK各命令实现小词汇量连续语音识别。
采用HTK工具包搭建语音的隐马尔可夫模型(HMM),再利用MatLab循环编程开发进行仿真实验,避免了传统地逐步运行HTK各个命令的冗余操作,降低了操作复杂度。
【关键词】HTK;语音识别;隐马尔可夫模型Abstract:According to the basic principle of HTK(HMM Toolkit),small vocabulary continuous speech was recognized based on HTK by MatLab programming in this thesis.This thesis used HTK to build HMM model and then used MatLab to program it to do speech recognition,thus it avoided the redundancy of operating single HTK command,and the complexity was reduced.as well.Key words:HTK;Speech Recognition;Hidden Markov Model一、引言语言是交流的最自然方式,它为人机交互提供了一种有效的方法。
但目前人与机器的交互方式多以键盘和鼠标为主,为了让机器与人能够更好地进行交互,出现了基于语音识别的系统使人机对话成为可能。
语音识别就是让计算机通过识别和理解把人类的语音信号转换为相应的命令或者文本的一门技术。
HTK(HMM ToolKit)[1][2]工具包是英国剑桥大学专门开发用于建立和处理隐马尔可夫模型的实验工具包,广泛应用在语音识别领域,在语音合成和字符识别等其他领域也有所应用。
HTK Book 第一篇 教程概览

第一篇教程概览 1 HTK基础1.1MM基本原理1.2立词识别1.3出概率说明1.4aum-Welch Re-Estimation1.5别和Viterbi解码1.6续语音识别1.7话者适应2 HTK工具包概览2.1TK软件架构2.2TK工具的一般属性2.3具包2.3.1据准备工具2.3.2练工具2.3.3别工具2.3.4析工具2.4本3.4中的更新2.4.1本3.3中的更新2.4.2本3.2中的更新2.4.3本3.1中的更新2.4.4本2.2中的更新2.4.5本2.1中的新特征3 一个教程示例3.1据准备3.1.1骤一任务语法3.1.2骤二字典3.1.3骤三录制语音数据3.1.4骤四创建脚本文件3.1.5骤五语音数据编码3.2建单元音HMM3.2.1骤六创建Flat start单元音3.2.2骤七确定Silence模型3.2.3骤八Realigning训练数据3.3建Tied-Stated三元音3.3.1骤九从单元音创建三元音3.3.2骤十创建Tied-Stated三元音3.4别器评估3.4.1骤十一识别测试数据3.5行识别器3.6MM自适应3.6.1骤十二准备自适应数据3.6.2骤十三生成Transforms(转移矩阵)3.6.3适应系统评估3.7emi-Stated和HLDA Transform3.8结第一章HTK基础HTK是一个用于构建隐马尔可夫模型(HMM)的工具包。
隐马模型可用于对任意时间序列建模,与此类似,HTK的核心部分也是具有通用性的。
然而,HTK主要还是用于构建基于HMM的语音处理工具,特别是语音识别工具。
因此HTK的在基层架构上提供的功能,主要是为了完成这个任务。
如上图所示,这个任务主要由两个阶段构成。
首先,HTK的训练工具基于语音数据和关联的脚本进行HMM参数的估算,其次,未知的语音数据被HTK的识别工具识别,输出识别结果。
本教程主要关注于以上两个处理过程的机制。
然而在深入细节之前,理解HMM的一些基本原理是有必要的,对HTK工具包有一个大概的认识也是有帮助的。
基于HMM的连续语音识别

3.2.7、识别网络
从根节点开始,与每个可能作为句子开始的词节点相连,每个词又 和它可能的相连,以此类推,构建好初始网络如下所示:
初始词网络
分解成三音素的网络
树结构的网络
识别网络中的词串假设 One two four
句子对应的 音素级脚本
特征向量 文件O
w ah1 n t uw1 f ao1 r
4)、计算复合HMM的前向-后向概率。 5)、用前向-后向概率来计算每帧语音 的状态占有概率及其累计和。 6)、重复过程2直至训练结束。 训练流程如右图所示: 在训练过程中采用逐步细化的建模过 成,先建立单音素的HMM,然后考虑音 素上下文,扩展到三音素HMM,最后进 行状态捆绑,还可逐步增加混合高斯变 量数目,最终得到鲁棒性较高的连续语 音识别HMM
基于HMM的连续语音识别
----------王风娜
HTK工具包 HMM简述 基于HMM的连续语音识别 利用HTK构建连续语音识别系统
1、HTK 工具包
1.1、工具包框架
1.2、工具分类
HTK工具包是由若干带有特定执行功能的程序组 成。按照工具所完成功能的性质,可以将整个工具包分成 四个部分: 数据准备工具 模型训练和优化工具 识别工具 性能评估工具
3)、三音素捆绑
状态捆绑示意图
状态捆绑决策树
3.2.4、嵌入式训练
要求:收集训练语音时,必须有训练语句的抄本。 算法流程: 1)、对所有音素或三音素的HMM进行初始化。 2)、输入新的训练语句。 3)、通过连接训练句子抄本中各符号所对应的HMM,构建 一个符合HMM,如下图所示:
初始化模型参数
ห้องสมุดไป่ตู้
中应用了一些裁减策略(动态规划)。
4)、结果分析
语音识别HTK代码学习手册

HMM的理论基础一、HMM定义1.N:模型中状态的数目,记t时刻Markov链所处的状态为2.M:每个状态对应的可能的观察数目,记t时刻观察到的观察值为:初始状态概率矢量,,,3.4.A:状态转移概率矩阵,,,5.B:观察值概率矩阵(适用于离散HMM),,,;对于连续分布的HMM,记t时刻的观察值概率为一个离散型的HMM模型可以简约的记为。
二、关于语音识别的HMM的三个基本问题1. 已知观察序列和模型参数,如何有效的计算。
a. 直接计算2-1当N=5,T=100时大概需进行次乘法!b. 前向算法定义t时刻的前向变量(forward variable),可以通过迭代的方法来计算各个时刻的前向变量:1)初始化(Initialization)当t=1时2-2 2)递归(Induction)当时即: 2-33)终结(Termination)2-4 乘法次数大约为:N2Tc. 后向算法定义t时刻的后向变量(backward variable),可以通过迭代的方法来计算各个时刻的后向变量:1)初始化(Initialization)当t=T时, 2-52)递归(Induction)当时即:, 2-63)终结(Termination)2-7 乘法计算次数约为:N2T2. 已知观察序列和模型参数,在最佳意义上确定一个状态序列。
定义一个后验概率变量(posteriori probability variable)2-7 则最优序列可以通过, 2-7求得。
不过,这样求得的最优序列有些问题。
如果,那么这个最优序列本身就不存在。
这里讨论的最佳意义上的最优序列,是使最大化时的确定的状态序列。
即,使最大化时确定的状态序列。
定义为t时刻沿一条路径,且,输出观察序列的最大概率,即:2-8下面介绍迭代计算的Viterbi算法:1)初始化(Initialization),回溯变量:,2)递归(Induction)即: 2-82-93)终结(Termination)2-102-11 4)回溯状态序列, 2-12 3. 已知观察序列和模型参数,如何调整模型参数使最大。
基于HTK的语音识别网络优化算法

—169—基于HTK 的语音识别网络优化算法杨善茜,黄汉明,蒋正锋,李 锐(广西师范大学计算机科学与信息工程学院,桂林 541004)摘 要:隐马尔可夫模型工具包(HTK)的HParse 命令根据用户以正则表达式形式定义的任务语法来生成HTK 可用的底层表示的语音识别网络,但不是每个语句都能用正则表达式表示出来。
针对该问题,提出基于HTK 的语音识别网络算法用于识别网络的优化问题,给出该算法的具体实现过程。
实验结果表明,在保证识别率的前提下,优化后的语音识别网络在语音识别系统中所用的时间比较短,算法是有效的。
关键词:连续语音识别;自动机;隐马尔可夫模型工具包;语音识别网络HTK-based Optimization Algorithms of Speech Recognition NetworkYANG Shan-xi, HUANG Han-ming, JIANG Zheng-feng, LI Rui(College of Computer Science and Information Technology, Guangxi Normal University, Guilin 541004)【Abstract 】For speech recognition network of Hidden Markov Model ToolKit(HTK) bottom representation is generated by the HParse command module of the HTK according to the form of regular expressions to define the task grammar, but not every language can use regular expressions to express. Aiming at the problem, this paper presents a HTK-based speech recognition network algorithm used to identify the network optimization problem, gives the detailed realization of the algorithm. Experimental results show that the optimized speech recognition network costs less time in speech recognition than the original un-optimized one, while the recognition rate of the two recognition system configurations are almost the same,and verifies the validity of the proposed algorithm.【Key words 】continuous speech recognition; automata; Hidden Markov Model ToolKit(HTK); speech recognition network计 算 机 工 程Computer Engineering 第36卷 第14期Vol.36 No.14 2010年7月July 2010·人工智能及识别技术·文章编号:1000—3428(2010)14—0169—03文献标识码:A中图分类号:TP181 概述在语音识别中,语音识别器可由识别网络、字典和HMM 集构成。
HTK分析,语音识别

第一章HTK基础HTK是用来创建隐马尔可夫模型(HMMs)的工具集。
HMMs可用来进行任意时间的语音建模,而且HTK的核心是通用的。
HTK首要设计目标是创建基于HMM的语音处理工具,具有特殊功能的识别器。
因此,支持HTK的大部分基础框架都侧重于这项任务。
如上图所示,涉及到两个主要的处理阶段。
首先,HTK训练工具是采用训练声音以及它们相关联的脚本,来建立一套HMM的参数集。
其次,未知的语音可用HTK识别工具转换成文本。
本书的主体设计到以上两个过程的机制。
三是,在进入详细说明钱,应该先了解一些HMMs的基础原理。
这对于我们了解该工具集以及理解HTK如何进行训练和识别过程将非常有帮助。
本书的第一部分尝试提供这些信息。
本章中,将介绍HMMs的基本思想以及在语音识别中如何应用HMMs。
接下来的内容将简单展现HTK的概貌,对于HTK老版本的用户,应重视2.0和后续版本的主要区别。
最后,在本书第三章的实例部分,描述了如果用HTK创建一个基于HMM的语音识别系统。
该实例描述了一个小词汇量连续语音识别系统的构造过程。
本书的第二部分对以上话题进行详细的介绍。
在阅读的过程中可以同时阅读第三部分以及本书的最后部分了解HTK的参考手册,该手册包含了每个工具的描述、概要以及用来配置HTK 各种古铜的参数以及功能在错误情况下产生的一系列的错误提示信息。
最后,注意本书关注的是使用HTK作为工具,并不提供使用HTK库作为编程环境的任何信息。
HMM基本原理图1.1 信息编码/解码语音识别系统普遍假定语音信号是有一个或多个符合组成的符号序列(见图1.1)Speech recognition systems generally assume that the speech signal is a realisation of some message encoded as a sequence of one or more symbols (see Fig. 1.1). To effect the reverse operation of recognising the underlying symbol sequence given a spoken utterance, the continuous speech waveformis first converted to a sequence of equally spaced discrete parameter vectors. This sequence of parameter vectors is assumed to form an exact representation of the speech waveform on the basis that for the duration covered by a single vector (typically 10ms or so), the speech waveform canbe regarded as being stationary. Although this is not strictly true, it is a reasonable approximation. Typical parametric representations in common use are smoothed spectra or linear prediction coefficients plus various other representations derived from these.The rˆole of the recogniser is to effect a mapping between sequences of speech vectors and the wanted underlying symbol sequences. Two problems make this very difficult. Firstly, the mapping from symbols to speech is not one-to-one since different underlying symbols can give rise to similar speech sounds. Furthermore, there are large variations in the realised speech waveform due to speaker variability, mood, environment, etc. Secondly, the boundaries between symbols cannotbe identified explicitly from the speech waveform. Hence, it is not possible to treat the speech waveform as a sequence of concatenated static patterns.The second problem of not knowing the word boundary locations can be avoided by restrictingthe task to isolated word recognition. As shown in Fig. 1.2, this implies that the speech waveform corresponds to a single underlying symbol (e.g. word) chosen from a fixed vocabulary. Despite the fact that this simpler problem is somewhat artificial, it nevertheless has a wide range of practical applications. Furthermore, it serves as a good basis for introducing the basic ideas of HMM-based recognition before dealing with the more complex continuous speech case. Hence, isolated word recognition using HMMs will be dealt with first.。
应用HTK搭建语音拨号系统

应用HTK搭建语音拨号系统苏统华哈尔滨工业大学人工智能研究室2006年10月30日声明:版权所有,转载请注明作者和来源该系统能够识别连续说出的数字串和若干组姓名。
建模是针对子词(sub-word, eg. 音素),具有一定的可扩充性。
当加入一个新名字时,只需修改发音词典和任务语法即可。
模型为连续混合高斯输出,运用语音决策树聚类形成的绑定状态式三音素。
1. 数据准备需要录制训练数据和测试数据。
为进行校准,还需要数据的标注文本。
这里用任务语法(task grammar)产生真值文本(ground truth)。
为了处理训练数据,需要定义一个语音集合和一个字典用以涵盖训练和测试数据中涉及的单词。
[step 1]任务语法定义任务语法以包含变量的正则表达式形式定义,存储在文件gram里:文件名:gram$digit = ONE | TWO | THREE | FOUR | FIVE |SIX | SEVEN | EIGHT | NINE | OH | ZERO;$name = [ SUE ] LAW |[ JULIAN ] TYLER |[ DA VE ] WOOD |[ PHIL ] LEE |[ STEVE ] YOUNG;( SENT-START ( DIAL <$digit> | (PHONE|CALL) $name) SENT-END )上面的语法是高层表示,必须通过HParse转成HTK可用的底层表示。
底层表示存于文件wnet中:HParse gram wdnet文件名:wdnetVERSION=1.0N=31 L=62I=0 W=SENT-ENDI=1 W=YOUNG……J=0 S=2 E=0……J=61 S=0 E=29苏统华.哈尔滨工业大学人工智能研究室.2006[step 2]字典定义此例中利用BEEP语音字典,除去其中的重音符,并在每个发音后加入sp(short pause,小停顿)。
HTK手册_第一章 中文版解读

在详细讨论参数估计问题之前,先将输出概率分布 的形式定义清楚。设计HTK主要就是为了处理连续参数模型,它使用的是连续密度多元输出分布。当然,它也可以处理输出分布为离散概率的离散观察序列。为简单起见,本章仅考虑连续密度分布。在第七章将讲述使用离散概率建模与它的一些细微区别,而在十一章将作更为详细地讨论。
Baum-Welch
要求出一个HMM的参数,首先需要大致猜测它们可能是什么。之后,使用所谓的Baum-Welch重估公式就可以使用最大似然判决准则(ML)找出更准确的参数。
在第八章将详细介绍用在HTK中的公式,在这里只是简单地介绍一些基本公式。首先,需要指出的是,因为可以认为每个流在统计意义上独立,所以包含多个数据流并不会显著地改变问题实质。另外,混合高斯成分可以看成是子状态(sub-state)的一种特殊形式,其转移概率就是该成分的权值(如图1.5)。
(1.17)
(1.18)
其中 ,终止条件为:
(1.19)
注意到,由 的定义可以得出,
(1.20)
因此,前向概率的计算也能求出总概率 。
后向概率定义为 :
(1.21)
类似于前向概率,后向概率也可以用下面的递推公式计算出来,
(1.22)
初始条件为:
(1.23)
其中 ,终止条件为:
(1.24)
注意在上面的定义中,前向概率是一个联合概率,而后向概率是一个条件概率。这两个有点不对称的定义是有意的,因为这两个概率的乘积决定了状态占有概率。从定义可推出:
和大多数连续密度HMM系统一样,HTK也使用混合高斯密度来描述输出分布,但它支持的范围更为广泛。HTK允许每个在 时刻的观察向量分成 独立的数据流 ,这样计算 的公式就是:
(1.8)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
评估
HResults -I testref.mlf tiedlist recout.mlf >result
附:
模型结构:混合HMM
决策树捆绑:
返回
词典dict
返回
识别网络
返回
The End!
可根据实际问题需要适当增加高斯模型个数
识别及评估
识别HVite
HVite -H hmm15/macros -H hmm15/hmmdefs -S test.scp -l ’*’ -i recout.mlf -w wdnet -p 0.0 -s 5.0 dict tiedlist 词级、音素级、三音素级识别结果
HERest: X2 -s stats
hmm12(triphones)
5、三音素捆绑
HHEd:
HHEd -B -H hmm12/macros -H hmm12/hmmdefs -M hmm13 tree.hed triphones1 > log
HERest: X2
hmm15(tiedlist)
6、增加混合高斯模型个数
HVite -l ’*’ -o SWT -b silence -C config -a -H hmm7/macros -H hmm7/hmmdefs -i aligned.mlf -m -t 250.0 -y lab -I words.mlf -S train.scp dict phones1
HERest: X2 hmm9(phones1)
识别工具
HVite
性能评估工具
HResults、HRec
基于HMM的连续语音识别系统
HMM
三个基本问题:推理、学习、识别
模型初始状态 转移矩阵
λ ={π, A, B}
状态产生观测向 量的概率分布
连续语音识别
模型结构:混合HMM(见附) 建模单元:可根据实际问题选择,对于大词汇量选择音素,进而扩展到三音素(词内或词间) 三音素捆绑:解决训练数据不足问题
hmm0(marcos、hmmdef) HERest: X3 hmm3
HERest -C config -I phones0.mlf -t 250.0 150.0 1000.0 -S train.scp -H hmm0/macros –H hmm0/hmmdefs -M hmm1 phones0
2、固定静音的单音素模型
HCopy config
训练语音词级网络wdnet(见附)
HPRase HBuild HParse
创建模型及学习(逐步细化)
1、单音素模型:
Proto文件:定义模型拓扑结构 3-state left-right HCompV:统计训练数据全局均值、方差
HCompV -C config -f 0.01 -m -S train.scp -M hmm0 proto
加入sil、sp模型 捆绑sil和sp模型
hmm4 hmm5
HHEd -H hmm4/macros -H hmm4/hmmdefs -M hmm5 sil.hed phones1
HERest: X2 hmm7 (phones1)
3、训练数据的重组:解决多音现象
HVite:得到更好的音素级标注文件aligned.mlf
识别结果评估: N −D−S ×100% Correct= N
Accuracy = N −D−S−I × 100 % N
应用HTK建立连续语音识别的实例
数据准备 创建模型及学习
单音素模型 三音素模型 状态捆绑 增加高斯混合模型的个数
识别及评估
数据准备
训练及待识别语音文件(.wav) 训练语音包含的所有词(wlist) 训练语音的词级标注文件(.lab 或 word.mlf) wlist中词的发音词典dict(见附)
应用HTK建立连续语音识别系统
------------王风娜
基本内容
知识回顾
HTK工具包 基于HMM的连续语音识别
应用HTK建立连续语音识别系统实例
知识回顾
HTK工具包
数据准备工具
HDMan、HCopy、HLEd、HSGen、HBuild、HLStats 、HParse
模型训练及优化工具
HERest、HI:can’t find tee model at the start and end of the sentence.
4、三音素模型
三音素标注文件wintri.mlf
HLEd -n triphones1 -l ’*’ -i wintri.mlf mktri.led aligned.mlf
Increase the mixture
HHEd -H hmm15/macros -H hmm15/hmmdefs -M hmm16 increasemix.hed tailist
increasemix.hed: HERest X2
MU +2 {*.state[2-4].mix}
hmm18(tiedlist)
HDMan -m -w wlist -n monophones1 -l dlog dict beep names
训练语音的音素级标注文件(.lab 或 phones.mlf)
HLEd .led 生成音素序列文件phones0(不包含sp)、phones1(包含sp)
训练语音的特征文件(.mfc、.plp等)
sil th ih s sp m ae n sp ...
扩展为
sil th+ih th-ih+s ih-s sp m+ae m-ae+n ae-n sp ... 三音素模型
HHEd -B -H hmm9/macros -H hmm9/hmmdefs -M hmm10 mktri.hed phones1
基于数据的状态聚类:自底向上,不能给不可见音素建模(欧氏距离) 基于决策树的聚类:自顶向下,能为不可见音素建模(见附)
嵌入式训练:训练语音必须有对应的抄本文件 嵌入式识别:
p(w) p(O| w) w* = argmaxp(w| O) = argmax p(O) w w
识别网络及N-gram语言模型