基于matlab设计实现一个文本相关的声纹识别系统结构如下图
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:nif e(i)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代码题可以交流私下里。