HTK孤立词识别简单流程

1.数据准备

[command] HSLab one.wav

[Rec    ] 开始录音

[Stop   ] 录音结束

[Mark   ] 选择需要标注的区域

[Labelas] 输入标注 回车确定

[Save   ] 保存

孤立词标注3个部分:起始静音(sil) 词语音(one) 结束静音(sil)

按照上述步骤,录制训练集和测试集

编写EBNF文法,并生成最终的解码网络

[command] HParse -T 1 gram.txt net.sf

[gram.txt]

# WORD = one | two | three;

# ({start_sil}[$WORD]{end_sil})

2.特征提取

[command   ] HCopy -C hcopy.conf -S train.mfcc.list -A -D -T 1

-C   配置文件

-S   特征提取的列表文件

-A   显示命令行参数

-D   显示配置设置

-T 1 显示算法动作的相关信息

[hcopy.conf]

OURCEFORMAT    = HTK

SOURCERATE     = 625

TARGETKIND     = MFCC_0_D_A

TARGETRATE     = 100000

WINDOWSIZE     = 250000.0

USEHAMMING     = T

PREEMCOEF      = 0.97

NUMCEPS        = 12

注:

SOURCERATE = 625

#T = 62500ns = 0.0625ms = 0.0000625s, sample = 1/T = 1/0.0000625 = 16000 = 16kHz

#T = 1250ns  = 0.1250ms = 0.0001250s, sample = 1/T = 1/0.0001250 = 8000  = 8kHz

TARGETRATE = 100000

#T = 10ms

WINDOWSIZE = 250000

#T = 25ms

# |_ _ _ _ _|

# |   |_ _ _ _ _|

# |   |     |

# A   B     C

# A-->B: TARGETRATE(frame move)

# A-->C: WINDOWSIZE(frame length)

[train.mfcc.list]

/disk2/data/train/one.wav /disk2/data/train/one.mfcc

....

3.初始化hmm模型

[command] HInit -A -D -T 1 -i 10 -L data/train/lab/one/ -C data/hinit.conf -M hmm/hmm.0/ proto/one data/train/wav/one_*.mfcc

[proto/one] 需要人工生成hmm的基础结构文件

4.多次迭代hmm模型

[command] HRest -A -D -T 1 -i 10 -L data/train/lab/one/ -C data/hrest.conf -M hmm/hmm.1/ hmm/hmm.0/one data/train/wav/one_*.mfcc

训练hmm模型,其实就是训练每个孤立词的hmm,和字典的的内容的对应关系如下:

[dict]

#S_SIL sil

#E_SIL sil

#one   ON

#two   TW

#three TH

假如字典如上,那么我们训练的hmm模型就是sil,ON,TW,TH的hmm模型,然后多次迭代,产生每个音素的hmm模型

然后将所有的音素的hmm模型合并,并去除其中的

#~o

#<STREAMINFO> 1 39

#<VECSIZE> 39<NULLD><MFCC_D_A_0><DIAGC>

只在开始的位置保留一次,这样就产生了所有音素的一个hmm模型

5.解码及测试

[command] HVite -A -D -T 1 -H hmm/hmm.3/hmmdef -l test/ -w netlattce/net.sf netlattce/dict netlattce/hmmlist data/test/wav/*.mfcc

[hmmlist] 每个音素自成一行

[command] HResults -A -D -T 1 -I ref.mlf lab.lst rec.mlf

[ref.mlf]

# #!MLF!#

# "*/one.lab"

# 2300 4500000 one

# .

[rec.mlf]

# #!MLF!#

# "*/one.lab"

# 2300 4500000 one -1245

# .

屏幕会输出最终的识别结果

时间: 2024-11-04 14:09:20

HTK孤立词识别简单流程的相关文章

Yes Or No孤立词识别

