【语音识别】傅立叶变换0-9的数字语音识别【含Matlab 333期】

一、简介

1 滤波
滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果,对另一与之有关的随机过程进行估计的概率理论与方法。
滤波分为经典滤波和现代滤波两种。
经典滤波:
经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波被叫做信号的频率成分或叫做谐波成分。
滤波器:
只允许一定频率范围内的信号成分正常通过,而组织另一部分频率成分通过的电路。叫做经典滤波器或滤波电路。实际上,任何一个电子系统都具有自己的频带宽度(对信号最高频率的限制),频率特性反映了电子系统的这个基本特点。而滤波器,则是根据电路参数对电路频带宽度的影响而设计出来的工程应用电路。
现代滤波
用模拟电子电路对模拟信号进行滤波,其基本原理就是利用电路的频率特性实现对信号中频率成分的选择。根据频率滤波时,是把信号看成是由不同频率正弦波叠加而成的模拟信号,通过选择不同的频率成分来实现信号滤波。
1、当允许信号中较高频率的成分通过滤波器时,这种滤波器叫做高通滤波器。
2、当允许信号中较低频率的成分通过滤波器时,这种滤波器叫做低通滤波器。
3、设低频段的截止频率为fp1,高频段的截止频率为fp2:
1)频率在fp1与fp2之间的信号能通过其它频率的信号被衰减的滤波器叫做带通滤波器。
2)反之,频率在fp1到fp2的范围之间的被衰减,之外能通过的滤波器叫做带阻滤波器。
理想滤波器的行为特性通常用幅度-频率特性图描述,也叫做滤波器电路的幅频特性。

2 傅里叶变换
傅里叶变换是一种积分变换,就是一种从时间到频率的变化。傅里叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。可以说,傅里叶变化将原来难以处理的时域信号转化成了易于分析的频率信号(信号的频谱)。
图像的频率是表征(知识在个体心理的反映和存在方式)图像中灰度变化剧烈的程度的指标,是灰度在平面空间上的梯度。图像中是一片灰度变化很缓慢的区域,对应的频率值很低,反之亦然。
从纯粹的数学意义上看,傅里叶变换是将一个函数转化为一系列周期函数来处理。从物理效果看,傅里叶变化是将图像从空间域转换到频率域,其逆变换是将图像从频率转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数转变为图像的频率分布函数,傅里叶逆变化是将图像的频率分布函数变换为灰度分布函数。

3 傅里叶变换的性质
平移性质
在这里插入图片描述
1
2
公式(1)表明将f(x,y)与一个指数项相乘就相当于把其变换后的频域中心移动到新的位置
公式(2)表明将F(u,v)与一个指数项相乘就相当于把其变换后的空域中心移动到新的位置
公式(2)表明对f(x,y)的平移不影响其傅里叶变换的幅值
分配率
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、源代码

clear all
close
clc;
disp('正在计算参考模板的参数...')
for i=1:10
fname=sprintf('%d0.mp3',i-1);
[x,fs]=audioread(fname);
sound(x,fs);
  [x1 x2]=vad(x);
%   x1=abs(round(x1));
%   x2=abs(round(x2));
  m=mfcc(x);
  m=m(x1-2:x2-4,:);
  ref(i).mfcc=m;
end

disp('正在分析语音信号...')
for i=1:10
fname=sprintf('%d0.mp3',i-1);
%[x,fs,bit]=audioread(fname,[2000,2512]);     %采样%
[x,fs]=audioread(fname,[2000,2512]);
%sound(x,fs);      %播放语音信号
figure(i);
subplot(3,3,1);
plot(x(1:256));    %原始语音信号的时域图形%
title('原始信号')
subplot(3,3,2)
[h,w]=freqz(x,fs);      %原始语音信号的频率响应图
hr=abs(h);            %求系统幅频响应
plot(w,hr);
title('幅频图');
xlabel('Frequency in rad mple')
ylabel('Magnitude in dB')
subplot(3,3,3)
hphase=angle(h);
hphase=unwrap(hphase);  %求系统相频响应
plot(w,hphase);
title('相频图');
xlabel('Frequency in rad mple')
ylabel('Phase in degrees')
y=fft(x,512);      %傅立叶变换%
mag=abs(y);
mag1=10*log10(mag);
f=fs*(0:255)/512;
subplot(3,3,4)
plot(f,mag(1:256));   %FFT频谱图 %
title('fft变换后信号')
iff=ifft(y,512);   %反傅立叶变换%
ifm=abs(iff);
subplot(3,3,5)
plot(f,ifm(1:256))
title('ifft后信号')
% 短时傅里叶变换
Ts=1/fs;
%N=T/Ts;
N=512;
Nw=20;     %窗函数长
L=Nw/2;    %窗函数每次移动的样点数   
Tn=(N-Nw)/L+1;    %计算把数据x共分成多少段
nfft=32;%FFT的长度
Tn=round(Tn);
TF=zeros(Tn,nfft);   %将存放三维谱图,先清零
for i=1:Tn
    xw=x((i-1)*10+1:i*10+10);    %取一段数据
    temp=fft(xw,nfft);           %FFT变换
    temp=fftshift(temp);         %频谱以0频为中心
    for j=1:nfft
    TF(i,j)=temp(j);                %把谱图存放在TF中
    end
