文档库 最新最全的文档下载
当前位置:文档库 › 如何利用matlab处理音频信号

如何利用matlab处理音频信号

如何利用matlab处理音频信号
如何利用matlab处理音频信号

Matlab处理音频信号

一、问题的提出:数字语音是信号的一种,我们处理数字语音信号,也就是对一种信号的处理,那信号是什么呢?信号是传递信息的函数。

一、问题的提出:

数字语音是信号的一种,我们处理数字语音信号,也就是对一种信号的处理,那信号是什么呢?

信号是传递信息的函数。离散时间信号%26mdash;%26mdash;序

列%26mdash;%26mdash;可以用图形来表示。

按信号特点的不同,信号可表示成一个或几个独立变量的函数。例如,图像信号就是空间位置(二元变量)的亮度函数。一维变量可以是时间,也可以是其他参量,习惯上将其看成时间。信号有以下几种:

(1)连续时间信号:在连续时间范围内定义的信号,但信号的幅值可以是连续数值,也可以是离散数值。当幅值为连续这一特点情况下又常称为模拟信号。实际上连续时间信号与模拟信号常常通用,用以说明同一信号。

(2)离时间信号:时间为离散变量的信号,即独立变量时间被量化了。而幅度仍是连续变化的。

(3)数字信号:时间离散而幅度量化的信号。

语音信号是基于时间轴上的一维数字信号,在这里主要是对语音信号进行频域上的分析。在信号分析中,频域往往包含了更多的信息。对于频域来说,大概有8种波形可以让我们分析:矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余旋波,余旋平方波,高斯波。对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:将时域的波形转化到频域来分析。

于是,本课题就从频域的角度对信号进行分析,并通过分析频谱来设计出合适的滤波器。当然,这些过程的实现都是在MATLAB软件上进行的,MATLAB软件在数字信号处理上发挥了相当大的优势。

二、设计方案:

利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。

选择设计此方案,是对数字信号处理的一次实践。在数字信号处理的课程学习过程中,我们过多的是理论学习,几乎没有进行实践方面的运用。这个课题正好是对数字语音处理的一次有利实践,而且语音处理也可以说是信号处理在实际应用中很大众化的一方面。

这个方案用到的软件也是在数字信号处理中非常通用的一个软

件%26mdash;%26mdash;MATLAB软件。所以这个课题的设计过程也是一次数字信号处理在MATLAB中应用的学习过程。课题用到了较多的MATLAB语句,而由于课题研究范围所限,真正与数字信号有关的命令函数却并不多。

三、主体部分:

(一)、语音的录入与打开:

