Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

徐进作者

KDD 2020 | LRSpeech:极低资源下的语音合成与识别

编者按:上周,清华大学硕士研究生、微软亚洲研究院机器学习组实习生徐进(指导研究员:谭旭)在 B 站分享了 KDD 2020论文“LRSpeech: Extremely Low-Resource Speech Synthesis and Recognition”。本次直播介绍了 LRSpeech 的相关技术,并分享了在构建极低资源语音合成与识别系统中的一些心得体会。

以下是直播分享的全部内容:

今天介绍一下我们在 KDD 2020 上发表的一篇关于语音方面的工作——极低资源场景下的语音合成语音识别。如今,语音合成(TTS, Text to Speech)与语音识别(ASR, Automatic Speech Recognition)已经有很多商业应用,比如微软 Azure 云平台已经可以支持几十种语言,包括中文、英语以及德语等等。这个世界上有超过7000多种语言,商业应用有动力去拓展更多的语言来支持更多的用户。但是要想把语言从几十种扩展到7000多种,并不是一件简单的事情,为新的语言建立一个 TTS/ASR 系统,需要高昂的数据成本来训练模型。根据估算,建立一个可以商用的 TTS 系统,数据标注成本大约需要超过100万美金,这使得直接用已有的方案去拓展到7000多种语言上是不可行的。学术界对于如何在不同数据资源场景下建立 TTS 和 ASR 系统有许多探索。图一是过去解决这类问题的一些工作。

图一:TTS 和 ASR 系统之前的工作图一中,Rich-Resource 一列是资源丰富场景下做的一些 TTS 和 ASR 的工作,使用大量的语料能够把 TTS 和 ASR 做到较好的效果。这样的系统首先需要 grapheme-to-phoneme 转换以及大量的高质量数据。其中,grapheme-to-phoneme 是指在给 TTS 系统合成声音时,不是把一个个字母丢进去,而是把字母(character)通过 grapheme-to-phoneme 转换成系统所要的音素(phoneme),然后再进行 TTS 合成。但对于构建一个新的语言,grapheme-to-phoneme 模型/词典的构建需要非常高昂的代价。

训练语料方面,模型需要大约几十个小时单一说话者(single-speaker)的高质量数据来保证语音的质量。然而这种高质量的数据通常会使用专业设备来进行录音,所以成本也相对较为昂贵。除此之外,模型还需要其他语料进一步提升系统对于语言本身的理解能力和泛化能力,比如成本更低的多个说话者(multi-speaker),相对低质量的成对数据(paired data),大概需要几百小时。一些模型还会用一些不成对的(unpaired)语音和文本进一步提高效果。

其他的场景包括低资源以及无监督任务,同样会使用 grapheme-to-phoneme 转换和训练语料,但是训练语料会减少。然而包括 Rich-Resource 场景在内,他们都存在一些问题。Rich-Resource 需要大量的成对数据,尤其是高质量的单一说话者,这个数据的收集成本非常高昂。目前的低资源(low-resource)场景仍然需要较高的代价,而且低资源和无监督场景的准确率也并不能满足要求。所以我们论文的定位,就是做极端低资源场景下的工作,尽可能使用较少的数据,建立出一个满足要求的 TTS和 ASR 系统。(点击阅读原文,查看论文细节)

图二:LRSpeech 的研究目标可以在图二中看到我们的数据使用情况。LRSpeech 并不需要 grapheme-to-phoneme 转换,而是直接使用原始文本作为输入。数据方面,相比于之前的工作我们进一步压缩了使用的数据量。LRSpeech 使用了5分钟的高质量单一说话者的语音数据以及几个小时的低质量多个说话者成对数据,最后还使用了部分不成对的语音和文本。把数据成本降低之后,我们还要保证系统可以达到工业上的要求:IR(intelligibility rate,可懂率)要大于98%,MOS(mean opinion score,平均意见得分)要大于3.5,并且与真实声音 (GT, ground truth)的差距要小于0.5。
图三:LRSpeech 方法框图我们这个工作可以分成3大部分。第一部分是预训练和微调(fine-tuning)。我们首先把模型在 Rich-Resource 语言上进行预训练,然后再把它微调到低资源的语言上。

