语音信号处理实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通信与信息工程学院

信息处理综合实验报告

通信与信息工程学院

二〇一八年

实验题目:语音信号分析与处理

一、实验内容

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); %原始语音信号的频谱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('频率');

相关文档
最新文档