4.4 基于深度学习语音识别的语音驱动数字人方法
在4.3节的基础上,本节首先分析基线方法的不足,然后提出了一种改进方法——基于深度学习语音识别的语音驱动数字人方法。该方法在基线方法的基础上,通过利用大规模语音识别数据集和深度语音识别技术,提取了比MFCC特征更加准确和鲁棒的与说话者无关的语音特征,并基于该特征训练了一个更好的语音驱动面部动画模型,取得了更好的语音驱动效果,同时可以研发任意人、多语种的语音驱动数字人。
4.4.1 基线方法不足与改进思路
4.3节提出了一种语音驱动数字人的技术方案,通过数据采集构造一个语音-动画数据集,提取MFCC语音特征和训练神经网络,得到了一个语音驱动面部动画模型。但是这个方案存在一个很大的不足:在当时的数据采集过程中,只采集了数字人的参考原型演员本人的语音。因此,提取的MFCC语音特征是来自于该演员的语音数据。根据测试结果,当输入的语音是演员本人的语音时,模型预测的控制器结果所驱动的数字人口型动画符合实际说话时的动画;但是当输入的语音不是演员本人的语音或输入的语音为TTS(Text-To-Speech,文本合成语音)时,由于提取的MFCC特征向量与训练数据集中的特征向量不匹配,因此神经网络预测的结果不符合预期。
图4.7所示为合成语音“目”的驱动结果对比。
图4.7 合成语音“目”的驱动结果对比
在图4.7中,左侧为真实声音的驱动结果;右侧为合成语音的驱动结果。可以明显看出,合成语音的驱动结果并不准确。
导致这个问题的根本原因主要有两个:一是采用的语音训练数据只来自一个人,神经网络模型没有“见过”更多人的不同语义数据;二是提取的MFCC特征虽然可以在一定程度上反映语音内容,并对噪声和背景声具有一定的鲁棒性,但是它仍然受音频数据本身的很多因素影响,同时并没有完全反映语音内容,因此之前训练出来的语音驱动模型并不是非常鲁棒。这就导致训练出来的语音驱动模型的应用场景很受限制。
一个好的语音驱动数字人面部动画模型和算法应该具有以下特点:任意人,无论是男女老少的语音,还是合成语音,都可以有效、准确地驱动数字人;不仅是中文,英文、日文、法文等都可以有效、准确地驱动数字人。
因此,必然要求用来进行语音驱动的声学特征只与语音内容有关,而与说话者身份、性别、地域及年龄等因素无关。经过讨论与调研,我们尝试了两种提升基线的方法。这两种方法的核心在于使用深度学习技术对训练数据集中的语音数据进行语音识别,提取更加有效的声学特征,而这些声学特征相比于传统的MFCC特征,能够更好地表示语音内容,较少受说话者身份、音色等其他因素的影响。两种方法的主要区别在于提取的声学特征不同。
4.4.2 基于音素的语音驱动方法
第一种改进方法是用语音识别的结果来替代原有的MFCC特征。既然MFCC特征无法完全表达语音内容,并且容易受语音数据的一些特性影响,那么什么最能反映语音内容、又不容易受其他语音特征的影响呢?最容易想到的就是语音识别的结果。
语音识别(Speech Recognition)技术,也被称为ASR(Automatic Speech Recognition,自动语音识别),指的是计算机自动将人类的语音内容转化为相应的文字的技术。
具体来说,语音识别技术可以将输入语音解码为和语音信号及其声学特征匹配的词串。这些词串代表了算法在最大概率上所认为的语音内容。
这里还要介绍一个概念:音素(Phoneme)。音素是语言的最小语音单元,是构成音节的最小单位或最小的语音片段,音素是具体存在的物理现象。一个词由一个或多个音素组成。
由于作者并不是语音和语言学专业领域的研究人员,因此只能对这些概念简单加以介绍。
总之,借助语音识别技术,我们修改了4.3节中的训练数据集制作流程,增加了音素提取环节,制作了新的训练数据集。
如图4.8所示,先将训练数据集中的语音数据转化为音素序列。这些音素序列是提前定义好的一个集合,包括音素“sil”(空白音),共60种音素。图4.9所示为音素列表。当得到不同时刻的音素标签后,对结果进行One-Hot编码,即每种音素转化为一个60维的向量,再根据识别结果中的音素持续时长,将语音识别结果转化为序列的离散特征向量。
图4.8 音素驱动数字人面部动画的数据采集制作流程示意图
图4.9 音素列表
接着借鉴东安格利亚大学和加州理工学院联合发表的论文中的特征提取方法,采用滑动窗口的方法提取音素特征。
经过以上处理,就可以得到一个音素-动画的训练数据集。
4.4.2.1 模型训练
首先,去除卷积层,只采用多层全连接层来学习输入和输出的映射关系。同时为了模型的泛化性和训练的稳定性,采用Dropout方式,其中Dropout率设为0.5。
音素驱动模型结构如表4.2所示。
表4.2 音素驱动模型结构
4.4.3 与说话者无关的语音特征
在第一种改进方法中,对利用语音识别技术提取的音素进行One-Hot编码,将语音内容转化为序列化的0-1离散特征。将新的特征替换为原有的MFCC特征,取得了更好的语音驱动效果。
但通过对比分析发现,与Ground Truth相比,基于音素序列特征的语音驱动动画效果,在动画曲线的一些峰值处,仍然达不到参考值,会出现高于最大值或低于最小值的情况。这说明这种模型预测的动画控制器数值所驱动的数字人动画对于一些发音并不准确,缺少一些动画细节。
于是我们继续分析所采用的声学特征的特点和不足。目前提取的声学特征是先利用深度语音识别模型提取音素标签序列,再将音素标签序列进行One-Hot编码得到的。但是进一步分析,由于语音识别是一个分类过程,通过语音识别的神经网络将语音信号映射成提前定义好的音素标签。但是了解机器学习理论的同学知道,无论是哪种机器学习模型,在解决分类问题时,为了得到最终的分类标签,往往会在最后一个步骤中进行离散化,而离散化会损失一些原本语音信号所包含的对语音驱动动画很重要的有效信息,如音素的分布及音素正确的持续信息。
因此,为了进一步提高语音驱动面部动画的质量,我们借鉴了清华大学与腾讯公司研究者联合发表的论文[7],采用了一种更加有效的声学特征——PPG(Phonetic posteriorgrams)。PPG表示每一个Time Step(时间步长)中音素单元所在的后验概率的时序向量。因此PPG可以有效地表示音素分布和持续信息。
具体地,借助与说话者无关的自动语音识别模型来提取PPG特征。这一模型是在一个海量说话者的语音数据集上训练得到的。因此提取出来的特征能够在最大程度上平衡说话者的差异。
为了实现多语言的语音驱动数字人,借助多语言语音识别数据集,通过音素提取把多语言信息融入PPG特征中。具体地,分别提取每种语言的PPG特征后,进行统一的PPG特征提取,得到一个全局PPG向量,作为语音驱动的最终声学特征。
4.4.3.1 模型训练
当得到多语言PPG特征后,训练一个转换网络,将PPG特征映射为动画控制器参数。由于Coarticulation效应,语音会受到相邻语音单元的影响。为此,采用BLSTM模型来对声学特征的上下文环境进行建模。
具体的网络结构包括3层128个单元的BLSTM层和2层长度为96的全连接层。
图4.10所示为基于PPG特征的任意人、多语言语音驱动模型训练方案流程图。该流程图主要包括3部分,分别是PPG提取器训练阶段、语音驱动动画模型训练阶段和面部动画生成阶段。基于标准语音识别语料进行和说话者无关的PPG特征模型训练,在得到该模型(PPG提取器)后,利用采集和制作的动画语音数据集,基于该模型和BLSTM模型训练语音驱动动画模型。以上是训练阶段。在测试或生成阶段,给定任意一段输入语音,提取PPG特征后,输入训练好的语音驱动动画模型,就可以得到对应的人脸动画参数。
图4.10 基于PPG特征的任意人、多语言语音驱动模型训练方案流程图
4.4.4 结果与分析
本节对上述训练方法进行结果分析,包括误差数值分析和数字人语音驱动结果分析。
4.4.4.1 误差数值分析
图4.11所示为使用PPG特征与MFCC特征方法的重构误差对比。可以看出,当输入语音质量较高(信噪比数值较大)时,基于PPG特征的模型预测出的动画参数误差要小于基于MFCC特征的模型。此外,当噪声程度逐渐增加时(SNR数值逐渐减小至小于0),基于PPG特征的模型的误差仍然小于基于MFCC特征的模型,并且增加速度比较小,说明该特征对于噪声更加鲁棒。
图4.11 使用PPG特征与MFCC特征方法的重构误差对比
4.4.4.2 数字人语音驱动结果分析
图4.12所示为语音“我”的数字人语音驱动结果示意图。
图4.13所示为语音“晶”的数字人语音驱动结果示意图。
图4.12 语音“我”的数字人语音驱动结果示意图
图4.13 语音“晶”的数字人语音驱动结果示意图