HTK使用手册-2
- 格式:pdf
- 大小:368.77 KB
- 文档页数:8
目录目录 (I)第一章系统介绍 (1)1.1 系统概述 (1)1.2 软硬件安装方法 (2)1.3 实验箱模块简介 (4)1.4 THTWK 实验对象地址分配 (21)第二章32位微机原理实验——汇编程序 (23)2.1 汇编编译器的设置 (23)2.2 PCI 设备的配置空间 (24)2.3 32位微机实模式、保护模式工作原理 (27)2.4 汇编实验项目 (29)实验一读取PCI 设备配置空间实验 (29)实验二读取32位开关量实验 (31)实验三 32 位LED 显示实验 (33)实验四点阵显示实验 (35)实验五保护模式下的存储器读写实验 (37)实验六中断实验 (39)实验七 8255模拟交通灯实验 (42)实验八 8255 扫描键盘实验 (44)实验九 8279 扫描键盘实验 (46)实验十步进电机驱动实验 (47)实验十一 A/D 转换(ADC0809)实验 (50)实验十二 D/A 转换(0832)实验 (52)实验十三串行A/D转换实验 (55)实验十四串行D/A转换实验 (56)实验十五直流电机驱动实验 (58)实验十六 LCD 显示实验 (60)实验十七 8251 串行发收实验 (63)实验十八 8251 和16C550 相互收发实验 (65)实验十九 8253电子音调实验 (69)实验二十储存器 DMA实验 (73)实验二十一温度测量实验 (77)实验二十二语音芯片控制实验 (78)实验二十三红外数据发送与接收实验 (83)实验二十四实时时钟实验 (85)实验二十五可编程逻辑器件实验 (87)第三章在Windows 下C 语言编程 (91)3.1 开发过程简介 (91)3.2 相关程序 (92)3.3 Visual C++6.0开发环境简介 (92)3.3.1 开发环境界面 (92)3.3.2 项目工作区 (93)3.4 创建Windows 应用程序 (95)3.5 用户接口函数说明 (99)3.5.1 函数OpenPlx9052 (99)3.5.2 函数ClosePlx9052 (100)3.5.3 访问IO空间的相关函数 (100)3.5.4 访问MEM 空间的相关函数 (101)3.5.5 中断服务相关函数 (101)第四章WINDOWS 中的接口实验——VC++程序 (105)实验一 32位I/O读写实验 (105)实验二存储器读写实验 (107)实验三 PCI中断实验 (108)实验四 A/D 转换(ADC0809)实验 (110)实验五 D/A 转换(DAC0832)实验 (112)实验六 LED点阵显示实验 (114)实验七 LCD 显示实验 (116)实验八 8253电子音调实验 (118)实验九 8255 接口实验(键盘扫描、步进电机、模拟交通灯) (120)实验十 8279键盘显示实验 (122)实验十一串行通信实验 (124)实验十二 USB通信实验实验 (127)第五章驱动程序开发(WDM) (134)5.1 系统环境配置 (134)5.2 利用向导生成程序框架和设备配置信息 (137)5.3 驱动框架的构成及描述 (141)5.4 驱动程序的具体编写 (143)5.4.1 读取硬件资源 (143)5.4.2 I/O 端口读写 (144)5.4.3 RAM 读写实现 (145)5.4.4中断的实现 (145)5.4.5 DMA 的实现 (147)附录一调试工具Turbo debug 的使用 (151)附录二 DOS功能调用(INT 21H) (159)第一章系统介绍1.1 系统概述THTWK-2型32位微机原理与接口实验箱是一套基于PC 机PCI 总线的32 位实验系统。
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-22)递归(Induction)当时即: 2-3 3)终结(Termination)2-4乘法次数大约为:N2Tc. 后向算法定义t时刻的后向变量(backward variable),可以通过迭代的方法来计算各个时刻的后向变量:1)初始化(Initialization)当t=T时, 2-52)递归(Induction)当时即:, 2-6 3)终结(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-114)回溯状态序列, 2-123. 已知观察序列和模型参数,如何调整模型参数使最大。
本人刚开始学习HTK,在网上下了一份《HTK(V3.1)基础指南》资料,根据上面提供的步骤创建一个yes/no识别系统,但是在中间发现很多地方说的不够明白(也可能是本人悟性不够),很多代码输入会有错误,所以根据自己的理解写了一份文档,希望对大家有用。
首先说明一下注意事项(1)在输入命令时,有文件作为参数时,都应在文件名前加上相应的路径,不然找不到文件。
(2)输入命令前,最好先单纯的打一遍命令,不输入任何参数,参看函数用法。
预先建立文件夹我做的时候没有创建新的根目录,根目录为htk文件夹。
(1)data/ :存储训练和测试数据(语音信号、标签等等),包括一个子目录data/train,而train包括2个子目录,data/train/sig(用以存储步骤1接下来录制的训练语音数据) 和data/train/mfcc(用来存储步骤二中训练数据转化后的mfcc参数);(2)model/:存储识别系统的模型(HMMs)的相关文件;(3)def/:存储任务定义的相关文件;(4)test/:存储测试相关文件。
《HTK(V3.1)基础指南》中在本步骤中用到了标签,我做的时候试着用了标签,报错了。
感觉可能是因为录制的训练语音中,静音或者是语音的长度有问题,导致了错误,但是也不知道怎么解决,所以干脆没用了,希望大牛们可以帮助解答这个问题。
第一步:创建训练文件DOS下打开htk/data/train/sig文件夹,命令:HSLabyes.sig创建10个yes音,10个no 音,10个sil(静音)。
保存在htk/data/train/sig下。
第二步:声学分析抽取yes和no的mfcc特征参数。
保存在htk/train/mfcc下。
命令:HCopy–C analysis.conf–S targetlist.txt其中analysis.conf(在htk文件夹下)为抽取参数配置文件,内容为:## Example of an acoustical analysis configuration file#SOURCEFORMAT = HTK # Gives the format of the speech filesTARGETKIND = MFCC_D_A_0 # Identifier of the coefficients to use# Unit = 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 c12) USEHAMMING = T # Use of Hamming function for windowing frames PREEMCOEF = 0.97 # Pre-emphasis coefficientNUMCHANS = 26 # Number of filterbank channelsCEPLIFTER = 22 # Length of cepstralliftering# The Endtargetlist.txt(在htk文件夹下)说明抽取源文件路径和目标文件的保存路径,内容如下:data\train\sig\yes10.sig data\train\mfcc\yes10.mfccdata\train\sig\yes1.sig data\train\mfcc\yes1.mfccdata\train\sig\yes2.sig data\train\mfcc\yes2.mfccdata\train\sig\yes3.sig data\train\mfcc\yes3.mfccdata\train\sig\yes4.sig data\train\mfcc\yes4.mfccdata\train\sig\yes5.sig data\train\mfcc\yes5.mfccdata\train\sig\yes6.sig data\train\mfcc\yes6.mfccdata\train\sig\yes7.sig data\train\mfcc\yes7.mfccdata\train\sig\yes8.sig data\train\mfcc\yes8.mfccdata\train\sig\yes9.sig data\train\mfcc\yes9.mfccdata\train\sig\no10.sig data\train\mfcc\no10.mfccdata\train\sig\no1.sig data\train\mfcc\no1.mfccdata\train\sig\no2.sig data\train\mfcc\no2.mfccdata\train\sig\no3.sig data\train\mfcc\no3.mfccdata\train\sig\no4.sig data\train\mfcc\no4.mfccdata\train\sig\no5.sig data\train\mfcc\no5.mfccdata\train\sig\no6.sig data\train\mfcc\no6.mfccdata\train\sig\no7.sig data\train\mfcc\no7.mfccdata\train\sig\no8.sig data\train\mfcc\no8.mfccdata\train\sig\no9.sig data\train\mfcc\no9.mfccdata\train\sig\sil10.sig data\train\mfcc\sil10.mfccdata\train\sig\sil1.sig data\train\mfcc\sil1.mfccdata\train\sig\sil2.sig data\train\mfcc\sil2.mfccdata\train\sig\sil3.sig data\train\mfcc\sil3.mfccdata\train\sig\sil4.sig data\train\mfcc\sil4.mfccdata\train\sig\sil5.sig data\train\mfcc\sil5.mfccdata\train\sig\sil6.sig data\train\mfcc\sil6.mfccdata\train\sig\sil7.sig data\train\mfcc\sil7.mfccdata\train\sig\sil8.sig data\train\mfcc\sil8.mfccdata\train\sig\sil9.sig data\train\mfcc\sil9.mfcc第三步:HMM原型定义建立文件hmm_yes.hmm、hmm_no.hmm、hmm_sil.hmm保存在htk/model/proto下。
第一篇教程概览 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工具包有一个大概的认识也是有帮助的。