语音情感识别

背景

NLP和图像比较普遍,语音识别文字做的很多,今天尝试下做语音情感识别。

语音情感识别系统图

框图

wav格式的语音包

做特征提取的语音包(包含中文和英文)

特征提取方法-mfcc

在这里我选用了mfcc算法来提取语音基于谱的特征
算法如下
mfcc算法

主函数调用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@File  : main.py
@Author: Piepis
@Date  : 2021/3/11 12:53
@Desc  : 
'''
from calcmfcc import *
import scipy.io.wavfile as wav
import numpy
import os
import scipy.io as io

file_path = '../标准语音测试包/中文/'
mat_path="mfcc_mat_save_path.mat"
pathnames = []
for (dirpath, dirnames, filenames) in os.walk(file_path):
    for filename in filenames:
        if os.path.splitext(filename)[-1] ==".wav":
            pathnames += [os.path.join(dirpath, filename)]

mat= numpy.zeros((len(pathnames),39*5))  #生成一个3行4列全部元素为0的矩阵
N = 0
for file in pathnames:
    (rate,sig) = wav.read(file)
    mfcc_feat = calcMFCC_delta_delta(sig,rate)
    # axis=0,计算每一列的均值
    c1=numpy.mean(mfcc_feat,axis=0) #平均值
    c2=numpy.min(mfcc_feat,axis=0)  # 最小值
    c3=numpy.max(mfcc_feat,axis=0)  # 最大值
    c4=numpy.median(mfcc_feat,axis=0)  # 中值
    c5=numpy.std(mfcc_feat,axis=0)    # 标准偏差
    tt=numpy.concatenate((c1,c2 ,c3,c4,c5),axis=0)
    mat[N,:]=tt
    N+=1
io.savemat(mat_path, {'mfcc_name': mat})
print(mfcc_feat.shape)
print(mat.shape)

分类算法 svm

因为用来train的语音样本数据比较少,大概有一千条左右(数据来自CCPR),选用了常用于小样本的SVM算法来做情感分类。
情感
核心代码

def svm_cross_validation(train_x, train_y):
    from sklearn.model_selection import GridSearchCV
    from sklearn.svm import SVC
    model = SVC(kernel='rbf', probability=True,random_state=seed)
    param_grid = {'C': [1e-3, 1e-2, 1e-1,2,0.4, 1, 10, 100, 1000], 'gamma': [0.001, 0.0001]}
    grid_search = GridSearchCV(model, param_grid, n_jobs = 8, verbose=1)
    grid_search.fit(train_x, train_y)
    best_parameters = grid_search.best_estimator_.get_params()
    for para, val in list(best_parameters.items()):
        print(para, val)
    model = SVC(kernel='rbf', C=best_parameters['C'], gamma=best_parameters['gamma'], probability=True)
    model.fit(train_x, train_y)
    return model

预测结果 与实际结果对比

没有咋找最参数,只是简单的找了下。效果不太好,40%的识别率。(也有可能是语音是从电视剧里截出来的,有很多背景杂音。我用德国语音库测了下,能达到65%以上)
在这里插入图片描述
在这里插入图片描述

混淆矩阵(Confusion Matrix)

在这里插入图片描述

参考文献

基于听觉特性的Mel频率倒谱分析
MFCC算法的实现过程(原理篇)
语音识别的第一步MFCC特征提取代码(Python)

  • 9
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值