【语音识别】基于适量量化(VQ)实现说话人门禁识别附GUI

简介: 【语音识别】基于适量量化(VQ)实现说话人门禁识别附GUI

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

说话人识别技术是语音识别领域的一项重要研究内容,它能够根据提取的有效反映人个性特征的参数进行身份识别.说话人识别的过程为:语音信号的预处理,语音信号的特征提取,说话人模型的建立与模型匹配,判决.基于VQ的语音识别技术在孤立词语的语音识别系统中有较高的识别能力.本文采用LBG算法设计每个待识别语音的码本,码本是从该说话人的训练序列中提取MFCC特征矢量聚类而生成.通过计算其所有帧的VQ失真累积值,把具有最小累积失真值的输入语音信号对应的参考类别作为识别判定的结果,从而识别特定人的语音.与典型的HMM和NN识别算法相比,该方法复杂度低,系统资源消耗少而识别率高,适合在手机,PDA等资源有限的系统中使用.

⛄ 部分代码

function new_create_vq_books()

% clc,clear

%完成说话人识别的训练和匹配

k=8;%LBG算法产生k个中心,这里根据lbg算法原理,只能设置为2^n 形式,比如4,8,16,32,...数值越大计算越慢


files=dir('./data/train/');

files_names={files.name};

N=length(files_names)-2;

% N=23;%N个说话人


%文件路径为:./data/train/

for i=1:N

   s=['./data/train/ID',num2str(i),'.wav'];

   [x,fs]=audioread(s);

   x=x/max(x);%对语音归一化

   %预加重,消除直流分量

   mel=my_mfcc(x,fs)';%每列为一个数据,返回一个39*352的mfcc矩阵

   v=lbg(mel,k);

   u{i}=[v(1:k).mea];

end

save vq_books.mat u

% fprintf('VQ码表生成完毕,请继续运行  vq_speaker_test.m  文件测试说话人识别结果~~~\n')



%其他操作函数,用于计算 欧氏距离 和 lbg 聚类

function v=lbg(x,k)

%lbg:完成lbg均值聚类算法

% lbg(x,k) 对输入样本x,分成k类,即聚类中心。其中,x为row*col矩阵,每一列为一个样本,

% 每个样本有row个元素。

% [v1 v2 v3 ...vk]=lbg(...)返回k个分类,其中vi为结构体,vi.num为该类

% 中含有元素个数,vi.ele(i)为第i个元素值,vi.mea为相应类别的均值


[row,col]=size(x);

%u=zeros(row,k);%每一列为一个中心值

epision=0.03;%选择epision参数

delta=0.01;     %LBG算法的阈值 sigma

%u2=zeros(row,k);

%LBG算法产生k个中心

u=mean(x,2);%第一个聚类中心,总体均值,即对每一维mfcc参数求均值,其数值为39*1

for i3=1:log2(k)

   %分裂,这里log2(k)表示 分裂几次

   u=[u*(1-epision),u*(1+epision)];%分裂的过程

   %time=0;

   D=0;

   DD=1;

   %开始迭代,看是否满足条件

   while abs(D-DD)/DD>delta   %sum(abs(u2(:).^2-u(:).^2))>0.5&&(time<=80)   %u2~=u

       DD=D;

       for i=1:2^i3            %初始化

           v(i).num=0;

           v(i).ele=zeros(row,1);

       end

       for i=1:col %第i个样本

           distance=dis(u,x(:,i));%第i个样本到各个中心的距离

           [val,pos]=min(distance);

            v(pos).num=v(pos).num+1;%元素的数量加1

           if v(pos).num==1    %ele为空

               v(pos).ele=x(:,i);

           else

               v(pos).ele=[v(pos).ele,x(:,i)];

           end

       end

       for i=1:2^i3

           u(:,i)=mean(v(i).ele,2);%新的均值中心

           for m=1:size(v(i).ele,2)

               D=D+sum((v(i).ele(m)-u(:,i)).^2);

           end

       end

   end

end

%u=u;

for i=1:k  %更新数值

   v(i).mea=u(:,i);

end

function dis=dis(u,xi)

%DIS:计算欧式距离

% dis=dis(u,xi):计算xi到u的各个列向量的欧式距离,返回到dis中

% u的行数和向量xi的维数必须一致


