kaldi语音识别实践_pubmed主题词检索的主要步骤

(2) 2024-07-08 08:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
kaldi语音识别实践_pubmed主题词检索的主要步骤,希望能够帮助你!!!。

前言

一般来说,一个kws系统包括两个部分:lvcsr 模块解码检索集合并且产生相应的网格,一个kws模块生成网格索引并从索引中查找关键词。
在Kaldi中,关键词识别(KWS)和大词汇量连续识别(LVCSR)都是基于权重有限状态转换(WFST),因此关键词识别不光能对词进行识别,也能对音节、音素等进行识别。

文章目录

  • 前言
  • 一、KWS系统组成
  • 二、字典以外的关键词处理(OOV)
    • 1.问题描述
    • 2.解决办法
  • 三、Babel scripts
  • 引用

一、KWS系统组成

LVCSR:对待查询的关键词集合进行解码,并生成相应的lattice
KWS:对lattice进行index,并根据生成的index来查找关键词

LVCSR

基本的LVCSR系统是一个SGMM(子空间混合高斯模型)+MMI(最大互信息)系统,使用PLP(线性预测分析)获取13维的语音特征。然后用一个典型的最大似然估计进行语音训练,以一个平滑的上下文无关的音素HMM做初始值开始,以说话人自适应(SAT)的状态集群三音素hmm-gmm做为输出结束。在说话人变换训练集的统一背景模型(UBM)进行训练,然后得到用于训练HMM发射概率的子空间高斯混合模型(SGMM),最后,所有的训练语音使用SGMM系统进行解码,然后对sgmm的参数进行bmmi训练
详细的执行脚本见kaldi/egs/babel/s5b/run-8a-kaldi-bnf.sh;除SGMM+MMI系统之外,还可以使用如DNN(egs/babel/s5b/run-2a-nnet-gpu.sh)、 bottleneck feature system(egs/babel/s5b/run-8a-kaldi-bnf.sh)等
所有这些系统都是对相同的检索集合进行解码并且生成网格,随后送到kws 模块进行索引和检索。我们在检索结果上而不是在网格上将这些系统组织起来。

KWS

由上述 lvscr 系统产生的网格,使用在文章"Lattice indexing for spoken term detection", D. Can, M. Saraclar, Audio, Speech, and Language Processing 中描述的网格索引技术进行处理。所有待检索集语句中的网格都被从单一加权有限状态转换成一个单广义因数变送器结构,将每个词的开始时间,结束时间和网格后验概率这三维数据存储起来。给一个词或短语,我们创建他的简单有限状态机,可以得到这个关键词/短语并且将他与因数变送器得到关键词/短语在检索集合中所有出现过的地方,和一个语句的 ID 号,开始时间,结束时间,以及每个地方网格的后验概率。所有检索出来的结果以他们的后验概率进行排序,并且使用论文"Rapid and Accurate Spoken Term Detection"中的方法来对每个实例判断是或否。

二、字典以外的关键词处理(OOV)

1.问题描述

如果一个关键词没有在LVCSR的词汇表中,即使在搜索集录音文件中有这个关键词的发音,它也不会出现在查找lattice中。因此需要有方法来解决OOV的关键词查找问题。

2.解决办法

Kaldi的KWS使用的方法是,在词汇表中找到一系列和关键词发音近似的词。以这些词作为关键词的代理词汇,代理关键词产生过程在论文 “Using Proxies for OOV Keywords in the Keyword Search Task”, G. Chen, O. Yilmaz, J. Trmal, D. Povey, S. Khudanpur 做了描述。最早使用这个方法解决词网格中的 oov 问题,如果关键词不在 lvcsr系统的词汇表中,尽管实际上这个词在谈话中已经被提到了,但他也不会出现在检索集的网格中。为了解决这个问题,去寻找语音中与词汇表中相似的词,并且使用这些词做为代理关键词替换那些表外词汇。这样做的好处是我们不用创建额外的子词系统。“Low-Resource Open Vocabulary Keyword Search Using Point Process Models”, C. Liu, A. Jansen,G. Chen, K. Kintzley, J. Trmal, S. Khudanpur 中证明该技术可以同一个建立在点处理模型上的音素检索模型相媲美。代理关键词是一种模糊检索方法,他在处理表外词的同时也可以加强 IV 关键词性能。
通常的代理关键词处理过程可以用以下公式产生:
kaldi语音识别实践_pubmed主题词检索的主要步骤_https://bianchenghao6.com/blog__第1张
其中K是原始关键词,L2是一个包含K发音的字典,如果K是个表外词,这个词可以使用G2P工具得到,E‘是编辑距离转换器,表示音素与训练集的差异程度。包括由训练集计算得到的发音困惑度。L1是原始字典。K‘是包含一系列与K发音相似IV词的WFST,是与原始发音K相似的发音词。然后将这些相似词当做关键词进行查找。
注意两个修正阶段是必不可少的,尤其当你的词汇表非常大的时候。我们同时实现了一个简单的组合算法,只产生必须的组合状态(比如,不产生以后会被修正的状态)。

三、Babel scripts

我们为IARPA Babel 项目建立了一个“一键”脚本。如果你在Babel 上进行实验时想用我们的脚本,你可以用以下几步建立一个SGMM+MMI的关键词检索系统(假设你的工作目录是 egs/babel/s5b/)
1、安装F4DE 并且将他设置在你的path.sh中。
2、修改cmd.sh以保证可以运行在你的集群 。
3、将conf/languages中的一个文件连接到./lang.conf,比如 “ln -s conf/languages/105-turkish-limitedLP.official.conf lang.conf”
4、修改lang.conf中的JHU集群中的数据使它指向你的数据文件。
5、运行run-1-main.sh ,建议lvcsr系统。
6、运行run-2-segmentation.sh, 产生eval 数据的分割
7、运行run-4-anydecode.sh,解码eval 数据,生成索引检索关键词同时,你可以建立DNN系统,BNF系统,Semi-supervised 系统等等语音识别系统。关键词检索任务在run-4-anydecode.sh中执行。我们将在下面介绍如何进行关键词检索的细节,你可以把这些方法用于其它的数据上。我们假设你已经解码了检索集合并且产生的相应的网格。

引用

http://www.kaldi-asr.org/doc/kws.html

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复