【语音识别】基于mfcc特征的智能语音识别门禁系统含Matlab源码

发布于 2022-05-19 00:38

1 简介

本文基于Matlab设计实现了一个文本相关的声纹识别系统,可以判定说话人身份。

1 系统原理

a.声纹识别

    这两年随着人工智能的发展,不少手机App都推出了声纹锁的功能。这里面所采用的主要就是声纹识别相关的技术。声纹识别又叫说话人识别,它和语音识别存在一点差别。

 

b.梅尔频率倒谱系数(MFCC

梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)是语音信号处理中最常用的语音信号特征之一。

梅尔频率倒谱系数考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。普通频率转换到梅尔频率的关系式为:

 


c.矢量量化(VectorQuantization

本系统利用矢量量化对提取的语音MFCC特征进行压缩。

VectorQuantization (VQ)是一种基于块编码规则的有损数据压缩方法。事实上,在 JPEG MPEG-4 等多媒体压缩格式里都有 VQ 这一步。它的基本思想是:将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多少信息。

3 系统结构

本文整个系统的结构如下图:


  –训练过程

首先对语音信号进行预处理,之后提取MFCC特征参数,利用矢量量化方法进行压缩,得到说话人发音的码本。同一说话人多次说同一内容,重复该训练过程,最终形成一个码本库。

  –识别过程

在识别时,同样先对语音信号预处理,提取MFCC特征,比较本次特征和训练库码本之间的欧氏距离。当小于某个阈值,我们认定本次说话的说话人及说话内容与训练码本库中的一致,配对成功。

 

2 部分代码


function y1=cut(s_address)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function: cut() 把静音段裁剪掉% input : 音频文件地址% output: 裁剪之后的音频% author: yuhansgg(Shi Gaige)% time: 2017.4.9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y=audioread(s_address);h=hamming(320);
% 计算短时平均能量SAE(short average energe)%信号的平方在与窗函数相卷% E(n)=[x(m)]^2*h(n-m),m从负无穷到正无穷求和,h(n-m)为汉明窗e=conv(y.*y,h); % y.*2对y中各元素平方;conv(u,v) 求u与v的卷积
% 对语音信号进行切割,当SAE小于能量大值的1/100时,认为是起点或终点
mx=max(e);n=length(e);y(n)=0; % 将原始语音信号矩阵扩充至n维for i=1:n if e(i)<mx*0.01 e(i)=0; else e(i)=1; % e中非0的数用1来代替 endendy1=y.*e;y1(find(y1==0))=[]; % 把0元素剔除fs=16000;audiowrite(s_address,y1,fs);

3 仿真结果

4 参考文献

[1]孙强, 祁立志. 基于语音识别的智能化门禁识别系统:, CN112070949A[P]. 2020.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材