您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于MATLAB-的语音信号的采集分析和处理
仲恺农业工程学院课程考查报告书《数字信号处理》课程考查院系:自动化学院题目:基于MATLAB的语音信号的采集分析和处理专业班别:自动化(工业自动化)144姓名:黄国盛学号:201421714406提交日期:2016年12月7日1目录1.设计任务与要求………………………………………………………………………32.语音信号的采集………………………………………………………………………33.语音信号的分析………………………………………………………………………33.1实现程序代码……………………………………………………………………33.2波形图……………………………………………………………………………44.语音信号加高频余弦噪声……………………………………………………………64.1实现程序代码……………………………………………………………………64.2波形图……………………………………………………………………………75.双线性变换法设计巴特沃兹模拟低通滤波器………………………………………85.1实现程序代码……………………………………………………………………85.2波形图……………………………………………………………………………106.窗函数法(门限法)设计模拟滤波器………………………………………………116.1实现程序代码……………………………………………………………………116.2波形图……………………………………………………………………………127.经验体会………………………………………………………………………………148.参考文献………………………………………………………………………………152引言语音具有成为声学特征的物理特质,基本的组成单位是音素。音素是发出各不相同音的最小单位,可以将音素分为浊音和清音两大类。如果把不存在语音而只有背景噪声的情况称为无声时,音素又可以分为无声、浊音和清音三类。一个音节由元音和辅音构成。元音在音节中占主要部分。所有元音都是浊音。语音信号处理的目的有两个:一个是要通过处理得到一些反应语音信号重要特征的语音参数,以便高效地传输或储存语音信号信息;另一个是要通过处理某种运算以达到某种用途的要求,例如人工合成出语音、辨识出讲话者、识别出讲话的内容等。数字信号处理的主要研究对象是语音信号和图像信号,语音信号的研究可以从时域和频域两个方面来进行。其中时域的分析处理有两种方法:一种是进行语音信号分析,这属于线性处理的范畴;另一种是生成和变换成各种调制信号,这属于非线性的范畴,主要是对信号平均累加器的动态范围进行压缩扩张,用门限方法对噪声的抑制。对频域分析处理,即对信号的频率特性在频谱中加以分析研究,这拓展了信号分析的范围,是对不确定信号分析的主要方法。在实际应用中,信号的时域频分析经常同时进行。在语音信号处理上,傅里叶变换一直起着主要作用。稳态的语音生成模型有线性系统组成,系统输入为随时间作周期变化或随机变化时,系统输出的频谱则反应了激励与声道频率响应特性。MATLAB语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,信号处理是MATLAB重要应用的领域之一。本文是用MATLAB对含噪的的语音信号同时在时域和频域进行滤波处理和分析。整个设计思路的设计原理示意图如图所示。3基于MATLAB的语音信号的采集分析和处理(MatlabR2015b)1.设计任务与要求用MATLAB对语音进行分析和处理,包括:(1)语音信号的采集。(2)语音信号的频谱分析。(3)语音信号的加杂和滤波处理。2.语音信号的采集通过QQ发送语音内容“201421714406”,保存到本地的语音格式为.arm。为了方便MATLAB对音频进行处理,音频须保存为.wav格式供MATLAB相关函数直接读取、写入或播放。可用“楼月微信语音播放器”将语音格式.arm转换成.wav,并将音频命名为test.wav保存在电脑桌面。(即文件保存位置为“C:\Users\Administrator\Desktop\test.wav”)。(注:1、QQ语音一般保存在QQ账号相关文件夹下的Audio文件夹里。若用其他音频,同样要转换为.wav格式;2、为了便于实验图形变化情况的观察建议音频不要太长;3、wave格式的音频分为PCM和IMAADPCM两种格式,Matlab中用waveread函数做音频处理时,只能对PCM格式的.wav音频进行处理,因此需要将要处理的格式事先转换成PCM格式的.wav音频。可采用AdensoftAudioMP3Converter音频转换工具进行转换。)3.语音信号的分析在MATLAB软件平台下,利用函数audioread对语音信号进行采样。利用sound函数可播放采样音频。首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。3.1实现程序代码如下:clc;clear;closeall;fs=20100;%语音信号采样频率为20100x1=audioread('C:\Users\Administrator\Desktop\test.wav');%读取语音信号的数据,赋给变量x1sound(x1,20100);%播放语音信号y1=fft(x1,1024);%对信号做1024点FFT变换f=fs*(0:511)/1024;4figure(1);plot(x1)%做原始语音信号的时域图形title('原始语音信号');xlabel('timen');ylabel('fuzhin');figure(2);freqz(x1)%绘制原始语音信号的频率响应图title('频率响应图')figure(3);subplot(2,1,1);plot(abs(y1(1:512)))%做原始语音信号的FFT频谱图title('原始语音信号FFT频谱');subplot(2,1,2);plot(f,abs(y1(1:512)));title('原始语音信号频谱')xlabel('Hz');ylabel('fuzhi');3.2波形如下:56注意:原始语言信号FFT频谱和原始语言信号频谱的区别是:前者是频率为1递增的频谱,而后者是以f=fs*(0:511)/1024递增;另外,后者是在“不小于原始信号的频率(采样定理)”上完全展开的频谱。4.语音信号加高频余弦噪声给原始的语音信号加上一个高频余弦噪声,频率为5kHz。通过MATLAB的sound函数播放音频可听到刺耳背景音。画出加噪后的语音信号时域和频谱图,与原始信号对比,可以很明显的看出区别。4.1实现程序代码如下:fs=20100;x1=audioread('C:\Users\Administrator\Desktop\test.wav');f=fs*(0:511)/1024;t=0:1/20100:(size(x1)-1)/20100;%将所加噪声信号的点数调整到与原始信号相同Au=0.03;d=[Au*cos(2*pi*5000*t)]';%噪声为5kHz的余弦信号x2=x1+d;sound(x2,20100);%播放加噪声后的语音信号y2=fft(x2,1024);figure(1)plot(t,x2)title('加噪后的信号');xlabel('timen');ylabel('fuzhin');figure(2)subplot(2,1,1);plot(f,abs(y1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('fuzhi');subplot(2,1,2);7plot(f,abs(y2(1:512)));title('加噪后的信号频谱');xlabel('Hz');ylabel('fuzhi');4.2波形如下:85.双线性变换法设计巴特沃兹模拟低通滤波器设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。5.1实现程序代码如下:fs=20100;x1=audioread('C:\Users\Administrator\Desktop\test.wav');t=0:1/20100:(size(x1)-1)/20100;Au=0.03;d=[Au*cos(2*pi*5000*t)]';x2=x1+d;wp=0.25*pi;ws=0.3*pi;Rp=1;Rs=15;Fs=20100;9Ts=1/Fs;wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数[Z,P,K]=buttap(N);%创建butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);%绘制频率响应曲线figure(1)plot(W*Fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('Butterworth')f1=filter(bz,az,x2);figure(2)subplot(2,1,1)plot(t,x2)%画出滤波前的时域图title('滤波前的时域波形');subplot(2,1,2)plot(t,f1);%画出滤波后的时域图title('滤波后的时域波形');sound(f1,22050);%播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));%画出滤波前的频谱图10title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512)));%画出滤波后的频谱图title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');5.2波形如下:11126.窗函数法(门限法)设计模拟滤波器6.1实现程序代码如下:fs=20100;x1=audioread('C:\Users\Administrator\Desktop\test.wav');t=0:1/20100:(size(x1)-1)/20100;Au=0.03;d=[Au*cos(2*pi*5000*t)]';x2=x1+d;wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta);%取整wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率figure(1)freqz(b,1,512)f2=filter(bz,az,x2)figure(2)subplot(2,1,1)plot(t,x2)title('滤波前的时域波形');subplot(2,1,2)plot(t,f2);title('滤波后的时域波形');sound(f2,20100);%播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x2,1024);13subplot(2,1,1);plot(f,abs(y2(1:512)));title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi
本文标题:基于MATLAB-的语音信号的采集分析和处理
链接地址:https://www.777doc.com/doc-5014371 .html