首页> 中国专利> 语音实时驱动虚拟人的方法、系统及存储介质

语音实时驱动虚拟人的方法、系统及存储介质

摘要

本申请提供了一种语音实时驱动虚拟人的方法、系统及存储介质,语音实时驱动虚拟人的方法包括:获取人脸RGB图像;对人脸RGB图像进行3D人脸重建,得到人脸RGB图像对应的3D人脸参数;预采集一段语音并经去噪处理后保存至缓存队列中;实时采集语音片段并经去噪处理后保存至缓存队列中;读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段,并利用拼接后的语音片段和预训练的神经网络得到预测的3D人脸表情参数;根据预测的3D人脸表情参数和3D人脸参数得到渲染后的RGB图像。本申请能够在不降低虚拟人质量的基础上,达到整个驱动过程的实时性,从而使得语音驱动虚拟人技术能够用于各类实时应用中。

著录项

  • 公开/公告号CN113822968A

    专利类型发明专利

  • 公开/公告日2021-12-21

    原文格式PDF

  • 申请/专利权人 北京影创信息科技有限公司;

    申请/专利号CN202111400026.1

  • 申请日2021-11-24

  • 分类号G06T13/20(20110101);G06T17/00(20060101);G06N3/04(20060101);G06N3/08(20060101);

  • 代理机构11595 北京科石知识产权代理有限公司;

  • 代理人李艳霞

  • 地址 100085 北京市海淀区双清路1号院内6号楼(北)一层102-7

  • 入库时间 2023-06-19 13:46:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-03-04

    授权

    发明专利权授予

说明书

技术领域

本申请属于信息安全技术领域,具体涉及一种语音实时驱动虚拟人的方法、系统及存储介质。

背景技术

语音驱动虚拟人技术是虚拟人驱动技术的一种,其用语音驱动预设的虚拟人模型,从而生成符合语音内容的动态虚拟人形象。近些年来,随着语音驱动虚拟人技术的发展和成熟,语音驱动虚拟人技术衍生出了相当多的应用,例如虚拟主播、虚拟客服和虚拟偶像等。由于虚拟人形象往往需要直接呈现给用户,因此用户对语音驱动结果的真实性和准确性具有较高的要求。

然而,现有的语音驱动虚拟人技术无法很好地推广到如虚拟会议这样的实时应用中,其主要原因在于:一方面,目前的语音驱动虚拟人技术均使用离线语音作为输入,没有考虑到语音采集、神经网络计算速度、音画延迟等问题,从而无法满足实时性的需要;另一方面,实时场景下的语音驱动虚拟人技术要求输入的语音片段长度尽可能短,从而满足实时性要求。而语音特征计算过程中,较短的语音片段由于缺乏时序信息以及必要的语义信息,在驱动过程中很容易导致虚拟人形象面部运动的准确度降低,进而降低真实感。

发明内容

为至少在一定程度上克服相关技术中存在的问题,本申请提供了一种语音实时驱动虚拟人的方法、系统及存储介质。

根据本申请实施例的第一方面,本申请提供了一种语音实时驱动虚拟人的方法,其包括以下步骤:

获取人脸RGB图像;

对人脸RGB图像进行3D人脸重建,得到人脸RGB图像对应的3D人脸参数;

预采集一段语音并经去噪处理后保存至缓存队列中;

实时采集语音片段并经去噪处理后保存至缓存队列中;

读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段,并利用拼接后的语音片段和预训练的神经网络得到预测的3D人脸表情参数;

根据预测的3D人脸表情参数和3D人脸参数得到渲染后的RGB图像。

上述语音实时驱动虚拟人的方法中,所述对人脸RGB图像进行3D人脸重建,得到人脸RGB图像对应的3D人脸参数的过程为:

采用多任务卷积神经网络对人脸RGB图像进行人脸识别,并根据人脸检测框对人脸RGB图像进行裁剪,得到裁剪后的人脸图像;

采用人脸重建方法DECA对裁剪后的人脸图像进行3D人脸重建,其过程为:

