一、实验目的:
利用声音信号的特殊频带,通过加入噪声,设计滤波器对噪声进行处理,达到对声音信号分析与处理的目的。
二、实验要求:
利用计算机的“录音机”功能,采集一段小于10s的音频信号(“语音信号采集及处理”),存于文件.wav,利用MATLAB的audioread函数,读取采集数据,提取其数据采集频率等参数;对该信号加入多种噪声,如随机噪声、有色噪声等,送至播放器播放;根据加噪音信号的频谱特征,设计数字滤波器对该音频信号进行处理,并给出设计指标;将滤波后的语音信号,送至播放器播放,分析滤波效果,并进一步优化滤波器设计方案。
三、技术方案:
设计滤波器并滤波的主要步骤有八步,首先写出,注意需要将模拟频率对采样率归一化,然后计算出过度带宽度,根据阻带最小衰减选择窗函数,再求窗长度,求截止频率,计算滤波器系数向量,绘制滤波器频率特性波特图,完成滤波。
对于本实验,首先利用计算机的录音机功能,采集一段小于的音频信号,再利用的函数,读取采集数据,得到原始信号的频率,利用函数听原始信号,注意使用函数,防止多段录音混在一起,画出原始信号时域图形并作出频谱分析,然后对该信号加入噪声,利用函数听加噪声后的信号,画出该信号时域图形并作出频谱分析,最后根据已知条件设计滤波器,这里我采用使用汉宁窗,完成滤波,利用函数听滤波后的信号,画出该信号时域图形并作出频谱分析,观察比较三张时域图、三张频谱图之间的区别。
四、实验程序:
clc;
clear;
close all;
[Y,Fs]=audioread('F:\bin\win64\信号实习\录音.m4a');
Y1=Y(:,1);
Y2=Y(:,2);
N=length(Y);
subplot(3,2,1),plot(Y,'c'),title('原声音信号');
fs=25000;ts=1/fs;
y1=fft(Y)*ts;
z1=abs(y1);
if mod(N,2)==0
k=-N/2:(N/2-1);
else
k=-(N-1)/2:(N-1)/2;
end;
f1=k*fs/N;
subplot(3,2,2),plot(f1,fftshift(z1),'y'),title('初始信号频谱');
f=1.2E4;
t=0:ts:(N-1)*ts;
n=0.1*sin(2*pi*f*t);
X1=Y1+n';
X2=Y2+n';
X=[X1,X2];
subplot(3,2,3),plot(X,'m'),title('加噪声后声音信号');
y2=fft(X)*ts;
z2=abs(y2);
f2=k*fs/N;
subplot(3,2,4),plot(f2,fftshift(z2),'g'),ylim([0,0.08]),title('加噪声后声音信号频谱');
ws=0.98*pi;wp=0.36*pi;
Bt=ws-wp;
N0=ceil(6.2*pi/Bt);
N1=N0+mod(N0+1,2);
wc=(wp+ws)/2;
hn=fir1(N1-1,wc/pi,'low',hanning(N1));
y=filter(hn,1,X);
subplot(3,2,5),plot(y,'r'),title('滤波后声音信号');
y3=fft(y)*ts;
z3=abs(y3);
f3=k*fs/N;
subplot(3,2,6),plot(f3,fftshift(z3),'b'),title('滤波后声音信号频谱');
五、实验结果:
该图中依次为初始信号及其频谱分析,加噪声后的信号及其频谱分析,滤波后的信号及其频谱分析。可见滤波效果较好,原声音信号和滤波后声音信号的时域图形、频谱图都基本重合,通过函数听滤波后的声音,还原较为清晰,通过改变参数后设计出了滤波效果较好的滤波器。