MATLAB 课程设计说明书
摘 要
语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应
用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学
科紧密联系。
该设计主要介绍语音信号的采集与分析方法,通过 PC 机录制自己的
一段声音,运用 Matlab 提供的函数进行仿真分析,并画出采样后语音信
号的时域波形和频谱图,对所采集的语音信号加入干扰随机高斯噪声,
对加入噪声的信号进行播放,并进行时域和频谱分析;对比加噪前后的
时域图和频谱图,分析讨论采用什么样的滤波器进行滤除噪声。
关键词:语音信号;采集与分析;Matlab
I
目 录
摘 要 ....................................................... I
1 语音信号的录制 ............................................ 1
2 语音信号的采集 ............................................ 3
3 语音信号的分析 ............................................ 4
3.1 语音信号时域分析 ..................................... 4
3.2 语音信号频域分析 ..................................... 5
4 语音信号的加噪处理 ........................................ 7
5 滤噪设计分析 ............................................. 11
6 设计总结 ................................................. 12
参考文献 ................................................... 13
附录 ....................................................... 14
MATLAB 课程设计说明书
1 语音信号的录制
为了将原始模拟语音信号变为数字信号,必须经过采样和量化两个
步骤,从而得到时间和幅度上均为离散的数字语音信号。语音信号经过
预滤波和采样后,由 A/D 变换器变换为二址制数字码。这种防混叠滤波
通常与模数转换器做在一个集成块内,因此目前来说,语音信号的数字
化的质量还是有保证的。市面上购买到的普通声卡在这方面做的都很好,
语音声波通过话筒输入到声卡后直接获得的是经过防混叠滤波、A/D 变
换、量化处理的离散的数字信号。
将声卡作为对象处理采集语音信号 Matlab 将声卡作为对象处理,其
后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于
硬件设备(声卡)。操作时首先要对声卡产生一个模拟输入对象(ai),给
ai 对象添加一个通道设置采样频率后,就可以启动设备对象,开始采集数
据,采集完成后停止对象并删除对象。
实际工作中,我们可以利用 windows 自带的录音机录制语音文件,
图 1 是基于 PC 机的语音信号录制过程,声卡可以完成语音波形的 A/D 转
换,获得 WAVE 文件,为后续的处理储备原材料。调节录音机保存界面的
“更改”选项,可以存储各种格式的 WAVE 文件。
1
MATLAB 课程设计说明书
声音
麦克风
声卡
滤波
采样
A/D 转换
Wav
Windows 自带的录音机
图 1.1 基于 PC 机的语音信号录制过程
录制过程:打开电脑左下角的程序——附件——娱乐——录音机
图 1.2 PC 自带的录音机录音
本设计录制自己的一段语音,内容:“郑州轻工业学院 电气信息工
程学院,电子信息工程”,时长 6 秒 14,保存在 C 盘 命名为“yuyin”
格式为.WAV。
2
MATLAB 课程设计说明书
2 语音信号的采集
配置好数据采集设备的参数后,使用 start 命令便可启动声卡开始
语音信号的采集。采集到的数据被暂时存放在 PC 机的内存里,理论上可
采集的最大数据量是由 PC 机的内存容量决定的,这一点相对于一般的数
据采集系统而言有较强的优势。MATLAB 还可以记录采集过程中出现错误,
如出错的时间、错误产生的来源以及数据采集设备的状态等信息都会被
记录下来作为以后工作的参考。
如图 2.1 所示,语音采集子系统是通过 PC 录音机 Realtek AC’97
型声卡和 Matlab 的数据采集工具箱实现的。其中 Realtek AC’97 型声
卡的采样位数为 16 位,支持 8~44.1kHz 的采样速率,可以满足语音采集
的硬件要求[1]。Matlab 自带的数据采集工具箱里面,提供了专门用于
语音采集的命令和函数。数据采集的硬件设备的内部特性对 Matlab 的接
口完全是透明的,通过调用 Matlab 提供的语音采集函数和命令可以对其
进行访问。而且,Matlab 可以对其采集的数据进行实时的分析,也可在
存储后再进行处理。
话筒
数据采集设备
(声卡)
MATLAB 语 音 采
集工具箱
图 2.1 语音信号采集框图
3
MATLAB 课程设计说明书
3 语音信号的分析
3.1 语音信号时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。进行语
音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本
身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分
析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最
基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析
方法的特点是:①表示语音信号比较直观、物理意义明确。②实现起来
比较简单、运算且少。③可以得到语音的一些重要的参数。④只使用示
波器等通用设备,使用较为简单等。
ATLAB 数据采集箱中提供的函数命令进行图像分析的函数命令:
wavrecord
:
wavrecord 利用 Windows 音频输入设备记录声音,
其调用形式为:wavrecord
(n ,fs ,ch) 。利用 Windows 音频输入设
备记录 n 个音频采样, 频率为 fs Hz
,通道数为 ch。采样值返回到一
个大小为 n*ch 的矩阵中。缺省时,fs
=
11025
,ch
=
1。
waveplay:
waveplay 利用 Windows 音频输出设备播放声音,其调
用形为:waveplay(y
,fs) 。以采样频率 fs 向 Windows 音频设备发
送向量信号。标准的音频采样率有:8000、11025、22050 和 44100Hz。
wavread
:wavread 用于读取 Microsoft 的扩展名为“.wav”的
声音文件。其调用形式为:
y
=
wavread
(file) 。其作用是从字
符串 file 所指的文件路径读取 wave 文件,将读取的采样数据送到
y 中。Y 的取值范围:
[
-1 ,1
] 。
sound:音频信号是以向量的形式表示声音采样的。sound 函数用于
4
MATLAB 课程设计说明书
将向量转换为声音,其调用形式为:sound
(y
,fs)
,作用是向扬声器
送出向量 y 中的音频信号(采样频率为 fs) 。
通过 Wavread 和 plot(x)函数即可显示图像的时域波形。
图 3.1 原始语音信号的时域波形
3.2 语音信号频域分析
语音信号的频域分析就是分析语音信号的频域持征。从广义上讲,
语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络
分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线
件预测法等几种。本文介绍的是语音信号的傅里叶分析法。因为语音波
是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里
叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信
号的频谱进行分析,相应的频谱称为“短时谱 ”
5
MATLAB 课程设计说明书
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.2 原始语音信号的频谱
6