提取"优化MFCC"做情绪识别(非个性化特征,附matlab代码)

前提:
MFCC特征是一种声学特征(语音特征可以分为语义特征/声学特征)。
MFCC特征也是一种个性化语音情感特征(语音情感特征可以分为个性化/非个性化语音情感特征)。

由于MFCC是一种个性化语音情感特征,由于说话人的不同MFCC特征的差异也比较大,单纯用MFCC作为特征来进行情感识别的效果就不会很好,因此在MFCC基础上就进行优化修正。

首先提取MFCC的动态差分参数。
在这里插入图片描述
dt表示t时刻的一阶差分,Ct表示t时刻的倒谱系数,Q表示倒谱系数的阶数,K表示一阶导数的时间差,我们选取K的值为2。

将求得的结果再次带入式中可以得到二阶差分参数。

我们对MFCC参数、MFCC一阶差分参数和MFCC二阶差分参数求均值,得到优化的MFCC参数,它可以被认为是非个性化语音情感特征。

我选取了前13阶的MFCC系数,所取窗口长度为0.025秒(wintime=0.025s),提取一次MFCC的时间间隔为0.01秒(hoptime=0.01s)。

接下来就是做情感识别任务了,这里对情感的arousal维度(relax - intense)做分类识别,忽略情感的valence维度(pleasant - unpleasant)。由于我的研究内容,我不关注情绪是否是愉快的,只想知道语音情绪的激烈程度,如果你关注语音情绪是否是愉快的,那这个方法可能不适合你。但是仅从arousal维度,这真是一个简单快乐有效的方法。

继续说怎么做情感识别和分类,刚刚得到了优化MFCC,对需要检测的一段时间(e.g.1s)内的所有MFCC参数求均值,得到一个13维的参数,然后再求它的标准差,这个标准差能够表征arousal维度的情感激烈程度。简单地设定阈值进行分类即可。

Likitha曾使用MFCC标准差方法识别了高兴、悲伤和愤怒三种语音情绪,正确率约为80%。
Likitha, M. S., et al. “Speech based human emotion recognition using MFCC.” Wireless Communications, Signal Processing and Networking (WiSPNET), 2017 International Conference on. IEEE, 2017.

附上matlab代码(代码里是个high/low arousal的两分类):

    % read file
    filename = ['path here'];
    [d,sr] = audioread(filename);
    d = d(:,1);
    % Look at its regular spectrogram
    subplot(311)
    specgram(d,512,sr)
    
    % Convert to MFCCs very close to those genrated by feacalc -sr 22050 -nyq 8000 -dith -hpf -opf htk -delta 0 -plp no -dom cep -com yes -frq mel -filt tri -win 32 -step 16 -cep 20
    [mm,aspc] = melfcc(d*3.3752, sr, 'maxfreq', 8000, 'numcep', 13, 'nbands', 22, 'fbtype', 'fcmel', 'dcttype', 1, 'usecmp', 1, 'wintime', 0.025, 'hoptime', 0.01, 'preemph'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值