当前位置:文档之家› 语音信号处理实验报告

语音信号处理实验报告

通信与信息工程学院信息处理综合实验报告通信与信息工程学院二〇一八年实验题目:语音信号分析与处理一、实验内容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算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。

(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)。

数字滤波器分为FIR数字滤波器和IIR数字滤波器两种,可以用硬件和软件来设计实现。

软件设计主要有脉冲响应不变法、双线性变换法、窗口函数法。

本设计是用窗函数法设计FIR低通滤波器。

针对以上语音信号设定滤波器的性能指标用设计低通滤波器。

用设计好的数字滤波器对含噪语音信号进行滤波,在Matlab中FIR滤波器利用函数fftfilt对信号进行滤波,FIR滤波器利用函数filter对信号进行滤波。

在一个窗口同时画出滤波前后的波形及频谱如图2所示。

三、实验步骤及结果1.基本部分语音文件的读取、采样、加噪,以及绘制原始语音信号和加噪后语音信号的时域波形与频谱:[y,fs]=audioread('voice.wav'); %读取语音文件sound(y,fs); %回放语音y1=fft(y,fs); %原始语音信号的频谱y1z=awgn(y,40); %加入高斯白噪声z1=fft(z,fs); %加噪信号的频谱z1sound(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); %求频率响应①用矩形窗设计的滤波器的频率响应②用三角窗设计的FIR滤波器频率响应③用hanning窗设计的FIR滤波器频率响应④用hamming窗设计的FIR滤波器频率响应⑤用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); %叠加后信号的频谱mm1sound(m1,fs); %播放叠加后的音乐信号z=awgn(m1,20); %加入高斯白噪声z1=fft(z,fs); %加噪信号的频谱z1sound(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中进行滤波器的设计、频谱显示不正确以及各种导致程序无法运行的错误等。

相关主题