完整word版语音信号处理实验报告.docx
《完整word版语音信号处理实验报告.docx》由会员分享,可在线阅读,更多相关《完整word版语音信号处理实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
完整word版语音信号处理实验报告
通信与信息工程学院
信息处理综合实验报告
班级:
电子信息工程1502班
学号
姓名
成绩
指导教师:
设计时间:
2018/10/22-2018/11/23
评语:
通信与信息工程学院
二〇一八年
实验题目:
语音信号分析与处理
一、实验内容
1.设计内容
利用MATLAB对采集的原始语音信号及加入人为干扰后的信号进行频谱分析,使用窗函数法设计滤波器滤除噪声、并恢复信号。
2.设计任务与要求
1.基本部分
(1)录制语音信号并对其进行采样;画出采样后语音信号的时域波形和频谱图。
(2)对所录制的语音信号加入干扰噪声,并对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。
(3)分别利用矩形窗、三角形窗、Hanning窗、Hamming窗及Blackman窗几种函数设计数字滤波器滤除噪声,并画出各种函数所设计的滤波器的频率响应。
(4)画出使用几种滤波器滤波后信号时域波形和频谱,对滤波前后的信号、几种滤波器滤波后的信号进行对比,分析信号处理前后及使用不同滤波器的变化;回放语音信号。
2.提高部分
(5)录制一段音乐信号并对其进行采样;画出采样后语音信号的时域波形和频谱图。
(6)利用MATLAB产生一个不同于以上频段的信号;画出信号频谱图。
(7)将上述两段信号叠加,并加入干扰噪声,尝试多次逐渐加大噪声功率,对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。
(8)选用一种合适的窗函数设计数字滤波器,画出滤波后音乐信号时域波形和频谱,对滤波前后的信号进行对比,回放音乐信号。
二、实验原理
1.设计原理分析
本设计主要是对语音信号的时频进行分析,并对语音信号加噪后设计滤波器对其进行滤波处理,对语音信号加噪声前后的频谱进行比较分析,对合成语音信号滤波前后进行频谱的分析比较。
首先用PC机WINDOWS下的录音机录制一段语音信号,并保存入MATLAB软件的根目录下,再运行MATLAB仿真软件把录制好的语音信号用audioread函数加载入MATLAB仿真软件的工作环境中,输入命令对语音信号进行时域,频谱变换。
对该段合成的语音信号,分别用矩形窗、三角形窗、Hanning窗、Hamming窗及Blackman窗几种函数在MATLAB中设计滤波器对其进行滤波处理,滤波后用命令可以绘制出其频谱图,回放语音信号。
对原始语音信号、合成的语音信号和经过滤波器处理的语音信号进行频谱的比较分析。
2.语音信号的时域频域分析
在Matlab软件平台下可以利用函数audioread对语音信号进行采样,得到了声音数据变量y,同时把y的采样频率Fs=44100Hz放进了MATALB的工作空间。
上述程序是在Matlab软件中画出语音信号的时域波形(图1),回放录入声音。
从图中可以看出在时域环境下,信号呈现出3个不规则的信号峰值。
然后对语音信号进行频谱分析,在Matlab中可以利用函数fft对信号行快速傅里叶变换,得到信号的频谱图如图1所示。
3.MATLAB中的窗函数
实际应用的窗函数,可分为以下主要类型:
a)幂窗--采用时间变量某种幂次的函数,如矩形、三角形、梯形或其它时间(t)的高次幂;
b)三角函数窗--应用三角函数,即正弦或余弦函数等组合成复合函数,例如汉宁窗、海明窗等;
c)指数窗--采用指数时间函数,如形式,例如高斯窗等。
d)平顶窗--平顶窗在频域时的表现就象它的名称一样有非常小的通带波动。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的截短产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。
(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)。
(1)矩形窗,调用格式:
w=boxcar(n),根据长度n产生一个矩形窗w。
(2)三角窗,调用格式:
w=triang(n),根据长度n产生一个三角窗w。
(3)汉宁窗,调用格式:
w=hanning(n),根据长度n产生一个汉宁窗w。
(4)海明窗,调用格式:
w=hamming(n),根据长度n产生一个海明窗w。
(5)布拉克曼窗,调用格式:
w=blackman(n),根据长度n产生一个布拉克曼窗w。
4.窗函数的基本参数
窗函数
旁瓣峰值幅度/dB
过渡带宽近似值
过渡带宽精确值
阻带最小衰减/dB
矩形窗
-13
4π/N
1.8π/N
-21
三角窗
-25
8π/N
6.1π/N
-25
hanning窗
-34
8π/N
6.2π/N
-44
hamming窗
-41
8π/N
6.6π/N
-53
blackman窗
-57
12π/N
11π/N
-74
5.数字滤波的设计并对加噪信号进行滤波处理
数字滤波器分为FIR数字滤波器和IIR数字滤波器两种,可以用硬件和软件来设计实现。
软件设计主要有脉冲响应不变法、双线性变换法、窗口函数法。
本设计是用窗函数法设计FIR低通滤波器。
针对以上语音信号设定滤波器的性能指标用设计低通滤波器。
用设计好的数字滤波器对含噪语音信号进行滤波,在Matlab中FIR滤波器利用函数fftfilt对信号进行滤波,FIR滤波器利用函数filter对信号进行滤波。
在一个窗口同时画出滤波前后的波形及频谱如图2所示。
三、实验步骤及结果
1.基本部分
语音文件的读取、采样、加噪,以及绘制原始语音信号和加噪后语音信号的时域波形与频谱:
[y,fs]=audioread('voice.wav');%读取语音文件
sound(y,fs);%回放语音
y1=fft(y,fs);%原始语音信号的频谱y1
z=awgn(y,40);%加入高斯白噪声
z1=fft(z,fs);%加噪信号的频谱z1
sound(z,fs);%播放加噪后的语音
figure
(1);
subplot(2,2,1);
plot(y);%绘制原始语音信号的时域波形
title('原始语音信号的时域波形');
xlabel('时间');
ylabel('幅度');
subplot(2,2,2);
plot(abs(y1));%绘制原始语音信号的频谱
title('原始语音信号的频谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,3);
plot(z);%绘制加噪语音信号的时域波形
title('加噪信号的时域波形');
xlabel('时间');
ylabel('幅度');
subplot(2,2,4);
plot(abs(z1));%绘制加噪信号的频谱
title('加噪信号的频谱');
xlabel('频率');
图1(a)原始语音信号的时域波形
图1(b)原始语音信号的频谱
图1(c)加噪语音信号的时域波形
图1(d)加噪语音信号的频谱
滤波器设计代码(以hamming窗为例):
wp=2*pi*1200/fs;%滤波器参数
ws=2*pi*1400/fs;
wdelta=ws-wp;%过渡带宽度
N=ceil(6.6*pi/wdelta);%根据过渡带宽度求hamming窗滤波器阶数
wn=(wp+ws)/2;%截止频率
[b,a]=fir1(N,wn/pi,hamming(N+1));%生成FIR滤波器
使用MATLAB自带函数求滤波器的频率响应:
freqz(b,a,512);%求频率响应
1用矩形窗设计的滤波器的频率响应
2用三角窗设计的FIR滤波器频率响应
3用hanning窗设计的FIR滤波器频率响应
4用hamming窗设计的FIR滤波器频率响应
5用blackman窗设计的FIR滤波器频率响应
画出使用滤波器滤波后信号时域波形和频谱,对滤波前后的信号、几种滤波器滤波后的信号进行对比,分析信号处理前后及使用不同滤波器的变化,回放语音信号(以hamming窗为例):
f=fftfilt(b,z);%调用FIR滤波器(z为加噪后的语音信号)
sound(f,fs);%播放滤波后的语音信号
figure
(2)
subplot(2,2,1);
plot(z);
title('hamming窗FIR滤波器滤波前的时域波形');
subplot(2,2,2);
plot(f);
title('hamming窗FIR滤波器滤波后的时域波形');
z3=fft(z,fs);%滤波前信号的频谱
F0=fft(f,fs);%滤波后信号的频谱
subplot(2,2,3);
plot(abs(z3));
title('hamming窗FIR滤波器滤波前的频谱')
xlabel('频率/Hz');
ylabel('幅值');
subplot(2,2,4)
plot(abs(F0));
title('hamming窗FIR滤波器滤波后的频谱')
xlabel('频率/Hz');
ylabel('幅值');
图2(a)滤波前的时域波形
图2(b)滤波前的频谱
图2(c)滤波后的时域波形
图2(d)滤波后的频谱
2.提高部分
录制两段音乐信号,一段音调较高,一段音调较低,画出采样后信号的时域波形和频谱图:
[y,fs]=audioread('music_1.wav');
x1=y(1:
250000);%取前二十五万个样点
sound(x1,fs);%播放音乐1(低音,以钢琴为主)
xx1=fft(x1,fs);%音乐信号1的频谱xx1
[y,fs]=audioread('music_2.wav');
x2=y(1:
250000);%取前二十五万个样点
sound(x2,fs);%播放音乐2(高音,以小号为主)
xx2=fft(x2,fs);%音乐信号2的频谱xx2
图3(a)音乐信号1的时域波形
图3(b)音乐信号1的频谱
图3(c)音乐信号2的时域波形
图3(d)音乐信号2的频谱
将上述两段信号叠加,并加入干扰噪声对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。
选用一种合适的窗函数设计数字滤波器,画出滤波后音乐信号时域波形和频谱,对滤波前后的信号进行对比,回放音乐信号。
m1=x1+x2;%将两段音乐信号叠加
mm1=fft(m1,fs);%叠加后信号的频谱mm1
sound(m1,fs);%播放叠加后的音乐信号
z=awgn(m1,20);%加入高斯白噪声
z1=fft(z,fs);%加噪信号的频谱z1
sound(z,fs);%播放加噪后的叠加信号
%-----------使用滤波器对叠加信号进行滤波-------
wp=2*pi*3200/fs;%滤波器参数
ws=2*pi*3400/fs;
wdelta=ws-wp;%过渡带宽度
N=ceil(6.6*pi/wdelta);%根据过渡带宽度求滤波器阶数
wn=(wp+ws)/2;%截止频率
[b,a]=fir1(N,wn/pi,hamming(N+1));%使用hamming窗生成滤波器
f=fftfilt(b,z);
F0=fft(f,fs);
%n=fs*(0:
511)/1024;
sound(f,fs);%播放滤波后的音乐
图4(a)滤波前的加噪信号的时域波形
图4(b)滤波前的加噪信号的频谱
图4(c)滤波后的加噪信号的时域波形
图4(d)滤波后的加噪信号频谱
四、实验总结与体会
本次课程设计在组员们的合作和老师的帮助下顺利完成,虽然在过程中遇到了很多问题,比如语音信号无法正常播放、不懂如何在matlab中进行滤波器的设计、频谱显示不正确以及各种导致程序无法运行的错误等。
但最后我们通过多方查找资料,以及互相讨论验证中成功的解决掉了遇到的问题。
通过本次课程设计,在整个过程中我们懂得了许多东西,让我们了解到数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。
也培养了团队合作思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力。
虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。
课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来所掌握的知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质。