随着Alexa等语音合成服务的普及,文本规范化 (TN) 已成为文本转语音流程的首要步骤。TN将原始文本(如字符串“6-21-21”)转换为口头化形式(如“twenty first of June twenty twenty one”),以供文本转语音模型生成最终语音。
历史上,TN算法依赖硬编码规则,这些规则不仅难以跨语言泛化,而且维护困难:一个典型的基于规则的单语言TN系统可能包含数千条规则,这些规则会随时间演变,且其开发需要语言学专业知识。
文本规范化将计算过程的输出(如处理用户请求的自然语言理解模型)转换为合成语音朗读时有意义的形式。
近来,学术界和工业界的研究人员开始开发基于机器学习的TN模型。但这些模型也存在缺点:
- 序列到序列模型 偶尔会产生不可接受的错误,例如将“$5”转换为“five pounds”。
- 符号分类模型 需要语言专家创建特定领域的信息类别(如表情符号或电话号码),这限制了其泛化能力。
- 这两种模型都需要大量的训练数据,这使得跨语言扩展变得困难。
在今年的北美计算语言学协会会议上,研究人员提出了一种名为Proteno的新型文本规范化模型,以应对这些挑战。
Proteno在英语、西班牙语和泰米尔语三种语言上进行了评估。虽然英语有大量的TN研究成果,但西班牙语和泰米尔语此前没有可用的TN数据集。为此,研究团队创建了自己的数据集,并已公开发布。
Proteno只指定了少数几个低层次的规范化类别(如序数、基数或罗马数字),这些类别能够很好地跨语言泛化。然后,Proteno从数据中学习到大量额外的、细粒度的类别。例如,在英语实验中,使用了8个预定义类别,而Proteno自动生成了另外2,658个类别。相比之下,符号分类模型通常只有大约20个类别。
Proteno还使用了一种简单但有效的分词方案。此前的分词技术需要语言学知识或数据密集型训练;而Proteno的分词技术则简单地在空格处以及Unicode类(如字母、数字或标点符号)的转换处进行文本分割。因此,它可以跨语言泛化,使大部分规范化任务能够从数据中学习,并减少不可接受错误的发生。
这些技术共同使Proteno所需的训练数据远少于之前的机器学习方法。在实验中,Proteno在英语上提供了与先前最优模型相当的性能,而仅需其3%的训练数据。由于此前没有针对西班牙语和泰米尔语训练的TN模型,实验中无法进行基准比较。但在相似数量的训练数据上,针对泰米尔语和西班牙语训练的Proteno模型达到了与英语模型相近的准确率(西班牙语99.1%,泰米尔语96.7%,英语97.4%)。
方法
Proteno将TN视为一个序列分类问题,其中大部分类别是学习得到的。下图展示了Proteno的训练和运行处理流程,两者的顺序略有不同。
训练流程包括以下步骤:
- 分词:先前的方法依赖语言学家制定的特定语言规则。例如,字符串“6-21-21”被视为单个“日期”类型的token。研究团队提出了一种与语言无关、适用于任何空格分隔语言的粒度化分词机制。待规范化的文本首先按空格分割,然后在Unicode类发生变化的地方进一步分割。字符串“6-21-21”因此变成五个token,依靠Proteno学习如何正确处理它们。
- 标注:逐token标注分词后的非规范化文本,建立每个非规范化token与其真实规范化文本的一一对应关系。这些数据用于训练模型。
- 类别生成:每个token被映射到一个类。一个类只接收特定类型的token。例如,对应“美元”的类不会接受“英镑”类型,反之亦然。这防止了模型产生不可接受的错误。每个类还关联一个规范化函数。
类别有两种:
- 预定义:定义有限数量的类(约8-10个),包含基本的规范化规则。其中一小部分(3-5个)包含语言特定规则,例如如何区分数字的基数用法和序数用法。其他类别(如self、digit和Roman numerals)在许多语言中保持相似。
- 自动生成(AG):模型还通过分析数据集中非规范化token到规范化token的映射来自动生成类别。如果现有类别(预编码或AG)无法为训练数据中的某个token生成目标规范化,则会自动生成一个新类别。例如,如果数据集包含标注“12→December”,且现有类别都无法生成此规范化,则创建类别“12_to_December_AG”。该类只接受“12”,其规范化函数返回“December”。AG使Proteno能够从数据中自动学习大部分规范化。
- 分类:将TN建模为序列标注问题,输入是非规范化token序列,输出是能够生成规范化文本的类别序列。实验中尝试了四种不同类型的分类器:条件随机场(CRF)、双向长短期记忆模型(bi-LSTM)、bi-LSTM-CRF组合以及Transformer。
数据集
由于Proteno的目标是适用于多种语言,因此在英语、西班牙语和泰米尔语三种语言上进行了评估。由于书面英语通常比另外两种语言使用更多的缩写,因此英语的自动生成类别数量远多于泰米尔语或西班牙语。
| 语言 | 总预定义类别 | 语言特定预定义类别 | 自动生成类别 |
|---|---|---|---|
| 西班牙语 | 10 | 5 | 279 |
| 泰米尔语 | 8 | 3 | 74 |
| 英语 | 8 | 4 | 2,658 |
在英语基准测试中,可以将Proteno的性能与早期模型在现有数据集中的11个预定义类别上进行对比(由于分词方案差异,另外两个类别无法进行逻辑映射)。结果表明,Proteno在低数据标注需求下进行文本规范化是一个强有力的候选方案,同时能抑制不可接受的错误,使其成为生产级文本转语音模型的健壮且可扩展的解决方案。FINISHED