[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。

sound(x,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的%26ldquo;函数表达式%26rdquo;)也就是说可以像处理一个信号表达式一样处理这个声音信号。

FFT的MATLAB实现

在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 进行处理。

经函数fft求得的序列y一般是复序列,通常要求其幅值和相位。MATLAB提供求复数的幅值和相位函数:abs,angle,这些函数一般和FFT同时使用。

函数abs(x)用于计算复向量x的幅值,函数angle(x)用于计算复向量的相角,介于和之间,以弧度表示。

函数unwrap(p)用于展开弧度相位角p ,当相位角绝对变化超过时,函数把它扩展至。

用MATLAB工具箱函数fft进行频谱分析时需注意:

(1)函数fft返回值y的数据结构对称性

若已知序列x=[4,3,2,6,7,8,9,0],求X(k)=DFT[x(n)]。

利用函数fft计算,用MATLAB编程如下:

N=8;

n=0:N-1;

xn=[4 3 2 6 7 8 9 0]';

XK=fft(xn)

结果为:

XK =

39.0000

-10.7782 + 6.2929i

0 - 5.0000i

4.7782 - 7.7071i

5.0000

4.7782 + 7.7071i

0 + 5.0000i

-10.7782 - 6.2929i

由程序运行所得结果可见,X(k)和x(n)的维数相同,共有8个元素。X(k)的第一行元素对应频率值为0,第五行元素对应频率值为Nyquist频率,即标准频率为1.因此第一行至第五行对应的标准频率为0~1。而第五行至第八行对应的是负频率,其X(k)值是以Nyquist频率为轴对称。(注:通常表示为Nyquist频率外扩展,标以正值。)

一般而言,对于N点的x(n)序列的FFT是N点的复数序列,其点n=N/2+1对应Nyquist频率,作频谱分析时仅取序列X(k)的前一半,即前N/2点即可。X(k)的后一半序列和前一半序列时对称的。

(2)频率计算

若N点序列x(n)(n=0,1,…,N-1)是在采样频率下获得的。它的FFT也是N点序列,即X(k)(k=0,1,2,…,N-1),则第k点所对应实际频率值为f=k*f /N.

(3)作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。

2、设计内容:

(1)下面的一段程序是语音信号在MATLAB中的最简单表现,它实现了语音的读入打开,以及绘出了语音信号的波形频谱图。

[x,fs,bits]=wavread('ding.wav',[1024 5120]);

sound(x,fs,bits);

X=fft(x,4096);

magX=abs(X);

angX=angle(X);

subplot(221);plot(x);title('原始信号波形');

subplot(222);plot(X); title('原始信号频谱');

subplot(223);plot(magX);title('原始信号幅值');

subplot(224);plot(angX);title('原始信号相位');

程序运行可以听到声音,得到的图形为:

(2)定点分析:已知一个语音信号,数据采样频率为100Hz,试分别绘制N=128点DFT的幅频图和N=1024点DFT幅频图。

编程如下:

x=wavread('ding.wav');

sound(x);

fs=100;N=128;

y=fft(x,N);

magy=abs(y);

f=(0:length(y)-1)'*fs/length(y); subplot(221);plot(f,magy);

xlabel('频率(Hz)');ylabel('幅值'); title('N=128(a)');grid

subplot(222);plot(f(1:N/2),magy(1:N/2)); xlabel('频率(Hz)');ylabel('幅值'); title('N=128(b)');grid

fs=100;N=1024;

y=fft(x,N);

magy=abs(y);

f=(0:length(y)-1)'*fs/length(y); subplot(223);plot(f,magy);

xlabel('频率(Hz)');ylabel('幅值');

title('N=1024(c)');grid

subplot(224);plot(f(1:N/2),magy(1:N/2));

xlabel('频率(Hz)');ylabel('幅值');

title('N=1024(d)');grid

运行结果如图:

上图(a)、(b)为N=128点幅频谱图,(c)、(d)为N=1024点幅频谱图。由于采样频率f =100Hz,故Nyquist频率为 50Hz。(a)、(c)是0~100Hz频谱图,(b)、(d)是0~50Hz 频谱图。由(a)或(c)可见,整个频谱图是以Nyquist频率为轴对称的。因此利用fft对信号作频谱分析,只要考察0~Nyquist频率(采样频率一半)范围的幅频特性。比较(a)和(c)或(b)和(d)可见,幅值大小与fft选用点数N有关,但只要点数N足够不影响研究结果。从上图幅频谱可见,信号中包括15Hz和40Hz的正弦分量。

(3)若信号长度T=25.6s,即抽样后x(n)点数为T/Ts=256,所得频率分辨率为Hz,以此观察数据长度N的变化对DTFT分辨率的影响:

编程如下:

[x,fs,bits]=wavread('ding.wav');

N=256;

f=0:fs/N:fs/2-1/N;

X=fft(x);

X=abs(X);

subplot(211)

plot(f(45:60),X(45:60));grid

xlabel('Hz'),ylabel('|H(ejw)|')

%数据长度N扩大4倍后观察信号频谱

N=N*4;

f=0:fs/N:fs/2-1/N;

X=fft(x);

X=abs(X);

subplot(212)

plot(f(45*4:4*60),X(4*45:4*60));grid

xlabel('Hz'),ylabel('|H(ejw)|')

结果如图:

(三)、滤波器设计:

1、相关原理:

设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。

数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应(IIR)数字滤波器和有限长单位冲激响应(FIR)数字滤波器。

数字滤波器频率响应的三个参数:

(1)幅度平方响应:

(2)相位响应

其中,相位响应

(3)群时延响应

IIR数字滤波器:

IIR数字滤波器的系统函数为的有理分数,即

IIR数字滤波器的逼近问题就是求解滤波器的系数和,使得在规定的物理意义上逼近所要求的特性的问题。如果是在s平面上逼近,就得到模拟滤波器,如果是在z平面上逼近,则得到数字滤波器。

FIR数字滤波器:

设FIR的单位脉冲响应h(n)为实数,长度为N,则其z变换和频率响应分别为

按频域采样定理FIR数字滤波器的传输函数H(z)和单位脉冲响应h(n)可由它的N 个频域采样值H(k)唯一确定。

MATLAB中提供了几个函数,分别用于实现IIR滤波器和FIR滤波器。

(1)卷积函数conv

卷积函数conv的调用格式为 c=conv(a,b)

该格式可以计算两向量a和b的卷积,可以直接用于对有限长信号采用FIR滤波器的滤波。

(2)函数filter

函数filter的调用格式为 y=filter(b,a,x)

该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR 滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。

(3)函数fftfilt

函数fftfilt的调用格式为 y=fftfilt(b,x)

该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。

关于用butter函数求系统函数分子与分母系数的几种形式。

[b,a]=butter(N,wc,'high'):设计N阶高通滤波器,wc为它的3dB边缘频率,以为单位,故。

[b,a]=butter(N,wc):当wc为具有两个元素的矢量wc=[w1,w2]时,它设计2N阶带通滤波器,3dB通带为,w的单位为。

[b,a]=butter(N,wc,'stop'):若wc=[w1,w2],则它设计2N阶带阻滤波器,3dB通带为,w的单位为。

如果在这个函数输入变元的最后,加一个变元%26ldquo;s%26rdquo;,表示设计的是模拟滤波器。这里不作讨论。

为了设计任意的选项巴特沃斯滤波器,必须知道阶数N和3dB边缘频率矢量wc。这可以直接利用信号处理工具箱中的buttord函数来计算。如果已知滤波器指标,,和,则调用格式为

[N,wc]=buttord(wp,ws,Rp,As)

对于不同类型的滤波器,参数wp和ws有一些限制:对于低通滤波器,

wp%26lt;ws;对于高通滤波器,wp%26gt;ws;对于带通滤波器,wp和ws分别为具有两个元素的矢量,wp=[wp1,wp2]和ws=[ws1,ws2],并且

ws1%26lt;wp1%26lt;wp2%26lt;ws2;对于带阻滤波器

wp1%26lt;ws1%26lt;ws2%26lt;wp2。

2、设计内容:

(1)滤波器示例:

在这里为了说明如何用MATLAB来实现滤波,特举出一个简单的函数信号滤波实例(对信号x(n)=sin( n/4)+5cos( n/2)进行滤波,信号长度为500点),从中了解滤波的实现过程。程序如下:

Wn=0.2*pi;

N=5;

[b,a]=butter(N,Wn/pi);

n=0:499;

x=sin(pi*n/4)+5*cos(pi*n/2);

X=fft(x,4096);

subplot(221);plot(x);title('滤波前信号的波形');

subplot(222);plot(X);title('滤波前信号的频谱');

y=filter(b,a,x);

Y=fft(y,4096);

subplot(223);plot(y);title('滤波后信号的波形');

subplot(224);plot(Y);title('滤波后信号的频谱');

在这里,是采用了butter命令,设计出一个巴特沃斯低通滤波器,从频谱图中可以很明显的看出来。下面,也就是本课题的主要内容,也都是运用到了butter函数,以便容易的得到系统函数的分子与分母系数,最终以此来实现信号的滤波。

(2)N阶高通滤波器的设计(在这里,以5阶为例,其中wc为其3dB边缘频率,以为单位),程序设计如下:

x=wavread('ding.wav');

sound(x);

N=5;wc=0.3;

[b,a]=butter(N,wc,'high');

X=fft(x);

subplot(321);plot(x);title('滤波前信号的波形');

subplot(322);plot(X);title('滤波前信号的频谱');

y=filter(b,a,x);

Y=fft(y);

subplot(323);plot(y);title('IIR滤波后信号的波形');

subplot(324);plot(Y);title('IIR滤波后信号的频谱');

z=fftfilt(b,x);

Z=fft(z);

subplot(325);plot(z);title('FIR滤波后信号的波形');

subplot(326);plot(Z);title('FIR滤波后信号的频谱');

得到结果如图:

(3)N阶低通滤波器的设计(在这里,同样以5阶为例,其中wc为其3dB边缘频率,以为单位),程序设计如下:

x=wavread('ding.wav');

sound(x);

N=5;wc=0.3;

[b,a]=butter(N,wc);

X=fft(x);

subplot(321);plot(x);title('滤波前信号的波形');

subplot(322);plot(X);title('滤波前信号的频谱');

y=filter(b,a,x);

Y=fft(y);

subplot(323);plot(y);title('IIR滤波后信号的波形');

subplot(324);plot(Y);title('IIR滤波后信号的频谱');

z=fftfilt(b,x);

Z=fft(z);

subplot(325);plot(z);title('FIR滤波后信号的波形');

得到结果如图:

(4)2N阶带通滤波器的设计(在这里,以10阶为例,其中wc为其3dB边缘频率,以为单位,wc=[w1,w2],w1 wc w2),程序设计如下:

x=wavread('ding.wav');

sound(x);

N=5;wc=[0.3,0.6];

[b,a]=butter(N,wc);

X=fft(x);

subplot(321);plot(x);title('滤波前信号的波形');

subplot(322);plot(X);title('滤波前信号的频谱');

y=filter(b,a,x);

Y=fft(y);

subplot(323);plot(y);title('IIR滤波后信号的波形');

subplot(324);plot(Y);title('IIR滤波后信号的频谱');

z=fftfilt(b,x);

Z=fft(z);

subplot(326);plot(Z);title('FIR滤波后信号的频谱');

得到结果如图:

(5)2N阶带阻滤波器的设计(在这里,以10阶为例,其中wc为其3dB边缘频率,以为单位,wc=[w1,w2],w1 wc w2),程序设计如下:

x=wavread('ding.wav');

sound(x);

N=5;wc=[0.2,0.7];

[b,a]=butter(N,wc,'stop');

X=fft(x);

subplot(321);plot(x);title('滤波前信号的波形');

subplot(322);plot(X);title('滤波前信号的频谱');

y=filter(b,a,x);

Y=fft(y);

subplot(323);plot(y);title('IIR滤波后信号的波形');

subplot(324);plot(Y);title('IIR滤波后信号的频谱');

z=fftfilt(b,x);

Z=fft(z);

subplot(325);plot(z);title('FIR滤波后信号的波形');

subplot(326);plot(Z);title('FIR滤波后信号的频谱');

得到结果如图:

(6)小结:以上几种滤波,我们都可以从信号滤波前后的波形图以及频谱图上看出变化。当然,也可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化,但由于人耳听力的限制,有些情况下我们是很难听出异同的。

同样,通过函数的调用,也可以将信号的频谱进行%26ldquo;分离观察%26rdquo;,如显出信号的幅值或相位。下面,通过改变系统函数的分子与分母系数比,来观察信号滤波前后的幅值与相位。并且使结果更加明显,使人耳得以很容易的辨听。

x=wavread('ding.wav');

sound(x);

b=100;a=5;

y=filter(b,a,x);

X=fft(x,4096);

subplot(221);plot(x);title('滤波前信号的波形');

subplot(222);plot(abs(X));title('滤波前信号的幅值');

Y=fft(y,4096);

subplot(223);plot(y);title('滤波后信号的波形');

subplot(224);plot(abs(Y));title('滤波后信号的幅值');

结果如图:

%26gt;%26gt; sound(y);

可以听到声音明显变得高亢了。从上面的波形与幅值(即幅频)图,也可看出,滤波后的幅值变成了滤波前的20倍。

%26gt;%26gt; figure,

subplot(211);plot(angle(X));title('滤波前信号相位');

subplot(212);plot(angle(Y));title('滤波后信号相位');

得图:

可以看到相位谱没什么变化。

(四)、界面设计:

直接用M文件编写GUI程序很繁琐,而使用GUIDE设计工具可以大大提高工作效率。GUIDE相当于一个控制面板,从中可以调用各种设计工具以辅助完成界面设计任务,例如控件的创建和布局、控件属性的编辑和菜单设计等。

使用GUIDE设计GUI程序的一般步骤如下:

1. 将所需控件从控件面板拖拽到GUIDE的设计区域;

2. 利用工具条中的工具(或相应的菜单和现场菜单),快速完成界面布局;

3. 设置控件的属性。尤其是tag属性,它是控件在程序内部的唯一标识;

4. 如果需要,打开菜单编辑器为界面添加菜单或现场菜单;

5. 保存设计。GUIDE默认把GUI程序保存为两个同名文件:一个是.fig文件,用来保存窗体布局和所有控件的界面信息;一个是.m文件,该文件的初始内容是GUIDE自动产生的程序框架,其中包括了各个控件回调函数的定义。该M文件与

一般的M文件没有本质区别,但是鉴于它的特殊性,MATALAB把这类文件统称为GUI-M文件。保存完后GUI-M文件自动在编辑调试器中打开以供编辑。

6. 为每个回调函数添加代码以实现GUI程序的具体功能。这一步与一般函数文件的编辑调试过程相同。

设计过程及内容:

在MATLAB版面上,通过键入GUIDE弹出一个菜单栏进入gui制作界面(或者在File到new来进入gui),从而开始应用界面的制作。

该界面主要实现了以下几个功能:

①打开wav格式的音频文件,并将该音频信号的值读取并赋予某一向量;

②播放音频文件,可以选择性的显示该音频信号的波形、频谱、幅值以及相位;

③对音频信号进行IIR与FIR的5阶固定滤波处理,可以选择性的显示滤波前后信号的波形、频谱、幅值以及相位,以及播放滤波后的声音。

界面如图所示:

通过该界面,可以方便用户进行语音信号的处理。

界面主程序见附件。

(五)、校验:

1、本设计圆满的完成了对语音信号的读取与打开,与课题的要求十分相符;

2、本设计也较好的完成了对语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;

3、在滤波这一块,课题主要是从巴特沃斯滤波器入手来设计滤波器,也从一方面基本实现了滤波;

4、初略的完成了界面的设计,但也存在相当的不足,只是很勉强的达到了打开语音文件、显示已定滤波前后的波形等图。

四、结论:

语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种%26ldquo;复杂向量%26rdquo;来看待。也就是说,课题更多的还是体现了数字信号处理技术。

从课题的中心来看,课题是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音的处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。

在这里,用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。

课题的特色在于它将语音看作了一个向量,于是语音数字化了,则可以完全利用数字信号处理的知识来解决。我们可以像给一般信号做频谱分析一样,来给语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。

最后,还利用了MATLAB的另一强大功能%26mdash;%26mdash;gui界面设计。设计出了一个简易的用户应用界面,可以让人实现界面操作。更加方便的进行语音的频谱分析与滤波处理。

实验一 MATLAB音频信号处理实验

实验一MATLAB音频信号处理实验 一、实验目的 1、进一步加深DFT算法原理和基本性质的理解; 2、熟悉FFT算法原理; 3、理解掌握音频信号各参数的意义; 二、实验内容 1、对一个音频信号用FFT进行谱分析; 2、对该音频信号进行放大或衰减; 3、对该音频信号加入噪声与去掉噪声处理 三、实验要求 1.语音信号的读取、存储; 2.语音信号的播放; 3.FFT的MATLAB实现; 4.信号放大(6倍); 5.信号调制、产生高频信号; 6.信号叠加之后产生的带有噪声的语音信号; 7.绘制信号图像(时域与频域图像),包括原始信号图像,以及带有噪声的语音信号。 四、实验结果及代码 [S1,fs,bits]=wavread('C:\Users\1\Desktop\实验\handel.wav'); wavwrite(S1,'copy.wav'); F=fft(S1); S1=S1*6; fc=1000; y1=modulate(S1,fc,fs,'fm'); Y1=fft(y1,40000); y2=S1+y1; Y2=fft(y2,40000); figure(1); subplot(221); plot(S1); title('原始的信号时域图'); subplot(222); plot(abs(F));

title('原始的信号频域图'); subplot(223); plot(y1); title('调制后信号时域图'); subplot(224); plot(abs(Y1)); title('调制后信号频域图'); figure(2) subplot(221); plot(y2); title('加噪的信号时域图'); subplot(222); plot(abs(Y2)); title('加噪的信号频域图'); 运行结果如下图1-1 图1-1 五、实验总结 通过本次实验学习了如何使用MATLAB对音频信号进行处理。包括语音信号

基于MATLAB的语音信号滤波处理

基于MATLAB的语音信号滤波处理 题目:基于MATLAB的语音信号滤波处理 课程:数字信号处理 学院:电气工程学院 班级: 学生: 指导教师: 二O一三年十二月

目录CONTENTS 摘要 一、引言 二、正文 1.设计要求 2.设计步骤 3.设计内容 4.简易GUI设计 三、结论 四、收获与心得 五、附录

一、引言 随着Matlab仿真技术的推广,我们可以在计算机上对声音信号进行处理,甚至是模拟。通过计算机作图,采样,我们可以更加直观的了解语音信号的性质,通过matlab编程,调用相关的函数,我们可以非常方便的对信号进行运算和处理。 二、正文 2.1 设计要求 在有噪音的环境中录制语音,并设计滤波器去除噪声。 2.2 设计步骤 1.分析原始信号,画出原始信号频谱图及时频图,确定滤波器类型及相关指标; 2.按照类型及指标要求设计出滤波器,画出滤波器幅度和相位响应,分析该滤波器是否符合要求; 3.用所设计的滤波器对原始信号进行滤波处理,画出滤波后信号的频谱图及时频图; 4.对滤波前的信号进行分析比对,评估所设计滤波器性能。 2.3 设计内容 1.原始信号分析

分析信号的谱图可知,噪音在1650HZ和3300HZ附近的能量较高,而人声的能量基本位于1000HZ以下。因此,可以设计低通滤波器对信号进行去噪处理。 2.IIR滤波器设计 用双线性变换法分别设计了巴特沃斯低通滤波器和椭圆低通滤波器和带阻滤波器: ①巴特沃斯滤波器 fp=800;fs=1300;rs=35;rp=0.5; 程序代码如下: fp=800;fs=1300;rs=35;rp=0.5;Fs=44100; wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs)); [n,wn]=buttord(wp,ws,rp,rs,'s'); [b,a]=butter(n,wn,'s'); [num,den]=bilinear(b,a,Fs); [h,w]=freqz(num,den,512,Fs);

