基于Matlab的语音信号处理与分析.docx
《基于Matlab的语音信号处理与分析.docx》由会员分享,可在线阅读,更多相关《基于Matlab的语音信号处理与分析.docx(16页珍藏版)》请在冰豆网上搜索。
![基于Matlab的语音信号处理与分析.docx](https://file1.bdocx.com/fileroot1/2023-2/25/aa843fbd-a968-49d5-afb3-986de071a26b/aa843fbd-a968-49d5-afb3-986de071a26b1.gif)
基于Matlab的语音信号处理与分析
基于Matlab的语音信号处理与分析
系(院)物理与电子工程学院 专业电子信息工程
题目语音信号的处理与分析
学生姓名
指导教师
班级
学号
完成日期:
2013年5月
语音信号的处理与分析
【摘要】语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
信号处理是Matlab重要应用的领域之一。
本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0综合运用GUI界面设计、各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。
最后,本文对语音信号处理的进一步发展方向提出了自己的看法。
【关键词】Matlab语音信号傅里叶变换低通滤波器
1绪论
语音是语言的声学表现,是人类交流信息最自然、最有效、最方便的手段。
随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。
1.1课题背景及意义
语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。
通过语言相互传递信息是人类最重要的基本功能之一。
语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。
语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。
1.2国内外研究现状
20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础。
随着信息科学技术的飞速发展,语音信号处理取得了重大的进展:
进入70年代之后,提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术—矢量量化(VQ)应用于语音信号处理中;而用隐马尔可夫模型(HMM)描述语音信号过程的产生是80年代语音信号处理技术的重大发展,目前HMM已构成了现代语音识别研究的重要基石。
近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。
1.3本课题的研究内容和方法
研究内容
本论文主要介绍的是的语音信号的简单处理。
本报告针对以上问题,运用数字信号学基本原理实现语音信号的处理,在matlab7.0环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号处理。
我所做的工作就是在matlab7.0软件上编写一个处理语音信号的程序,能对语音信号进行采集,并对其进行各种处理,达到简单的语音信号处理的目的。
开发环境
本设计的开发使用的操作系统是WindowsXP系统。
开发环境为Matlab7.0版本软件。
2语音信号处理的总体方案
2.1系统基本概述
本次设计为基于Matlab的语音信号的处理与分析系统。
系统包括语音信号的采集、抽样处理、AM调制与解调等,其中还采用了切比雪夫滤波器和FIR滤波器进行同步解调。
2.2系统基本要求与目的
1、掌握MATLAB的程序设计方法。
2、熟悉Windows环境下语音信号采集的方法。
3、了解数字信号处理的基本概念、基本理论和基本方法。
4、学会使用MATLAB设计数字滤波器。
5、学会使用MATLAB对信号进行处理和分析。
2.3系统框架及实现
语音信号的采样
利用Windows下的录音机,录制一段自己的语音,要求长度不小于10s,然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
语音信号的频谱分析
使用Matlab绘出采样后的语音信号的时域波形和频谱图,根据频谱图求出其带宽,并说明语音信号的采样频率不能低于多少赫兹。
音乐信号的抽取
(1)观察音乐信号频率的上限,选择适当的抽取间隔对信号进行下采样(给出两种抽样间隔,代表混叠与非混叠);
(2)输出抽取后的音乐信号的波形和频谱;
(3)播放抽取后的音乐信号,比较不同抽取间隔下的声音。
音乐信号的AM调制
(1)观察音乐信号的频率上限,选择适当的调制频率对信号进行调制(给出高、低两种调制频率);
(2)输出调制信号的波形和频谱;
(3)播放调制音乐。
调制音乐信号的同步解调
(1)设计切比雪夫滤波完成同步解调;
(2)频率抽样法设计FIR滤波器完成同步解调;
(3)绘出滤波器的频域响应,绘出滤波后信号的时域波形和频谱;
(3)输出解调信号的波形和频谱;
(4)播放解调音乐信号,比较不同滤波器下的声音。
2.4系统设计流程图
图2.1列出了整个语音信号处理系统的工作流程:
图2.1语音信号处理系统的工作流程
3语音信号处理基本知识
3.1语音的录入与打开
在MATLAB中,[x,fs,Nbits]=wavread('E:
\W.wav');用于读取语音,采样值放在向量x中,fs表示采样频率(Hz),Nbits表示采样位数。
sound(x,fs);用于对声音的回放。
向量x则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
3.2采样位数和采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。
采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。
无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数相当于力度范围增加了6dB。
采样位数越多则捕捉到的信号越精确。
对于采样率来说你可以想象它类似于一个照相机,44.1kHz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。
显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。
3.3时域信号的FFT分析
FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。
函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x为矩阵,按相同方法对x进行处理。
3.4切比雪夫滤波器
切比雪夫滤波器,又名“车比雪夫滤波器”,是在通带或阻带上频率响应幅度等波纹波动的滤波器。
切比雪夫滤波器来自切比雪夫分布,以“切比雪夫”命名,是用以纪念俄罗斯数学家巴夫尼提·列波维其·切比雪夫。
切比雪夫滤波器在过渡带比巴特沃斯滤波器的衰减快,但频率响应的幅频特性不如后者平坦。
切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小,但是在通频带内存在幅度波动。
切比雪夫多项式是与棣莫弗定理有关,以递归方式定义的一系列正交多项式序列。
通常,第一类切比雪夫多项式以符号Tn表示,第二类切比雪夫多项式用Un表示。
切比雪夫多项式Tn或Un代表n阶多项式。
切比雪夫多项式在逼近理论中有重要的应用。
这是因为第一类切比雪夫多项式的根(被称为切比雪夫节点)可以用于多项式插值。
相应的插值多项式能最大限度地降低龙格现象,并且提供多项式在连续函数的最佳一致逼近。
3.5数字滤波器设计原理
数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。
但是这个高效率是以相位的非线性为代价的。
选择性越好,则相位非线性越严重。
相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。
整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。
4语音信号实例处理设计
4.1语音信号的采集
程序:
[y,fs,bit]=wavread('E:
\DSP课程设计\10300118\a.wav')%读取音乐片段,fs是采样率
size(y)%求矩阵的行数和列数
y1=y(:
1);%对信号进行分列处理
n1=length(y1);%取y的长度
t1=(0:
n1-1)/fs;%设置波形图横坐标
figure
subplot(2,1,1);
plot(t1,y1);%画出时域波形图
ylabel('幅值');
xlabel('时间(s)');
title('信号波形');
subplot(2,1,2);
Y1=fft(y1);
w1=2/n1*(0:
n1-1);%设置角频率
plot(w1,abs(Y1));%画频谱图
title('信号频谱');
xlabel('数字角频率');
ylabel('幅度');
gridon;
sound(y,fs);
现象:
如图4.1。
图4.1
4.2不同抽样间隔的采样
程序:
[y,fs,bit]=wavread('E:
\DSP课程设计\10300118\a.wav')
y1=y(:
1);
n1=length(y1);
D=2;%设置抽样间隔
y2=y1(1:
D:
n1);%减抽样
n2=length(y2);%减抽样后信号长度
t2=(0:
n2-1)/fs;%设置横坐标figure
subplot(2,2,1);
plot(t2,y2);%绘制减抽样信号波形图
ylabel('幅度');
xlabel('时间(s)');
title('2:
1减抽样信号波形');
Y2=fft(y2);%对y2进行n2点fft谱分析
w2=2/n2*[0:
n2-1];
subplot(2,2,3);
plot(w2,abs(Y2));%绘制减抽样信号频谱图
title('2:
1减抽样信号频谱');
xlabel('数字角频率w');
ylabel('幅度');
gridon;
sound(y2,fs/D);
D=5;%设置抽样间隔
y3=y1(1:
D:
n1);%减抽样
n3=length(y3);%减抽样后信号长度
t3=(0:
n3-1)/fs;%设置横坐标
subplot(2,2,2);
plot(t3,y3);%绘制减抽样信号波形图
ylabel('幅度');
xlabel('时间(s)');
title('5:
1减抽样信号波形');
Y3=fft(y3);%对y2进行n2点fft谱分析
w3=2/n3*[0:
n3-1];
subplot(2,2,4);
plot(w3,abs(Y3));%绘制减抽样信号频谱图
title('5:
1减抽样信号频谱');
xlabel('数字角频率w');
ylabel('幅度');
gridon;
sound(y3,fs/D)
现象:
如图4.2。
图4.2
4.3音乐信号的AM调制与解调
高频调制与低频调制
程序:
[w,fs,b]=wavread('E:
\DSP课程设计\10300118\a.wav')
w1=w(:
1);
f=fft(w1);
l=length(f);
ww=2/l*(0:
l-1);
%对声音信号进行调制
%高频调制
figure;n1=0:
l-1;w2=w1.*cos(0.9*pi*n1)';f2=fft(w2);
sound(w2,fs);
subplot(211);plot(w2);title('高频调制后信号波形');xlabel('t');ylabel('信号幅度w2');
subplot(212);plot(ww,abs(f2));title('高频调制后信号频谱');xlabel('w');ylabel('信号幅度|f2|');
%低频调制
figure;n1=0:
l-1;w22=w1.*cos(pi/8*n1)';f22=fft(w22);
sound(w22,fs);
subplot(211);plot(w22);title('低频调制后信号波形');xlabel('t');ylabel('信号幅度w22');
subplot(212);plot(ww,abs(f22));title('低频调制后信号频谱');xlabel('w');ylabel('信号幅度|f22|');
现象:
如图。
图
切比雪夫滤波
程序:
%基于MATLAB的FIR低通滤波器程序%要求用切比雪夫一致逼近法设计
%w22*cos(pi/8*n1)=1/2(w1+cos(2pi/8*n1));%AM解调
Wp=0.05*pi;%通带的截止频率w=4000/44.1/2/1000*pi
Ws=0.1*pi;
Rp=3;
Rs=15;
Y1=w22.*cos(pi/8*n1)';
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs);
[B,A]=CHEBY1(N,0.5,Wn);
Y=filter(B,A,Y1);
Y22=fft(Y);
sound(Y,fs);
figure;
subplot(211);plot(Y);title('切比雪夫滤波后信号波形');xlabel('t');ylabel('信号幅度Y');
subplot(212);plot(ww,abs(Y22));title('切比雪夫滤波后信号频谱');xlabel('w');ylabel('信号幅度|Y22|');
现象:
如图。
FIR滤波
程序:
[y,fs,bit]=wavread('E:
\DSP课程设计\10300118\a.wav')
y1=y(:
1);
n1=length(y1);
n3=0:
(n1-1);
b1=cos(33075/fs/2*pi*n3);%设置调制信号
c1=b1'.*y1;%对原信号进行调制
lc1=length(c1);
t=(0:
lc1-1)/fs;
figure%用载波对信号进行调制,并对其做fft变换
subplot(3,1,1)%获取频谱,从图中可以观察到,调制后的
plot(t,c1)%信号频谱发生搬移
xlabel('时间(s)');
ylabel('幅度');
title('调制后信号');
w1=2/lc1*[0:
lc1-1];%设%置角频率W
C1=fft(c1);
d1=b1'.*c1;
w123=66100/fs/2;
w224=43075/fs/2;%设计FIR滤波器用布莱克曼窗设计实现
a=fir1(10,w224/fs/2,'low',blackman(10+1));
[h,f]=freqz(a,1,lc1);
subplot(3,1,2)
plot(f,20*log10(abs(h)));
F3=filter(a,1,d1);%解调音乐信号
N4=length(F3);
F4=fft(F3);
w4=2/N4*[0:
N4/2-1];
subplot(3,1,3);plot(w4,abs(F4(1:
N4/2)));
sound(F3*2,fs);
figure
plot(t,F3*2);
xlabel('时间(s)');
ylabel('幅度');
title('布莱克曼窗滤波后波形');
图像:
如图。
5总结
本设计对语音信号处理系统的设计作了比较详细的介绍,并且运用一系列图像分析和处理技术,实现了语音信号的基本处理功能。
经测试与运行,本设计圆满地完成了对语音信号的读取与打开;较好地完成了对语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;在滤波方面,课题主要是通过切比雪夫滤波器和FIR低通滤波器来完成滤波解调,本设计基本实现了滤波,完成了各种滤波器的滤波效果比较,与课题的要求相符,基本达到预期目的。
本设计主要有以下优点:
1)操作界面简练。
在进行语音信号处理的操作界面中,菜单按键明了,每个功能只对应一个按键,省去了大型软件的操作复杂步骤。
2)处理速度较快。
由于整个操作过程存在多个分步骤,并且每个步骤的联系不是很紧密,所以每个步骤中的运行速度很快。
3)占用内存空间比较小。
整个程序仅占用数十KB的物理空间,省去了软件的安装麻烦。
本设计还存在许多可以改进的不足,主要有以下几个方面:
1)本系统仅能进行一般应用条件下的语音信号处理,功能比较单一,不能进行复杂的语音信号处理与分析。
2)由于系统定位于一般条件下的语音信号处理,计算精度比较低,不能进行精度较高的语音信号处理。
3)该系统程序由于编写简单,操作界面较小,对较大物理内存的语音信号文件不能进行处理。
4)课题要求使用频率抽样法设计FIR滤波器完成同步解调,在思考和查阅资料后依然未能完美完成,只能使用窗函数法设计FIR滤波器。
参考文献
1.《数字信号处理教程(第三版)》程佩青编著,北京:
清华大学出版社
2.《MATLAB7.0在数字信号处理中的应用》罗军辉等编著,北京:
机械工业出版社
3.《精通MATLAB6.5版》北京:
北京航空航天大学出版社