1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJeblZxq
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
由于即使同一个人不同时间发出同一个声音,也不可能具有相同的长度,因此就需要用到动态时间归正(DTW)算法。把时间归正和距离测度计算结合起来的一种非线性归正技术。DTW 本质上是一个简单的动态规划算法,是用来计算两个维数不同的向量之间的相似度的问题,即计算向量 M1 和 M2 的最短距离。是一种非常常用的语音匹配算法。
4.部分源码
function [mj,melNo]= Melfilterbank(STFf,frq,frameNo,points)
melNo=25; %number of mel filters
syms mel(freq)
mel(freq)=1127*log(1+freq/700); % mel scale
center=zeros(1,(melNo+2));
freq1=7000;
freq0=50;
center(1)=mel(freq0);
hbandwidth=(mel(freq1)-mel(freq0))/(melNo+1);% half of bandwidth of each mel filter in mel scale
for i=2:melNo+2
center(i)=center(i-1)+hbandwidth; % center of each filter in mel scale
end
for i=1:melNo+2
center(i)=(exp(center(i)/1127)-1)*700; %moving centers to normal frequency scale
end
mj=zeros(frameNo,melNo);
for i=1:melNo
for j=1:frameNo
for k=1:(points/2)+1
if frq(k)>center(i) && frq(k)<center(i+1)
melresult=STFf(j,k)*((1/(center(i+1)-center(i)))*(frq(k)-center(i)));
elseif frq(k)>center(i+1) && frq(k)<center(i+2)
melresult=STFf(j,k)*((-1/(center(i+2)-center(i+1)))*(frq(k)-center(i+2)));
else
melresult=0;
end
mj(j,i)=melresult^2+mj(j,i);
end
end
end
mj=log10(mj);
A997