通过DECA将人脸RGB图像拟合到人脸参数化模型FLAME上,得到257维的特定于当 前图像的一组3D人脸参数

上述语音实时驱动虚拟人的方法中,所述预采集一段语音并经去噪处理后保存至缓存队列中的具体过程为:

通过语音采集设备预采集一段语音,得到带噪的语音片段;

采用谱减法去除带噪的语音片段中的加性噪声,得到去噪的语音片段;

将去噪的语音片段添加到预设长度的缓存队列中。

进一步地,所述实时采集语音片段并经去噪处理后保存至缓存队列中的具体过程为:

通过语音采集设备实时采集语音片段;

采用谱减法去除实时采集的带噪的语音片段中的加性噪声,得到去噪的语音片段;

计算缓存队列的长度,并根据缓存队列的长度与预设的缓存队列的最大长度的比较结果更新缓存队列,其过程为:

判断缓存队列的长度是否超过预设的缓存队列的最大长度,如果是,则将缓存队列中的队首元素移除,将实时采集的语音片段添加到缓存队列中;其中,缓存队列中的队首元素即相较于当前时间最早的元素。

更进一步地,所述读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段,并利用拼接后的语音片段和预训练的神经网络得到预测的3D人脸表情参数的具体过程为:

读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段;

利用开源音频处理工具librosa提取拼接后的语音片段的语音MFCC特征;

使用预训练的神经网络将得到的语音MFCC特征映射到3D人脸模型的表情子空间,得到预测的3D人脸表情参数。

更进一步地,所述预训练的神经网络的训练过程为:

选取一段时长为t时间的人物说话视频,其中,需要人物的面部在视频中始终保持完整;

获取训练数据,其中训练数据包括3D人脸参数和语音MFCC特征;

利用训练数据搭建并训练神经网络。

更进一步地,所述获取训练数据的具体过程为:

利用视频处理工具ffmpeg提取人物说话视频中的图像流和语音流,其中,图像流以25fps以上截取图像,共得到数千帧图像;将语音流单独保存成.aac格式的音频文件;

针对每一帧图像,使用多任务卷积神经网络对人脸RGB图像进行人脸识别,并根据人脸检测框将RGB图像进行裁剪;采用人脸重建方法DECA对裁剪后的人脸图像进行3D人脸重建,得到3D人脸参数并保存;

对于音频文件,利用开源音频处理工具librosa提取音频文件的13维的语音MFCC特征。

更进一步地,所述神经网络包括AT-Net网络和audio2exp网络,所述AT-Net网络为骨干网络,其用于提取音频的时序性特征;audio2exp网络为特征映射网络,其用于将AT-Net网络输出的隐变量映射到特定3D人脸模型的参数空间上。

根据本申请实施例的第二方面,本申请还提供了一种语音实时驱动虚拟人的系统,其包括图像获取模块、图像重建模块、预采集语音处理模块、实时语音处理模块、语音拼接模块和3D渲染模块;

所述图像获取模块,用于获取人脸RGB图像;

所述图像重建模块,用于采用3D人脸模型对人脸RGB图像进行重建,得到人脸RGB图像对应的3D人脸参数;

所述预采集语音处理模块,用于预采集一段语音并进行去噪处理后保存至缓存队列中;

所述实时语音处理模块,用于实时采集语音片段并进行去噪处理后保存至缓存队列中;

所述语音拼接模块,用于读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段,并利用拼接后的语音片段和预训练的神经网络得到预测的3D人脸表情参数;

所述3D渲染模块,用于根据预测的3D人脸表情参数和3D人脸参数得到渲染后的RGB图像。

根据本申请实施例的第三方面,本申请还提供了一种存储介质,其存储有可执行程序,当可执行程序被调用时,执行上述任一项所述的语音实时驱动虚拟人的方法。

