clear all;
clc;
[filename,filepath]=uigetfile('.wav','Open wav file');
[y,fs,nbits]=wavread([filepath,filename]); %从电脑文件夹选择wav音频文件
b=menu('请选择选项','原始信号采样后时域图和频谱图','FIR滤波器','IIR滤波器','退出');
while(b~=4)
if b==1
temp=menu('请选择选项','播放原始语音','原始语音时域图','原始语音做FFT变换后频谱图','返回');
if temp==1
%播放语音
sound(y);
elseif temp==2
%画出原始语音时域图
figure(11)
plot(y);
xlabel('时间(ms)');
ylabel('幅值');
title('原始语音时域图');
elseif temp==3
%画出原始语音做FFT变换后频谱图
Y1=fft(y);
Y=abs(Y1);
figure(12)
plot(Y);
xlabel('频率');
ylabel('幅值');
title('原始语音做FFT变换后频谱图');
else
end
end
if b==2
temp=menu('请选择选项','FIR低通滤波器','FIR高通滤波器','FIR带通滤波器','返回');
if temp==1
%FIR低通滤波器
fs=10000;
wp=2*pi*1000/fs;
wst=2*pi*1200/fs;
Rp=1;
Rs=100;
wdelta=wst-wp;
N=ceil(8*pi/wdelta); %取整
wn=(wp+wst)/2;
[b,a]=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率
figure(21)
freqz(b,a,512);
title('FIR低通滤波器');
y1=filter(b,a,y);
figure(22)
subplot(2,1,1)
plot(y)
title('FIR低通滤波器滤波前的时域波形');
xlabel('时间(ms)');
ylabel('幅值');
subplot(2,1,2)
plot(y1);
title('FIR低通滤波器滤波后的时域波形');
xlabel('时间(ms)');
ylabel('幅值');
sound(y1,8000); %播放滤波后的语音信号
F0=fft(y1,1024);
f=fs*(0:511)/1024;
figure(23)
y2=fft(y,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512)));
title('FIR带通滤波器滤波前的频谱')
xlabel('频率/Hz');
Matlab语音信号频谱分析代码实现
最新推荐文章于 2024-08-02 02:39:22 发布
本文介绍了如何使用Matlab进行语音信号的频谱分析,包括预处理、频谱计算及可视化步骤,帮助理解语音信号处理的基础知识。
摘要由CSDN通过智能技术生成