HTK工具搭建识别器的总体框架

article/2025/10/6 21:25:54

        老早之前就学习了HTK工具,并用于搭建连续语音识别器,但是好久没有用对于一些东西又忘记了,现在由于做实验需要用到HTK,又重新看了一遍,所以把一些大致的东西记录下来,以后可以直接看这个。感觉用HTK搭建识别器,学习一门脚本语言非常重要,如Perl,和Shell..........

Hinit:用于对HMM模型的参数进行初始化。

HRest: 用Baum-Welch算法对HMM参数进行估计,可以用许多训练样本构造HMM模型参数,通常和Hinit一起使用。

识别工具:

在HTK中没有哪个工具直接实现了Viterbi算法,但是HVite工具中实现了该算法,

HVite用于孤立词识别,HNETHRec用于连续语音识别,如果该识别器有语法图,也可以作为一个特例用于孤立词语音识别。

连续语音识别:

对于连续语音识别,需要找出每个连续语音的子词,可以用Hinit和HREst来初始化子词模型(bootstrap operation)。主要用于训练的工具是HERest,主要用于嵌入式训练(Embeddedtraining).嵌入式训练和用Baum-Welch训练孤立词模型的过程相似,不同的是它所有的模型一起训练,而不是一个一个模型的训练。在这个过程中不需要训练语音的分界信息,但是需要训练语音的对应的符号标记。

在HTK中的连续语音识别,用token passing algorithm取代Viterbi算法进行识别。该算法在库模块HNET和HRec中实现了,可以通过识别工具HVite调用。它能提供multiple-tokenpassing recognition, single-best output, lattice output, N-best lists, supportfor cross-word context-dependency, lattice rescoring and forced alignment.

 

 

说话人自适应

用工具HERest 和 HVite能进行说话自适应,它需要提供一定的自适应数据。HERest提供线下的有监督的自适应。而HVite提供在线的自适应(用HVite识别该词,再利用产生的符号标记进行调整HMM参数)。HERest的有监督自适应具有更强的鲁棒性。

 

HTK工具简介:

 


HSHELL:用于输入/输出控制。HMEM库用于内存管理。HMath:数学计算库

HSigp:语音分析中用到的信号处理库。

HLabel用于标记文件。HLM:用于语言模型。HNet:用于词网络和网格

HDict:用于词典。HVQ :VQ算法。 HModel:用于HMM模型的定义。

 

所有的语音文件通过HWave进行处理,用HParm进行参数化。HWave和HLabel对多种语音文件格式提供支持。HAudio用于实时语音输入,HGraf提供图形界面接口。HUtil provides a number of utility routines formanipulating HMMs while HTrain and HFB contain support for the various HTKtraining tools. HAdapt provides support for the various HTK adaptation tools.Finally, HRec contains the main recognition processing functions.

 

 

工具使用方法:

命令行参数形式:

HFoo  -T  1  -f 34.3  -a  -s  myfile  file1 file2

该工具主要包含两个主要的参数,file1和file2.加上四个可选参数。可选参数通常用小写字母表示,后面跟一个具体的数值,-f表示一个实数,-T表示一个整数,用于控制HTK工具的输出信息,-s表示一个字符串,-a后面没有数值,表示对工具的某些特性的屏蔽。

配置参数:

HFoo -C config -f 34.3-a -s myfile file1 file2

多个配置文件:HFoo -Cconfig1 -C config2 -f 34.3 -a -s myfile file1 file2

 

 

 

 

HTK语音识别过程

数据准备,训练,测试,分析结果

 

数据准备工具:

HSLab:用于语音的录制。

HCopy:用于特征提取,将原语音文件Copy为参数文件。

HList:用于检查提取的特征参数。

Transcriptions(标注)也需要提取准备,label在训练语音中可以不需要,HMM训练是一个上下文相关的一个过程,它需要标注信息,HLEd是用于将标签转换为HTK固有的标签格式。HLED可以输出单个的MLF Master Label File文件。

HLStats:用于收集和显示Label文件信息。

HQuant:用于建立VQ码本,用于离散HMM模型。

 

模型训练工具:

HTK的训练过程:


   1.需要先定义HMM原型,HMM模型的定义,均值和方差可以任意给定,但是转移概率矩阵要给出,后面 面的训练过程对这个不敏感,主要用于确定HMM的结构。转移概率需要给出合理的值(可以设置所有的转移概率相等),但是这样不影响后面的训练过程。

   2. 模型参数初始化(HInit and HRest)If there issome speech data available for which the location of the sub-word (i.e. phone)boundaries have been marked, then this can be used asbootstrap data. In this case, the tools HInit and HRest provideisolated wordstyle training using the fully labelled bootstrap data. Eachof the required HMMs is generated individually(用HINIT工具中的分段K均值算法进行参数的初始化). On the second and successive cycles, the uniformsegmentation is replaced by Viterbi alignment. The initial parameter valuescomputed by HInit are then further  re-estimatedby HRest.