预训练和微调之后已经把极低资源场景下的一些成对数据用上了,但显然这是不够的,因为我们的成对数据很少,所以还需要一些不成对的语音以及文本,来进一步提高系统的性能。因此,接下来采用了对偶学习(dual transformation),这主要借鉴了微软亚洲研究院机器学习组在 ICML 2019 上发表的一篇文章——使用 TTS 和 ASR 系统彼此互相帮助来提高模型的性能,所以图三框图的地方可以看到上面有两个小框,是用上这个不成对的数据的。

我们发现通过使用前两部分之后,ASR 和 TTS 系统的质量还是没有达到要求,所以还需要第三部分,即用知识蒸馏的方法来进一步提高性能,最后可以得到单一说话者的 TTS 和多个说话者的 ASR。

我们对于 TTS 的需求是,用户给一段文字,TTS 系统能用一个特定的声音读出来,这需要一个高质量的、特定的声音,所以 TTS 是单一说话者的。而对于自动语音识别系统,则要能识别出任何一个声音,所以 ASR 需要支持多个说话者。

让我们具体深入到每个模块细节。第一部分是预训练和微调,Rich-Resource 语言用的是中文,然后在低资源语言上进行微调。但在这个过程中有几个问题:一是,说话人不一样在模型设计里的说话人的嵌入矩阵(speak embedding)是不一样的;二是语言上的问题,它们的文本是不一样的,也就是语言字符的嵌入矩阵(text embedding)不一样。

如何解决这种不一致的问题呢?我们在训练的时候,把 Rich-Resource 的说话人的嵌入矩阵和语言字符的嵌入矩阵直接丢掉,对新的语言的语料重新训练。然后在训练的时候,把 TTS 以及 ASR 的主干模型固定住,先只微调说话人/语言字符的嵌入矩阵,在微调一定的轮数之后,再微调整个模型。

第二部分是对偶学习(Dual Transformation)。首先看图四的这个公式,公式第一行 θ_asr 是ASR 系统,y 是语音,大 y^u 代表不成对的语音数据,所以第一行的公式表示把不成对的语音,通过 ASR 系统转换成文本 X ̂,X ̂ 和不成对的语音就可以组合成成对数据,也就是公式的第二行。我们用这个成对数据再去训练 TTS 系统。这个流程就是使用 ASR 来帮助 TTS 系统。

图四:对偶学习公式同样地,第三行公式,θ_tts 是 TTS 系统,X^u 代表不成对的文本数据,这行表达式就是把不成对的文本数据通过 TTS 系统转换成语音,得到 y ̂ 和 X^u,这是一对成对数据。再用这对成对数据按照第四行公式训练 ASR 系统。这个流程就是用 TTS 帮助 ASR。两个系统在这个训练过程中逐步地相互提高。

但要注意的是,我们对于不成对文本的使用是直接的,但是对于不成对的语音并没有直接使用,这是因为语音有说话人的区分。如果有一个从来没有见过的说话者(unseenspeaker),我们没有这个说话者的嵌入矩阵(embedding),这个时候直接拿它来训练 TTS 肯定是行不通的,那该怎么处理呢?

图五:对偶学习处理没有见过的说话者的语音数据我们首先用 ASR 系统将没有见过的说话者的语音转化成文本,然后再用这种合成的成对数据去训练 TTS,这样 TTS 就能适应没有见过的说话者了。然后再用 TTS 来帮助 ASR。这种方式的好处是对于不成对的语料是不受限制的,可以搜集更多不成对的语料来帮助提高系统。

第三部分是知识蒸馏。通过上一步的训练之后,我们已经有了一个效果不错的 TTS 和ASR 系统,但 TTS 系统仅仅通过上面两步的 TTS 和 ASR 系统还存在一些跳词和漏词的问题,质量还不能满足要求。

所以接下来,我们做了数据方面的知识蒸馏。可以看一下图六中的这两行公式。用 θ_tts(TTS 系统)把 X^u(不成对的文本数据)转换成 y ̃(语音数据),这样就得到成对数据,再拿成对数据去训练 TTS 系统。

