当前位置:文档之家› 语音信号的处理与滤波

语音信号的处理与滤波

广西工学院数字信号处理课程设计设计题目:语音信号的处理与滤波系别:学号:姓名:班级:指导教师:完成日期:目录1. 摘要 (3)2.MATLAB简介 (3)3.设计目的 (4)4.设计内容 (4)5.设计原理 (4)6.设计步骤 (5)7.总结与分析 (10)8.参考资料 (10)摘要本课题分析了数字信号处理课程的重要性及特点,可以帮助理解与掌握课程中的基本概念、基本原理、基本分析方法;并利用MATLAB对语音信号进行分析和处理,要求采集语音信号后,在MATLAB软件平台进行频谱分析。

用设计的数字滤波器对语音信号进行了滤波MATLAB简介MATLAB 是一种对技术计算高性能的语言。

它集成了计算,可视化和编程于一个易用的环境中,在此环境下,问题和解答都表达为我们熟悉的数学符号。

典型的应用有:•数学和计算•算法开发•建模,模拟和原形化•数据分析,探索和可视化•科学与工程制图•应用开发,包括图形用户界面的建立MATLAB是一个交互式的系统,其基本数据元素是无须定义维数的数组。

这让你能解决很多技术计算的问题,尤其是那些要用到矩阵和向量表达式的问题。

而要花的时间则只是用一种标量非交互语言(例如C或Fortran)写一个程序的时间的一小部分。

.名称“MATLAB”代表matrix laboratory(矩阵实验室)。

MATLAB最初是编写来提供给对由LINPACK和EINPACK工程开发的矩阵软件简易访问的。

今天,MATLA B使用由LAPACK和ARPACK工程开发的软件,这些工程共同表现了矩阵计算的软件中的技术发展。

MATLAB已经与许多用户输入一同发展了多年。

在大学环境中,它是很多数学类、工程和科学类的初等和高等课程的标准指导工具。

在工业上,MATLAB是高产研究、开发和分析所选择的工具。

MATLAB以一系列称为工具箱的应用指定解答为特征。

对多数用户十分重要的是,工具箱使你能学习和应用专门的技术。

工具箱是是MATLAB函数(M-文件)的全面的综合,这些文件把MATLAB的环境扩展到解决特殊类型问题上。

具有可用工具箱的领域有:信号处理,控制系统神经网络,模糊逻辑,小波分析,模拟等等。

设计目的综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB 作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。

设计内容1.熟悉并掌握MATLAB 中有关声音(wave )录制、播放、存储和读取的函数。

2.在MATLAB 环境中,使用声音相关函数录制3秒左右自己的声音,抽样率是8000Hz/s 。

(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?)3.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。

4.针对电话信道(最高3500Hz ),设计一个FIR 或IIR 滤波器进行滤波,把抽样率转变为7000Hz/s ,并进行频谱分析,得到幅度和相位谱。

5.把处理后的所有数据储存为声音文件,与原始声音进行比较。

设计原理1.语音信号的采集:在MATLAB 中有关声音的函数有:声音录制函数wavrecord(),文件保存wavwrite(),文件读取wavread(),语音回放sound(),语音播放wavplay(),录制的文件以 .wav 作为文件扩展名的文件。

2. 设计IIR 数字滤波器 ,其主要步骤有:(1)把给出的数字滤波器的性能指标{ k Ω}由Wk =(2/T )*tan(k w ),转换为模拟滤波器的频率指标{k Ω}。

(2)根据转后的性能指标,通过滤波器阶数选择函数,来确定滤波器的最小阶数N和固有频率Wn ;(3)由最小阶数N 得到滤波器原型,用来估计契比雪夫I 型滤波器阶数和截止频率Wn 的函数:[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)。

(4)用直接设计IIR 数字滤波器的函数来设计出所需要的滤波器,设计契比雪夫I 型数字滤波器的函数:[num,den]=cheby1(N,Rp,Wn),Wn 是标量,则为低通,否则为带通。

3. 抽样定理 :连续信号经理想抽样后时域、频域发生的变化(理想抽样信号与连续信号频谱之间的关系)。

4. 理想抽样信号能否代表原始信号、如何不失真地还原信号即由离散信号恢复连续信号的条件(抽样定理)。

5. 奈奎斯特采样定理:要使实信号采样后能够不失真还原,采样频率必须大于信号最高频率的两倍。

设计步骤1.语音信号的采集在MATLAB环境中,使用声音相关函数录制3秒左右自己的声音,程序如下:fs=8000;t=3;fprintf('按任意键后开始 %d 秒录音:',t); %文字提示pause; %暂停命令fprintf('录音中...'); %文字提示y=wavrecord(t*fs,fs,'double'); %录制语音信号fprintf('录音结束\n'); %文字提示wavwrite(y,fs,'f:\黄\xiaoqing.wav'); %存储录音信号fprintf('按任意键后回放:');pausewavplay(y,fs); %播放语音信号wavwrite(y,fs,'f:\黄\xiaoqing.wav '); %存储语音信号plot(y); %画出原始语音信号的时域图形title('声音时域图');xlabel('频率');ylabel('振幅');声音的时域图是:针对实际发出声音落后录制动作半拍的现象,如何拔除对无效点的采样的问题:因为在刚录制声音时,录入的基本是幅度值很小的信号,先读取声音出来,将原始语音信号时域波形图画出来,根据已得到的信号,可以在第二次读取声音的后面设定采样点,取好有效点,画出滤除无效点后的语音信号时域波形图,对比可以看出。