Matlab语音信号加噪、滤波处理及幅值幅频响应

课程设计二 基于MATLAB的语音信号采集与处理 一、实验目的和意义 1. MATLAB软件功能简介 MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。 MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。 MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。2. 本题目的意义 本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB 的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。 二、实验原理:

基于MATLAB的语音信号采集与处理

工程设计论文 题目:基于MATLAB的语音信号采集与处理 姓名: 班级: 学号: 指导老师:

一.选题背景 1、实践意义: 语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效地提取并表示语音信号所携带的信息。所以理解并掌握语音信号的时域和频域特性是非常重要的。 通过语音相互传递信息是人类最重要的基本功能之一.语言是人类特有的功能.声音是人类常用工具,是相互传递信息的最重要的手段.虽然,人可以通过多种手段获得外界信息,但最重要,最精细的信息源只有语言,图像和文字三种.与用声音传递信息相比,显然用视觉和文字相互传递信息,其效果要差得多.这是因为语音中除包含实际发音容的话言信息外,还包括发音者是谁及喜怒哀乐等各种信息.所以,语音是人类最重要,最有效,最常用和最方便的交换信息的形式.另一方面,语言和语音与人的智力活动密切相关,与文化和社会的进步紧密相连,它具有最大的信息容量和最高的智能水平。 语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,处理的目的是用于得到某些参数以便高效传输或存储;或者是用于某种应用,如人工合成出语音,辨识出讲话者,识别出讲话容,进行语音增强等. 语音信号处理是一门新兴的学科,同时又是综合性的多学科领域,