根据本申请的上述具体实施方式可知,至少具有以下有益效果:本申请提供的语音实时驱动虚拟人的方法通过采用实时语音驱动人脸模型框架,能够解决传统离线语音驱动人脸模型无法达到实时性要求的问题;通过采用语音预采集策略以及音频缓存队列,能够解决短语音条件下语音特征准确度降低的问题。本申请能够在不降低虚拟人质量的基础上,达到整个驱动过程的实时性,从而使得语音驱动虚拟人技术能够用于各类实时应用中。

应了解的是,上述一般描述及以下具体实施方式仅为示例性及阐释性的,其并不能限制本申请所欲主张的范围。

附图说明

下面的所附附图是本申请的说明书的一部分,其示出了本申请的实施例,所附附图与说明书的描述一起用来说明本申请的原理。

图1为本申请具体实施方式提供的一种语音实时驱动虚拟人的方法的流程图。

图2为本申请具体实施方式提供的一种语音实时驱动虚拟人的方法中AT-Net网络结构示意图。

图3为本申请具体实施方式提供的一种语音实时驱动虚拟人的方法驱动FLAME人脸模型的效果图之一。

图4为本申请具体实施方式提供的一种语音实时驱动虚拟人的方法驱动FLAME人脸模型的效果图之二。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

图1是本申请实施例提供的一种语音实时驱动虚拟人的方法的流程图。如图1所示,本申请实施例提供的语音实时驱动虚拟人的方法包括以下步骤:

S1、获取人脸RGB图像。

具体地,可以使用图像采集设备采集人脸RGB图像,也可以直接采用用户输入的人脸RGB图像。

S2、对人脸RGB图像进行3D人脸重建,得到人脸RGB图像对应的3D人脸参数,其中,3D人脸参数包括表情参数和身份参数,进而得到3D人脸模型,其具体过程为:

S21、采用MTCNN(Multi-task convolutional neural network,多任务卷积神经网络)对人脸RGB图像进行人脸识别,并根据人脸检测框对人脸RGB图像进行裁剪,得到裁剪后的人脸图像。

S22、采用DECA(Detailed Expression Capture and Animation)对裁剪后的人脸图像进行3D人脸重建。

具体地,通过DECA将人脸RGB图像拟合到FLAME(Faces Learned with an Articulated Model and Expressions,人脸参数化模型)上,从而得到257维的特定于当前 图像的一组3D人脸参数

S3、预采集一段语音并经去噪处理后保存至缓存队列中,其具体过程为:

S31、通过麦克风等语音采集设备预采集一段语音,得到带噪的语音片段。其中,预采集的一段语音的时长可以根据需要进行选择,具体地可以为2秒。

预采集一段语音的目的是增加输入语音特征的长度,从而提高预测3D人脸参数的准确性。一方面,由于语音数据采集到3D人脸可视化过程存在延迟,为了满足语音驱动虚拟人的实时性要求,需要尽可能短的语音采集时间,即实时性约束;另一方面,短语音在进行语音特征提取时会丢失语音的时序性特征,导致在进行人脸表情特征预测时的准确度降低,即准确性约束;通过预采集语音并将预采集的语音与实时语音进行拼接,可以变相增长语音特征的长度,能够在较小程度地降低人脸表情特征准确度的前提下达到实时性。

S32、采用谱减法去除带噪的语音片段中的加性噪声,得到去噪的语音片段。

由于实际语音采集环境以及语音采集设备的差异性,语音片段会不可避免地包含各类噪声,为了削弱语音采集设备引入的噪声并且最大程度地保留人声部分,需要去除语音片段中的加性噪声。

如果带噪的语音片段中的噪声只包含加性噪声,则带噪信号的频谱减去噪声信号的频谱就可以得到纯净语音的频谱。

具体的,假设带噪信号Y由纯净信号X和加性噪声D组成,那么纯净信号的功率谱

实际使用中,假设语音采集设备引入的噪声D在不同的采集过程中保持不变,那么通过预先录制纯噪声片段,就可以计算出不同带噪信号下纯净信号的功率谱。

S33、将去噪的语音片段添加到预设长度的缓存队列中。