When no bootstrap data is available, a so-called flatstart can be used. In this case allof the phone models are initialized to be identical and have state means andvariances equal to the global speech mean and variance (用HCompV工具计算全局的均值和方差)。

3.通过第二步已经创建了初始的HMM模型,用HERest工具对所有的训练集进行嵌入式训练。HERest performs a single Baum-Welch re-estimation of the wholeset of HMM phone models simultaneously. For each training utterance, thecorresponding phone models are concatenated and then the forward-backwardalgorithm is used to accumulate the statistics of state occupation, means,variances, etc., for each HMM in the sequence. When all of the training datahas been processed, the accumulated statistics are used to compute re-estimates of the HMMparameters. HERest工具是HTK的核心训练工具,可以用于处理大型数据库。

 

HHED是HMM模型定义的编辑工具,可以通过参数绑定或者增加混合高斯函来克隆上下文有关的HMM模型,然后进行参数的重估。re-estimate the parameters of the modified set using HERestafter each stage.为了提高特定说话人的识别率,可以用HERest和HVite进行说话人的自适应。

 

       建立上下文相关的HMM系统最大的问题就是训练数据的不足,所以需要找一个平衡点。The more complex the model set, the more data is neededto make robust estimates of its parameters, and since data is usually limited,a balance must be struck between complexity and the available data. 在连续HMM模型中,通常通过参数绑定来解决训练数据的不足。HSmooth:用于HMM模型高斯分布的平滑。

识别工具:

HVite:可以利用语言模型和词网格进行语音识别。

HVite takes as input anetwork describing the allowable word sequences, a dictionary defining how eachword is pronounced and a set of HMMs. Recognition can then be performed on either a list ofstored speech files or on direct audio input.

词网络是一个有向图,代表语音识别系统的任务语法。词网络用标准的HTK文件格式保存。HTK提供两个工具来创建词网络。HBUild,HPARSE:将文法转换成词网络。

词网络就是语法规则,限定哪些语句是合法的。

有了词网络就可以生成符合词网络的句子了。用HGEN工具实现,输入为词网络,输出为一些词的句子。

HLRecsore:可以让HVIte和HDEcode生成词网格,用于更复杂的语言模型。

HDMAN:词典管理工具。

分析工具:

HRESULTS:HResults which uses dynamic programming to align the twotranscriptions and then count substitution, deletion and insertion errors. HResults canalso provide speaker-by-speaker breakdowns, confusion matrices and time-alignedtranscriptions.

For word spottingapplications, it can also compute Figure of Merit (FOM) scores and Receiver OperatingCurve (ROC) information.

 

 


http://chatgpt.dhexx.cn/article/34uYv8Ih.shtml

相关文章

HTB-OpenKeyS