是一门涉及面很广的交叉学科.虽然从事达一领域研究的人员主要来自信息处理及计算机等学科.但是它与语音学,语言学,声学,认知科学,生理学,心理学及数理统计等许多学科也有非常密切的联系. 语音信号处理是许多信息领域应用的核心技术之一,是目前发展最为迅速的信息科学研究领域中的一个.语音处理是目前极为活跃和热门的研究领域,其研究涉及一系列前沿科研课题,巳处于迅速发展之中;其研究成果具有重要的学术及应用价值. 数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。它在语音、雷达、图像、系统控制、通信、航空航天、生物医学等众多领域都获得了极其广泛的应用。具有灵活、精确、抗干扰强、度快等优点。 数字滤波器, 是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应( FIR,Finite Impulse Response)滤波器和无限冲激响应( IIR,Infinite Impulse Response)滤波器。 FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H (z)在处收敛,极点全部在z = 0处(因果系统),因而只能

基于matlab的语音信号滤波处理——数字信号处理课程设计

数字信号处理课程设计 题目:基于matlab的语音信号滤波处理学院:物理与电子信息工程 专业:电子信息工程 班级: B07073041 学号: 200932000066 姓名:高珊 指导教师:任先平

摘要: 语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。 Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。这为我们的本次设计提供了强大并良好的环境! 本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。再在Matlab中分别设计不同形式的FIR数字滤波器。之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。