本实验中,我们将基于HTK工具集建立一个2-单词识别系统,词汇集是{Yes,No}.这是可以设计出来的最基本的自动语音识别(Automatic speech recognition,ASR)系统. 目标:建立一个孤立词识别系统,只包含yes和no两个词. 步骤: A: 创建一个语料库,确定识别基本元(如单词yes,no等),yes和no各录5次 B: 声学分析,把waveform的声音文件转换为mfcc()格式 ,即对语音材料库中的声音文件提取MFCC声纹特征 (梅尔频率倒谱系数,这个部分的详解

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

选自:http://my.oschina.net/jamesju/blog/116151 1前言 最近一直在研究HTK语音识别工具包,前几天完成了工具包的安装编译和测试,这几天又按耐不住好奇,决定自己动手搞一搞,尝试一下用这个工具包,进行简单的孤立词识别,看了几天的文档,做了各种尝试,总算跌跌撞撞的实现了,把步骤记录下来,以后作为参考. 2孤立词识别系统 在本系统中我们将要实现三个词的识别系统,词汇集为:{brightness, channel,color}. 2.1搭建步骤 A:创建语料库,b

BIP39助记词生成简单流程

其实,bip39之前有过一些了解,但是都没有过深入的探索,最近具体学习下,顺便记录下: 1.首先,随机生成一个长度为32倍数的128-256位的二进制类型,我们把它称之为熵: 2.对这个生成的熵做sha256计算,取结果的前8位:(这里说明下,虽然取了8位,但是不一定全部用上,具体使用的位数计算:n = 熵的位数/32) 3.用熵与上一步中前n位进行拼接(熵放前),获得一个大整型(我们一般称这n位为校验位): 这里也说明下,之前我看到网上有人说是将熵以32位分割,然后每段末尾插入1个校验位,于是

[转]Kaldi命令词识别

转自: http://www.jianshu.com/p/5b19605792ab?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&utm_source=recommendation http://www.jianshu.com/p/6338fab6bd0a 刚刚拿到一个简单语料库练手,发现只有语音和对应文字, 这篇文章记录了从数据预处理到kaldi对数据进行训练和测试的全过程,这里首先训练单音节模型,其

Linux内核网络报文简单流程

转:http://blog.csdn.net/adamska0104/article/details/45397177 Linux内核网络报文简单流程2014-08-12 10:05:09 分类: Linux linux下的网卡驱动中通常会提供类似XXX_rx的接收函数 该函数处理与具体硬件相关的寄存器操作 包括中断检查,数据状态检查,错误检查等 在确认有数据抵达后读取数据或从DMA的接收环中获取数据地址 XXX_rx函数以skb为元数据结构组织报文数据 随后调用内核接口函数netif_rx或n

车牌OCR识别的流程,手机车牌识别

车牌的OCR识别的流程如下: 手机车牌识别背景 随着人们生活水平的提高,汽车方面的业务量也日益暴涨,加上如今"互联网+"的提出,智能终端(智能手机及平板电脑)及移动通信(4G)发展迅速,人们用手机的频率比用电脑的多,加上手机小巧轻便,成为生活中必要的工作及社交工具,可以预见未来几年60%以上的业务将会逐渐转移到智能终端系统上来.伴随着移动端APP的火爆应用,易泊将原来应用在电脑端的车牌识别技术转移到了移动端,手机车牌识别更加灵活,方便,为人们的应用解决了很多实际困难. 手机车牌识别描述

django入门 -- 简单流程

django入门 -- 简单流程 这里简单的演示完成一个 django 大概流程,后面会有详细解释 搭建开发环境 以下使用的是 ubuntu 系统 在生产环境中,有的时候,我们开发的项目可能用的是几个不同的 环境,所以通常我们会创建虚拟环境,在虚拟环境中安装我们需要的 配置,这里从配置虚拟环境开始 创建虚拟环境 创建:mkvirtualenv [虚拟环境名称] 删除:rmvirtualenv [虚拟环境名称] 进入:workon [虚拟环境名称] 退出:deactivate 所有的虚拟环境,都位

CRF技能词识别过程

最近在用CRF做未登录技能词识别,虽然艰难,但是感觉很爽,效率非常高. (1)数据准备: 选取30000行精语料作为训练数据.每一个br作为一条数据.使用已有的技能词典对数据进行无标注分词. (2)训练数据标注: 对分词后的语料进行标注.如果某分词结果在技能词典中,则该词作为技能词进行标注:如果某分词结果不在词典中,则该词作为与技能无关词进行标注.标注规则如下: 标注采用3列,4-tag方式标注:B:技能词开头字:M:技能词中间字:E:技能词结尾字:A:与技能词无关字. (3)修改模板: 技能词

讯飞语音——离线命令词识别

离线命令词识别 效果图 示例源码 地址:http://download.csdn.net/detail/q4878802/9023825 步骤: 1. 下载SDK 前面文章有,就不在复述了.这里要选择离线命令词的服务以后,重新加载,因为需要下载离线命令词识别的资源文件 地址:http://blog.csdn.net/q4878802/article/details/47762169 2. 集成方法 前面文章有,就不在复述了. 地址:http://blog.csdn.net/q4878802/ar