system: [SYSTEM]

user: 3. 马来语语音合成系统前端文本分析 在语音合成技术中，前端文本分析结果的质量直接影响着合成语音的可懂度和自然度，因此将前端文本分析作为语音合成系统的重要模块。 3.1. 马来语语料库构建 语料库是基于语料库进行语音合成的系统的重要组成部分。语料库的质量和覆盖的范围会影响合成语音的质量。马来语的语料库为后端的音子模型训练和语音合成提供数据准备，所以构建的马来语的语料库应该包含马来语的所有音子和常用词汇。 图2. 马来语语音合成基本流程 3.1.1. 原始语料的获取 在构建马来语的原始语料库时，为了获取不同风格的马来语文本，本文采用从马来语的网站和电子书上获取马来语的原始语料库的方法。网站的内容包括科技、新闻、生活、娱乐、体育等方面，保证了语料的多样性。在该过程中共收集了大小为380 MB的原始语料，约有3600万个单词。 3.1.2. 文本语料库的整理 从网站上下载的原始语料中不可避免的包含了很多不完整的句子、非法字符以及网页标签，并且各个网站之间存在转载和跳转等情况，导致语料的重复，所以需要对原始语料库进行整理，得到文本语料库。 3.1.3. 发音语料的挑选 发音语料库的挑选就是从文本语料中挑选出有代表性的句子，作为发音语料进行录音。在选取发音语料的过程中应该兼顾韵律和音段两个层次。 马来语是一种没有重音的语言，所以首先应该考虑的是音素在自然语流中出现的频率，再考虑韵律信息。韵律信息，在选取时主要体现在句子类型上。选取的句子长度为6~18个单词，构建的马来语的语料库应该包含马来语的常用词汇，所以挑选的马来语发音语料需包含文本中的高频词 [ 3 ] 。在整个选取过程中，要保证句子的最大信息量，所以选取的各个句子间的相似度要保证最低。 3.1.4. 发音语料的合理性 挑选出发音语料库后，需要对发音语料库进行评判来证明其合理性，并验证算法的可行性和稳定性。针对马来语语音合成的实际需求，马来语的发音语料库必须包含马来语的所有音素。此次选取语料采用随机算法，所以选取马来语发音语料的程序应该是稳定的，即多次挑选的结果的音素分布是相似的。 由图4可知，发音语料覆盖了马来语的34个音素，比较图3和图4可知，发音语料中34个音素的出现比例类似于文本语料库中的音素出现比例，说明该发音语料库在音素分布方面具有代表性，符合了发音语料库的标准。 为了验证算法的稳定性和挑选结果的可靠性，本次实验先后运行3次挑选程序，依次得到3个不同的“马来语发音语料库”，分别统计3个“马来语发音语料库”中音素出现的次数，画出其音素出现次数直方图，其结果如图5所示。 由图5可知，三个“马来语发音语料库”文本内容不同，但它们的音素出现次数直方图比较接近，说明语料挑选算法稳定。 3.1.5. 语音语料库的录制 挑选出发音语料后需进行录音，得到语音语料。在录制过程中始终保持适中的语速。该录音保存的格式为S48的声音压缩格式，根据实验的需要将其转换成PCM的格式。在格式转换完成之后，需要对该录音进行切分，将整段语音切分成单独的句子，其保存的格式为采样率是16 KHz的wav文件。 图3. 马来语文本语料库音素分布 图4. 马来语发音语料库音素分布 图5. 3组发音语料音素出现次数比较 3.2. 马来语文本归一化 针对马来语而言，归一化过程就是将马来语文本中非马来语拼写的非规范文本转化为马来语写法的过程。例如若文本中出现阿拉伯数字“2”，应该将其转化为马来语写法“dua (二)”。 包含数字的文本称为非标准文本，文本中的数字称为非标准词。在马来语文本中数字在不同语境中其读法是不一样的，因此在马来语的归一化过程中应该根据不同的语境对读音进行判断，并确定正确的读法，最后将其转化为马来语的写法。所以马来语的归一化过程应该包括非标准词的识别，歧义判断，消歧处理，将非标准词转化为标准词。其过程如图6所示。 3.2.1. 非标准词识别 此次实验关注的是马来语中的数字字符的归一化。所以在非标准词识别中需要识别出马来语文本中的数字，即0~9阿拉伯数字。 3.2.2. 歧义判断 一般而言，数字有两种读法，一种是依次读数字串(例如，213，中文读“二一三”)即数码的读法，另一种是读其数值(例如，213，中文读“二百一十三”)。其中属于数码的情况比较少见，所以只需判断出数码的情况，其余情形默认为数值的读法即可。 结合经验判断和文本语料的实际情况，属于数码的情况一般包括：身份证号，电话号码，邮编和QQ号。这几类数码的特点如下： l 身份证号：马来西亚的身份证号由12位数字组成。 l 电话号码：马来西亚使用的电话号码为10位，且以数字011、012、013、014、015、016、017、018、019之一开头。 l 邮政编码：马来西亚的邮编采用5位数字的形式。 l QQ号码：QQ号最少有5位且第一位不能为0。 采用正则表达式与关键字相结合的方法，对上述编号进行判断。除了电话号码外，很少有开头为0的10位数字串，所以电话号码的歧义判断无需添加关键字。数码的歧义判断的正则表达式与关键字的匹配情况如表2所示。 图6. 马来语文本归一化过程 Table 2 Regular expressions and keywords of digital readin 数码类型 实例 正则表达式 关键字 身份证号 930101123322 (^|\s)(\d{12})($|\s) MyKad 电话号码 0121352641 (^|\s)01[1，2，3，4，5，6，7，8，9]\d{7}($|\s) 无 邮政编码 88005 (^|\s)\d{5}($|\s) poskod QQ号码 10000 (^|\s)[1-9]\d{4，}($|\s) QQ、qq 表2. 数码读法的正则表达式与关键字 3.2.3. 消歧处理 在收集的语料中存在身份证号、电话号码、QQ号、邮编这几种数码读法的情况。如后期再发现数码读法的情况，则应该添加到规则中。除了例举的数码读法情况外，将出现的数字都视为数值的读法。 3.2.4. 数字字符转化为标准词 在歧义判断中，如果数字判定为数码的读法，则只需将数字逐位转化为马来语的写法。阿拉伯数字0~9的马来语写法如表3所示。 在歧义判断时，如果数字判定为数值的读法，则应按数值读法的规则进行转换。其转换规则如下： l 当数值为0~9时，按数码的读法来读。 l 当数值为10时，读作“sepuluh”，当数值为11时读作“sebalas”。 l 当数值为十几(除了11)时，在几的读法后面加上belas，例如“2”的读音为“dua (二)”，则“12”的读音为“dua belas (十二)”。 l 当数值为几十的时候，则用“puluh”表示十的这个权重，当数值为几十几时，直接在几十的读音后面加上个位的几的数码的读音即可。例如“2”的读音为“dua (二)”，“3”的读音为“tiga (三)”，则“23”的读音为“dua puluh tiga (二十三)”。 l 权重百的读音为“ratus”，权重千的读音为“ribu”，百万的读音为“juta”，十亿的读音为“billion”。 l 数值的读法的规则和英文是一样的，每三位一起读。如“23，000”读作“dua puluh tiga ribu”即“二十三千”。 对马来语的归一化的正确率进行计算，得到此次马来语归一化的正确率为95.13%。达到了语音合成系统对前端文本处理的要求。 3.3. 马来语音节的自动划分 马来语是一种有明显音节结构的字母语言，因此，马来语的文本处理需将待处理的文本切分为音节序列，这个过程叫做音节划分。 马来语的音节结构有四种不同的组成形式，即元音(V)，元音 + 辅音(VC)，辅音 + 元音(CV)，辅音+ 元音 + 辅音(CVC)。马来语的单词都是由以上的四种音节进行组合得到的。 本次实验采用基于音节列表的逆向最大匹配与规则相结合的方法实现马来语音节化。为了尽可能罗列马来语文本中可能出现的音节，首先人工音节划分马来语电子词典中的12379个单词，然后去重、汇总，得到个数为1840的音节列表。对这1840个音节进行长度统计，可知在马来语音节列表中，最长音节的长度为5个字母 [ 4 ] 。 综合以上的信息，此次基于音节列表的逆向最大匹配的音节化方案开始匹配时采用5个字母进行匹配。即首先从单词的最右端选取5个字母，用这5个字母与音节列表进行匹配。如果匹配成功则将这5个字母划为一个音节。如果这5个字母序列不存在于音节列表中，则去掉最左端的字母，用留下的4个 Table 3 Malay number tabl 数字字符 数字词 0 uosong 1 satu 2 dua 3 tiga 4 empat 5 lima 6 enam 7 tujuh 8 lepan 9 sembilan 总计 10 表3. 马来语数字词表 字母与音节列表进行匹配。如此不断地重复去除最左端的字母和匹配的过程，直到留下的字母序列与音节列表相匹配为止。该音节化方案的结果有较高的正确率。但是音节化的结果中还存在一些错误，且这些错误存在规律。当11个特殊的音节在单词的中间或结尾时，音节划分就会存在错误。这11个特殊的音节为skan，kri，ste，sta，stik，klu，pli，spek，brik，bru，gla。其错误规律如表4所示。 从上表可以看出，这些错误的规律是：将上一个音节的最后一个字母错误的划分到下一个音节。所以为了提高音节化的正确率，当单词中出现这11个特殊的音节时，需对特殊音节在单词中的位置进行判断，当特殊音节位于单词的中间或结尾时，应将位于该音节序列的最左端的辅音字母划分到上一个音节，将剩下的字母序列划为单独的一个音节。这种划分音节的方法很大程度上提高了音节化的正确率。其音节划分的正确率如表5所示。 由上表的比较可以看出，本文提出的基于音节列表的逆向最大匹配与规则相结合的音节化方案，相较于基于音节列表的逆向最大匹配的音节化方案，正确率有了明显的提高，且音节化正确率为96.40%，已经基本能满足后端语音合成对数据正确率的要求，其错误率在可接受的范围之内。