目录 1.设计内容 (4) 2.设计原理 (4) 2.1语音信号的时域分析 (4) 2.2语音信号的频域分析 (5) 3.设计过程 (5) 3.1实验程序源代码 (6) 3.1.1原语音信号时域、频域图 (6) 3.1.2低通滤波器的设计 (6) 3.1.3高通滤波器的设计 (7) 3.1.4带通滤波器的设计 (8) 3.1.5语音信号的回放 (9) 3.2调试结果描述 (10) 3.3所遇问题及结果分析 (15) 3.3.1所遇主要问题 (16) 3.3.2结果分析 (16) 4.体会与收获 (17) 5.参考文献 (17)

语音信号处理matlab实现

短时能量分析matlab源程序: x=wavread('4.wav'); %计算N=50,帧移=50时的语音能量 s=fra(50,50,x);%对输入的语音信号进行分帧,其中帧长50,帧移50 s2=s.^2;%一帧内各种点的能量 energy=sum(s2,2);%求一帧能量 subplot(2,2,1); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=50'); axis([0,500,0,30]) %计算N=100,帧移=100时的语音能量 s=fra(100,100,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,2); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=100'); axis([0,300,0,30]) %计算N=400,帧移=400时的语音能量 s=fra(400,400,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,3); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=400'); axis([0,60,0,100]) %计算N=800,帧移=800时的语音能量 s=fra(800,800,x); s2=s.^2; energy=sum(s2,2); subplot(2,2,4); plot(energy) xlabel('帧数'); ylabel('短时能量E'); legend('N=800'); axis([0,30,0,200]) 分帧子函数: function f=fra(len,inc,x) %对读入语音分帧,len为帧长,inc为帧重叠样点数,x为输入语音数据 fh=fix(((size(x,1)-len)/inc)+1);%计算帧数 f=zeros(fh,len);%设一个零矩阵,行为帧数,列为帧长 i=1;n=1; while i<=fh %帧间循环 j=1; while j<=len %帧内循环 f(i,j)=x(n); j=j+1;n=n+1; end n=n-len+inc;%下一帧开始位置 i=i+1; end

基于MATLAB的有噪声语音信号处理毕设

大学本科毕业设计论文 基于MATLAB的有噪声语音信号处理

摘要 滤波器设计在数字信号处理中占有极其重要的地位,FIR数字滤波器和IIR 滤波器是滤波器设计的重要组成部分。Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器。课题基于MATLAB 有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。在设计实现的过程中,使用窗函数法来设计FIR数字滤波器,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器,过程简单方便,结果的各项性能指标均达到指定要求。 关键词?数字滤波器;MATLAB;窗函数法;巴特沃斯; 切比雪夫; 双线性变换

