优选实施方案详述
应该理解在这里描述的典型***模型和方法步骤可以被实现成不同形式的硬件、软件、固件、专用处理器或者其中一些的综合。更可取的是,将本发明以软件的形式实现成应用程序,切实地实施在一个或多个程序存储设备上。这个应用程序可以在任一台包括合适架构的机器,设备或者平台上执行。应该更深入理解的是,因为一些附图中所描述的组成***模型和方法步骤最好是以软件形式实现的,***组件(或处理步骤)之间的实际联系可能会因本发明被编程的方式而有所不同。通过这里给出的教导,相关技术中的熟练人员将可以想出或实现本发明的这些或相近的实现和配置。
在图1中描述了一个适合实践本发明的***。这个***包括一台计算机101,它通过将声音信号映射到文本来执行语音识别功能。这台计算机被连接到一台显示器102,一只鼠标103和一个键盘104。一只麦克风105也被连接到这台计算机,用来将声音转换为电信号,后者随即被提供给计算机中的声卡。
图2描述了依照本发明一个实施方案的对声调语言进行语音识别的主要部件。这些组件可以被实现为一个存储在计算机101中的软件。通过图1中所示***的操作,声音信号201通过麦克风202被转换为电信号。一个模/数转换器203将从麦克风传过来的模拟信号转换成数字信号。包括一个谱特征提取单元204和一个基音提取模块205的信号处理单元,为语音识别提取压缩信息。
谱特征提取单元204产生谱特征向量,例如,唛耳频率导谱系数(MFCC mel frequency Cepstral coefficients)。谱特征向量代表了在一个频率范围上的能量分配。典型情况下,一套12个导谱系数被产生出来。(见例子,Steven David和Paul Mermelstein,的“用于连续语句中单音节词识别的参数化表示的比较”,语音学,语句和处理IEEE学报,Vol.ASSP-28,No.4,1980年8月,357-366页。)
在语音技术中,基音对再生悦耳的语音来说是一个核心元素。基音被定义为在任意时刻声带的共振频率。尤其对声调语言来说基音对精确的语音识别是必需的。基音提取模块205对每帧,例如每10毫秒,产生一个基音频率。提取出的基音频率被表示为其与说话者平均基音的比值的对数;这被称为对数相对基音。举例来说,典型情况下女性演讲者比男性有更高的平均基音。如一帧的基音高于平均基音,则相对基音的对数是正的。如果一帧的基音比平均基音低,则相对基音的对数是负的。
然后将基音频率与MFCC综合以形成完全声学特征向量206,例如在本例中它是一个每帧(10毫秒)13维的向量。
以基音作为它的一个分量的声学特征向量206,这时被提供给一个贴标签机207。贴标签机通过对传入语音的每一帧(例如包括一个13维的声音特征向量)和声学原型数据库208中所有音素的声学原型进行比较为每一帧找到最接近匹配的音素来自动给帧贴上标签。声学原型数据库208包括一套存储在数据库中的不同音素的原型。这些原型是对应每个个体音素的模板,被用作与传来语音的帧进行比较以分配标签的点。这些原型包括有声调值的元音,例如一个有不同的声调A1,A2,A3的元音“A”被描述在208中。在声学原型数据库中,每一个音素被分成前,中,后三段。每一段被看作一个次音子(feneme)。例如,元音“A”的升音A2有三个次音子,A2-1,A2-2和A2-3,对A2-1来说对数相对基音频率通常是正的,而对A2-2则接近于0,对A2-3则一般是负的。
通过贴标签过程,一个最可能的标签序列209按照每个传来的声学特征向量帧的顺序被生成了。这些标签随即被送到一个包括一个音素词汇表211和一个语言模型数据库212的解码器210以为传来的声音信号找到最接近的文本213。音素词汇表211包括一个带声调信息的字词数据库并且被用来确定与标签序列匹配的字词。举例来说,语言模型数据库可以通过检查第三个字词前面的两个字词来确定第三个字词的概率。通过语言模型数据库确定的字词的概率然后被与那些标签和音素词汇表综合起来以预知最可能的文本213。
既然基音是声学特征向量的一个分量,对那些有同样的谱特征但是基音不同的帧来说,标签207指向着不同的调素,也就是说,指向有着不同的声调的同样的元音(A1,A2,A3等等)。
现在来看图7,流程图描述了一个依照于本发明的实施方案被基音提取单元205执行的实现基音提取过程的典型算法的细节。(参见受让人相同的美国专利号5,751,905,这里引用作参考)。数字化的语音信号(由数/模转换器203产生)在模块702被输入。在模块704,确定当前帧的能量是否大于一个阈值,模块706。如果信号能量低于阈值,则表示基音的缺失,需要用外推法求基音。如果能量大于阈值则基音提取进行。基音提取是通过确定帧的瞬间频率来执行的。如果基音频率在一个合理的范围內,例如在50Hz和500Hz之间(人声的频率范围,包括男性和女性)模块708,数字化的语音信号就通过一个低通滤波器,模块710,以消去信号噪音,然后基音频率被输出,模块712。
图7的算法的第二个输入是一个初始平均基音频率P0,模块714。然后在模块716计算出一个连续基音平均值,如下所示:
P0=P0(1-y)+Pny,
0<y<<1。
这里左端的P0是连续基音平均值,右端的P0是初始基音平均值,y是一个很小的数值,用以确定获得平均值的时间段。特别地,它是那个时间段帧的数量的倒数。连续平均值随后被用于外推基音信号。
如果数字化语音信号的能量小于阈值,模块704,或者是数字化语音信号的基音频率不在一个合适的范围內,模块708,那么将在模块718用外推法求基音。在任一种情况下,外推基音频率都将如下所示进行计算:
Pn=(Pn-1-P0)(1-x)+噪音,
0<x<<1。
这里Pn是外推基音信号在时间n的瞬时值,Pn-1是前一个相邻时间段上的基音,x是确定外推时间刻度的另一个小数。具体来说,它是那个指数外推时间段中帧的数量的倒数。噪音成分产生自一个噪音发生器720。
在外推信号被计算出之后,外推信号和初始数字化信号被加起来后通过一个低通滤波器710。
根据现有技术的(像在美国专利5,751,905中所揭示的)语音识别方法所要求音素数目与本发明所描述的算法要求的音素数目相比较的不同,可以看出本发明的优点。
1.普通话的情况
普通话有五个声调:阴平(高),阳平(升),上声(低),去声(降)和轻声(中性)。连续语音中这些声调的典型基音轮廓的例子被显示在图3中。基音表301描述了用来表示不同基音的符号。例字305给出的英文描述306表示一个具有不同基音轮廓的由一个音节构成的字,各基音轮廓像在基音表301中指出的那样。汉字307给出对应于不同英文描述的汉字。
在像普通话这样的声调语言中,有相同辅音和元音序列的音节,根据音节的基音轮廓或者声调,可能有不同的意义。图4给出一个由有相同辅音和元音序列的多个音节组成但根据每个个别音节的声调有不同意义的字词的例子。第一列(400)描述对应于第二列(402)中的字词“YiJi”的不同意义的不同汉字。虽然字词“YiJi”中的辅音和元音顺序保持不变,但每个音节(明确地说是“Yi”和“Ji”)有不同的声调。相同的字词中的这些不同的声调导致该字词具有差异很大的意义。例如,在406中,第一个音节有一个高音的元音“i”。第二个音节“ji”有一个升音的元音“i”。这两个有不同声调的特定音节组合成意思是“一级”的词组。
然而,在408的例子中,组成字词“YiJi”的两个音节,第一个音节“Yi”有一个升音的元音而第二个有一个降音的元音。这种组合导致这个字词意味着“疑忌”。
依照本发明的一个方面的语音识别算法初始时将语音的字词转换成电信号。信号处理单元根据这些电信号产生帧序列,每一帧包括例如10毫秒。每一帧有一个特征向量,这个特征向量例如包括12个导谱系数和一个基音对数相对值。声学特征向量流被输入进贴标签机。在本发明的一个方面中每一个传来的声学特征向量被通过与声学原型数据库中的原型进行比较找到最接近的匹配音素而自动贴上标签。贴标签过程同时确定1)帧是元音还是辅音2)如果帧是元音,它是哪个元音3)元音属于哪个声调。
这里,我们描述依照本发明的一个方面,如何在贴标签步骤(207)通过参考声学原型数据库(208)识别出传入语音(201)中元音的声调。首先,基音是每个声学特征向量(206)中代表传入语音的一个帧的一个分量。对于属于有不同的声调的相同元音的帧,每一帧的基音频率(205)是不同的。在声学数据库(208)中,有不同声调的同一元音的原型被当作不同的原型,属于不同的音素。这样的差别是在训练过程建立的,像下面的图6所描述的那样,训练过程定义有不同声调的元音为不同的音素。在训练过程中,属于同一元音但有不同声调的声学特征向量被分开收集,形成不同带声调元音或不同调素的声学原型。调素被定义为声调语言中有特定声调的音素。
在依照本发明一个方面的语音识别过程中,将每个传入的声学特征向量206(表示一个帧),与声学数据库208中的所有声学原型进行比较,以找出最接近匹配的原型,从而找到它所代表的最接近的音素。因为不同声调的元音被归类为不同的音素,这种匹配过程的结果是与每一个声音特征向量最接近匹配的带声调元音,或者最接近匹配的调素。
元音的声调值被用来确定音节的声调值。这个方法基本上只利用音节中元音的基音信息来预测音节的声调。这个方法很大程度上减少了音素(它被用来识别整个声调语言)的总数量,这样就大大简化了训练过程并使得解码过程加快。另外,这种简化的方法在识别普通话的精确度上也可以与现有技术中复杂得多的半音节方法相媲美,并且在特定情况下还要强于它。而且,本发明的方法也与欧洲语言的语音识别相兼容。
举例说明,在美国专利5,751,905中所描述的方法和音素***一共为普通话产生了165个音素(114个调素和51个声母(premes))(见美国专利5,751,905的表1)。
然而,用本发明的这种方法,识别普通话所需要的音素数目被减少到只有72个(44个调素,21个辅音,3个半元音和4个尾声),像表1中所描述的那样。显然,虽然在实现本发明的方法时,音素数目被减少了二分之一还要多,但解码精确度几乎没有变化。
表1 普通话音素
调素:
A1 A2 A3 A4 A5
E1 E2 E3 E4 E5
EH1 EH2 EH3 EH4 EH5
ER2 ER3 ER4 ER5
I1 I2 I3 I4 I5
IH1 IH2 IH3 IH4 IH5
O1 O2 O3 O4 O5
U1 U2 U3 U4 U5
YU1 YU2 YU3 YU4 YU5
辅音:
B P M F D T N L Z C S ZH CH SH R J Q X G K H
半元音:
W Y V
元音:
w y n ng
与美国专利表1中所示的114个调素相比,上面的表1中的调素仅包括带声调內容的元音。普通话中的元音有9个(A,E,EH,ER,I,IH,O,U,YU),声调有5个。这样,依照本发明给每个元音单独分配声调內容只导致产生了44个调素。再加上21个辅音,3个半元音和4个尾音一共只产生了依照本发明识别普通话所需要的72个音素。
下面的表2是对美国专利5,751,905中普通话的音节分解方案和使用本发明的方法的一个普通话音节分解方案进行比较的一个描述。
表2: 普通话音节分解
A)音节 B)美国专利5,751,905 C)本发明
Chai1 CH AI1 CH A1 y
Chai2 CH AI2 CH A2 y
Chai3 CH AI3 CH A3 y
Chai4 CH AI4 CH A4 y
Chai CH AI5 CH A5 y
Chao1 CH AO1 CH A1 w
Chao2 CH AO2 CH A2 w
Chao3 CH AO3 CH A3 w
Chao4 CH AO4 CH A4 w
Chao CH AO5 CH A5 w
Chan1 CH AN1 CH A1 n
Chan2 CH AN2 CH A2 n
Chan3 CH AN3 CH A3 n
Chan4 CH AN4 CH A4 n
Chan CH AN5 CH A5 n
Chang1 CH ANG1 CH A1 ng
Chang2 CH ANG2 CH A2 ng
Chang3 CH ANG3 CH A3 ng
Chang4 CH ANG4 CH A4 ng
Chang CH ANG5 CH A5 ng
Chuai1 CHU AI1 CH W A1 y
Chuai2 CHU AI2 CH W A2 y
Chuai3 CHU AI3 CH W A3 y
Chuai4 CHU AI4 CH W A4 y
Chuai CHU AI5 CH W A5 y
Chuan1 CHU AN1 CH W A1 n
Chuan2 CHU AN2 CH W A2 n
Chuan3 CHU AN3 CH W A3 n
Chuan4 CHU AN4 CH W A4 n
Chuan CHU AN5 CH W A5 n
Chuang1 CHU ANG1 CH W A1 ng
Chuang2 CHU ANG2 CH W A2 ng
Chuang3 CHU ANG3 CH W A3 ng
Chuang4 CHU ANG4 CH W A4 ng
Chuang CHU ANG5 CH W A5 ng
表2的A列给出了普通话中不同音节的例子。每个音节有5个声调中的一个;这里,没有编号的音节代表有中性声调的音节。B列给出了美国专利5,751,905对照于A列中给出的音节的半音节方法的一个例子。例如,第一个音节“Chai”被分成两个半音节,“Ch”和“ai”,声调由整个第二个半音节来确定,它包括一个主元音和一个尾音。第一个半音节的声调被忽略。
表2的C列给了依照本发明实施方案的方法的一个典型应用。例如,对于音节“Chai”,识别元音“a”并且确定它的声调。这里声调以编码1-5来表示,5标明中立声调。辅音“Ch”和尾音“i”的声调不考虑。
2.广东话的情况
对广东话来说,要将音节分成半音节的方法(像在美国专利5,751,905中所提出的那样)应用于广东话,必须定义大量的音素。原因应归于在普通话中只有四个尾声(对所有音节的两个辅音尾声“n”和“ng”,加上半元音“y”和“w”作为尾声),而在广东话中有8个可能的尾声(“p”,“t”,“k”,“n”,“ng”,“m”,“y”和“w”)。另外,即使包括中性声调,在普通话中可能的声调也只有5个。在广东话中共有9个声调。这样,用所述半音节方法,必须定义大约300个音素才能识别广东话。
与此相反,使用依照本发明的方法,只要定义88个音素就足够成功地识别广东话,它加速了对语音识别来说必要的训练和解码过程。另外,这个简化方法的精确度甚至比更复杂的半音节方法还要好。
广东话中9个声调的基音轮廓在图5中显示。用依照本发明的方法的思想,通过合并三个短声调(入声,声调标号为7,8,9)和其他相近的声调,声调数目被减少了。在这个例子中三个入声音节的基音频率与标号为1,3,6的声调的基音频率非常接近。通过分离声调标号为1,3,6的音节的尾声,声调7,8,9中仅元音的声调模式就几乎与声调1,3,6中的声调模式相同。这样,单单每个元音就有6个与之相联系的声调,而不是9个。也就是说,声调7,8,9的元音可以用声调1,3,6中的元音来标识。
使用本发明的这种改良的方法,最后得到的88个音素包括下列:
60个广东话调素(带声调的主要元音)是:
A1 A2 A3 A4 A5 A6
AA1 AA2 AA3 AA4 AA5 AA6
E1 E1 E3 E4 E5 E6
I1 I2 I3 I4 I5 I6
O1 O2 O3 O4 O5 O6
EU1 EU2 EU3 EU4 EU5 EU6
U1 U2 U3 U4 U5 U6
V1 V2 V3 V4 V5 V6
M1 M2 M3 M4 M5 M6
NG1 NG2 NG3 NG4 NG5 NG6
广东话初始辅音是:
GS B CH D F G GW H J K
KW L M N NG P S T W Y
广东话尾音是:
p t k n ng m y w
3.除了元音上的基音信息以外加入其它信息来确定一个音节的声调
虽然一个音节的元音自身的基音信息可以提供关于该音节声调的基本信息,音节的其他部分也包含声调信息。例如,尾声的基音信息也可以用于对音节的声调做出更准确的预测。就普通话来说,尾声的基音频率要么是高(对阴平和阳平),要么是低(对上声和去声)。表4描述了一个普通话的典型音节分解表,其中尾声音素“y”和“n”都被分成了两类,“1”代表高基音,“2”代表低基音。 表4:普通话音节分解,包括尾声中的基音信息音节 旧 新Chai CH AI1 CH A1 y1Chai CH AI2 CH A2 y1Chai CH AI3 CH A3 y2Chai CH AI4 CH A4 y2Chan CH AN1 CH A1 n1Chan CH AN2 CH A2 n1Chan CH AN3 CH A3 n2Chan CH AN4 CH A4 n2Chuai CHU AI1 CH W A1 y1Chuai CHU AI2 CH W A2 y1Chuai CHU AI3 CH W A3 y2Chuai CHU AI4 CH W A4 y2Chuan CHU AN1 CH W A1 n1Chuan CHU AN2 CH W A2 n1Chuan CHU AN3 CH W A3 n2Chuan CHU AN4 CH W A4 n2
因为普通话中只有四种不同的尾声,通过根据基音将所有尾声分成两个不同的集合,使用本发明的方法只需要四个额外的音素,仍然使得普通话音素的数目远少于使用现有技术的半音节方法所要求的音素的总数目。
图6画出了一个流程表,描述了依照本发明的一个方面生成声音原型数据库208的一个典型训练过程。开始,一大套训练文本被准备好(601步)。文本再被转换成音素序列,包括带声调的元音(602步)。在603步中,说话者被要求读这段文本以产生声音记录(训练语音)。然后逐帧地计算出语音的声学特征向量(604步)。这些声音特征向量包含基音作为分量。
然后将声学特征向量的帧序列与文本的音素进行比较以将每一帧和与它相对应的音素分在一组(605步)。然后计算出每一个音素(包括带声调的元音)的特征向量的每一个分量的均值和方差(607步)(举例来说,一个包括12个导谱系数和一个基音频率的13维的特征向量共有13个分量)。这样,每个音素—包括那些带声调的元音--的声学原型就被产生了(608步)。这些声学原型被存储到声学原型数据库208中。
不同声调的相同元音的音素可能有相同的谱特征但不同的基音频率。有不同声调的同一元音的特征向量被分开收集以形成不同带声调元音或者说不同调素的声学原型。
虽然本发明的说明性的实施方案至此已经通过对附图的引用被进行了描述,可以理解的是本发明并不受限于这些明确的实施方案,本领域的熟练人员在不偏离本发明的范围或精神的前提下可以做出不同的其他变化和修改。所有这些变化和修改被规定为包含在附录的权利要求所定义的发明范围內。