end
subplot(3,3,6)
fnew=((1:nfft)-nfft/2)*fs/nfft;
tnew=(1:Tn)*L*Ts;
[F,T]=meshgrid(fnew,tnew);
mesh(F,T,abs(TF))
title('短时傅立叶变换时频图')
subplot(3,3,7)
contour(F,T,abs(TF))
title('等高线表示')
end
function cost=testdtw(t,r)
[r1,c1]=size(t);
[r2,c2]=size(r);
distance=zeros(r1,r2);
for n=1:r1
    for m=1:r2
        tr=(t(n,:)-r(m,:)).^2;
        distance(n,m)=sqrt(sum(tr)/c1);
        %distance(n,m)=sqrt(sum(tr)/c1);
    end
end
D=zeros(r1,1);
function f=enframe(x,win,inc)
nx=length(x(:));
nwin=length(win);
if (nwin == 1)
   len = win;
else
   len = nwin;
end
if (nargin < 3)
   inc = len;
end
function cost=Idtw(t,r)
[r1,c1]=size(t);
[r2,c2]=size(r);
distance=zeros(r1,r2);
for n=1:r1
    for m=1:r2
        tr=(t(n,:)-r(m,:)).^2;
        distance(n,m)=sqrt(sum(tr)/c1);
        %distance(n,m)=sqrt(sum(tr)/c1);
    end
end

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、备注

完整代码或者代写添加QQ912100926
往期回顾>>>>>>
【信号处理】基于GUI界面之处理录音与音频【Matlab 123期】
【信号处理】CDR噪声和混响抑制【含Matlab源码 198期】
【信号处理】最小二乘法解决稀疏信号恢复问题【Matlab 199期】
【信号处理】遗传算法的VST混响【Matlab 200期】
【信号处理】HMM的睡眠状态检测【Matlab 201期】
【信号处理】小波变换的音频水印嵌入提取【Matlab 202期】
【信号处理】ICA算法信号分离【Matlab 203期】
【信号处理】基于GUI界面的脉搏信号之脉率存档【Matlab 204期】
【信号处理】基于GUI界面的虚拟信号发生器(各种波形)【Matlab 205期】
【信号处理】基于GUI界面信号发生器之电子琴【Matlab 206期】
【信号处理】数字电子琴设计与实现【Matlab 207期】
【雷达通信】雷达数字信号处理【Matlab 214期】
【雷达通信】线性调频(LFM)脉冲压缩雷达仿真【Matlab 215期】
【雷达通信】距离多普勒(RD)、CS、RM算法的机载雷达成像【Matlab 216期】
【雷达通信】《现代雷达系统分析与设计》【Matlab 217期】
【语音处理】基于matlab GUI语音信号处理平台【含Matlab源码 218期】
【语音采集】基于GUI语音信号采集【Matlab 219期】
【语音调制】基于GUI语音幅度调制【Matlab 220期】
【语音合成】基于GUI语音合成【Matlab 221期】
【语音识别】基于GUI语音基频识别【Matlab 222期】
【语音加密】基于GUI语音信号加密解密【Matlab 223期】
【信号处理】小波变换的语音增强【Matlab 224期】
【信号处理】基于GUI语音去噪【Matlab 225期】
【语音增强】基于GUI维纳滤波之语音增强【Matlab 226期】
【音频处理】基于GUI语音信号处理【含Matlab 227期】
【雷达通信】基于GUI雷达定位【Matlab 244期】
【雷达通信】基于GUI雷达脉冲压缩【Matlab 245期】
【雷达通信】基于GUI雷达定位模拟【Matlab 246期】
【雷达通信】SVM识别雷达数据【Matlab 247期】
【信息处理】GUI数字波束的算法库【Matlab 249期】
【通信】OFDM-MIMO通信建模与仿真【Matlab 250期】
【通信】OFDM仿真【Matlab 251期】
【信号处理】窗函数法的FIR数字滤波器设计【Matlab 252期】
【通信】FIR低通数字滤波器设计【Matlab 253期】
【通信】FIR IIR数字滤波器设计【Matlab 254期】
【调制信号】基于GUI数字调制信号仿真【Matlab 255期】
【通信】扩频通信系统设计【Matlab 256期】
【通信】多径衰落信道的仿真【Matlab 257期】
【语音识别】基于BP神经网络的语音情感识别【Matlab 258期】
【信号处理】音频水印嵌入与提取【Matlab 259期】
【音频水印】小波变换的量化音频数字水印【Matlab 260期】
【语音去噪】低通和自适应滤波去噪【Matlab 261期】
【信号处理】8级m序列【Matlab 262期】
【情感识别】基于GUI语音情感分类识别【Matlab 263期】
【信号处理】FIR与IIR滤波器低通、高通、带通设计【Matlab 273期】
【语音处理】语音信号的预处理【Matlab 274期】

猜你喜欢

转载自blog.csdn.net/m0_54742769/article/details/114291552
333