1 简介

语音情感识别是从语音信号中提取一些有效的声学特征,然后利用智能计算或者识别的方法对话者的情感状态进行识别。介绍了国内外在该领域中关于语音情感数据库、特征提取、识别方法的研究现状。基于对该领域现状的了解,发现特征提取对识别率有着非常大的影响。录制了1050句语音,每句语音提取了30个特征,从而形成了一个1050×30的数据库。提出了用粗糙集理论中的信息一致性对数据库中的30个特征进行化简,最后得到了12个特征。用神经网络中的BP网络对话者的情感状态进行识别,最高识别率达到了84%。从实验结果发现不同的情感用不同的方法识别结果更好。

如何选择有效的语音情感特征,直接影响到语音情感识别结果的好坏。首先要明确研究哪几类情感,从心理学的角度来看,总共包括以下7类情感,即高兴、生气、悲伤、害怕、惊讶、厌恶、中性。本文主要研究生气、高兴、悲伤和惊讶这四类情感。目前,很多研究中都是把语音情感识别问题转化为模式识别问题进行研究。其本质就是先对语音信号特征进行预处理,再提取相关特征,从而进行分类。选取语音持续时间、短时能量、基音频率、共振峰和 MFCC等语音信号特征进行相关研究。

2.1 语音持续时间

语音持续时间实际上就是说话过程中所持续的时间,其往往与所表达的情感有着直接的关联。一般来说,人生气时说话速度较快,语 音 持 续 时 间 较 短;而处于悲伤或者害怕时说话的语速就会较慢,语音持续时间较长。因 此,选择带有情感的语音持续时间与正常状态下的语音持续时间的比值作为一个特征参数。

​2.2 短时能量短时能量

直接反映了声音音量的大小。一般来说,清音的能量较小,浊音的能量较高。当一个人的情感为生气或者是惊讶的时候,其说话的音量就会变大,短 时 能 量 往往也比较高。当一个人的情感为害怕或者悲伤的时候,说话的音量就会变低,短时能量往往也比较低。因 此,本 文选择短时能量的均值、最大值、最小值、变化范围这4个特征参数。

2.3基音频率

基音频率简称基频,它直接反映了声道的特征,已 经在多个领域被广泛应用,如 语 音 识 别、语 音 合 成 等。一 般来说,男性的基频较 低,女性的基频较高。不 同 情 感 状 态下基频的大小不同。相 关 研 究 表 明,生 气、高 兴 和 惊 讶 时的基频变化范围和均值较高,相反悲伤时基频的均值和变化范围较小。因此,本文选取了基频的均值、最大值、最小值和变化范围这4个特征参数。

2.4 共振峰

共振峰指发声的气流经过声道时,与声道发生共振的频率。其与情感有着很 大 的 关 联,情 感 状 态 不 同,共 振 峰频率也随之发生变化。目前,大多数的研究都是利用线性预测法来提取语音信号中的共振峰频率。共 振 峰 参 数 的选择对语音情感识别有着重要意义。因此,本文选取第一共振峰频率的均值、第二共振峰频率的均值、第 三 共 振 峰频率的均值和第四共振峰频率的均值作为特征参数。

2.5 MFCC

即便是同一句话,同一个人在不同的情感状态下说出来也是不一样的,让听者听起来感觉更是不一样。MFCC是梅尔频率倒谱系数的简称,它是模拟人耳听觉特性所提取的特征参数,已经被广泛应用于语音识别和语音合成的研究中。因而选取12维 MFCC均值作为特征参数。

2 部分代码

%实验要求:基于神经网络的语音情感识别
clc
close all
clear all
load A_fear fearVec;
load F_happiness hapVec;
load N_neutral neutralVec;
load T_sadness sadnessVec;
load W_anger angerVec;
trainsample(1:30,1:140)=angerVec(:,1:30)';
trainsample(31:60,1:140)=hapVec(:,1:30)';
trainsample(61:90,1:140)=neutralVec(:,1:30)';
trainsample(91:120,1:140)=sadnessVec(:,1:30)';
trainsample(121:150,1:140)=fearVec(:,1:30)';
trainsample(1:30,141)=1;
trainsample(31:60,141)=2;
trainsample(61:90,141)=3;
trainsample(91:120,141)=4;
trainsample(121:150,141)=5;
testsample(1:20,1:140)=angerVec(:,31:50)';
testsample(21:40,1:140)=hapVec(:,31:50)';
testsample(41:60,1:140)=neutralVec(:,31:50)';
testsample(61:80,1:140)=sadnessVec(:,31:50)';
testsample(81:100,1:140)=fearVec(:,31:50)';
testsample(1:20,141)=1;
testsample(21:40,141)=2;
testsample(41:60,141)=3;
testsample(61:80,141)=4;
testsample(81:100,141)=5;
class=trainsample(:,141);
sum=bpnn(trainsample,testsample,class);
figure(1)
bar(sum,0.5);
set(gca,'XTickLabel',{'生气','高兴','中性','悲伤','害怕'});
ylabel('识别率');
xlabel('五种基本情感');
p_train=trainsample(:,1:140)';
t_train=trainsample(:,141)';
p_test=testsample(:,1:140)';
t_test=testsample(:,141)';
sumpnn=pnn(p_train,t_train,p_test,t_test);
figure(2)
bar(sumpnn,0.5);
set(gca,'XTickLabel',{'生气','高兴','中性','悲伤','害怕'});
ylabel('识别率');
xlabel('五种基本情感');
sumlvq=lvq(trainsample,testsample,class);
figure(3)
bar(sumlvq,0.5);
set(gca,'XTickLabel',{'生气','高兴','中性','悲伤','害怕'});
ylabel('识别率');
xlabel('五种基本情感');


3 仿真结果

​【语音识别】基于神经网络的语音情感识别matlab代码_神经网络

​【语音识别】基于神经网络的语音情感识别matlab代码_特征提取_02

4 参考文献

[1]陈晓东. 基于卷积神经网络的语音情感识别. (Doctoral dissertation, 华南理工大学).

​【语音识别】基于神经网络的语音情感识别matlab代码_语音信号_03