图六:知识蒸馏这个原理是,我们使用 TTS 模型基于文本生成语料,然后再用 Student TTS 模型,但直接这样的训练是你的 Student 模型会去模仿 Teacher 模型,而没有办法克服 Teacher 模型的问题。所以我们提出了两个衡量指标来对这些数据进行筛选,使用筛选过的数据训练 Student,这样就可以保证 Student 模型的效果。第一个衡量指标叫 WCR(word coverage ratio,词覆盖率),这个指标是为了克服词里面跳或者漏的问题。

图七右上角是一个注意力分数(attention score)图,横坐标是时间维度,纵坐标是对应的文本,这个注意力分数图来自于 Transformer 模型中的编码解码注意力机制。红色框里这个字符是没有对应声音的,这说明这块声音可能丢失。

图七:数据蒸馏过程中的数据筛选指标我们可以看一下图七中的公式,公式中 WCR 指句子里面有 N 个词,N 个词里,我们做了两个 Max。一个 Max 维度是按时间维度,另一个 Max 维度是字符维度。比如在公式里,我们就去找这个词最大的注意力值,作为这个词被注意到的强度,然后对于整个句子而言,去找被注意到的强度最低的词的强度。如果 WCR 值比较低,那就说明这句话里面至少有一个词,被注意到的强度非常低,那么这个句子就很有可能会漏词,我们就把这个样本删掉。

我们可以发现注意力图的曲线基本上是对角的,代表发音和文本序列的单调对应关系,这也是符合我们认知的。因为读一段话都是从前往后读的,不可能乱序。基于此,我们有了第二个衡量指标——注意力分数图的对角率(Attention Diagonal Ratio, ADR),来去掉一些异常的句子。比如图七中右下角的图,声音可能完全崩掉了,就不是对角关系了,那我们就把不是对角关系的声音去掉。通过这两个指标过滤数据之后就可以去训练 TTS Student 模型了。

然后再说 ASR 的蒸馏,不同于 TTS,ASR 更要求泛化性,需要更加广泛的语料,所以训练 ASR 系统的时候,首先使用 ASR 模型,用给定了的语音数据生成文本。然后使用 TTS 系统,用给定的文本来生成合成的语音数据,并用之前提到的同样的方法过滤数据。我们用这两者一起来训练 ASR 模型,来进一步提高 ASR 的结果。

最后是实验部分。我们的数据配置中,Rich-Resource 语言是中文,低资源语言则选取了两种语言来做实验,一种是英文,一种是立陶宛语。表一概括了我们使用的数据量。

表一:实验数据量图中可以看到,我们只使用了50条高质量的成对数据(5分钟的录音),使用了1000条 LibriSpeech 上低质量的成对数据(大约3.5个小时)。对于不成对的语音,大概使用了7000条(约20个小时)。我们还从 news-crawl 上面随机选出了2万条文本数据。

主干模型我们用的是 Transformer 模型,使用了6层的解码器和编码器,模型的 hidden size 是384,FFNsize 是1536,FFN kernel size 是9,attention heads是4,在4卡 P40 上进行训练。对于 TTS 的评估使用的是 IR 和 MOS,对于 ASR 系统的评估使用的是 WER(word error rate,词错误率)和 CER(character error rate,字符错误率)。大家可以扫描访问以下网页来听一听声音。

接下来介绍一下实验结果。我们论文里面提出了3个阶段——PF(pre-training,预训练)、DT(dual transformation,对偶学习)、KD(knowledge distillation,知识蒸馏),那每一个阶段对最后的结果有多大的贡献呢?我们在英语上做了实验,Baseline #1 是只使用成对的高质量数据,Baseline #2 是使用成对的高质量数据和低质量数据,做我们的基准。然后相应地加上 PF、DT、KD 来提升模型的效果。

表二:在英语和立陶宛语上的实验结果在表二中可以看到,最后 TTS 系统 IR 超过了98%,MOS 超过了3.5。最底下两行是GT(ground truth)。所谓 ground truth 就是给真实的声音评 MOS 分数,GT 是3.88,我们的分数是3.57,这个差距小于0.5。

在英语上做完实验之后,我们在真实的低资源语言立陶宛语上做了实验,可以看到在立陶宛语上,IR 超过98%,MOS 是3.6,也是满足要求的。

ASR 系统上,我们也达到了一个可观的分数。我们的 ASR 是在 LibriSpeech 的 test-clean 数据集上测的,WER、CER 的结果也比较可观。

