matlab怎么把音频变成信号_matlab处理音频信号33

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

一、 问题的提出:

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

信号是传递信息的函数。离散时间信号%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 +

你可能感兴趣的:(matlab怎么把音频变成信号)