用MATLAB对音频采样、加噪、滤波

					**

用MATLAB对音频采样、加噪、滤波

**
摘要
数字信号处理就是通过数字指标的设计和应用设计数字滤波器,数字滤波器是数字信号处理的一个重要组成部分。一般通过两种方法来对滤波器进行实现:一种是直接用软件来进行编程设计,如matlab。另一种是设计专用的数字硬件和专用的数字信号处理器或采用通用的数字信号处理器来实现。以下的实验我们将采用第一种方法matlab仿真来实现滤波器的设计及滤波。通过matlab实现有带宽噪声和单一频率噪声滤除,并绘制出相应的时域图和频域图。
设计内容
1.1 设计要求
设计数字滤波器,实现带外噪声的滤除。
具体要求如下,①录制一段包含男声和女声的语音信号,对语音信号进行时、频分析,得出观察分析结论;②对语音信号进行两种不同频率的噪声音频干扰,一种是小于50赫兹或大于3500赫兹;另一种噪声的频率范围在50到3500赫兹之间。画出加噪后时域波形和频谱;③设计合适的滤波器,对上述两种噪声进行滤波,并对比滤波效果,分析原因;④撰写设计报告及完成仿真,并进行验收答辩。
1.2 设计目的
1. 能够更加深刻的了解滤波器的概念,了解数字滤波器的数字指标,对每一段设计语句有更深的了解并能够应用设计,实现相应的功能。
2. 通过matlab 编写相应的语句,实现相应的滤波器设计,进而实现相应的要求,完成信号的过滤。
1.3 设计原理
数字滤波器本质上是完成频率选择或频率分辨任务的线性时不变系统,离散时间线性时不变系统通常称为数字滤波器。数字滤波器将一组输入的数字序列按照一定的运算后转变为另一组数字序列输出。与模拟滤波器类似,数字滤波器按频率特性划分可分为低通、高通、带通、带阻、全通等类型。
2. 设计思路

  1. 了解设计的要求,并根据设计的要求选择相应类型和参数的滤波器和相应的窗函数。
  2. 根据所需要的参数,找到和设计相应的语句。
  3. 验证语句的正确性,对比输入,加噪,过滤后波形的图像,找到存在的问题所在。
  4. 播放采集,加噪和滤波后的音频,对比其不同性,找到不同的区别。
  5. 对比有带宽的噪声和单频噪声,得到相应的结论。
    3设计过程
    3.1 语音信号采集
    录制了一段音频,音频为“知否知否”男女混唱。
    3.2 原始信号的时域、频域FFT 分析
    在 MATLAB软件平台下,利用函数audioread设计程序对语音信号进行采样。利用fft快速傅里叶转换对信号进行时域和频域转换,编好程序后单独运行直到得到信号的频谱图。
    3.3 加噪信号的时域、频域FFT分析
    在MATLAB中,给原始语音信号叠加上噪音,绘出叠加噪声后的语音信号时域和频谱图,与原始语音信号图形进行对比,分析频谱和波形的改变。
    3.4 数字滤波器的设计及滤波
    根据设计思路,结合MATLAB显示频谱图等设计合理的滤波器,并用滤波器对含噪语音信号进行滤波处理。并对比两种不同加噪的信号的过滤结果。
    3.5 回放语音信号
    对滤波后信号进行回放,对比滤波前后音频变化。
    3.6 录制视频
    录制视频,介绍小组成员及其分工,简述设计过程,拍摄程序运行过程等。
    3.7 撰写设计报告
    撰写设计报告,完成本次设计大作业。
    4 程序及运行效果
    4.1 原始信号采样
    对所采集的语音信号进行时域和频域的分析,在Matlab中画出时域图并利用函数fft对信号进行快速傅里叶变换画出信号的频谱图。
    [y,fs]=wavread(‘F:\mymusic.wav’);
    input(‘有带宽加噪’);
    %sound(y,fs);%播放语言信号mymusic
    N=length(y); %信号的长度
    t=(0:N-1)/fs;%时域范围
    figure(6);
    subplot(211);
    plot(t,y); %音频信号时域图
    title(‘音频时域图’);
    xlabel(‘Time’);ylabel(‘Amplitude’);
    Y=fft(y,N);
    subplot(212);
    df=fs/length(Y); %计算谱线间隔
    f=0:df:(fs/2-df); %频谱范围,截取前半段(抽样频率高于最大频率的2倍)
    Yf=abs(Y); %幅度响应
    Yf=Yf(1:length(Yf)/2); %由于幅度响应是偶函数,所以截取一半
    plot(f,Yf); %音频信号频谱图
    axis([0,fs/5,0,10000]);
    title(‘音频频谱图’);
    用MATLAB对音频采样、加噪、滤波_第1张图片

