语音信号处理实验报告Word文件下载.docx
《语音信号处理实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《语音信号处理实验报告Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
画出采样后语音信号的时域波形和频谱图。
(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
hanning窗
-34
6.2π/N
-44
hamming窗
-41
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));
%绘制原始语音信号的频谱
原始语音信号的频谱'
频率'
subplot(2,2,3);
plot(z);
%绘制加噪语音信号的时域波形
加噪信号的时域波形'
subplot(2,2,4);
plot(abs(z1));
%绘制加噪信号的频谱
加噪信号的频谱'
图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)
hamming窗FIR滤波器滤波前的时域波形'
plot(f);
hamming窗FIR滤波器滤波后的时域波形'
z3=fft(z,fs);
%滤波前信号的频谱
F0=fft(f,fs);
%滤波后信号的频谱
plot(abs(z3));
hamming窗FIR滤波器滤波前的频谱'
)
频率/Hz'
幅值'
subplot(2,2,4)
plot(abs(F0));
hamming窗FIR滤波器滤波后的频谱'
图2(a)滤波前的时域波形
图2(b)滤波前的频谱
图2(c)滤波后的时域波形
图2(d)滤波后的频谱
2.提高部分
录制两段音乐信号,一段音调较高,一段音调较低,画出采样后信号的时域波形和频谱图:
music_1.wav'
x1=y(1:
250000);
%取前二十五万个样点
sound(x1,fs);
%播放音乐1(低音,以钢琴为主)
xx1=fft(x1,fs);
%音乐信号1的频谱xx1
music_2.wav'
x2=y(1:
%取前二十五万个样点
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
%播放加噪后的叠加信号
%-----------使用滤波器对叠加信号进行滤波-------
wp=2*pi*3200/fs;
ws=2*pi*3400/fs;
%根据过渡带宽度求滤波器阶数
%使用hamming窗生成滤波器
%n=fs*(0:
51