Advertisement

matlab音频信号处理实验报告,matlab音频信号处理实验报告.docx

阅读量:

本实验报告为南昌航空大学信息工程学院课程实验报告之一,主要内容为利用MATLAB进行音频信号处理的实验研究。实验目的是加深对DFT算法原理和FFT算法的理解,并掌握音频信号各参数的意义及低通滤波器的设计方法。具体实验内容包括:对音频信号进行谱分析;对音频信号进行放大或衰减;对音频信号加入噪声并去掉噪声处理;通过MATLAB软件实现上述操作,并验证理论知识的应用效果。

matlab音频信号处理实验报告

MATLAB音频信号处理实验

南昌航空大学信息工程学院

课程实验报告

实验名称:实验时间:2014年4月23日 指导教师: 班级: 学号:

姓名: 成绩: 南昌航空大学实验报告

2014年4月23日

课程名称:数字信号处理实验名称:音频信号处理 班级:

姓名:学号:

姓名:学号:

指导老师评定:签名:

一、实验目的

进一步加深DFT算法原理和基本性质的理解;

熟悉FFT算法原理;

理解掌握音频信号各参数的意义;

设计低通滤波器。

二、实验内容

对一个音频信号用FFT进行谱分析;

对该音频信号进行放大或衰减;

对该音频信号加入噪声与去掉噪声处理。

三、实验原理

语音信号是基于时间轴上的一维数字信号,在这里主要是对语

语音信号在频域范围内进行分析。在信号分析领域中,在频域中通常会包含额外的信息细节。对于各种不同的波形形态,在时域和频域之间都可以应用傅里叶变换:这种数学工具能够将时变的时域波形转换至频域范围内进行研究和处理。本实验将从频率维度对信号进行详细分析,并通过研究频谱特性来优化相应的滤波器设计方案。当然这些过程的具体实现均是在MATLAB软件平台上完成的。

MATLAB软件在数字信号处理上发挥了相当大的优势。

1 ?语音信号的读取

[y/fs/bits]=wavread('Blip'/[Nl N2]);用于读取语音,采样

值放在向量y中,fs表示采样频率(Hz), bits表示采样位数。[N1 N2]

表示读取从N1点到N2点的值(若只有一个N的点则表示读取前

N点的采样值)。

2 ?语音信号的播放

sound(x,fs,bits);用于对声音的回放。

sound(x,fs,bits);用于对声音的回放。

向量y则就代表了一个信

该标识表示一个具有高复杂度的函数公式;即是说,在对信号进行分析的过程中,我们可以将此声音信号视为相应的公式来进行处理。

3.FFT 的 MATLAB 实现

在MATLAB的信号处理工具箱中定义了fftifft两个核心函数用于执行快速傅里叶变换与逆变换操作。其中fft算法特别适用于对连续信号进行高效频域分析;而另一个关键功能是能够实现任意长度数据块的频率成分提取计算。

种调用格式为y=fft(x)/其中,

x是序列,y是序列的FFT, x可以为一向量或矩阵,若x为一向

y是x的快速傅里叶变换(FFT),其大小与x具有相同的长度。当输入数据为二维或多维数组时,默认情况下会对每个列向量分别计算其快速傅里叶变换得到结果数组y。具体而言,在输入序列长度为2^m形式时,默认会采用基2优化方案实现快速傅里叶变换算法;而对于其他长度序列,则会使用混合基离散傅立叶变换算法来完成运算任务。需要注意的是,在这种情况下计算速度可能会相应降低。

y=fft(x/N)/式中,x, y意义同前,N为正整数。函数执行N点的

FFTo若x为向量且长度小于N,则函数将x补零至长度N。若向

当量x的长度超过N时,则该函数会对x进行截断使其长度降至N。* 如果x是一个矩阵,则采用同样的方法对其进行处理。* 经过傅里叶变换计算得到的序列y通常是复数序列**(complex sequence),因此通常需要提取其幅度(magnitude)和相位(phase)信息。* MATLAB提供了用于计算复数幅度和相位的相关函数(functions)。

abs, angle,这些函数一般和FFT同时使用。函数abs(x)用于计算

复向量x的幅值,函数angle(x)用于计算复向量的相角,以弧度表

本实验的语音信号是通过查找电脑系统存在的语音信号所

得,ding.wav信号的比特率为176bps.

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

figure(l);

plot(Sl);

title('原始信号波形');

figure(2);

plot(abs(F));

title('原始信号频谱'

);

图1原始信号波形

图2原始信号频谱

在放大后的声音中未能呈现图形,在此情况下经由听音认证证实相应地证实了声音确有增强。由此可见,在乘以一个系数的情况下可实现该方法。

S2 = S1 * 4; %对语音信号进行放大

wavwrite(S2/22000,8/'dingaloud.wav');% 生成放大后的 语音信号

%sound(S2);

在本实验中,生成噪声的方法通过语音信号的调制实现。经调制后的语音 signal 被视为高频 signal。因此可以将此作为 noise source 并将其与原始 signal 进行叠加。这样处理后得到的就是经过加噪处理后的数据。代码如下:

fc=10000; %载波频率

yl=modulate(Sl/fc/fs/'fm'); %对原语音信号调制

Yl=fft(yb40000); %采样点数 40000

figure(3);

s子图的第一个区域中绘制yl序列的曲线图形;设置图形窗口的第一个子图标题为"调制后信号波形";s子图的第二个区域中绘制Yl绝对值序列的曲线图形;设置图形窗口的第二个子图标题为"调制后信号频谱"

%sound(yl); %播放调制后的语音信号

调制后的信号为高频信号,故波形很密,如下图:

图3调制后的信号和频谱

全部评论 (0)

还没有任何评论哟~