4.2 对信号加噪
在该matlab实验中,设计一个频率范围在4000Hz到5000Hz的噪声信号,并对输入的音频信号进行该噪声加噪,并设计符合过滤要求的滤波器,并用滤波器完成噪声过滤的功能。并绘制滤波后信号的时域和频域的图形
程序
input('加入噪声 ‘);
y=y(:,1); %第一列
y=y’;
nt=randn(1,length(y));%加入高斯噪声
%设计BPF得到4KHZ到5KHZ的噪音
fp1=4000;fp2=5000;%BPF指标
WP1=2pifp1/fs;%将模拟指标转换为数字指标
WP2=2pifp2/fs;
wn1=[WP1 WP2];
b=fir1(34,wn1,‘bandpass’);
[h1,w1]=freqz(b,1,fs);
figure(7);
subplot(211);%画出数字带通滤波器的幅度谱
plot(w1/pi,abs(h1));
title(‘Magnitude Response’);xlabel(‘f’);
grid on;
yn=filter(b,1,nt);
h2=fftshift(fft(yn,N));
subplot(212);%带限噪声信号频域图
plot(abs(h2));
title(‘带限噪声的频率响应’);
grid;
s=y+yn; %将带限噪音和原来的音频混合
%sound(s,fs);
figure(8);
subplot(211);
plot(t,s); %加入噪声的音频时域图
title(‘加入噪声的音频时域图’);
xlabel(‘Time’);ylabel(‘Amplitude’);
grid;
subplot(212);
S=fft(s,N);
Sf=abs(S); %幅度
DF=fs/length(S);%计算谱线间隔
f=0:DF:(fs/2-DF);%频谱范围,截取前半段(抽样频率高于最大频率的2倍)
Sf=Sf(1:length(Sf)/2); %由于幅度响应是偶函数,所以截取一半
axis([0,fs/5,0,10000]);%限制坐标范围能更清楚观察到频谱
plot(f,Sf);
title(‘加入噪声的音频频谱图’);
xlabel(‘Frequency’);ylabel(‘Amplitude’);
grid;
用MATLAB对音频采样、加噪、滤波_第2张图片
用MATLAB对音频采样、加噪、滤波_第3张图片
加入噪音后,频谱图中出现了明显的幅值变化,音频中有明显刺耳的嘀鸣声。
4.3 设计滤波器
4.3.1根据该噪声具有带宽的特性,设计一个带阻滤波器完成相应的功能
程序
input(‘设计带阻滤波器滤除噪声’);
%设计带阻滤波器滤除噪声
FP1=3500;FS1=3600;FP2=5600;FS2=5500;
rp2=1;rs2=40;
FP=[FP1 FP2];
FS=[FS1 FS2];
wp=2piFP/fs; %将模拟指标转换为数字指标
ws=2piFS/fs;%用切比雪夫IIR滤波器
[n,wn]=cheb1ord(wp,ws,rp2,rs2); %滤波器的最小阶数为n,wn为系统频带
[bz,az]=cheby1(n,rp2,wp,‘stop’);
figure(9);
freqz(bz,az);
title(‘IIR带阻滤波器的频率响应’);
grid on

4.3.2 用设计的带阻滤波器对该带宽噪声进行过滤,所设计程序以及结果如下:
input(‘设将加噪的信号通过带阻滤波器’);
yfilt=filter(bz,az,s);%将加噪的信号通过带阻滤波器
%sound(yfilt,fs);
Yfil=abs(fft(yfilt,N));
figure(10);%滤除噪音后的波形
Yf=Yfil(1:length(Yfil)/2);
subplot(211);
plot(f,Yf);
axis([0,fs/5,0,10000]);%限制坐标范围能更清楚观察到频谱
title(‘去噪频域图’);
subplot(212);
plot(t,yfilt);
title(‘去噪时域图’);
用MATLAB对音频采样、加噪、滤波_第4张图片

总结:
本次matlab实验,设计了有带宽的噪声加噪的程序,然后根据噪声的频率,设计了相应的IIR滤波器,完成了噪声的过滤,实现了原信号过滤后的输出信号输出。通过本次实验,懂得:
1学会更好的理解设计的要求,并设计步骤和相应的实验内容。
2…根据噪声的特性,对加噪有更深的理解。
3.学会根据不同的噪声要求,设计不同的性能的滤波器,完成相应功能。
4.对matlab和程序的代码有更深的理解和更强的运用能力。

你可能感兴趣的:(用MATLAB对音频采样、加噪、滤波)