在本步骤中,通过语音片段缓存队列来保留历史语音片段,其目的与步骤S31预采集一段语音的目的相同,即满足结果的实时性和准确性需求。

通过将当前语音片段与缓存队列里的历史语音片段拼接,可以变相增长当前语音特征的长度。与步骤S31不同的是,由于语音特征计算时要求拼接的语音在时序上连续,因此预采集的语音片段只能在前有限个时间片段内与实时采集的语音片段进行拼接,而后续的语音特征计算则需要将缓存队列中的历史语音片段与实时采集的语音片段拼接后作为输入。

S4、实时采集语音片段并经去噪处理后保存至步骤S3中的缓存队列中,其具体过程为:

S41、通过麦克风等语音采集设备实时采集语音片段。

其中,实时采集的语音片段的时长可以根据需要进行选择,具体地可以为400毫秒。

S42、采用谱减法去除实时采集的带噪的语音片段中的加性噪声,得到去噪的语音片段。

S43、计算缓存队列的长度,并根据缓存队列的长度与预设的缓存队列的最大长度的比较结果更新缓存队列,其具体过程为:

判断缓存队列的长度是否超过预设的缓存队列的最大长度,如果是,则将缓存队列中的队首元素移除,将实时采集的语音片段添加到缓存队列中。

其中,缓存队列中的队首元素即相较于当前时间最早的元素。

通过更新缓存队列能够保证缓存队列中的语音片段与当前实时采集的语音片段在时间上的连续性。

S5、读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段,并利用拼接后的语音片段和预训练的神经网络得到预测的3D人脸表情参数,其具体过程为:

S51、读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段。

S52、利用开源音频处理工具librosa提取拼接后的语音片段的语音MFCC(Mel-Frequency Cepstral Coefficients,梅尔频率倒谱系数)特征。

S53、使用预训练的神经网络将步骤S52得到的语音MFCC特征映射到3D人脸模型的表情子空间,得到预测的3D人脸表情参数。

S6、根据预测的3D人脸表情参数和步骤S2得到的3D人脸参数得到渲染后的RGB图像,其具体过程为:

S61、将预测的3D人脸表情参数替换步骤S2得到的3D人脸参数中的表情参数,得到重组的3D人脸参数。

S62、根据重组的3D人脸参数重新计算3D人脸模型。

S63、利用开源工具pytorch3D对计算得到的3D人脸模型进行渲染,得到渲染后的RGB图像。

上述步骤S53中,预训练的神经网络的训练过程为:

S531、选取一段时长为t时间的人物说话视频,其中,需要人物的面部在视频中始终保持完整。t时间可以为4分钟。

S532、获取训练数据,其具体过程为:

首先,利用视频处理工具ffmpeg提取人物说话视频中的图像流和语音流,其中,图像流以25fps以上截取图像,共得到数千帧图像;将语音流单独保存成.aac格式的音频文件。

其次,针对每一帧图像,使用MTCNN对人脸RGB图像进行人脸识别,并根据人脸检测框将RGB图像进行裁剪;采用DECA(Detailed Expression Capture and Animation)对裁剪后的人脸图像进行3D人脸重建,得到3D人脸参数并保存。

具体地,通过DECA将人脸RGB图像拟合到FLAME(Faces Learned with an Articulated Model and Expressions,人脸参数化模型)上,从而得到257维实数域上的一 组3D人脸参数

最后,对于音频文件,利用开源音频处理工具librosa提取音频文件的13维的语音MFCC特征。

S533、利用训练数据搭建并训练神经网络,其具体过程为:

神经网络包括AT-Net网络和audio2exp网络,其中,AT-Net网络为骨干网络,其用于提取音频的时序性特征;audio2exp网络为特征映射网络,其用于将AT-Net网络输出的隐变量映射到特定3D人脸模型的参数空间上。

神经网络的输入为语音MFCC特征,其输出为预测的FLAME人脸表情参数

AT-Net网络的结构如图2所示,经过预训练的AT-Net网络可以将输入的语音MFCC特征通过公式:

