基于MATLAB的语音信号分析与处理的实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MA TLAB的语音信号分析与处理的实验报告一.实验目的
综合计运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,培养发现问题、分析问题和解决问题的能力。并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。此外,还系统的学习和实现对语音信号处理的整体过程,从语音信号的采集到分析、处理、频谱分析、显示和储存。
二.实验的基本要求
1.进一步学习和巩固MATLAB的使用,掌握MATLAB的程序设计方法。
2.掌握在windows环境下语音信号采集的方法。
3.掌握数字信号处理的基本概念、基本理论、原理和基本方法。
4.掌握MATLAB设计FIR和IIR数字滤波器的方法。
5.学会用MATLAB对信号进行分析和处理。
三.实验内容
录制一段自己的语音信号,(语音信号声音可以理解成由振幅和相位随时间缓慢变化的正弦波构成。人的听觉对声音的感觉特征主要包含在振幅信息中,相位信息一般不起作用。在研究声音的性质时,往往把时域信息(波形图)变换得到它的频域信息(频谱),通过研究频谱和与频谱相关联的特征获得声音的特性。)并对录制的信号进行
采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或者双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号发生的变化;回放语音信号。
四.实验的实现
(1).语音信号的采集
采用windows下的录音机或者手机、其他的软件,录制一段自己的话音,时间控制在一分钟左右;然后在MATLAB软件平台下,利用函数wavread对自己的话音进行采样,记住采样的频率和采样的点数。通过实现wavread函数,理解采样的频率、采样位数等概念。下面介绍wavread的使用方法:
Wavread函数调用格式如下:
y=wavread(flie),读取file所规定的wav文件,返回采样值放回y中。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1点到N2点的采样值放在向量y中。
(2)语音信号的频谱分析
首先画出语音信号的时域波形,然后对话音信号进行频谱分
析。在MATLAB中,可以采用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
其程序如下:
[y,Fs,bits]=wavread('d:\声音片段01.wav');%读出信号,采样率和采样位数
Sound(y);
Y = fft(y,4096);
figure(1);
subplot(2,2,1);
plot(y);
title(' 原时域波形');
ylabel('amplitude');
xlabel('n');
subplot(2,2,2);
plot(abs(Y));%对频域取模
axis([0,4096,0,3]);%横纵坐标确定
title('原频谱特性');%标题
ylabel('amplitude');%Y轴显示
xlabel('frequency(hz)');%X轴显示
程序运行的结果如下图所示:
05000
1000015000-1-0.5
00.5
1
原时域波形
a m p l i t u d e n 01000200030004000
012
3原频谱特性
a m p l i t u d e frequency(hz)
(3)设计数字滤波器和画出频率响应
根据语音信号的特点给出有关滤波器的性能指标:
1..低通滤波器性能指标,fp=1000Hz fc=2000Hz As=100db Ap=1db
用巴特沃斯滤设计的低通滤波器的程序如下:
wp=2*1200/8000; %归一化通带数字频率wp
ws=2*2000/8000; %归一化阻带数字截止频率ws Rp=0.5; %通带波纹系数Rp
Rs=60; %最小阻带衰减Rs
[N,Wn]=buttord(wp,ws,Rp,Rs); %求阶数N 和滤波器截止频率Wn
[num,den]=butter(N,Rp); %传输分子和分母的系数
[h,w]=freqz(num,den); %求频率响应
subplot(2,1,1); %窗口分成2行1列绘图区,第1个区为当前活动区
plot(w/pi,abs(h)); %二维连续图形
grid; %添加网格
title('巴特沃思型低通滤波器的幅频响应'); %加图形说明
xlabel('\omega/\pi'); %加X轴说明(/后表示转义字符)ylabel('振幅(幅值)'); %加Y轴说明
subplot(2,1,2); %窗口分成2行1列绘图区,第2个区为当前活动区
plot(w/pi,20*log10(abs(h))); %二维连续图形
grid; %添加网格
title('巴特沃思型低通滤波器的幅频响应'); %加图形说明
xlabel('\omega/\pi'); %加X轴说明(/后表示转义字符)
ylabel('振幅(分贝)'); %加Y轴说明
程序运行