1.本发明涉及一种能量帧时频融合的语音情感识别方法,属于信息技术领域。
背景技术:
2.伴随着智能语音技术飞速发展,远程智能银行中心逐步优化服务方式,但随着客户需求多样化及个性化的趋势下,如何为客户提供更好的服务体验和更加人性化的情感关怀,成为远程智能银行中心服务管理的重点和需要着重思考的新需求。电话服务仅凭一条电话线来贯穿整个服务,声音不仅是信息传递媒介,更是传递情感纽带,用来判断客户所思、所想。可见语音的情感识别对提升客户体验有积极作用。
3.情感是人对外部事件或对话活动的态度,情感在人际交往中占有重要的地位。在人机交互过程中,如果能够准确地识别当前用户的情感变化和状态,让ai产品根据用户的情感状态和情感变化做出适当的回应,可以让其体验感受脱颖而出,提高用户的使用舒适度。例如,在销售过程中,通过分析客户对产品的情感态度可以作为满意度的反馈,有助于平台制定更好的销售策略;在人机对话中,了解人类的情绪状态,可以帮助智能机器人做出适当的回应,及时表达安慰和理解,提高用户体验。良好地情感识别方法对于社交机器人、风控借贷、质量评估等方面都有着重要意义,具有很高的研究价值。
4.语音情感识别的目标是从语音中识别出人的情感状态以及情感变化。其主要包含三个步骤:1、语音信号处理,音频是一种高时序性的信号。提取音频特征前通常需要对音频进行分帧,加窗。由于语音的本质也是各种波的叠加,对语音帧进行短时傅里叶变换(stft)。然后得到了维度为t
×
d的频谱特征,其中t表示该语音被分成的帧数,大小与时间长度相关,d是特征维度。2、特征提取,频谱特征包含了说话节奏、语气、语调等丰富的信息。语音相关的情感特征提取仍是一个有着极大上升空间的研究方向。深度学习的出现能够更加深层次地提取与情感相关的情感特征,采用数据驱动的方法,并通过情感标签作为监督信号训练模型,从而省去了人工或统计特征表示的过程。由于音频输入的序列化特性,深度特征提取通常基于cnn、rnn、lstm、capsnets或它们的各种组合以及加上attention机制。3.分类器构建。常见的传统机器学习方法来构建分类器,如支持向量机(svm)、高斯混合模型(gmm)、隐马尔可夫模型(hmm)等经典方法。它们可以基于人工语音特征或深度语音特征来学习分类。此外,由于深度学习的发展,基于神经网络的分类器可以与深度特征提取器端到端进行训练,得到情感分类器。
5.综上,语音情感识别在商品推荐,舆论监控,人机对话等方面都有着重要的意义,但是并没有广泛应用起来,原因主要如下(1)语音存在较强的主观性和个体差异,个体间在情感表达节奏上有快又慢,在情感表达的程度上有高有低。而且语音在情感定义上缺乏官方标准,不同听者对同一段语音的情感可能有不同的观点。(2)语音的特征分布具有稀疏性,并非语音中所有的时刻都包含情感信息,一些噪声或者无情感信息的时刻会影响到识别准确性。因此如何准确定位到语音中的情感特征信息仍是一个值得探索的问题。
技术实现要素:
6.本发明要解决的技术问题是:现有语音情感识别方法中无法体现出个体间的语音节奏韵律差异。
7.为了解决上述技术问题,本发明的技术方案是提供了一种基于能量帧时频融合的语音情感识别方法,其特征在于,包括以下步骤:
8.步骤1、确定k能量帧的频谱,包括以下步骤:
9.步骤101、设置帧长和帧移参数,将每条语音划分为nf帧短语音帧;
10.步骤102、计算每帧短语音帧中每个采样点的短时能量,其中,每帧短语音帧的帧长为m,设每帧短语音帧的第n个采样点加窗函数时的短时能量表示为en,则有:
[0011][0012]
式中:w()表示窗函数;h()为线性滤波器的单位冲激响应,h()=w()2;x(n)表示短语音帧的第n个采样点信号,n=0,1,
…
,m-1;
[0013]
步骤103、计算每帧短语音帧的语音帧能量,第i帧短语音帧的短时能量用ei表示,则有:
[0014]
步骤104、从nf帧短语音帧中选取短时能量ei最高的前k帧,并且这k帧的前后相邻2帧也提取出来,则获得包含3
×
k帧短语音帧的音频文件,该音频文件内,所有短语音帧按时间顺序排列好;
[0015]
步骤105、对音频文件中的短语音帧进行频域谱线转化,获得频域谱线normalization_half_y;
[0016]
步骤106、通过python中plt.fill()函数填充方式把频域谱线normalization_half_y中x轴与曲线围成的区间上色;
[0017]
步骤2、时频融合,进一步包括以下步骤:
[0018]
步骤201、采用cnn网络来提取上一步获得的音频文件中每一帧频谱的在频域上的能量分布特征,在cnn网络分别对3
×
k张频谱进行最后一次池化后,每张特征频谱都是多通道的特征,采用单个卷积核进行变化,让每张特征频谱变为单通道,对通道数为3
×
k的m
×
n特征频谱进行重塑,变成通道数为1、长为m
×
n、宽为3
×
k的特征图;
[0019]
步骤202、将cnn网络输出的特征图放入多层rnn模型学习帧与帧之间的关联,获得时序特征并进行分类。
[0020]
优选地,步骤101中,所述nf的值采用下式确定:
[0021]
nf=ceiling((signal_length-wlen inc)/inc)
[0022]
式中:signal_length为该音频的总采样点数,wlen为每一小帧的采样点数,inc为重叠帧移采样点数,ceiling为上取整函数。
[0023]
优选地,步骤101中,若最后一帧短语音帧不足wlen个采样点,则进行补零处理。
[0024]
优选地,步骤102中,窗函数w(n)为汉明窗,则有
[0025]
优选地,步骤105中,所述频域谱线normalization_half_y采用下式计算:
[0026][0027]
式中:fft(y)表示对音频文件中的短语音帧y进行快速傅里叶变化;abs[]表示取绝对值;n表示经过快速傅里叶变化后得到了n个复数;表示区间取半。
[0028]
本发明公开的方法主要由两部分构成:第一部分通过计算语音帧的能量,选出能量大的语音帧转为频谱图作为输入;第二部分语音在时序上和频域上均有情感特征,采取cnn rnn的网络结构分别对频域和时域进行特征提取,从而能够保证一定的准确率。本发明公开的方法成功体现出了个体间语音节奏的差异,具体是在能量上的分布差异,从而能够更准确地识别出语音情感。
附图说明
[0029]
图1是能量帧时频融合的语音情感识别模型框架结构图;
[0030]
图2是基于能量帧的频谱选择流程图
[0031]
图3是频谱增强的示意图;
[0032]
图4是rnn内部结构示意图。
具体实施方式
[0033]
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本技术所附权利要求书所限定的范围。
[0034]
本实施例公开的一种能量帧时频融合的语音情感识别方法的整体框架图如图1所示,主要由两部分组成:1)k能量帧的频谱确定方法:语音分帧后通过计算每帧的能量,选出能量前k强的语音帧以及它们相邻的前后两帧,转为频谱按时序排列作为输入;2)时频融合网络模型:通过能量帧的方式确定好输入频谱后,采用cnn rnn的网络结构去提取频谱的频域特征和时域特征,先用cnn提取到频域特征图后进行reshape后放入rnn学习时序特征进行分类。本发明具体包括以下步骤:
[0035]
(1)k能量帧的频谱确定方法:语谱图的特点就是通过二维平面图展示了三维信息,分别以时间为横坐标、频率为纵坐标、颜色的深浅代表了能量的强弱。现有深度学习的模型就是从语谱图上提取时域和频域上的能量变化特征。因此可以推断出能量变换的不同就是表达不同情感的所在,情感就是通过能量在不同频谱上发生强度变化传递出来的。
[0036]
基于能量帧的频谱确定方法流程如图2所示,进一步包括以下步骤:
[0037]
s101:划分语音帧,如下式所示:
[0038]
nf=ceiling((signal_length-wlen inc)/inc)
[0039]
由于每条语音的长度不一,也就代表了每个音频的采样点数不一样,提前设置好帧长和帧移参数,通过获取语音的信息并设置帧长就可以计算出语音信号被分成了多少帧短信号,即nf的值。式中:signal_length为该音频的总采样点数,wlen为每一小帧的采样点数,inc为重叠帧移采样点数,ceiling为上取整函数。其中有一点需要注意的是,由于很多
情况下是无法整除的,最后一帧不足wlen个采样点的话就需要补零。
[0040]
s102:计算采样点的短时能量,其中,在信号的第n个点开始加窗函数时的短时能量表示为en,则有:
[0041][0042]
式中:窗函数可选矩形窗和汉明窗等,本实施例选取了汉明窗w(n)展示,短时能量可以看作语音信号的平方经过一个线性滤波器的输出,该线性滤波器的单位冲激响应为h(n),且有h(n)=w(n)2;x(n)表示短语音帧的第n个采样点信号。
[0043]
s103:计算语音帧能量并筛选语音帧,其中,第i帧语音信号的短时能量用ei表示,则有:
[0044][0045]
式中:m为帧长,即wlen。然后,从nf帧中选取能量ei最高的前k帧,并且把它们的前后相邻2帧也提取出来,一个音频文件共计3
×
k帧,按时间顺序排列好。
[0046]
s104:频域谱线转化,如下式所示:
[0047][0048]
式中,normalization_half_y表示频域谱线;fft(y)表示对信号y进行快速傅里叶变化;abs[]表示取绝对值;n表示经过快速傅里叶变化后得到了n个复数;表示区间取半。语音的本质就是由各种波组成的,因此我们肯定需要从频域上面着手,可以知道拆分原始信号得到的各个频率和他们的幅度值并进行归一化处理。将信号y转变为频率谱线(横坐标为频率,纵坐标为幅值)。利用快速傅里叶变化(fft)进行从时域到频域的转换,这里fft的公式不再展叙。经过变换后,我们得到的是的n个复数,每个复数值包含着一个特定频率的信息,我们根据这n个复数(其中n为采样点个数),取复数的绝对值(abs)即复数的模。同时由于对称性,我们仅需要取一般区间(单边频率即可),因此后半个中括号并非是乘积的意思,而是表示区间取半。
[0049]
s105:数据增强,包括以下步骤:
[0050]
由于生成的频域谱线normalization_half_y在显示出来仅有曲线,存在大面积的空白区域,通过python中plt.fill()函数填充方式把x轴与曲线围成的区间上色如图3所示,这样不仅减少了空白区域,同时对cnn的特征提取起到了增强作用。
[0051]
(2)时频融合网络模型:该模型主要有两个网络组成,前半部分的cnn,主要用来提取该帧内不同频率上的能量特征;后半部分为多层的rnn模型主要用来学习帧与帧之间的关联,因为当训练数据较多的时候,多层rnn效果会比单层rnn效果好,同时每一帧就能视为一个时间节点,那么只要输入的帧序是按照时间序列就能学习到上下帧的信息。
[0052]
s201:cnn网络卷积核的设计(对频域特征提取):
[0053]
cnn主要用来提取每一帧频谱的在频域上的能量分布特征,本发明采用了较大的感受野,因为随着cnn卷积的深入为了压缩计算量越到后面的层数往往feature size越来越小但参与“决策”往往是最后几层网络。例如第一次卷积核可以选取8*8,后两次卷积核可为5*5。输出层有足够大的理论感受野,有能力表达出不同尺度的目标。与此同时为了降低模型运算参数且能保留更多的纹理信息,采用用最大池化层通过消除非极大值,降低了上层的计算复杂度。
[0054]
s202:激活函数的选择,如下式所示:
[0055][0056]
式中,y(i)指的是cnn网络通道i的输出。cnn网络的网络节点采用了整流线性单元(rectified linear unit,relu)函数作为激活函数。relu激活函数相较于传统的激活函数可以更好的抑制梯度消失、加快模型的收敛。
[0057]
s203:特征拼接,包括以下步骤:
[0058]
在cnn网络分别对3
×
k张频谱进行最后一次池化后,每张特征频谱都是多通道的特征,采用单个卷积核进行变化,让每张特征频谱变为单通道。对通道数为3
×
k的m
×
n特征频谱进行reshape,变成通道数为1、长为m
×
n、宽为3
×
k的特征图。
[0059]
s204:rnn网络的设计(对时域特征进行提取):
[0060]
rnn引入了隐状态h(hidden state)的概念,h可以对序列形的数据提取特征,接着再转换为输出,其结构如图4所示
[0061]
h1=tanh(ux1 wh0 b)
[0062]
y1=softmax(vh1 c)
[0063]
在计算新状态h
t
的时候需要用到前一个状态h
t-1
,输出值y
t
是对状态h
t
直接进行softmax计算。这里以计算y1和h1为例,x1是当前输入,h0是前一个状态,u、w、b表示参数,tanh表示进行双曲正切。h1计算出来后经行softmax变换得出y1。在计算时,每一步使用的参数u、w、b都是一样的,也就是说每个步骤的参数都是共享的,能加快模型的训练。图4中的箭头表示与f(wx b)函数类似,将对应向量进行变换。
[0064]
因此rnn最大的优势是带有动态的记忆性,rnn将每一个时间点的输出作为下一个时间点的输入,所以在输入最后一个时间点的xn的时候,rnn可能记忆着前面n个输入的信息,但是这种记忆性和普通神经网络直接将n个x作为输入不同的地方在于,他不是将所有输入一视同仁,具有一定的动态性。凭借这点能学习到频谱能量在时域上的变化特征以及时间序列的趋势变化。