后面是一些更加细致的探究实验。比如,前面提到的 WCR、ADR 指标,每一个模块对指标都有提高吗?我们再回顾一下,WCR 是漏词的比例或者漏词的分数,可以理解为分数越高,这个句子越不容易漏词。ADR 越高,文本和语料对齐越好,这个声音越流畅。

可以看到随着增加我们设计的方法,WCR、ADR 越来越高。同时,可以看到注意力图,随着模块的增加,注意力变得越来越清晰,对角(见图八)。

图八:TTS 系统中不同模块对于指标提升的作用
另外我们还做了一些其它详细的实验。比如图九(a)Dl 中指的是低质量多个说话者的语音,前面提到我们使用了1000条的数据量,我们做了一个实验来测试系统的敏感度,横轴1/5就是1000条的1/5——200条,5倍就是5000条。可以看到,随着数据量的增多,IR 和 WER 都变得越好。
图九:LRSpeech 可扩展性实验结果图九(b)是在系统里面,支持见过的说话者(seen speaker)和支持没有见过的说话者的实验结果。我们发现随着两种数据添加进系统,IR 是越来越高的,WER 越来越低。

图九(c)是 TTS 蒸馏,模型产生了很多的数据,经过筛选,然后对 TTS 模型进行训练,那到底生成多少数据才合适呢?可以看到越靠近1,使用数据越多,IR 和 MOS 就越高。ASR 系统也是同样的趋势(图九(d)),数据数量越多,CER、WER 越低。

最后,我们重新回顾一下数据设置,以及数据成本(图十)。相比之前的工作,LRSpeech 的工作数据量少了很多,并且构建一个新系统的成本要比 Full-Resource 的少一百倍,并且效果可以达到工业界的要求。

图十:数据成本对比
微软亚洲研究院机器学习组致力于语音方面的研究,包括文本到语音合成、低资源语音合成与识别、语音翻译、歌声及音乐合成等。欢迎关注我们语音方面的研究工作:https://speechresearch.github.io/

论文:LRSpeech: Extremely Low-Resource Speech Synthesis and Recognition

链接:https://dl.acm.org/doi/pdf/10.1145/3394486.3403331

作者:徐进、谭旭、任意、秦涛、李建、赵晟、刘铁岩

微软研究院AI头条
微软研究院AI头条

专注科研19年,盛产黑科技

理论KDD 2020语音合成语音识别
相关数据
微软亚洲研究院机构

微软亚洲研究院于1998年在北京成立,是微软公司在亚太地区设立的基础及应用研究机构,也是微软在美国本土以外规模最大的一个研究院。微软亚洲研究院从事自然用户界面、智能多媒体、大数据与知识挖掘、人工智能、云和边缘计算、计算机科学基础等领域的研究,致力于推动计算机科学前沿发展,着眼下一代革命性技术的创新,助力微软实现长远发展战略。

http://www.msra.cn
刘铁岩人物

刘铁岩博士毕业于清华大学电子工程系。现任微软亚洲研究院主任研究员,互联网经济与计算广告学研究组负责人。他是美国计算机学会(ACM)、国际电子电气工程师学会(IEEE)、和中国计算机学会(CCF)的高级会员。中国科技大学和南开大学的客座教授。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

语音合成技术

语音合成,又称文语转换(Text to Speech)技术,是将人类语音用人工的方式所产生,能将任意文字信息实时转化为标准流畅的语音朗读出来,相当于给机器装上了人工嘴巴。它涉及声学、语言学、数字信号处理、计算机科学等多个学科技术,是信息处理领域的一项前沿技术,解决的主要问题就是如何将文字信息转化为可听的声音信息,也即让机器像人一样开口说话。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

知识蒸馏技术

Hinton 的工作引入了知识蒸馏压缩框架,即通过遵循“学生-教师”的范式减少深度网络的训练量,这种“学生-教师”的范式,即通过软化“教师”的输出而惩罚“学生”。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。这种方法十分简单,但它同样在各种图像分类任务中表现出较好的结果。

文本生成技术

文本生成是生成文本的任务,其目的是使人类书写文本难以区分。

推荐文章
暂无评论
暂无评论~