1 简介
本文设计并实现了一个基于Matlab的文本相关声纹识别系统,可以确定说话人的身份。
1 系统原理
a.声纹识别
近两年随着人工智能的发展,很多手机APP都推出了声纹锁。功能。这里使用的技术主要与声纹识别有关。声纹识别也称为说话人识别,与语音识别略有不同。
b.Mel 频率倒谱系数 (MFCC)
梅尔频率倒谱系数 (MFCC) 是语音信号处理中最常用的语音信号特征。
实验观察发现,人耳就像一个滤波器组,它只关注频谱上的某些特定频率。人耳的声音频率感知范围在频谱上并不遵循线性关系,而是在Mel频域上遵循近似线性关系。
Mel频率倒谱系数考虑到人的听觉特性,首先将线性谱映射到基于听觉感知的Mel非线性谱上,然后将其转换为倒谱。普通频率与梅尔频率的关系为:
c。矢量量化
本系统使用矢量量化对提取的语音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)
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个模拟结果
4 参考文献
[1]孙强,齐立志。基于语音识别的智能门禁识别系统:,CN112070949A[P]. 2020.?
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等各个领域的Matlab仿真,相关matlab代码题可以交流私下里。