HTB-OpenKeyS 信息收集80端口立足于JenniferJennifer -> root 信息收集 80端口 对其进行简单的SQL注入测试和NoSQL注入测试后进行目录扫描。 auth.swp文件内容如下: 代码不是很完整,只能大致了解意思(请原谅我脑子抽了没注意是个swp交换…

HTK工具的安装

首先下载HMM 的开发包HTK,现在的版本是3.4.1.可以从CMU的官网进行下载。 http://htk.eng.cam.ac.uk/,下载后解压HTK工具包,我解压后的目录为:D:\htk\ 确保的环境变量Path包含路径:C:\Program Files\Microsoft Visual S…

HTK的使用方法

一,HTK目录结构 htk是一个开源的软件,解压之后的目录如下: [rootlocalhost htk]# ls AUTHORS config.status env HTK HTKTools Makefile.in ChangeLog config.sub FAQ HTKBook install-sh README co…

语音识别之HTK入门(一)HTK的下载配置

语音识别之HTK入门(一)HTK的下载配置 Linux环境配置VMware Tools安装必备环境 HTK下载HTK环境设置 跪拜大佬帖子: https://www.cnblogs.com/ansersion/p/4155828.html 基本按照大佬的帖子进行调试的,为表示敬意,全程跪…

HTK学习笔记(一)

HTK学习笔记(一) 一、HTK软件体系结构 HTK的软件体系结构 HTKTool各部分的功能: 所有的语音输入和输出都是通过HWAVE或HPARM HAudio:用于从音频设备输入波形 HWave:用于从文件中读取波形 HSLab:波形显示工具,可以用于采集语音…

基于htk工具包的语音识别

htk简介: HTK是一个构建隐藏马尔可夫模型(HMMs)的工具包。HMMs可以用于任何时间序列的建模建模,HTK的核心就是类似的通用目的。然而,HTK主要设计用于构建基于HMM的语音处理工具,特别是识别程序。因此,大部分HTK中的基础设施支持专门用于此任…

jQuery学习手册(15)

逐个设置 $(div).css(width, 100px)​ $(div).css(height, 100px)​ $(div).css(background, black)链式设置 注意:如果大于3步,建议分开 $(div).css(width, 100px).css(height, 100px).css(background, black)批量设置 $(div).css({ ​ …

第7章页面布局-ConstrainedBox限定宽高

防采集标记:亢少军老师的课程和资料 import package:flutter/material.dart; class LayoutDemo extends StatelessWidget {overrideWidget build(BuildContext context) {return new Scaffold(appBar: new AppBar(title: new Text(ConstrainedBox限定宽高示例),),b…

全网最详细的一篇Flutter 尺寸限制类容器总结

Flutter中尺寸限制类容器组件包括ConstrainedBox、UnconstrainedBox、SizedBox、AspectRatio、FractionallySizedBox、LimitedBox、Container。这些组件可以约束子组件的尺寸,下面一一介绍。 ConstrainedBox ConstrainedBox组件约束子组件的最大宽高和最小宽高&am…

android中各种height和width总结

1. getMeasuredWidth()和getWidth() 以这两个为例,高度与其相同。这两个是在自定义View中最常见到的,通过字面意思可以看出,前者是测量的宽度,后者是控件的实际宽度,下面看下官方文档对他们的描述: //Ret…

JavaFX布局(一)

说道GUI编程一定要谈到布局,JavaFX内置了大量的布局控件提供给我们使用。其实,JavaFX的布局控件和界面元素控件都是继承自javafx.scene.layout.Region类。我们这里只看布局控件类。布局控件我们在界面上一般是看不到的,它一个容器用于放置其它…

Android 桌面小组件 AppWidgetProvider

废话 桌面小组件,绝对是小程序中的小程序,说白了就是任何复杂一丁点的操作都不适合做成桌面小组件。 所以这里采用的演示的例子,就只有一个白色圆角背景,外加一个文本框,显示文字。 小组件的教程网上一搜一大堆&…

Android 约束布局 ConstrainLayout min max width

写一个自定义view package com.anguomob.guidelineimport android.content.Context import android.graphics.Canvas import android.graphics.Color import android.util.AttributeSet import android.view.Viewclass ZeroView constructor(context: Context?, attrs: Attri…

ConstrainLayout 基础教程2,近期想跳槽的程序员必看

特性详解 Visibility behavior (可见性的表现) ConstraintLayout对可见性被标记View.GONE的控件(后称“GONE控件”)有特殊的处理。一般情况下,GONG控件是不可见的,且不再是布局的一部分,但是在布局计算上,ConstraintLayout与传统布局有一个很重要的区别: 传统布局下,…

UGUI源码解析——LayoutElement

一:前言 继承了ILayoutElement和ILayoutIgnorer接口,作为布局元素组件 挂载了Layout Element组件的对象,布局并不会生效,它是受到实现了布局组的控制(HorizontalLayoutGroup、VerticalLayoutGroup、GridLayoutGroup) 二&#xff…

Layui框架的使用技巧

1.选中html代码块&#xff0c;ctrlshift减号- 就会全部折叠 2.加入Thymeleaf模板需要添加命名空间 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org/"></html> 2.1 替换方法 2.2添加 th:fragment 2.3主页面用一行代码替换 3.SpringBo…

UGUI源码解析——LayoutUtility

一&#xff1a;前言 布局的工具类&#xff0c;可以获取到对象的minWidth、preferredWidth、flexibleWidth、minHeight、preferredHeight、layoutPriority的属性值 二&#xff1a;源码解析 ——获取对象属性值的方法 以上方法可以获取到对象的minWidth、preferredWidth、flexi…

Flutter布局指南之深入理解BoxConstraints

点击上方蓝字关注我&#xff0c;知识会给你力量 强烈建议先看下这篇文章——Flutter你竟是这样的布局 不管你是Android开发&#xff0c;还是Flutter开发&#xff0c;当你开始使用Flutter茫茫多的Widget时&#xff0c;可能会猜测Widget在屏幕上的尺寸和位置&#xff0c;但事实上…

vue element-ui el-table表格二次封装 自定义el-table表格组件 vue封装表格组件

CommTable.vue table组件 <template><div><el-table:data"tableData"border:class"tabClass ? tabClass : null":showHeader"showHeader ? showHeader : true":spanMethod"spanMethod ? spanMethod : null"element…

Stage的MinWidth和MinHeight的疑问

设置了Stage的MinWidth和MinHeight,但是显示的时候不是这个高度和宽度&#xff0c;最小化之后再次显示的时候就可以了&#xff0c;奇怪 package stage;import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import jav…