- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字语音处理实指导书-通信12
第9章 数字语音处理的MATLAB实现
9.1 语音信号的采集
数字语音处理是利用数字信号处理技术对语音信号进行处理的一门学科。但是实际的语音信号是模拟信号,所以在处理前需要对语音信号进行数字化。可以通过两种方式获得数字化的语音文件。一种方式是语音研究机构提供的标准的语音数据库;另一种方式是人们通过声卡将来自麦克风的语音录入计算机,并转换成数字语音信号。MATLAB提供了一系列函数,可以借助计算机上的声卡实现对语音的录入和放音,以及对语音数据的读写。下面介绍其中常用的一些函数,并配以具体的实例。
9.1.1 语音信号采集的相关MATLAB函数
1. wavrecord
该函数利用PC机上的音频输入设备完成音频的记录,常用调用格式如下:
y = wavrecord(n,Fs,ch,dtype)
说明:n为采样的点数,;Fs为采样频率,默认值是11025Hz;ch为通道数,可以取1或2,分别对应单声道或立体声,默认值是1;dtype为采样数据的存储格式,可以取double、single、int16或uint8,默认值是double。
2. wavwrite
该函数完成WAV文件的写操作,其调用格式如下:
wavwrite(y,filename)
wavwrite(y,Fs,filename)
wavwrite(y,Fs,N,filename)
说明:变量y代表要写入文件名为filename的WAV文件的数据;Fs为WAV文件中数据的采样频率,默认值为8000Hz;N为WAV文件中每个数据的比特数,可以取8、16、24或32,默认值为16。
3. soundview
该函数通过音频输出设备对语音进行回放,并同时弹出一个GUI界面显示回放的语音数据。利用该函数可以快速检验数据的可靠性,其调用格式如下:
soundview(filename)
soundview(y,Fs)
soundview(y,Fs,name)
说明:filename代表要回放的语音文件名,y代表要回放的变量名,Fs为该变量的采样频率,name代表指定的GUI窗口的标题。
4. wavread
该函数完成WAV文件的读操作,常用的调用格式如下:
y = wavread(filename)
[y,Fs,bits] = wavread(filename)
说明:y代表从文件名为filename的WAV文件中读出的数据,Fs为WAV文件中数据的采样频率,bits为WAV文件中每个数据的比特数。
9.1.2 用MATLAB实现语音信号的采集及回放举例
[例9-1] 语音信号的采集及回放
clear;
Fs=11025;
y=wavrecord(5*Fs,Fs,double);
wavwrite(y,D:\\a);
soundview(y,Fs);
这段代码利用11025Hz的采样频率对输入的语音信号进行采样,采样点数为55125个,持续时间为5秒,存储格式为double。之后将数字语音数据写入D盘的a.wav文件,并通过放音设备进行回放。回放的GUI界面如图9.1所示,通过该界面可以观察采集的语音信号。
图9.1 用soundview函数显示的字母“a”
9.2 语音信号的预处理
对语音信号数字化之后,为了更好的对语音信号进行分析,需要对语音信号进行预处理。主要的预处理工作包括:预加重和分帧加窗。
9.2.1 预加重
预加重的目的是提升语音信号的高频部分,增加语音的高频分辨率。预加重可以通过一个一阶高通滤波器来实现,该滤波器的传递函数为
其中为预加重系数,。MATLAB提供了滤波器的频率响应函数:freqz函数,利用该函数可以非常方便的实现对语音信号的预加重。
9.2.2 分帧加窗
语音信号具有短时平稳性,因此需要把语音信号分为一段一段来分析其特性,每一段称为“一帧”,帧长一般取为10-30ms。为了对语音信号进行分帧处理,本章采用了VOICEBOX工具箱中的enframe函数。VOICEBOX工具箱是一个MATLAB语音处理工具箱(该工具箱是一个基于GNU协议的自由软件),可以通过网址:http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html来下载。将该工具箱的目录加载到MATLAB的搜索路径后,就可以使用其中的函数了。函数enframe的常用调用格式如下:
f = enframe(X,LEN,INC)
说明:该调用格式实现的是对输入变量X的交叠分帧,LEN代表帧长、INC代表帧移,返回矩阵f的每一行对应一帧数据。
在分帧的同时常常根据不同的应用给每一帧加上一个窗,常用的窗函数是矩形窗和汉宁窗。利用函数enframe对语音进行分帧可以理解为直接加上了矩形窗;如果希望对语音信号加汉宁窗可以利用函数hamm
文档评论(0)