Abstract ?Filterdesignin digital signal processingplaysan extre melyimportant role, FIR digital filters and IIR filter is an importan tpart of filter design.Matlab is powerful,easy to learn,programming efficiency,which was welcomed bythemajority ofsc ientists. Matlab alsohas a particular signalanalysis toolbox,it need nothave strongprogrammingskills can be easily signal analysis, processing and design. Using MATLAB Signal Processing Toolbox can quickly andefficiently design avarietyof digitalfilters. MATLAB basedon the noise issuespeech signal processing design and implementation of digital signalprocessing integrated use of the theoretical knowledge ofthe speechsignal plus noise, time domain, frequencydomainanalysis andfiltering. Thecorrespondingresults obtainedthroughtheoreticalderivation, and then use MATLAB as a programming toolfor computer implementation.Implemented inthe design process,usingthewindow function methodtodesign FIR digital filters with Butterworth, Chebyshev andbilinear Reform IIR digital filter design and use ofMATLAB as asupplementary tool to complete thecalculation and graphic design Drawing. Throughthesimulation of thedesigned filter and the frequency analysis shows thatusingMatlabSignal Processing Toolbox can quickly and easily design digital filters FIR andIIR,the processis simple and convenient, the results of the performance indicators to meetthe specifiedrequirements. ? Keywords: digital filter; MATLAB;Chebyshev;Butterworth;

matlab报告基于matlab有噪声语音信号处理

Matlab课程设计报告题目:基于MATLAB有噪声语音信号处理 系(院):计算机与信息工程学院 专业:通信工程 班级:10623102 指导教师: 学年学期:2011 ~ 2012 学年第2 学期

简介: 我们通信工程专业在实践中经常碰到需要对已接收信号进行处理的情况,而滤波器设计在数字信号处理中占有极其重要的地位。本课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现。在设计实现的过程中,我们使用双线性变换法设计IIR数字滤波器,对模拟加噪语音信号进行低通滤波、高通滤波及带通滤波,并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制。 1 绪论: 数字信号处理是利用计算机或专用处理设备,以数值计算的方法对信号进行采集、抽样、变换、综合、估值与识别等加工处理,借以达到提取信息和便于应用的目的。数字滤波器, 是数字信号处理中及其重要的一部分。本课题采用IIR 滤波器对加噪声音信号进行处理。 IIR滤波器采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。 2.原始语音信号采集与处理 2.1语音信号的采集 由于MATLAB只识别格式为.wav的声音文件,我们利用PC机上的声卡和WINDOWS操作系统进行数字信号的采集。启动录音机进行录音,以文件名“Orisound”保存入原程序所属的文件夹中。可以看到,文件存储器的后缀默认为.wav ,这是WINDOWS操作系统规定的声音文件存的标准。

音频信号频谱分析MATLAB

[y,Fs,bits]=wavread('DSP(1213)_A.wav'); % read sound file N=round(5.56/0.001); % set the order of the filter %F1=0.07; F2=0.29; %óéD?o?DSP(1213)_C.wavμ??μ?ê3é·??¨500-2000%wp=fp/(Fs/2); Fs=14000 %F1=0.10;F2=0.38; %êêóúDSP(1213)_B.wav òò?a??D?o?μ??μ?ê′ó???a600?a?a2300 Fs=12000 F1=0.12;F2=0.33;%êêóúDSP(1213)_A.wav òò?a??D?o?μ??μ?ê′ó???a700?a?a1900/19 Fs=11250 b=fir1(N,[F1,F2],blackman(N+1)); % using blackman window to implement FIR filter %b=fir1(N,[F1,F2],hanning(N+1)); Y=filter(b,1,y); % output te signal after filtering %freqz(b,1,512,Fs); figure freqz(b,1);%normalized frequency title('the filter response(magnitude and Phase)without using scaling factor after using blackman window'); %title('the filter response(magnitude and Phase)without using scaling factor');%after using blackman window'); t=(0:length(y)-1)/Fs; figure; subplot(2,1,1); plot(t,y); % plot original signal in time domain title('Input signal in time domain'); xlabel('Time(second)'); ylabel('Magnitude'); subplot(2,1,2); plot(t,Y); % plot output signal in time domain title('Output signal in time domain'); xlabel('Time(second)'); ylabel('Magnitude'); figure; fft_y=fft(y); fft_Y=fft(Y); f=Fs*(0:length(y)-1)/length(y); subplot(2,1,1); plot(f,20*log10(abs(fft_y(1:length(y))))); % plot original signal in frequency domain %plot(f,abs(fft_y(1:length(y)))); title('Input signal in frequency domain'); xlabel('Frequency(Hz)'); ylabel('Amplitude(dB)'); subplot(2,1,2); plot(f,20*log10(abs(fft_Y(1:length(y))))); % plot output signal in frequency domain %plot(f,abs(fft_Y(1:length(y)))); title('Output signal in frequency domain'); xlabel('Frequency(Hz)'); ylabel('Amplitude(dB)');

基于matlab的声音信号处理

课程设计任务书