转化为具有语义的隐藏表示

audio2exp网络包括3个一维卷积层和线性层,其中,1D卷积层主要用于融合AT-Net网络输出的隐向量序列在时间和空间上的信息,线性层用于将语音编码隐向量映射到3D人脸参数的表情空间上。

AT-Net网络使用在LRW数据上训练的参数,在训练过程中保持网络参数不变。audio2exp网络使用单人物说话视频按照步骤S532处理得到的训练数据进行自监督训练。

训练使用的损失函数包括

神经网络使用的总损失函数为:

通过采用本申请提出的语音实时驱动虚拟人的方法,能够在不降低虚拟人质量的基础上,达到整个驱动过程的实时性,从而允许语音驱动虚拟人技术用于各类实时应用中。

采用本申请提出的语音实时驱动虚拟人的方法对FLAME人脸模型进行驱动,得到如图3所示的结果。对每一行为进行一次单独的实时测试过程,每一次实时测试的语音内容不同,两次测试都取前10帧的结果进行比较。通过比较同一行不同列的结果(即同一测试过程的不同时刻),可以看出本申请提出的语音实时驱动虚拟人的方法能够实现语音实时驱动3D数字人;通过比较不同行相同列的结果(即不同测试过程的相同时刻),可以看出本申请提出的语音实时驱动虚拟人的方法能够根据不同的语音生成特定3D数字人符合语音内容的唇动和表情。

本申请提出的语音实时驱动虚拟人的方法还能够适配其他人脸模型,在BFM模型参数空间重新训练audio2exp网络,能够得到如图4所示的实时语音驱动结果。

基于本申请提出的语音实时驱动虚拟人的方法,本申请还提供了一种语音实时驱动虚拟人的系统,其包括图像获取模块、图像重建模块、预采集语音处理模块、实时语音处理模块、语音拼接模块和3D渲染模块。

其中,图像获取模块,用于获取人脸RGB图像。

图像重建模块,用于采用3D人脸模型对人脸RGB图像进行重建,得到人脸RGB图像对应的3D人脸参数。

预采集语音处理模块,用于预采集一段语音并进行去噪处理后保存至缓存队列中。

实时语音处理模块,用于实时采集语音片段并进行去噪处理后保存至缓存队列中。

语音拼接模块,用于读取缓存队列中的所有语音片段并进行拼接,得到拼接后的语音片段,并利用拼接后的语音片段和预训练的神经网络得到预测的3D人脸表情参数。

3D渲染模块,用于根据预测的3D人脸表情参数和3D人脸参数得到渲染后的RGB图像。

需要说明的是:上述实施例提供的语音实时驱动虚拟人的系统仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将语音实时驱动虚拟人的系统的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的语音实时驱动虚拟人的系统与语音实时驱动虚拟人的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

在示例性实施例中,本申请实施例还提供了一种存储介质,是计算机可读存储介质,例如,包括计算机程序的存储器,上述计算机程序可由处理器执行,以完成前述语音实时驱动虚拟人的方法中的所述步骤。

上述的本申请实施例可在各种硬件、软件编码或两者组合中进行实施。例如,本申请的实施例也可为在数据信号处理器(Digital Signal Processor,DSP)中执行上述方法的程序代码。本申请也可涉及计算机处理器、数字信号处理器、微处理器或现场可编程门阵列(Field Programmable Gate Array,FPGA)执行的多种功能。可根据本申请配置上述处理器执行特定任务,其通过执行定义了本申请揭示的特定方法的机器可读软件代码或固件代码来完成。可将软件代码或固件代码发展为不同的程序语言与不同的格式或形式。也可为不同的目标平台编译软件代码。然而,根据本申请执行任务的软件代码与其他类型配置代码的不同代码样式、类型与语言不脱离本申请的精神与范围。

以上所述仅为本申请示意性的具体实施方式,在不脱离本申请的构思和原则的前提下,任何本领域的技术人员所做出的等同变化与修改,均应属于本申请保护的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号