1 简介

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

1 系统原理

a.声纹识别

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

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

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

实验观测发现人耳就像一个滤波器组一样,它只关注频谱上某些特定的频率。人耳的声音频率感知范围在频谱上的不遵循线性关系,而是在Mel频域上遵循近似线性关系。

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

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

【语音识别】基于mfcc特征的智能语音识别门禁系统含Matlab源码_声纹识别_02编辑

c.矢量量化(VectorQuantization)

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

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

3 系统结构

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

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

【语音识别】基于mfcc特征的智能语音识别门禁系统含Matlab源码_声纹识别_04编辑

  –训练过程

首先对语音信号进行预处理,之后提取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来代替
end
end
y1=y.*e;
y1(find(y1==0))=[]; % 把0元素剔除
fs=16000;
audiowrite(s_address,y1,fs);

3 仿真结果

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

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

4 参考文献

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

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

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