基于MATLAB的声音信号处理的初步实现 内容摘要:数字滤波器是数字信号处理技术的基础, 用来对信号进行过滤、检测、与参数估计等处理。任何检测的信号都含有噪声,而滤波是去除噪声的基本手段,因此滤波器在数字信号处理中占有极其重要的地位。FIR数字滤波器和IIR 数字滤波器是滤波器设计的重要组成部分。随着MATLAB软件及信号处理工具箱的不断完善,MATLAB很快成为应用学科等领域不可或缺的基础软件,它可以快速有效地实现数字滤波器的设计、分析和仿真,极大地减轻了工作量,有利于滤波器设计的最优化。本设计综合运用了数字信号处理的各种基本知识,对不带噪声音信号以及带噪声音信号进行频谱分析,并利用MATLAB信号处理工具箱有效快捷地设计IIR数字滤波器对带噪声音信号进行滤波处理。 关键词:数字滤波器 MATLAB 滤波仿真 The preliminary implementation of voice signal processing based on MATLAB Abstract: Digital filter is the basis of digital signal processing technology, which used for signal filtering, detecting, and parameter estimation. Any detection signal contains noise, and filtering is a basic means to remove the noise, so filter occupies an extremely important position in digital signal processing.FIR digital filter and IIR digital filter is an important part of the filter design. With MATLAB software and the continuous improvement of the signal processing toolbox, MATLAB application quickly became indispensable to areas such as basic software. It can quickly and efficiently for digital filter design, analysis and simulation, greatly reduce the workload, and it is advantageous to the optimization of filter design. This design is integrated used of all kinds of basic knowledge of digital signal processing to complete the analysis of frequency spectrum about speech noisy signal and speech signal, and it use the MATLAB signal processing toolbox effective shortcut to design IIR

应用matlab对语音信号进行频谱分析及滤波

数字信号处理 —综合实验报告 综合实验名称:应用MatLab对语音信号进行 频谱分析及滤波 系: 学生: 班级: 学号: 成绩: 指导教师: 开课时间学年学期

目录 一.综合实验题目 (1) 二、综合实验目的和意义 (1) 2.1 综合实验目的 (1) 2.2 综合实验的意义 (1) 三.综合实验的主要容和要求 (1) 3.2 综合实验的要求: (2) 四.实验的原理 (2) 4.1 数字滤波器的概念 (2) 4.2 数字滤波器的分类 (2) (1)根据单位冲激响应h(n)的时间特性分类 (2) 五.实验的步骤 (3) 下面对各步骤加以具体说明。 5.1语音信号的采集 (3) 5.2 语音信号的频谱分析; (3) 5.3 设计数字滤波器和画出其频率响应 (5) 5.3.1设计数字滤波器的性能指标: (5) 5.3.2 用Matlab设计数字滤波器 (6) 5.6 设计系统界面 (19) 六、心得体会 (20) 参考文献: (21)

一.综合实验题目 应用MatLab对语音信号进行频谱分析及滤波 二、综合实验目的和意义 2.1 综合实验目的 为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。 2.2 综合实验的意义 语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。 语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。 三.综合实验的主要容和要求 3.1综合实验的主要容: 录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;综合实验应完成的工作: (1)语音信号的采集; (2)语音信号的频谱分析;

MATLAB语音信号采集与处理

MATLAB课程设计报告课题:语音信号采集与处理

目录 一、实践目的 (3) 二、实践原理: (3) 三、课题要求: (3) 四、MATLAB仿真 (4) 1、频谱分析: (4) 2、调制与解调: (5) 3、信号变化: (8) 快放: (8) 慢放: (8) 倒放: (8) 回声: (8) 男女变声: (9) 4、信号加噪 (10) 5、用窗函数法设计FIR滤波器 (11) FIR低通滤波器: (12) FIR高通滤波器: (13) FIR带通滤波: (14)

一、实践目的 本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。 此次实习课程主要是为了进一步熟悉对matlab软件的使用,以及学会利用matlab对声音信号这种实际问题进行处理,将理论应用于实际,加深对它的理解。 二、实践原理: 利用MATLAB对语音信号进行分析和处理,采集语音信号后,利用MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。语音信号的“短时谱”对于非平稳信号, 它是非周期的, 频谱随时间连续变化, 因此由傅里叶变换得到的频谱无法获知其在各个时刻的频谱特性。如果利用加窗的方法从语音流中取出其中一个短断, 再进行傅里叶变换, 就可以得到该语音的短时谱。 三、课题要求: ○1利用windows 自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。 ○2对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or 尖锐)。 ○3利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。 ○4对采集到的语音信号进行调制与解调,观测调制与解调前后信号的变化。 ○5实现语音信号的快放、慢放、倒放、回声、男女变声。

基于matlab的语音信号处理程序

wavefile='a.wav'; [y,fs,nbits]=wavread(wavefile);%读取信号,采样率和采样位数[10000,19999] sound(y,fs,nbits) fs %采样频率这里每秒22050,发现采样频率为音频信号的典型值22050Hz nbits Y=fft(y,1024);%数据点数 whos y figure(1), subplot(2,1,1),plot(y);title('原始信号波形');grid on subplot(2,1,2),plot(abs(Y));title('原始信号频谱'); grid on%横坐标频率,纵坐标振幅%subplot(3,1,3),plot(angle(Y));title('原始信号相位');grid on %双线性变换法设计的低通滤波器 fp=1000;%fp为通带频率 fc=1200;%fc为阻带起始频率 As=100;%As-阻带最小衰减(dB); Ap=1;%Ap-通带波纹(dB); fs1=fs; wp=2*fp/fs1;%wp-椭圆滤波器通带截止角频率; wc=2*fc/fs1;%Ws-椭圆滤波器阻带起始角频率; [n,wn]=ellipord(wp,wc,Ap,As); %n-椭圆滤波器最小阶数; [b,a]=ellip(n,Ap,As,wn);%返回长度为n+1的滤波器系数行向量b和a, b为分子a 为分母 figure(2),freqz(b,a,512,fs1); %数字滤波器的频率响应函数,512表示选取单位圆的上半圆等间距的N个点作为频响输出; x=filter(b,a,y);%一维数字滤波器,y2为滤波前输入,x为滤波结果序列 X=fft(x,1024); figure(3), subplot(2,1,1),plot(x);title('低通滤波后信号波形');grid on subplot(2,1,2),plot(abs(X));title('低通滤波后信号频谱');grid on sound(x,fs); %分析图形,比较滤波前后时域波形和频域频谱。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %短时能量 y=y*2^nbits/2; frameSize=256; overlap=128; %[y,fs,nbits]=wavReadInt(wavefile); fprintf('length of %s is %g sec.\n',wavefile,length(y)/fs);

