具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本申请实施例提供的唇语合成方法的一种实现流程图,可以包括:
步骤S11:对语音信号进行语音识别,得到语音识别结果,该语音识别结果中包括识别到的发音,以及该发音语音信号中的第一时间区间。
发音是指汉字的拼音,例如,yi,hao,fa等。本申请实施例中,可以不用关注发音的声调。
步骤S12:依据识别到的发音对第一时间区间内的语音信号进行音素识别,得到音素识别结果,该音素识别结果中包括识别到的音素,还可以包括该音素在语音信号中的第二时间区间。
音素是指汉语拼音中的声母和韵母,其中,声母共21个,它们是:b、p、m、f、d、t、n、l、g、k、h、j、q、x、zh、ch、sh、r、z、c、s。韵母共24个,其中,单韵母6个,分别为:a、o、e、i、u、ü;复韵母18个,分别是:ai、ei、ui、ao、ou、iu、ie、üe、er、an、en、in、un、ün、ang、eng、ing、ong。
步骤S13:依据预设的音素与嘴型的对应关系,获取识别到的每个音素对应的嘴型。
其中,音素对应的嘴型是指人表达出该音素时嘴唇的动作。
本申请提供的唇语合成方法,首先进行自动语音识别,然后根据语音识别结果进行音素识别,确定音素在语音信号中的时间区间,实现了将原始语音信号转换成带有周期信息(即音素在语音信号中的发音时长)的音素,最后通过预置音素与嘴型的对应关系合成唇语,实现了唇语自动合成,克服了现有的唇语合成技术工作量大,通用性低的问题。而且,通过该方法合成的唇语,不仅唇语的动态节奏与语音的节奏的匹配度高,嘴型的准确率也较高,在实现了唇语自动合成的同时,实现了高逼真的唇语合成。
在一可选的实施例中,上述对语音信号进行语音识别的一种实现流程图如图2所示,可以包括:
步骤S21:将语音信号分为若干语音信号帧,并提取每一语音信号帧的梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCC)特征向量。
每一个语音信号帧的MFCC特征向量均是基于在该语音信号帧中提取的K个MFCC构成的M维MFCC特征向量。该M维MFCC特征向量中的M个元素可以全部为上述K个MFCC,即M=K。或者,该M维MFCC特征向量中的M个元素包括上述K个MFCC,以及由上述K个MFCC计算得到的其它参数,例如,该M维MFCC特征向量中,包括K个MFCC,由上述K个MFCC计算得到的K个一阶差分参数,由上述K个一阶差分参数计算得到的K个二阶差分参数,也就是说,M=3K。
其中,一阶差分参数是指相邻两个MFCC的差值;二阶差分参数是指相邻两个一阶差分参数差值。其中,K个MFCC一共可以计算得到K-1个一阶差分参数,可以将预设一阶差分参数值作为一个一阶差分参数补齐K个一阶差分参数;同理,可以将预设二阶差分参数值作为一个二阶差分参数补齐K个二阶差分参数。
在一可选的实施例中,MFCC特征向量可以为64维的MFCC特征向量,也可以为32维的MFCC特征向量,或者,可以为39维的MFCC特征向量。
步骤S22:利用预先训练好的神经网络对所获取的若干MFCC特征向量进行处理,得到语音识别结果。
该预先训练好的神经网络建立了语音的MFCC特征向量与发音之间的对应关系。将步骤S21中提取的MFCC特征向量输入到训练好的神经网络后,神经网络就会输出与MFCC特征向量对应的发音。发音在语音信号中的第一时间区间是指识别出该发音的音频信号帧在语音信号中的时间区间。
在一可选的实施例中,神经网络可以通过如下方式训练得到:
本申请实施例中,作为一示例,训练神经网络使用的数据集(简称训练数据集)可以是希尔贝壳中文普通话开源语音信号库(AISHELL)中178小时的中文普通话数据库。为了提高训练效果,可以对上述178小时的语音信号进行筛选,剔除质量较差(即噪声较大)的语音信号,共3小时,使用剩余的175小时的语音信号进行训练。
为了适应不同语速不同语调下的语音输入,本申请实施例中还可以对上述175小时的语音信号进行变调和变速处理,以扩大训练数据集中样本的数量。例如,可以使用SoundTouch库对挑选的175个小时的语音信号进行如下四种变调和变速处理,分别是:1、加速15%。2、加速30%。3、加速15%音调提升3%。4、加速15%音调降低5%。扩充后数据库为875小时的语音信号。这875小时的语音信号可以全部用于训练神经网络,也可以取其中的一部分训练神经网络,留取一部分用于其它用途,如测试用。例如,可以选取800小时的语音信号训练神经网络,另外的75小时用于测试。
本申请实施例中,搭建的神经网络模型的一种结构示意图如图3中所示,图3为本申请实施例提供的神经网络训练原理示意图,其中的神经网络模型包括:
三层卷积层(Convolution,CONV),三个双向门控循环单元(Bi-direction GatedRecurrent Unit,Bi-GRU)和一层全连接层(Fully Connected Layer,FC)。其中,全连接层的输出单元的个数为不带声调的中文发音的个数,即常见拼音的个数,在本申请的一个示例中,全连接层的输出单元的数量为1360。
作为一个示例,三个卷积层中,第一层的卷积参数为41x 11x 32,第二层的卷积参数为21x 11x 32,第三层的卷积参数为21x 11x 96。三个双向门控循环单元中,第一层Bi-GRU隐藏层参数为2048,第二层Bi-GRU隐藏层参数为2048,第三层Bi-GRU隐藏层参数为2048。
通常,语音分帧后,帧数会大于识别的文字个数,所以,本申请对识别结果的输出位置并没有严格要求。而联结主义时间分类(Connectionist Temporal Classification,CTC)损失函数允许神经网络在任意一个时间段预测结果,因此,本申请实施例中,使用CTC损失函数作为语音识别的损失函数。
神经网络模型在训练过程中,使用自适应时刻估计方法(Adaptive MomentEstimation,ADAM)对网络神经模型中的参数进行优化。在自适应时刻估计方法中,动量因子BETA1为0.9,BETA2为0.999,基础学习率初始值(LEARNING_RATE)设为0.0001,并且随着迭代次数的增加逐渐下降,以加快收敛速度。具体的,每完成1000次迭代,将基础学习率更新为原来的一半。以初始的基础学习率为0.0001为例,则在完成1000次迭代后,将基础学习率更新为0.00005,在完成2000次迭代后,将基础学习率更新为0.000025,以此类推,直至损失函数达到收敛条件。
由于训练神经网络是为了建立语音MFCC特征向量与发音之间的对应关系,因此,在训练之前,需要首先提取训练数据集中语音信号的MFCC特征向量。提取MFCC特征向量的方法一般是将语音信号分为若干语音信号帧,并提取每一语音信号帧的MFCC特征向量;本申请实施例中,提取语音信号的MFCC特征向量的一种实现流程图如图4所示,可以包括:
步骤S41:对语音信号进行预加重。
预加重的目的是提升信号的高频部分,使信号的频谱变得更加平坦,保持了低频到高频的整个频带中能用同样的信噪比求频谱。
预加重过程中用到的预加重系数取值在0.9~1.0之间,本申请实施例中,预加重系数的取值为0.97。
步骤S42:对预加重后的语音信号进行分帧,得到若干个语音信号帧,并对每个语音信号帧做短时傅里叶变换,得每个语音信号帧的频谱。
对语音信号帧做短时傅里叶变换的过程可以为:对语音信号帧做加窗处理,将窗口在语音信号帧上滑动,每滑动至一个位置,对窗内的信号做傅里叶变换。本申请中使用汉宁窗(Hanning Window)进行处理。其中,窗长为20ms,窗口的滑动步长为10ms。
步骤S43:在语音信号帧的频谱中提取K个MFCC,并根据该K个MFCC构建语音信号帧对应的M维MFCC特征向量。其中,M大于或等于K。
上述M维MFCC特征向量中的M个元素可以全部为MFCC,即M=K。或者,
上述M维MFCC特征向量中的M个元素包括上述K个MFCC,以及由上述K个MFCC计算得到的其它参数,例如,该M维MFCC特征向量中,包括K个MFCC,由上述K个MFCC计算得到的K个一阶差分参数,由上述K个一阶差分参数计算得到的K个二阶差分参数,也就是说,M=3K。
其中,一阶差分参数是指相邻两个MFCC的差值;二阶差分参数是指相邻两个一阶差分参数差值。其中,K个MFCC一共可以计算得到K-1个一阶差分参数,可以将预设一阶差分参数值作为一个一阶差分参数补齐K个一阶差分参数;同理,可以将预设二阶差分参数值作为一个二阶差分参数补齐K个二阶差分参数。
在本申请的一个示例中,MFCC特征向量为39维的MFCC特征向量,其中包括13个MFCC,13个一阶差分参数,13个二阶差分参数。
步骤S44:对M维MFCC特征向量进行归一化,使得M维MFCC特征向量在每个维度上均服从相同的分布。
在本申请的一个示例中,对MFCC特征向量进行去均值除方差处理,使得M维MFCC特征向量在每个维度上均服从均值为0,方差为1的分布。具体处理过程可以为:
计算所有的M维MFCC特征向量中,同一维度的数据的平均值和方差,对于每一个M维MFCC特征向量,计算该M维MFCC特征向量中的每一维的数据与该维度的平均值的差值,将差值除以该维度的方差,得到该维度的归一化值。
例如,假设有3个5维MFCC特征向量,分别为:
(A11,A12,A13,A14,A15)
(A21,A22,A23,A24,A25)
(A31,A32,A33,A34,A35)
对上述3个5维MFCC特征向量进行归一化的过程为:
计算A11,A21,A31的平均值E1和方差S2 1;
计算A12,A22,A32的平均值E2和方差S2 2;
计算A13,A23,A33的平均值E3和方差S2 3;
计算A14,A22,A34的平均值E4和方差S2 4;
计算A15,A25,A35的平均值E5和方差S2 5;
对MFCC特征向量(A11,A12,A13,A14,A15)进行归一化的结果为:
对MFCC特征向量(A21,A22,A23,A24,A25)进行归一化的结果为:
对MFCC特征向量(A31,A32,A33,A34,A35)进行归一化的结果为:
与现有技术中不同,现有技术中在得到M维MFCC特征向量后,直接利用该MFCC特征向量进行计算,而本申请实施例中,在得到M维MFCC特征向量后,不是直接计算,而是对其进行归一化,利用归一化后的M维MFCC特征向量进行计算。
通过对MFCC特征向量进行归一化处理,可以保证在优化神经网络模型时,损失函数在每个频率上都有相同的下降速度,有效的加速神经网络模型收敛并提高神经网络模型的精度。
在得到语音信号的归一化后的MFCC特征向量后,就可以利用归一化后的MFCC特征向量对神经网络模型进行训练了。在训练的过程,可以采用批训练的方式进行训练,即每次抽取若干个MFCC特征向量输入到神经网络模型进行训练。在本申请的一个示例中,每次随机抽取64个MFCC特征向量输入到神经网络模型进行训练。
每训练一次,利用损失函数(如CTC损失函数)对神经网络模型输出的识别结果,以及训练数据集中对应的理想语音识别结果进行计算以判断是否达到收敛条件,若损失函数为CTC损失函数,则当计算结果收敛到最小值附近时,说明达到收敛条件,否则未达到收敛条件。
当达到收敛条件时,说明神经网络训练好了。基于本申请中的示例,最终训练了3000次左右达到收敛条件。
利用训练好的神经网络进行语音识别的过程可以参见图2所示实施例,这里不再详述。
在识别出发音后,以及发音在语音信号中的第一时间区间后,为了合成更加逼真的唇语,需要准确知道每个发音中声母及韵母的发音长度,才能比较好地实现语音和唇语在节奏和嘴型上都对应。
在一可选的实施例中,本申请提供的对第一时间区间内的语音信号进行音素识别的一种实现流程图如图5所示,可以包括:
步骤S51:获取第一时间区间内的语音信号帧的MFCC特征向量。该语音信号帧是图2所示实施例中,对语音信号进行分帧得到的语音信号帧。该第一时间区间内通常包括多个语音信号帧。
步骤S52:将获取的MFCC特征向量输入预先训练好的隐马尔科夫模型,得到每个语音信号帧的音素识别结果;其中,第一语音信号帧对应的音素识别结果包括:第一语音信号帧被识别为识别到的发音中的各个音素的概率。
第一语音信号帧为第一时间区间内的多个语音信号帧中的任意一语音信号帧。
本申请实施例中,预先训练好的隐马尔科夫模型建立了MFCC特征向量与汉语拼音中各个音素被识别的概率的对应关系。汉语拼音中共有45个音素,则通过预先训练好的隐马尔科夫模型可以计算出第一语音信号帧被识别为45个音素中各个音素的概率。
本申请实施例中,对于第一语音信号帧,只取隐马尔科夫模型的输出结果中被识别为识别到的发音中各个音素的概率。例如,假设第一时间区间内识别到的发音为mei,则在得到第一时间区间内的第一语音信号帧被识别为45个音素中各个音素的概率后,只取第一语音信号帧被识别为m的概率,以及第一语音信号帧被识别为ei的概率。
步骤S53:将最大概率对应的音素确定为第一语音信号帧的音素识别结果。
还以发音mei为例,若第一语音信号帧被识别为m的概率大于第一语音信号帧被识别为ei的概率,则将m作为第一语音信号帧的识别结果,同理,若第一语音信号帧被识别为m的概率小于第一语音信号帧被识别为ei的概率,则将ei作为第一语音信号帧的识别结果。
本申请实施例中,结合发音的音素组成,利用隐马尔科夫模型确定发音中声母和韵母的位置,实现音素对齐(即确定音素在语音信号中的时间区间)。
下面以语音内容为“百亿美元”的音频为例,对本申请的一种实现方式举例说明。请参阅图6,图6为本申请提供的音素对齐的一种示意图。
本示例中,首先将输入的音频分为了13个音频帧(为了便于说明,将其从1开始编号),提取每一音频帧的MKCC特征向量(图中未示出)并输入预先训练好的神经网络,神经网络的语音识别结果是:
发音bai由1-4号音频帧识别得到,即发音bai在输入的语音信号中的时间区间为1-4号的四个音频帧在输入的语音信号中的时间区间。
发音yi由5-6号音频帧识别得到,即发音yi在输入的语音信号中的时间区间为5-6号的两个音频帧在输入的语音信号中的时间区间。
发音mei由7-9号音频帧识别得到,即发音mei在输入的语音信号中的时间区间为7-9号的三个音频帧在输入的语音信号中的时间区间。
发音yuan由10-13号音频帧识别得到,即发音yuan在输入的语音信号中的时间区间为10-13号的四个音频帧在输入的语音信号中的时间区间。
得到语音识别结果后,对于在发音bai对应的时间区间内的1-4号音频帧,将该4个音频帧的MFCC特征向量输入预先训练好的隐马尔科夫模型,利用隐马尔科夫模型计算每个音频帧被识别为音素b和音素ai的概率,即计算1号音频帧被识别为音素b的概率和被识别为音素ai的概率,2号音频帧被识别为音素b的概率和被识别为音素ai的概率,3号音频帧被识别为音素b的概率和被识别为音素ai的概率,4号音频帧被识别为音素b的概率和被识别为音素ai的概率,以判断1-4号音频帧中,哪些音频帧是音素b的语音,哪些音频帧是音素ai的语音。本示例中,1号音频帧被识别为音素b的概率大于其被识别为音素ai的概率,且2号音频帧被识别为音素b的概率大于其被识别为音素ai的概率,而3号音频帧被识别为音素b的概率小于其被识别为音素ai的概率,4号音频帧被识别为音素b的概率小于其被识别为音素ai的概率,因此,1-2号音频帧是音素b的语音,3-4号音频帧是音素ai的语音。
同理:
对于在发音yi对应的时间区间内的5-6号音频帧,将该两个音频帧的MFCC特征向量输入预先训练好的隐马尔科夫模型,利用隐马尔科夫模型计算每个音频帧分别被识别为音素y和音素i的概率,以判断5-6号音频帧分别是哪个音素的语音。本示例中,5号音频帧是音素y的语音,6号音频帧是音素i的语音。
对于在发音mei对应的时间区间内的7-9号音频帧,将该三个音频帧的MFCC特征向量输入预先训练好的隐马尔科夫模型,利用隐马尔科夫模型计算每个音频帧分别被识别为音素m和音素ei的概率,以判断7-9号音频帧分别是哪个音素的语音。本示例中,7号音频帧是音素m的语音,8-9号音频帧是音素ei的语音。
对于在发音yuan对应的时间区间内的10-13号音频帧,将该4个音频帧的MFCC特征向量输入预先训练好的隐马尔科夫模型,利用隐马尔科夫模型计算每个音频帧分别被识别为音素y,音素u,以及音素an的概率,以判断10-13号音频帧分别是哪个音素的语音。本示例中,10-11号音频帧是音素y的语音,12号音频帧是音素u的语音;13号音频帧是音素an的语音。
另外,发明人研究发现,人在发声的过程中,经常会有停顿的时候,为了进一步提高音素识别结果,本申请实施例中,在将最大概率对应的音素确定为第一语音信号帧的音素识别结果之前,还可以包括:
检测第一时间区间内各个语音信号帧是否为语音信号的静音部分。
在一可选的实施例中,对于每一个语音信号帧,可以判断该语音信号帧是否存在子时间区间,该子时间区间的长度大于预设时长(例如,0.2s),且上述子时间区间内语音信号的能量低于预置能量阈值(例如,语音平均能量的10%),若判断结果为是,确定该语音信号帧为语音信号的静音部分。
相应的,将最大概率对应的音素确定为第一语音信号帧的音素识别结果可以包括:
判断第一语音信号帧是否为语音信号的静音部分;
若判断结果为否,将最大概率对应的音素确定为第一语音信号帧的音素识别结果;
若判断结果为是,保持第一语音信号帧为语音信号的静音部分,即不将第一语音信号帧识别为任何音素。
在一可选的实施例中,在获取音素对应的嘴型后,为了使得不同嘴型之间的过渡更加自然,可以将每个音素对应的第二时间区间的起始时间点提前预设时长,得到音素对应的第三时间区间。
也就是说,第三时间区间的长度大于第二时间区间的长度,第三时间区间的起始时间点比第二时间区间的起始时间点早上述预设时长(例如,0.3s),第三时间区间的结束时间点与第二时间区间的结束时间点相同。
另外,在将第二时间区间的起始时间点提前预设时长后,若相邻两个第三时间区间存在交叉区间,将相邻两个第三时间区间对应的两个嘴型的同一部位的特征点数据做平均,得到相邻两个第三时间区间对应的两个嘴型的过渡位置的特征点数据。
也就是说,在相邻两个嘴型的前一个嘴型输出过程中,当需要输出后一个嘴型时,将前一个嘴型在上述过渡位置处结束(而不是以闭合嘴型结束),将后一个嘴型从上述过渡位置开始输出(而不是以闭合嘴型开始输出)。
与方法实施例,本申请还提供一种唇语合成装置,本申请提供的唇语合成装置的一种结构示意图如图7所示,可以包括:
第一识别模块71,第二识别模块72和唇语合成模块73;其中,
第一识别模块71用于对语音信号进行语音识别,得到语音识别结果,所述语音识别结果中包括识别到的发音,以及所述发音在所述语音信号中的第一时间区间;
第二识别模块72用于依据所述发音对所述第一时间区间内的语音信号进行音素识别;
唇语合成模块73用于依据预设的音素与嘴型的对应关系,获取识别到的每个音素对应的嘴型。
本申请提供的唇语合成装置,首先进行自动语音识别,然后根据语音识别结果进行音素识别,确定音素在语音信号中的时间区间,实现了将原始语音信号转换成带有周期信息(即音素在语音信号中的发音时长)的音素,最后通过预置音素与嘴型的对应关系合成唇语,实现了唇语自动合成,克服了现有的唇语合成技术工作量大,通用性低的问题。而且,通过该方法合成的唇语,不仅唇语的动态节奏与语音的节奏的匹配度高,嘴型的准确率也较高,在实现了唇语自动合成的同时,实现了高逼真的唇语合成。
在一可选的实施例中,第一识别模块71具体用于:
将语音信号分为若干语音信号帧,并提取每一语音信号帧的梅尔频率倒谱系数MFCC特征向量;
利用预先训练好的神经网络对所获取的若干MFCC特征向量进行处理,得到所述语音识别结果。
在一可选的实施例中,第一识别模块71在将语音信号分为若干语音信号帧,并提取每一语音信号帧的MFCC特征向量时,具体可以用于:
对所述语音信号进行预加重;
将预加重后的语音信号分为若干个语音信号帧,并对每个所述语音信号帧做短时傅里叶变换,得每个所述语音信号帧的频谱;
在所述语音信号帧的频谱中提取K个MFCC,并根据所述K个MFCC系数构建所述语音信号帧对应的M维MFCC特征向量;
对所述M维MFCC特征向量进行归一化,使得所述M维MFCC特征向量在每个维度上均服从相同的分布。
在一可选的实施例中,第二识别模块72具体可以用于:
获取所述第一时间区间内的语音信号帧的MFCC特征向量;
将获取的MFCC特征向量输入预先训练好的隐马尔科夫模型,得到每个语音信号帧的音素识别结果;其中,第一语音信号帧对应的音素识别结果包括:所述第一语音信号帧被识别为所述发音中的各个音素的概率;
将最大概率对应的音素确定为所述第一语音信号帧的音素识别结果。
在一可选的实施例中,第二识别模块72在将最大概率对应的音素确定为所述第一语音信号帧的音素识别结果,之前,还可以用于:检测第一时间区间内各个语音信号帧是否为语音信号的静音部分。
第二识别模块72在将最大概率对应的音素确定为所述第一语音信号帧的音素识别结果时,具体可以用于:
判断第一语音信号帧是否为语音信号的静音部分;
若判断结果为否,将最大概率对应的音素确定为第一语音信号帧的音素识别结果;
若判断结果为是,保持第一语音信号帧为语音信号的静音部分,即不将第一语音信号帧识别为任何音素。
在一可选的实施例中,第二识别模块72在检测第一时间区间内各个语音信号帧是否为语音信号的静音部分时,具体可以用于:
判断第一语音信号帧是否存在子时间区间,该子时间区间的长度大于预设时长(例如,0.2s),且上述子时间区间内语音信号的能量低于预置能量阈值(例如,语音平均能量的10%),若判断结果为是,确定该第一语音信号帧为语音信号的静音部分。
在一可选的实施例中,所述神经网络包括:
三层卷积层,与所述三层卷积层连接的三个双向门控循环单元,以及与所述双向门控循环单元连接的一层全连接层;
所述全连接层的输出单元的个数为不带声调的中文发音的个数。
在一可选的实施例中,本申请提供的唇语合成装置还可以包括:
调整模块,用于将所述音素对应的第二时间区间的起始时间点提前预设时长,得到所述音素对应的第三时间区间。
在一可选的实施例中,所述调整模块还用于:
若相邻两个第三时间区间存在交叉区间,将所述相邻两个第三时间区间对应的两个嘴型的同一部位的特征点数据做平均,得到所述相邻两个第三时间区间对应的两个嘴型的过渡位置的特征点数据。
本申请还提供一种计算机可读存储介质,该机算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行本申请公开的唇语合成方法。
本申请还提供一种电子设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请公开的唇语合成方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统(若存在)、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。