这样就可以解决这个问题。

y= wavread('f:\黄\xiaoqing.wav');subplot(2,1,1);plot(y);title('滤除无效点后的语音信号')2、分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。

%~~~~~~~~~~~~取8000点频谱分析并画图程序~~~~~~~~~~~~~N1=8000; %采样的点数y1=fft(y,N1); %做FFT变换n1=1:N1/2; %图形显示区间f1=[(n1-1)*(2*pi)/N1]/pi %转换横坐标subplot(2,2,1); %指定图形位置plot(f1,abs(y1(n1))); %画出原始声音的频谱图xlabel('频率');ylabel('振幅');title('8000点原始语音信号FFT幅度谱');subplot(2,2,2); %指定图形位置plot(f1,angle(y1(n1))); %画出原始声音的相位图xlabel('频率');ylabel('以弧度为单位的相位');title('8000点原始语音信号FFT相位谱');%~~~~~~~~~~~~取16000点频谱分析并画图程序~~~~~~~~~~~~~N2=16000; %采样的点数y2=fft(y,N2); %做FFT变换n2=1:N2/2; %图形显示区间f2=[(n2-1)*(2*pi)/N2]/pi %转换横坐标subplot(2,2,1); %指定图形位置plot(f2,abs(y2(n2))); %画出取FFT变化后声音的频谱图xlabel('频率');ylabel('振幅');title('16000点原始语音信号FFT幅度谱');subplot(2,2,2); %指定图形位置plot(f2,angle(y2(n2))); %画出取FFT变化后声音的相位图xlabel('频率');ylabel('以弧度为单位的相位');title('16000点原始语音信号FFT相位谱');得出结论:通过对取8000个和16000个数据进行FFT变换后的频域图和相位图比较发现,取16000个数据进行FFT变换后的频域图和相位图更平滑和密集,并且振幅更大。

因为取16000个数据时抽样的点数增加,抽样间隔减小,所以比取8000个数据时更密集,同时也更平滑。

3、针对电话信道(最高3500Hz),设计一个FIR或IIR滤波器进行滤波,把抽样率转变为7000Hz/s,并进行频谱分析,得到幅度和相位谱。

%在这取契比雪夫Ⅰ型低通滤波器。

Wp=2*1000/7000; %归一化通带截止频率Ws=2*1200/7000; %为归一化阻带截止频率Rp=1; %分贝的通带波纹系数Rs=100; %最小阻带衰减[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs); %用cheb1ord函数求契比雪夫Ⅰ型滤波器阶次和通带频率[num,den]=cheby1(N,Rp,Wn); %用cheby1函数求契比雪夫Ⅰ型低通滤波器分子分母系数disp('①分子系数是:');disp(num);disp('②分母系数是:');disp(den); %显示分子分母系数[h,w]=freqz(num,den); %DFT变换subplot(2,1,1);plot(w/pi,abs(h));xlabel('\omega/\pi');ylabel('振幅(幅值)');grid; %画图幅度频率图做网格title('契比雪夫Ⅰ型低通滤波器的幅频响应'); %显示横纵坐标及标题subplot(2,1,2);plot(w/pi,20*log10(abs(h))); %画图画分贝图grid;axis([0,1,-20,10]) %做网格,定义范围xlabel('\omega/\pi'); %横坐标为\omega/\piylabel('振幅(分贝)'); %纵坐标为振幅(分贝)title('契比雪夫Ⅰ型低通滤波器的幅频响应'); %标题为契比雪夫Ⅰ型低通滤波器的幅频响应4.把处理后的所有数据储存为声音文件,与原始声音进行比较把我们上面录制的语音放到滤波器里进行滤波,具体程序如下:[y,fs,bits]=wavread('f:\黄\xiaoqing.wav'); %对语音信号进行采样sound('f:\黄\xiaoqing.wav');N=length(y);t=(1:N)/fs;df=fs/N; %采样间隔n1=1:N/2; f=(n1-1)*df; %频带宽度subplot(2,2,1); plot(t,y)title('滤波前语音信号波形');xlabel('频率/Hz');ylabel('幅值 ');f=(n1-1)*df; %频带宽度z=fft(y);subplot(2,2,3);plot(20*log10(abs(z)));title('滤波前语音信号的频谱 ');xlabel('频率/Hz');ylabel('幅值 ');x=filter(num,den,y);subplot(2,2,2);plot(t,x)title('滤波后语音信号波形');xlabel('频率/Hz');ylabel('幅值 ');z=fft(x);subplot(2,2,4);plot(20*log10(abs(z)));title('滤波后语音信号的频谱')xlabel('频率/Hz'); ylabel('幅值 ');wavwrite(x,fs,'f:\黄\xiaoqing'); %把滤波后的信号写入f:\黄\xiaoqing总结与分析通过本次的课程设计,我学会了 MATLAB 的使用,掌握了 MATLAB 的程序设计方法。

相关主题