if isvector(xi)&&(size(u,1)~=length(xi))

   error('xi必须为向量且维数必须等于u的行数')

end

k=size(u,2);

xi=xi(:);

dis=zeros(1,k);

for i=1:k

   ui=u(:,i);

   dis(i)=sum((xi-ui).^2);

end

⛄ 运行结果

⛄ 参考文献

[1] 张玉娇. 基于矢量量化(VQ)的说话人识别的研究[D]. 南京理工大学, 2015.

[2] 吕晶晶, 陈娟, 张培,等. 基于VQ的语音识别技术研究[J]. 伺服控制, 2011(4):68-69.

[3] 张欢, 麻鑫, 吴玲玲,等. 一种基于语音识别的门禁系统[J]. 中国科技期刊数据库 工业A, 2021(10):3.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
3月前
|
存储 算法 Serverless
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
|
6月前
|
机器学习/深度学习 语音技术
Hotword模型在语音识别系统中定义为能够识别特定关键词或短语(也称为唤醒词)的模型
Hotword模型在语音识别系统中定义为能够识别特定关键词或短语(也称为唤醒词)的模型
310 9
|
语音技术
同一个语音为什么识别结果还不一致的,有大佬知道原因吗(Paraformer语音识别-中文-通用-16k-离线-large-热词版)
模型speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404,在线体验同一个语音识别结果不一致(https://modelscope.cn/models/damo/speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404/summary)
304 0
|
人工智能 语音技术 自然语言处理
《阿里云AI产品必知必会系列电子书》——智能语音交互—— 一句话识别QuickStart使用教程(1)
《阿里云AI产品必知必会系列电子书》——智能语音交互—— 一句话识别QuickStart使用教程(1)
752 0
|
人工智能
《阿里云AI产品必知必会系列电子书》——智能语音交互—— 一句话识别QuickStart使用教程(2)
《阿里云AI产品必知必会系列电子书》——智能语音交互—— 一句话识别QuickStart使用教程(2)
662 0
|
人工智能 Java 调度
《阿里云AI产品必知必会系列电子书》——智能语音交互—— 一句话识别QuickStart使用教程(3)
《阿里云AI产品必知必会系列电子书》——智能语音交互—— 一句话识别QuickStart使用教程(3)
704 0
|
机器学习/深度学习 人工智能 算法
【语音识别】基于VQ特定人孤立词语音识别附matlab代码
【语音识别】基于VQ特定人孤立词语音识别附matlab代码
|
机器学习/深度学习 人工智能 达摩院
IEEE SLT 2022论文解读|基于多帧跨通道注意力机制的多说话人语音识别
‍近期,阿里巴巴达摩院高校AIR合作论文“MFCCA:Multi-frame cross-channel attention for multi-speaker ASR in multi-party meeting scenario”被IEEE SLT 2022接收。该论文考虑到麦克风阵列不同麦克风接收信号的差异,提出了一种多帧跨通道注意力机制,该方法对相邻帧之间的跨通道信息进行建模,以利用帧级和通道级信息的互补性。
780 0
|
机器学习/深度学习 达摩院 前端开发
INTERSPEECH 2022论文解读|针对多方会议场景下说话人相关语音识别的对比研究
INTERSPEECH是由国际语音通讯协会 (International Speech Communication Association, ISCA) 创办的语音信号处理领域顶级旗舰国际会议。历届INTERSPEECH会议都备受全球各地语音语言领域人士的广泛关注。 ‍本文主要对比研究三种SA-ASR的方法,通过对说话人日志、语音分离和语音识别模块的耦合,在M2MeT竞赛上发布的真实会议场景语料库AliMeeting上进行了相关实验,有效地降低了说话人相关字错误率(SD-CER)。论文已被INTERSPEECH 2022接收。
739 0
|
自然语言处理 人机交互 语音技术
阿里云智能语音交互中一句话识别服务的PythonSDK调用
智能语音交互产品基于语音识别、语音合成、自然语言理解等技术,实现“能听、会说、懂你”式的智能人机交互体验,适用于智能客服、质检、会议纪要、实时字幕等多个企业应用场景,一句话识别服务可以对一分钟内的短语音进行识别,适用于对话聊天,控制口令等较短的语音识别场景,此篇文章将介绍此服务的pythonSDK简单使用
675 0
阿里云智能语音交互中一句话识别服务的PythonSDK调用