一 语音识别基本概念

写在前面
这是系列教程的第一篇,文章译自官网,文中很多概念能翻译的尽量用中文翻译出来,并在后面跟上原英文,实在翻译不出来的就用原英文了,相信不会影响到大家的理解 。如有翻译不当之处,请多但待并指出,谢谢!
语音是一个复杂的现象() 。人们很少能理解它是怎样产生以及被感知的() 。一个直观的感知(,和前面的感知意思类似,只不过词性不同)通常是:语音是由多个词(words)构建的,而每个词又是由多个音素(,语音学概念,但在多数情况下和语言学中(音位)的概念不做区分)构成的 。但是很不幸,事实却和人们所感知的差别很大 。语音是一个动态的过程,在它的每一部分之间没有明确的界限 。因此,了解一段语音的一个很有效的方式是通过一个声音编辑器去观察(look into)下语音的波形(),并去听一下 。这是一段通过音频编辑器打开的语音的波形
当前所有对语音的刻画的方法或多或少都是用概率 。这意味着在单元与单元,或者词与词之间不存在确定的界限 。语音转写( to text)以及其他语音方面的应用不存在100%正确的情况 。这和传统的软件开发人员的想法是相悖( )的,他们通常是在确定的()系统上进行工作的 。这就产生了很多只属于语音技术的概念和话题 。
语音的构成
目前的实践()中,语音结构的描述如下文所示:
语音是一个连续的音频流,它是由相对稳定的状态和剧烈变化的状态混合而成的 。在这些状态序列里,人们可以针对声音(sound)或者音素()根据相似性定义一定数量的类别(我的理解是,作者想要表达的意思是确定一种建模方式,对于每一种建模方式,建模单元的数量是可以确定的) 。词(words)通常被理解为是由音素()构建的,但事实并不如此 。一个音素对应的波形()的声学特性( )的变化会严重依赖于音素上下文(phone )、说话人()、语音的风格(style)等等 。所谓的协同发音(,可以理解为一个音素的发音会受到相邻音素的影响,为了使发音自然连贯,人类在发音时总会使用协同发音以使音素与音素之间过渡平滑),会使得音素听起来和它原本的发音(,单个音素的发音)差异很大 。因为词与词之间的过渡所蕴含的信息要比稳定区域( ,这里指一个词的内部)多得多,语音开发人员谈论的更多的是,即两个音素相邻的部分(包括前一个音素的末尾部分和后一个音素的起始部分) 。有时,他们也会谈论单元,即一个音素的不同子状态(,这就是多音素建模方式的思想) 。通常,一个音素可以根据不同的特性分成三个或更多的区域() 。
对于三个的情况很好解释:音素的第一部分依赖于它的前一个音素,中间的是稳定的自身的部分,第三部分依赖于它的下一个音素 。这就是为什么在语音识别中一个音素常常包含三个状态 。
有时,音素会被放到上下文中进行考虑 。这些在上下文中的音素被称为三音素()甚至是五音素()(注意:无论是考虑多少个相邻音素,这些音素都是一个音素,而不是将多个音素当作一个音素) 。例如在单词”bad”中,”u”的左边是音素”b”,右边是音素”d”,它的发音和单词”ban”中,左边是音素”b”,右边是音素”n”的”u”发音就有点不同 。注意,和不同的是,考虑上下文的多音素和不考虑上下文的音素,对于同一个音素来说,它们在波形上的范围是一样的,多音素并不是将多个音素组成一个“大”的音素 。它们只是因为发音有区别用不同的名字表示而已 。
举例来说,如果你想对一个三音素的起始创建一个检测器,并将它在多个三音素之间共享,为了降低计算量,一个有效的做法是只检测()部分三音素而不是检测所有(这里对的概念不是很明白,我的理解是,理论上,对于有 NN 个音素的模型,对应的三音素个数是N3" role="">N3N3,而实际系统中,可以采用一些手段来降低三音素的个数,如下面提到的决策数聚类方法) 。这样,大量的声音检测器(sound )就可以用少量的具有区分度的声音检测器来代表(很多三音素类似,可以将它们聚在一起,共享参数,经过聚类之后,不同类别之间的三音素区分度是比较大的) 。通常我们是以哦嗯4000个具有区分性的声音检测器去组成三音素的检测器 。我们称这些检测器为(也称为tied,即将分布类似的状态聚成一类共享参数) 。一个可以依赖除了左边和右边的上下文以外更多的上下文信息 。可以通过决策数或者其他方式定义相当复杂的函数 。