长春理工大学
电工电子实验教学中心
学生实验报告
2014 —— 2015 学年第一学期
实验课程数字信号处理实验
实验地点东1教学楼414实验室
学院电子信息工程学院
专业
学号
姓名
实验项目音频信号采集、分析及处理
实验时间实验台号
操作成绩报告成绩
一、实验目的
1.以音频信号为例,熟悉模拟信号数字处理过程,进一步理解数字信号处理概念。
2.掌握运用Matlab实现对音频信号的时频分析方法;
3.初步掌握数字音频信号合成的方法。
4.掌握运用Matlab设计IIR和FIR滤波系统的方法;
5.掌握运用Matlab实现对加噪音频信号进行去噪滤波的方法。锻炼学生运用所学知识独立分析问
题解决问题的能力,培养学生创新能力。
二、实验仪器
计算机、Matlab软件
三、实验性质
综合分析、设计性实验
四、实验任务
实验内容二:任意音频信号的时域和频域分析及数字滤波器设计
1. 音频信号的采样
音频信号的采集可以通过Windows自带的录音机也可以用专用的录制软件录制一段音频信号(尽量保证无噪音、干扰小),也可以直接复制一段音频信号(时间为1s),但必须保证音频信号保存为.wav的文件。
2. 音频信号时域采样
对选取的音频信号分别按照欠采样率、过采样率及合理采样率进行时域采样,对采样之后的音频信号进行回放,对比回放结果,进行讨论分析。
3. 音频信号的时域、频域分析
运用Matlab软件实现对音频信号的打开操作以及时域分析和频域分析,并画出相应的图形,打印在实验报告中。
4. 音频信号的频域分析
对音频信号按照过采样、欠采样及合理采样进行频域采样并进行回放,对比结果,进行讨论和分析。
5. 引入干扰信号
基本要求:在原有的音频信号上,叠加一个频率为100KHz的正弦波干扰信号(幅度自定,可根据音频信号幅度情况而定)。
发挥:在原有音频信号上,叠加其他复杂噪声。
6. 数字滤波器设计
基本要求:运用Matlab实现IIR或FIR滤波系统,要求加入干扰的音频信号经过滤波系统后,能够
滤除100KHz的干扰信号,同时保留原有的音频信号,要求绘制出滤波系统的频谱图,同时绘制出滤波前后音频信号的时域、频域对比图。
发挥:对加有复杂噪声的音频信号进行滤波
按照自己所加噪声特点,确定滤波器类型及滤波器参数并设计该滤波器,利用自己所设计的滤波器对加有复杂噪声的音频信号进行滤波,回放滤波前后音频信号,对比结果进行分析。
%音频信号的采集及其频谱分析
clear all;
close all;
[y,fs,bits]=wavread('C:\Users\Administrator\Desktop\asd3\Windowsll.wav'); %读取音频文件
sound(y,fs) %播放音频文件
n=length(y); %选取变换的点数取n
y_p=fft(y,n); %对n进行傅里叶变换到频域
f=fs*(0:n/2-1)/n; %对应点
subplot(2,1,1); %第一组第一张图片的频率
figure(1) %创建第一个绘图窗口
plot(y) %绘制音频信号时域波形
title('音频信号时域波形'); %图片标题
xlabel('时间(t)'); %x轴为时间轴
ylabel('幅值(V)'); %y轴为幅值
subplot(2,1,2); %第一组第二张图片
plot(f,abs(y_p(1:n/2))); %绘制音频信号频谱图
title('音频信号频谱图'); %图片标题
xlabel('频率(Hz)'); %x轴为频率
ylabel('频率幅值(V)'); %频率幅值
pause(1) %暂停一秒
%噪声合成处理
t=0:1/fs:(n-1)/fs; %产生序列
noise=0.05*cos(2*pi*100000*t); %噪声信号
Noise=[noise;noise]; %创建矩阵
Noise=Noise'; %对该矩阵进行转置
y_z=y+Noise; %加噪声处理,两个信号合成
sound(y_z,fs); %播放合成后的音频信号
n=length(y); %选取长度
y_zp=fft(y_z,n); %对n进行傅里叶变换到频域
f=fs*(0:n/2-1)/n; %对应点的频率
figure(2) %创建第二个绘图窗口
subplot(2,1,1); %第二组第一张图片
plot(y_z); %绘制加噪声处理音频信号时域波形title('加噪声处理音频信号时域波形'); %图片标题
xlabel('时间(t)'); %x轴为时间轴
ylabel('幅值(V)'); %y轴为幅值
subplot(2,1,2); %第二组第二张图片
plot(f,abs(y_zp(1:n/2))); %绘制加噪声处理后音频信号频谱图title('加噪声处理音频信号频谱图'); %图片标题
xlabel('频率(Hz)'); %x轴为频率
ylabel('频率幅值(V)'); %频率幅值
pause(1) %暂停一秒
%滤波器设计
fp=1500;fc=1700;As=100;Ap=1; %低通滤波器性能指标
wc=2*pi*fc/fs; %归一化通带截频
wp=2*pi*fp/fs; %归一化阻带截频
wdel=wc-wp; %过滤带宽
beta=0.1102*(As-8.7); %窗函数形状参数
N=ceil((As-8)/2.285/wdel); %取整函数
wn=kaiser(N+1,beta); %创建凯撒窗函数
ws=(wp+wc)/2/pi;
b=fir1(N,ws,wn); %用该窗函数建立fir滤波器
figure(3); %创建第三个绘图窗口
freqz(b,1); %计算频响
%滤波处理
x=fftfilt(b,y_z); %滤波输出
X=fft(x,n); %傅里叶变换
sound(x,fs); %播放滤波后的音频
figure(4); %创建第四个绘图窗口
subplot(2,2,1);plot(y_z); %滤波前信号的波形
title('滤波前信号的波形'); %标题
subplot(2,2,2);plot(x); %滤波后信号的波形
title('滤波后信号的波形'); %标题
subplot(2,2,3);plot(f,abs(y_zp(1:n/2))); %滤波前信号的频谱
title('滤波前信号的频谱'); %标题
subplot(2,2,4);plot(f,abs(X(1:n/2))); %滤波后信号的频谱
title('滤波后信号的频谱'); %标题
pause(1) %暂停一秒
[y,fs,bits]=wavread('C:\Users\Administrator\Desktop\asd3\Windowsll.wav'); %读取音频文件
sound(y,fs) %播放音频文件