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

您所在的位置:网站首页 nave是什么意思中文翻译 【语音识别】基于适量量化(VQ)实现说话人门禁识别附GUI

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

2023-06-02 17:09| 来源: 网络整理| 查看: 265

✅作者简介:热爱科研的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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3