logo资料库

数字信号处理--音频处理程序报告.pdf

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
一、课程设计目的
二、设计报告内容要求
三、主要原理和拟采用的相关技术
四、设计方案
五、实验结果分析
六、总结
石家庄铁道大学课程设计 数字信号处理课程设计 2016 届 电气与电子工程学院 专 学 业 号 学生姓名 指导教师 通信工程 20163224 谭鑫淼 马月红 完成日期 2019 年 6 月 14 日
目录 一、课程设计目的..................................................................................... 1 二、设计报告内容要求............................................................................. 1 三、主要原理和拟采用的相关技术......................................................... 1 四、设计方案..............................................................................................2 五、实验结果分析..................................................................................... 3 六、总结....................................................................................................12
一、课程设计目的 ⒈ 进一步巩固数字信号处理中的基本原理与方法,提高分析、解决实际问 题的能力; ⒉ 熟悉 MATLAB 软件,掌握数字信号处理的基本概念、基本理论和基本 方法,掌握语音信号的采集方法; ⒊ 掌握应用 MATLAB 软件进行信号分析和处理的过程,熟练掌握利用 MATLAB 设计数学滤波器的方法和设计过程; 4. 掌握信号降噪方法(滤波)。 二、设计报告内容要求 1.选择一个语音信号作为分析对象,或录制一段语音信号; 2. 对语音信号进行采样,画出采样后语音信号的时域波形和频谱图; 3.利用 MATLAB 中的正弦函数产生噪声加入到语音信号中,使语音信号被 噪声污染,然后进行频谱分析; 4.设计 FIR 和 IIR 数字滤波器,并对被噪声污染的语音信号进行滤波,画出 滤波前后信号的时域波形和频谱,并对滤波前后的信号进行比较,分析信号的变 化; 5. 回放语音信号。 三、主要原理和拟采用的相关技术 1.主要原理 FFT 算法原理,FIR DF 设计原理,IIR DF 设计原理; 2.语音信号的采集 利用 PC 机上的声卡和 WINDOWS 操作系统可以进行数字信号的采集。将 话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话 “语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按 钮,可以实现所录音的重现。以文件名“sound”保存入 g :\the sound 文件夹中。可 以看到,文件存储器的后缀默认为. wav ,这是 WINDOWS 操作系统规定的声音文 件存的标准。 3.Matlab 软件平台下,利用 wavread 函数对语音信号进行采样,记住采样 频率和采样点数。 Wavread 函数调用格式: y=wavread(file)%读取 file 所规定的 wav 文件,返回采样值放在向量 y 中。 1
[y,Ft,nbits]=wavread(file) %采样值放在向量 y 中,fs 表示采样频率(Hz), nbits 表示采样位数。 y=wavread(file,N)%读取钱 N 点的采样值放在向量 y 中。 y=wavread(file,[N1,N2])%读取从 N1 到 N2 点的采样值放在向量 y 中。 4.语音信号频谱分析 MATLAB 提供的 DFT 的快速算法 FFT 函数可以方便的计算并分析导入音频 的频谱图。 5. 产生的正弦信号作为噪声信号,加入语音信号,分析加噪声后信号频谱, 加噪后语音回放。 6.根据参数设计设计 FIR、IIR 数字滤波器 在 Matlab 中,可以利用函数 fir1 设计 FIR 滤波器,利用函数 butter,cheby1 和 ellip 设计 IIR 滤波器,利用 Matlab 中的函数 freqz 画出滤波器的频率响应。 分析如下:函数 fir1 默认的设计滤波器的方法为窗函数法,其中可选的窗函 数有 Rectangular、Barlrtt、Hamming、Hann、Blackman 窗,其相应的都有实现 函数。 函数 butter,cheby1 和 ellip 设计 IIR 滤波器时都是默认的双线性变换法,所以 在设计滤波器时只需要代入相应的实现函数即可。 7.用设计的滤波器对加噪语音信号进行滤波 用自己设计的各滤波器分别对加噪的语音信号进行滤波,在 Matlab 中,FIR 滤波器利用函数 fftfilt 对信号进行滤波,IIR 滤波器利用函数 filter 对信号进行滤 波。对比分析滤波前后信号频谱,语音回放对比。 四、设计方案 1.录制或者下载一个 WAV 音频格式的文件,使用 matlab 自带函数 audioread 和 audiowrite 函数进行音频文件的读取、截短和生成。(截取 10 秒的音频数据, 便于程序调试) 2.使用 matlab 自带的 fft 函数对所截取的音频数据进行 DFT,再求幅值,求 完幅值后取一半的点数用于画图,频率根据抽样点数恢复其实际频率,之后在用 plot 函数画出音频数据的时域波形和频域波形。 3.再选择一个频率大于 4410Hz 的正弦波,进行离散化处理,作为噪声叠加 在原音频数据上,再对加噪声之后的音频数据进行时域波形和频域频谱的分析。 4.之后再选择合适的滤波器 选择 FIR 滤波器:使用布莱克曼窗,选择截频为 0.2*pi(归一化截止频率), 对应实际的截止频率为 4410Hz,通带衰减为 0.25dB。阻带衰减为 80dB。 2
选择 IIR 滤波器:使用双线性变换法,选择截频为 0.18*pi(归一化截止频 率),对应实际的截止频率为 4000Hz。通带衰减为 0.5d,阻带衰减为 30dB。 5.调整 x 轴使其在坐标轴上显示出实际频率对应的频谱值以及时域波形。 五、实验结果分析 1.录制或者截取一段音频数据,分析出其时域波形及频谱,如图 5.1 所示。 [y0,Fs]=audioread('tongzhuo.wav'); data = y0(1:10*Fs);%截取 10 秒 audiowrite('myData.wav',data,Fs); [y,Fs]=audioread('myData.wav'); sound(y,Fs);Nsamps = length(y); t = (1/Fs)*(1:Nsamps) ;%为绘图准备时间数据%进行傅里叶变换 y_fft = abs(fft(y)); %求出音频数据做完 FFT 后的幅值 y_fft = y_fft(1:Nsamps/2); %取一半点数 f = Fs*(0:Nsamps/2-1)/Nsamps; %求出频率 figure%画时域图 subplot(2,1,1) plot(t, y);xlabel('时间(s)'); ylabel('Amplitude');title('音频信号时域波形图'); subplot(2,1,2);%画出频域图 plot(f, y_fft); xlim([0 3500]);xlabel('频率(Hz)'); ylabel('幅度');title('音频信号频谱图'); 图 5.1 原始音频数据的时域波形和频谱图 3
2.使用 matlab 进行加噪处理,加入 4500Hz、4700Hz、5000Hz 的正弦噪声污 染原音频数据,其实验结果如图 5.2 和图 5.3 所示。 [y0,Fs]=audioread('tongzhuo.wav'); data = y0(1:10*Fs);%截取 10 秒 audiowrite('myData.wav',data,Fs); [y,Fs]=audioread('myData.wav');y0=y; y0_fft = abs(fft(y0)); %求出音频数据做完 FFT 后的幅值 y0_fft = y0_fft(1:Nsamps/2); %取一半点数 fy0 = Fs*(0:Nsamps/2-1)/Nsamps; %求出频率 Nsamps = length(y);t = (1/Fs)*(1:Nsamps) ;%为绘图准备时间数据 n=0:Nsamps-1;h=n/Fs; %时间序列 y1=(0.11*sin(2*pi*5000*h)).'+(0.15*sin(2*pi*4500*h)).'+(0.03*sin(2*pi*4700* h)).'; %信号 y=y+y1;sound(y,Fs); y_fft = abs(fft(y)); %求出音频数据做完 FFT 后的幅值 y_fft = y_fft(1:Nsamps/2); %取一半点数 f = Fs*(0:Nsamps/2-1)/Nsamps; %求出频率 figure%画时域图 subplot(2,1,1);plot(t, y0);xlabel('时间(s)'); ylabel('幅值');title('原始音频信号时域波形图'); subplot(2,1,2);plot(t, y);xlabel('时间(s)'); ylabel('幅值');title('加噪声后音频信号时域波形图'); figure%画出频域图 subplot(2,1,1);plot(f, y0_fft); axis([0 6000 0 3000]);xlabel('频率(Hz)'); ylabel('幅度');title('原始音频信号频谱图'); subplot(2,1,2);plot(f, y_fft); axis([0 6000 0 3000]);xlabel('频率(Hz)'); ylabel('幅度');title('加噪声后音频信号频谱图'); 4
图 5.2 原始音频与加噪后音频时域波形对比 图 5.3 原始音频与加噪后音频频谱图对比 3. 滤波结果分析。 3.1 使用 FIR 滤波器 FIR 滤波器的归一化参数如图 5.4 所示,时域滤波过程如图 5.5 所示,频域 滤波过程如图 5.6 所示。 [y,Fs]=audioread('myData.wav'); Nsamps = length(y);y0=y; 5
y0_fft = abs(fft(y0)); %求出音频数据做完 FFT 后的幅值 y0_fft = y0_fft(1:Nsamps/2); %取一半点数 fy0 = Fs*(0:Nsamps/2-1)/Nsamps; %求出频率 % sound(y0,Fs);%播放未加噪声的音频信号 t = (1/Fs)*(1:Nsamps) ;%为绘图准备时间数据%进行傅里叶变换 n=0:Nsamps-1;h=n/Fs; %时间序列 y1=(0.11*sin(2*pi*5000*h)).'+(0.15*sin(2*pi*4500*h)).'+(0.03*sin(2*pi*4700* h)).'; %信号 y=y+y1;%加噪声之后的信号 sound(y,Fs);%播放加噪之后的音频信号 y_fft = abs(fft(y)); %求出音频数据做完 FFT 后的幅值 y_fft = y_fft(1:Nsamps/2); %取一半点数 f = Fs*(0:Nsamps/2-1)/Nsamps; %求出频率%IIR 双线性变换法 Rp=0.25;As=80; % 通带波纹和阻带衰减 wp = 0.1*pi; ws = 0.2*pi; % 通带和阻带归一化角频率 deltaw= abs(wp - ws);% 过渡带宽Δω的计算 N =101;%ceil(7*pi/ deltaw)%按海明窗计算所需的滤波器阶数 N N=mod(N,2)+N;%让 N 为偶数 wind = (blackman(N+1))';% 海明窗计算 Wn=(wp+ws)/2/pi; % 计算截止频率 b=fir1(N,Wn,wind);% 用 fir1 函数设计 FIR 第 1 类滤波器 [db,mag,phs,gdy,w]=freqz_m(b,1); %计算滤波器响应 figure;subplot 211; plot(w/pi,db,'k','linewidth',2);% 作图 title('低通滤波器的幅值响应(数据 1、N=45)');%标题 grid; axis([0 1 -70 5]); %设置坐标轴范围 xlabel('频率/Hz'); ylabel('幅值/dB');%设置横纵坐标显示 line([wp/pi wp/pi],[-70 5],'color','k','linestyle','--');%通带频率 line([ws/pi ws/pi],[-70 5],'color','k','linestyle','--');%阻带频率 subplot 212; stem(1:N+1,b,'k');%画脉冲响应 title('低通滤波器的脉冲响应(数据 1、N=45)');%标题 xlabel('样点'); ylabel('幅值') ;%设置横纵坐标显示 Y=filter(B,A,y);%滤波 Y_fft = abs(fft(Y)); %求出音频数据做完 FFT 后的幅值 Y_fft = Y_fft(1:Nsamps/2); %取一半点数 6
分享到:
收藏