MATLAB语音信号处理

基于MATLAB的语音信号采集与处理 一、实验的目的和要求 1. MATLAB软件功能简介 MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。 MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。 MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需求。例如解微分方程、傅里叶正反变换、拉普拉斯正反变换和z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入地理解理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。2. 本题目的意义 本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB 的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。 二、实验原理: 1.理论原理

如何利用matlab处理音频信号

Matlab处理音频信号 一、问题的提出:数字语音是信号的一种,我们处理数字语音信号,也就是对一种信号的处理,那信号是什么呢?信号是传递信息的函数。 一、问题的提出: 数字语音是信号的一种,我们处理数字语音信号,也就是对一种信号的处理,那信号是什么呢? 信号是传递信息的函数。离散时间信号%26mdash;%26mdash;序 列%26mdash;%26mdash;可以用图形来表示。 按信号特点的不同,信号可表示成一个或几个独立变量的函数。例如,图像信号就是空间位置(二元变量)的亮度函数。一维变量可以是时间,也可以是其他参量,习惯上将其看成时间。信号有以下几种: (1)连续时间信号:在连续时间范围内定义的信号,但信号的幅值可以是连续数值,也可以是离散数值。当幅值为连续这一特点情况下又常称为模拟信号。实际上连续时间信号与模拟信号常常通用,用以说明同一信号。 (2)离时间信号:时间为离散变量的信号,即独立变量时间被量化了。而幅度仍是连续变化的。 (3)数字信号:时间离散而幅度量化的信号。 语音信号是基于时间轴上的一维数字信号,在这里主要是对语音信号进行频域上的分析。在信号分析中,频域往往包含了更多的信息。对于频域来说,大概有8种波形可以让我们分析:矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余旋波,余旋平方波,高斯波。对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:将时域的波形转化到频域来分析。 于是,本课题就从频域的角度对信号进行分析,并通过分析频谱来设计出合适的滤波器。当然,这些过程的实现都是在MATLAB软件上进行的,MATLAB软件在数字信号处理上发挥了相当大的优势。

语音信号处理matlab仿真

语音信号处理的matlab设计仿真实验 彭杰12350049 12自动化 一、目的 通过利用matlab设计仿真实验,理解如下知识点: 信号的采样及混迭 信号的频谱分析 信号的幅度调制解调的方法 理想滤波器的时频域特性 数字滤波器的设计 二、内容 ①录制一段个人自己的语音信号。 ②采用合适的频率,对录制的信号进行采样,画出采样后语音信号的时域波形和频谱图。 ③给原始语音信号加噪声,画出加噪声后的语音信号和频谱图。 ④设计一个频域的理想带通信道。 ⑤对这个语音信号进行幅度调制,画出调制后的语音信号和频谱图。 ⑥利用理想带通信道对信号进行传输。 ⑦对接受到的信号进行解调,画出解调后的语音信号和频谱图。 ⑧设计性能良好的滤波器对信号进行滤波。 ⑨对语音进行回放,并与滤波后的语音信号进行对比。

三、实验设计与仿真结果 程序汇总如下:

1、原始语音信号的采集、读取与采样 利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。wavread 函数几种调用格式如下: ①y=wavread(file) 功能说明:读取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中。 首先用手机录制一段音频信号(手机音频格式一般为.mp3)。然后用软件将音频

基于MATLAB的有噪声的语音信号处理的课程设计

DSP实验课程设计实验报告 姓名:学号:班级: 1.课程设计题目: 基于MATLAB的有噪声的语音信号处理的课程设计。 2.课程设计的目的: 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,再利用MATLAB做为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。 3.课程设计的要求: (1)熟悉离散信号和系统的时域特性。 (2)掌握序列快速傅里叶变换FFT方法。 (3)学会MATLAB的使用,掌握MATLAB的程序设计方法。 (4)利用MATLAB对语音信号进行频谱分析。 (5)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法。 4.课程设计的内容: 录制一段语音信号,对语音信号进行频谱分析,利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析,设计FIR和IIR数字滤波器,并对噪声污染的语音信号进行滤波,分析滤波后的信号的时域和频域特征,回放语音信号。 5.课程设计的步骤: (1)语音信号的获取 通过录音软件录制一段语音“数字信号处理”,命名为“OriSound”,时长大约1到2秒,在MATLAB中,通过使用wavread函数,对语音进行采样: [y,fs,nbits]=wavread('OriSound'); %语音信号的采集 采样值放在向量y中,采样频率为fs,采样位数为nbits。

(2)语音信号的频谱分析 画出语音信号的时域波形,然后对语音信号进行频谱分析,在MATLAB中,通过使用fft 函数对信号进行快速傅里叶变换,得到信号的频谱特性。 因此采集语音并绘出波形和频谱的模块程序如下: [y,fs,nbits]=wavread('OriSound'); %语音信号的采集 sound(y,fs,nbits); %语音信号的播放 n=length(y) ; %计算语音信号的长度 Y=fft(y,n); %快速傅里叶变换 figure; subplot(2,1,1); %绘出时域波形 plot(y); title('原始信号波形','fontweight','bold'); axis([ 00000 80000 -1 1]); %通过尝试确定合适的坐标参数 grid; subplot(2,1,2); %绘出频域频谱 plot(abs(Y)); title('原始信号频谱','fontweight','bold'); axis([ 0 150000 0 4000]); %通过尝试确定合适的坐标参数 grid; 结果如下:

相关文档
相关文档 最新文档