matlab语音信号处理/滤波器降噪/时域频域、归一化图谱

前言

matlab语音信号处理课程设计,我自己在做的时候想要借鉴,发现在csdn付费下载的一个有用的都没有,我更愿意免费分享给大家


一、题目要求

◆1语音信号处理

采集语音信号(可用手机自带的录音机录),画出其时域波形,并对其进行频谱分析。(加入噪声或者伴奏,画时域波形,频谱。)设计数字滤波器,用滤波器对信号进行滤波,用滤波器对信号进行滤波。回放语音信.....
画出采样后语音信号的时域波形和频谱图,画出滤波器的频率响应,画出滤波后信号的时域波形和频谱。
(主要函数:audioread ( matlab7:wavread),ft,ellipord, filter, sound等等)
 

二、使用步骤

代码如下

clc;
clear all;
%% 原始语音信号
[s1,fs]=audioread('千月兔 - 千里邀月.mp3');
s1=s1(:,1); % 单声道
t=(0:length(s1)-1)/fs; % 时间
figure
subplot(211)
plot(t,s1)
title('原始语音信号');
ylabel('幅度');
xlabel('时间');
% 傅里叶变换
P=fft(s1);
subplot(212)
plot(abs(P)); % 双边傅里叶频谱图
title('原始语音信号幅频特性');
ylabel('幅度');
xlabel('频率/Hz');
disp('已暂停,按任意键结束')
pause;
sound(s1,fs);

disp('已暂停,按任意键结束')
pause;
%% 加入高斯白噪声
% 噪声:SNR=10
r1=awgn(s1,10,'measured');
figure
subplot(211)
plot(t,r1)
title('加入噪声后的语音信号');
ylabel('幅度');
xlabel('时间');
% 傅里叶变换
P=fft(r1);
subplot(212)
plot(abs(P));
title('加入噪声后的语音信号幅频特性');
ylabel('幅度');
xlabel('频率/Hz');
disp('已暂停,按任意键结束')
pause;
sound(r1,fs);
disp('已暂停,按任意键结束')
pause;
%% 数字滤波器滤波
% 使用4阶,0.48的截止频率和30 dB纹波的切比雪夫窗口。
%% FIR低通滤波器实现
bhi = fir1(4,0.48,'low',chebwin(5,30));
figure
freqz(bhi,1)
outhi = filter(bhi,1,r1); % 滤波器

figure
subplot(211)
plot(t,outhi)
title('FIR滤波器后的语音信号');
ylabel('幅度');
xlabel('时间');

P=fft(outhi);
subplot(212)
plot(abs(P));
title('FIR滤波器后的语音信号幅频特性');
ylabel('幅度');
xlabel('频率/Hz');
disp('已暂停,按任意键结束')
pause;
sound(outhi,fs);

幅频响应图:

matlab语音信号处理/滤波器降噪/时域频域、归一化图谱_第1张图片

归一化图谱(反映滤波器性能)

matlab语音信号处理/滤波器降噪/时域频域、归一化图谱_第2张图片

音频可以自己设定,往matlab一拖对应位置复制好完整文件名称就行 

答辩的话一般也就问问代码用了哪些函数、有什么意思、是啥滤波器、滤波器特点、阶数选择原因等等


总结

挺简单的一段代码,自己弄的时候一窍不通,还是平时学的太少,有错误不足之处还请评论区多多指教,希望能为后来者提供一点帮助吧,2022.1.24

你可能感兴趣的:(matlab,开发语言,语音识别,c语言)