汉语普通话双音子和三音子结构系统以及相关语料库的设计汉语普通话双音子和三音子结构系统以及相关语料库的设计摘要自然语音处理最感头疼的问题, 就是难以对付连续话语中复杂的语音变化. 语音学界 和言语工程学界经过长期的探索发现, 双音子和三音子是比较理想的、能够较好地覆盖各 崐种语音变化现象的处理单元. 所以, 在语音合成和语音识别中, 特别是在波形拼接合成 方崐面已经得到广泛的应用. 但是, 在国内, 人们尚不十分熟悉它们.本文将扼要地介绍这 些概崐念, 并概括描写汉语普通话的双音子和三音子结构系统及相关语料库的设计.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 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 多个结构应该是非常有限的了; 第三, 这个系统所包含的是理论上可能存在的最多的数目, 在实际语言里, 有许多语 音环境是非常相似的, 比如,在某一语音环境里,相同发音部位的一组辅音具有相似的声 学过渡,因而可以共享一组音子. 这样, 经过合理的归并, 就可以获得本质上较少的、随 环境而定的、概括的音子结构第四, 根据现有的语音研究结果来看, 某些语音单元之间的音联关系不太密切, 也就 是说, 在它们交界处的语音变化不明显, 在语音处理上或许可以忽略不计. 因此, 相应的双 音子或三音子就可进一步简化.总之, 普通话的双音子和三音子结构最多可能有 3000 多个, 根据不同语音处理系统的 具体要求, 可以进行不同程度的简化和归并, 最少可以合并为十几个主要的结构模式.3.0 普通话双音子、三音子结构语料集的设计3.1 语音样本收集的原则 一般说来, 、最大覆盖面和最小冗余度是语料库收集语料的一个基本原则。
普通话双、 三音子结构语料库的语料收集也不例外但是,要实现这个原则并不那么容易通常,语 料库的语料收集往往采取随机取样的办法,选用一定范围内的自然语料作为基础,然后通 过逐步扩大规模来达到尽可能扩大语言信息覆盖面的目的这种方法的主要缺陷就是语料 的冗余量太大,而且只能大致覆盖所需要的语言信息为了克服这种局限性,人们在建设 语料库的时候,已经越来越重视运用语言学知识来指导语料库的设计,以便运用已经掌握 的、颗粒较大的语言结构知识来生成尚未掌握的、颗粒较细的语言变化知识这正是我们 这里的语料设计所贯彻的根本原则 本文涉及的语料库实际上是个语音音联样本集,主要是为研究语音的环境变异用的, 同时也为自然语音处理方面建立更加实用的语料库提供一个应用的基础根据这个具体目 的,所谓达到最大覆盖面,就是要保证所用的语料能够全面覆盖普通话里所有的双音子和三音子结构,从而达到相对穷尽地反映实际话语里可能存在的语音变化现象所谓最小冗 余度,就是所收的语料要尽可能做到语音上的简洁(compact) ,实现音节。