基于Matlab神经网络语音情感识别系统

文件大小:5.1M

代码行数:55行(主程序)

开发环境:Matlab2018

点击下载:点击下载

简要概述:基于Matlab神经网络语音情感识别系统,五种基本情感:‘生气’,‘高兴’,‘中性’,‘悲伤’,‘害怕’。

运行效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是基于 MATLAB 神经网络语音识别代码示例: ``` % 1. 声音文件预处理 [x, Fs] = audioread('test.wav'); % 读取音频文件 x = x(:,1); % 获取单声道 x = resample(x,16000,Fs); % 重采样到16kHz frame_length = 400; % 帧长 frame_shift = 160; % 帧移 frame_num = floor((length(x)-frame_length)/frame_shift)+1; % 计算帧数 frames = zeros(frame_length, frame_num); % 初始化帧矩阵 for i = 1:frame_num start = (i-1)*frame_shift+1; frames(:,i) = x(start:start+frame_length-1); end % 2. 特征提取 f = melbankm(20,frame_length,Fs); % 计算梅尔滤波器组 nfft = 512; % FFT点数 mag_frames = abs(fft(frames,nfft)); % 计算FFT幅值 pow_frames = (1/nfft)*mag_frames.^2; % 计算功率谱 mel_frames = f*pow_frames(1:nfft/2+1,:); % 计算梅尔频谱 cep_frames = dct(log(mel_frames)); % 计算梅尔倒谱系数 cep_frames(:,1) = []; % 删除第一项 % 3. 建立神经网络模型 inputs = cep_frames; % 输入数据 targets = [1 0]; % 目标输出 net = feedforwardnet([20 10]); % 创建神经网络 net.divideParam.trainRatio = 0.8; % 训练集比例 net.divideParam.valRatio = 0.1; % 验证集比例 net.divideParam.testRatio = 0.1; % 测试集比例 net.trainFcn = 'trainlm'; % 训练函数 net.trainParam.showWindow = true; % 显示训练窗口 net.trainParam.epochs = 100; % 最大训练轮数 % 4. 训练神经网络模型 [net,tr] = train(net,inputs,targets); % 训练神经网络 % 5. 使用神经网络模型进行语音识别 test_inputs = cep_frames(:,1); % 测试数据 outputs = net(test_inputs); % 预测输出 if outputs(1) > outputs(2) disp('这是一个人的声音'); else disp('这是一个机器的声音'); end ``` 这个示例代码实现了以下步骤: 1. 读取音频文件,并进行预处理,将音频文件重采样到16kHz,并将音频数据分帧。 2. 对每一帧进行特征提取,计算梅尔频谱和梅尔倒谱系数。 3. 建立一个包含20个神经元的输入层、一个包含10个神经元的隐藏层和一个包含2个神经元的输出层的神经网络模型。 4. 使用 80% 的数据进行训练,10% 的数据进行验证,10% 的数据进行测试。 5. 使用训练好的模型对音频文件进行语音识别。 请注意,这只是一个简单的示例代码,实际上,语音识别需要更复杂的特征提取和模型训练过程。例如,在实际的应用中,通常会使用更复杂的特征提取算法,如MFCC,以及更深层次的神经网络模型,如CNN和LSTM。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

索炜达.猿创

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

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

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

打赏作者

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

抵扣说明:

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

余额充值