汉语普通话双音子和三音子结构系统以及相关语料库的设计摘要自然语音处理最感头疼的问题, 就是难以对付连续话语中复杂的语音变化. •语音学界和言语工程学界经过长期的探索发现, 双音子和三音子是比较理想的、•能够较好地覆盖各崐种语音变化现象的处理单元. 所以, 在语音合成和语音识别中, •特别是在波形拼接合成方崐面已经得到广泛的应用. 但是, 在国内, 人们尚不十分熟悉它们.•本文将扼要地介绍这些概崐念, 并概括描写汉语普通话的双音子和三音子结构系统及相关语料库的设计.1.0 综述当前, 言语的合成和识别都已进入连续话语的阶段, •而影响合成音质和识别率提高的拦路虎就是语音的多变性问题. •因为自然话语并不是各种语音单位诸如音素或音节的简单机械的串列, 而是按照一定语音结合和变化规则构成的有机体系. 在这个体系里,各相邻语音单元之间由于协同发音(coarticulation)作用而彼此渗透, •在空间和时间域里形成了相互套叠(telescope or overlap)的局面(Zsiga, 1994; Wood, 1991), 其中相互叠接的部分叫做音联(juncture)(许毅, 1989), 它通常都是对应于一个声学上极其易变的区域. 不同语音单元之间的音联既是它们相互连接和分界的表现, 又是体现它们随环境而变化的实体. 正是这个部分给自然言语处理带来了极大的困难. 所以, 无论是合成还是识别方面, 都迫切希望能够定量地获得这种音联的规律及相关的模式. 然而, 无论从哪个角度看, 目前尚未达到能够控制对应于这种语音变化的所有参量的水准. 在这种情况下, 基于语料库的统计研究方法被广泛采用, 语料库的价值已经获得广泛的认可. 而且, 国际上还创立了语料库建设的协调组织(COCOSDA). 那么, 就合成和识别而言, 语料库究竟怎样选取言语样本才能够全面覆盖上述音联现象呢? •我们认为, 这同合成和识别的单元选择密切相关.长期以来, 人们在合成和识别的单元选择方面下了不少功夫. 起初, •音位或音素被认为是最合适的处理单元. 因为在任何语言里, 音位的数目总是相当有限的, •以它们作单元最为经济. 但是, 实践证明, 假如采用音位作为拼接合成的单元, 合成言语的音质低劣, •就是加上音位变体也还是不行. •一个主要的原因就在于无法含盖音位边界上那个声学上易变区域的特性. 同样, 音位也不适宜用作连续话语识别的单元. 因为在连续话语里, 音位之间相互叠接, 彼此的界限不分明, 这样的单元在信号处理上是很难定位、很难进行自动切分的. 为了解决这个问题, 有的系统就采用较大的言语单位如音节或词作为处理单元.尽管同音位相比, 音节和词是相对稳定的语音单位, 但是, •类似于音位方面的问题在这里依然存在. 因为至少在音节或词的边界上, 仍然存在相邻音位之间的音联问题, •因而每个音节或词在语流中也是随环境而变的. 如果要用它们来生成连续话语或者以它们作为识别单元的话, 那么, 所需的语料库就必须存储每个音节和词的所有可能的环境变体. 显然, •这在实际上是很难做到的, 更不用说怎样满足无限词汇的话语生成和大词汇量、非特定人、•连续话语识别的需要了. 即使在有限词汇的小型系统中可以采用这种方法建库的话, •其中也必然包含大量不必要的存储消耗, 因为各个环境变体无法共享语料. 于是, •言语工程方面又转向某些低于词(subword)的、甚至次音位(subphoneme)的探索. 终于发现, 半音节或双音子和三音子大小的单元是能够覆盖言语中音联现象、便于建立协同发音模型的、比较理想的语音处理单元(Lee, 1990). 引进随环境而定的音子的概念开创了一个建立低于词的模型的新方法.所谓音子(phone), 是语音之间在声学上连贯的、粘着的部分, 它对应于声学上的音段(Keller, 1995). 它跟音位或音素不同. 音位是区别性的语音, 对应于听觉上的音段. •通常, 声学上的音段多于听觉上的音段. 例如, 汉语的音节"八"在听感上是由/b/和/a/•两个区别性的音段构成的; 然而, 在声学上, 则除了/b/和/a/以外, 在它们之间还存在着音联, 即那个由于协同发音而产生的过渡音段, 这些在声学上就叫作音子. •它们虽然不是区别性的语音,•但却是自然言语中普遍存在的、•语音处理上难于回避的语音现象. •双音子(diphone) 通常是由一个语音单元的末尾部分跟下一个单元的开头部分构成的, 它可以当做相邻语音音段之间的过渡音来用(Klatt, 1987; Olive & Spickenagel, 1976). 三音子(triphone)是另一种理想的声学音段, •它考虑了一个音位或音素左右两方面的语音环境(Lee, 1990), 通常包括这个音素与它的左邻音素之间的过渡段、这个音素本身以及它跟右邻音素之间的过渡段.作为一种声学音段, 双音子已经在合成和识别中、尤其是在拼接式•(concatinative) 合成系统中得到广泛运用(Bhaskararao et al, 1991; Levre,1986), 因为这种音段能够捕获语音的所有瞬间状态及过渡信息, 能够有效地提高合成语音的音质和对连续话语的识别率. 所以,在汉语识别方面,人们也已经开始尝试运用这种方法,而且取得了较好的效果。
2.0 汉语双音子和三音子结构系统2.1 汉语语音的结构特点与语音处理单元的选择人们常说, 汉语是个音节语言. 一个汉字对应于一个音节, 清清楚楚, 在言语处理上采用音节作单元应该是最理想的. 而且, 汉语的音节数目有限, 相应的语料库最多存储一千多个音节就行了. 然而, 语音毕竟不同于文字, 言语毕竟不同于文本. •文本包含数目有限的分列符号, 而言语却包含着无数连续变化的语音信号. •汉语音节的语音同样也是随环境而变的, 语流中音节的边界上同样也存在着复杂的音联现象. 所以, 就汉语连续话语而言, 以音节作为合成单元或者在音节平面上建立识别模型都行不通. 在这种情况下, 人们只好另辟蹊径. 半音节的方法就是其中之一, 它首先是在拼接合成中应用的, 现在已开始被自动识别方面采用. 以半音节为单元跟以声母和韵母为单元很相似, 但又不完全相同. 以半音节为单元可以较好地解决音节内声母韵母的平滑连接问题, 不过, 仍然不能很好地解决音节之间的音联问题. 双音子和三音子就能弥补这个缺陷. 而且, 已经有试验表明,•在连续话语识别中采用双音子和三音子可以明显地提高识别率(祖漪清, 1995). •还有人主张在识别中采用半音节跟三音子相结合的办法(Lee, 1990), 这应该是一条更好的出路. 因此, 搞清楚汉语的双音子和三音子结构系统, 对于汉语语音处理显然是具有现实意义的.2.2 汉语的双音子结构汉语普通话共有1000多个音节, 即使不计声调区别, 也有400多个, 它们是由38个韵母跟22个声母结合而成的. 一般说来, 多数音节内部都包含着2-3个双音子结构. 不过, 多数双音子是可以为不同音节共享的. 例如,•音节"•金"/jin/•里的第一个双音子可以跟"京" /jing/里的第一个(这里用j'i表示)共享. 所以, 音节内部的双音子总数只有100多个.汉语音节之间的双音子结构就比较复杂一些, •因为每一个音节都有可能跟包括它自身在内的音节毗邻. 例如, 音节"介"/jie/与"绍"/shao/相连, •就会产生一个音节间的双音子(这里用e-sh表示); 相反, 如果是"绍"与"介" 邻接, 它们之间又会产生另一个双音子o-j. 但是, 这种音节间的双音子大多数也是能共享的, 因而可以大幅度地归纳合并. •根据普通话的语音结构规则, 音节间双音子的总数可以归纳为300余个.2.3 汉语的三音子结构三音子涉及一个音素左右两方面的语音环境, 所以, •这种结构的数目要比双音子的多得多. 特别是音节间的三音子, 不但数目多, 而且结构复杂. 根据初步研究结果, •普通话里有270多个音节内三音子和3700余个音节间三音子,它们在结构上可以分为两类.2.3.1 1+2式: 这类三音子是由一个单音子(monophone)和一个双音子构成, 它以后音节的起首音为核心,可以用前一个音节末尾的音素跟后一个音节起首的两个音素来代表,所以叫做1+2式。
例如, "这" 与"•类" •两个音节间的三音子就可用e-l'e来代表, 通常写作l(e,e), 它表示这两个音节边界上的/l/在左右两个/e/的环境中生成的声学音段. 由此可见,这类三音子实际上是由前音节的尾音跟后音节的起首双音子结合而成的。
在普通话里,所有的尾音可以归纳为11个,所有音节的起首双音子可以归纳为110个。
因此,由它们结合而成的音节间三音子共有1200多个。
2.3.2 2+1式: 这类三音子是以前音节的尾音为核心,它可以用前一个音节末尾的两个音素跟后一个音节起始的音素来代表,所以叫做2+1式. 例如, "这" 与"类" 之间的另一个三音子就是zh'e-l,•它表示边界上的/e/ 在左右环境分别为/zh/ 和/l/时产生的声学音段. 这类三音子实际上是由前音节的收尾双音子和后音节的起首音结合而成的。
在普通话里,所有音节的收尾双音子可以归纳为93个,所有音节的起首音可以归纳为28个,因而这样构成的音节间三音子共有2500多个。
根据上述分析,汉语普通话里双、三音子结构从绝对数目来看似乎相当大, 但是, •若从它们的实际应用价值来看还是相当典型精练的. 这是因为:第一, 从结构上看, 上述音节间三音子实际上不但包括了音节间的双音子,而且还涵盖了所有的基本音节的音韵结构,因而也就包含了所有的音节内双音子和三音子。
因此,汉语里双音子和三音子结构的总数实际上只有3700多个。
第二, 这个系统的归纳是建立在相对穷尽的原则基础上的. 就是说, •它是根据普通话语音结构规律, 给出了所有可能出现的双、三音子, 能够全面覆盖普通话里的音联现象, 满足连续话语合成和识别的需要. 从这个角度看, 3000多个结构应该是非常有限的了;第三, 这个系统所包含的是理论上可能存在的最多的数目, 在实际语言里, •有许多语音环境是非常相似的, 比如,在某一语音环境里,相同发音部位的一组辅音具有相似的声学过渡,因而可以共享一组音子. 这样, 经过合理的归并, •就可以获得本质上较少的、随环境而定的、概括的音子结构。