<span style="font-size:24px;">对于搜索来说,首先,也最重要的就是建立搜索空间。在语言识别中搜索空间是怎么建立的了。我们知道语音识别一般包括语言模型和声学模型。而语音识别就是要在搜索空间中找到最有可能的字的序列。我们一般是按句来处理的。一句话有许多词所组成,我们所要做的就是确定一句话,中的那些词即字。我们一般会在搜索空间中加上一些特殊的词来表示一句话的开始和结束。在sphinx中一般为<sil>表示句的开始,</sil>表示句的结束。
 对于搜索空间的建立,一般我们是根据语言模型来此字的搜索空间,即每个搜索节点都为一个字。我们建立的搜索空间可以是单向,也开始是双向即即可向前右可以回退。一般在每个搜索空间中每一个节点对象中都会存在着此节点的表示即此节点表示的是哪字或者其它确定的对象如单元即音素。包括指向下一个搜索节点的弧或者指针因为下一搜索节点是存在多个的,所以我们在一个搜索节点存储了弧或指针的集合来指向所有可能的下一搜索节点。如果允许回退的话还可能包括parent节点的指针即对象索引,来指示此搜索节点的上一搜索节点。
根据语言模型建立的字的搜索空间后,我们可以对字搜索空间中的每一个字搜索节点进行扩展。 我们知道一个字是可能有多个发音的。每一个字的发音被用于字搜索节点的扩展,每个发音都是并行的关系。在由于发音是由多个单元即音素所组成,而我们在训练声学模型时在sphinx中一般是对音素进行建模的,即一个音素一个hmm模型。因此我们可以根据字的发音来确定单元即音素之间的串行连接顺序,即扩展扩展成单元串。在我们可以按照我们所训练的声学模型来对单元来进行扩展,把单元即音素扩展成hmm网络。
在进行搜索空间的建立时我们需要注意的是扩展后的相互连接。对于搜索空间的建立有多种方法。应根据需要来选取。我们也可以建立字的扩展成hmm网络的的小的网络。然后在把所有小网络按照语言模型来组成大网络。
在搜索空间中我们站在不同的角度来思考问题或扩展问题,其就会有不同的处理过程。
在搜索空间建立的时候我们可以不用建立完整的搜索空间,而是建立那些最有可能的结果的搜索空间。来节省内容。在此期间我们会用到一个限制条件。如限制每一搜索节点的直接后续节点数,此限制可以是动态的。我们也可以在不同的角度来却限制的方面,如在字的角度,在hmm链的角度。
搜索空间建立好了我们就可以根据输入的声学特征矢量来进行搜索。在此搜索我们可以分为多种方法。一般一次打分,和多次打分的方法。我们一次搜索中一条最有可能的搜索路径作为结果。也可以搜索多条路径作为结果。我们可以在搜索结果上再进行处理。来确保我们所搜索到的是全局的最优搜索路径。在就需在进行多次打分处理。</span>

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