阙大顺,王虹,杨杰
摘要:针对语音信号分析与处理的特点,利用Matlab开发了通用语音信号处理虚拟实验平台,可完成语音信号的采集、预处理、语音分析和语音处理等功能及其结果显示。阐述了系统总体设计思路,给出了多种语音分析和处理的功能实现举例。整个系统界面友好,且具有易扩展的特点。实践证明,该平台可使学生更好地理解和掌握课程的基本理论,有利于提高学生的分析问题能力和综合实践能力,培养学生创新意识。
关键词:语音处理;虚拟实验;Matlab;图形用户界面GUI
中图分类号:TN911.72 文献标志码:A 文章编号:1674-9324(2012)01-0203-02
一、引言
语音信号处理是以语音语言学和数字信号处理等为基础的涉及面很广的交叉学科,是许多信息领域应用的核心技术之一。目前高校中的语音信号处理课程主要从基础理论、算法实现及实际应用等几个方面来展开教学。由于该课程的理论涵盖面广、数学公式推导较多,学生学习理论知识会显得枯燥难懂,且感觉理论和实际应用脱节。针对这种情况,本文利用美国NI公司的图形化虚拟仪器开发平台Matlab/Simulink,完成了语音信号处理的虚拟实验仿真平台设计。借助该平台,学生能较为完整的深化学习该门课程的基础理论,扎实掌握课程的知识网络结构,探索语音信号处理算法的实现方法,同时能将语音信号处理系统的各个部分内容有机地衔接起来,极大地方便了学生进行语音信号处理的学习,有利于学生对理论算法的理解,加强了动手能力,提高了学习的主动性,有助于学生创新综合能力的培养。
二、实验平台总体设计
本实验平台采用图形化虚拟仪器开发平台Matlab/Simulink,它是一种图标代替文本行创建应用程序的图形化编程语言,Matlab采用基于流程图的图形化编程方式,它编程简单、易于理解、效率高,针对数据采集、仪器控制、信号分析和数据处理等任务,设计提供了丰富完善的功能图标,且能解决极其复杂的数值运算。语音信号处理包含语音信号的数字表达方法、语音信号的数字处理的各种方法以及语音处理理论和技术应用等三个方面的内容。开发的实验平台结构框图如图1所示。
实验平台的语音信号采集由语音采集卡、调理电路和PC机接口组成,也可由麦克风和声卡将接受的语音信号经COOL EDIT或Praat等语音编辑软件来完成,以形成待处理的音频文件,再进行预加重、端点检测等语音预处理,然后完成语音信号分析、特征参数提取和语音信号处理及应用等实验。
三、实验平台功能实现举例
语音信号在Matlab下对信号分析算法和处理算法进行调试,无误后导入matlab Script节点中。设计完成的虚拟实验平台界面如图2所示。
程序运行时,用户可通过编辑设计用户菜单,点击菜单栏中的下拉菜单选项,程序会自动弹出相应的前面板,选择好文件路径,程序将对语音数据进行分析,同时实时显示分析处理结果。
1.端点检测实验的功能实现。语音预处理的端点检测常用的方法是双门限法,利用短时能量和短时过零率参数来实现。由于语音的起点可能是能量很弱的清辅音,此时不能用能量来区别这种清辅音和无声,必须采用过零率。搜索过零率的时间少于要一个语音帧的长度。图3为端点检测VI。当程序运行时选择待分析的语音信号,“验证数组操作”中显示信号时域波形,“短时能量”和“过零率”即为该语音的对应参数显示。利用短时能量检测的语音端点显示在“端点帧数”表格中。
2.基音周期检测实验的功能实现。根据语音信号的短时平均幅度差函数来确定基音周期,图4为基音周期检测的前面板设计。“短时平均幅度差”显示语音信号的平均幅度差函数,检测得到的浊音周期在“基音周期”表格中显示出来。
3.倒谱分析实验的功能实现。倒谱定义为信号短时振幅谱的对数傅里叶反变换,倒谱域中基音信息与声道信息相对分离,采取简单的倒滤波方法可以分离并恢复出声门脉冲激励和声道响应,并求出基音周期和共振峰。图5为倒谱法求语音的共振峰的前面板。
4.频谱分析实验的功能实现。调用Matlab中的谱分析函数模块,先对语音信号进行分帧,再将分帧后的语音信号数据转换为波形数据类型,采样率为8kHz。频谱子VI前面板,如图6所示。
利用谱分析中的“STFT时频图”模块,可对分帧语音信号进行联合时频分析,通过改变前面板中频域窗长,可实现宽带和窄带语谱图的仿真实现。
5.孤立词识别实验的功能实现。基于HMM模型的孤立词识别原理框图,如图7所示。语音识别系统底层由语音输入模块、预处理模块、特征提取模块、识别模块以及训练模块等5部分组成。
在语音采集过程中,以0~9这10个数字作为实验对象,每个语音有200份样本,分别来自10位男生和10位女生,每个数字每人采集10份,共得到2000个语音样本。同样将实验数据分为三组:第一组用于训练,选择8位女生和7位男生作为参与训练的人,每人每个数字取2份,共计300份语音样本;第二组用于检测系统的识别率,由15个参与训练的人的剩下的语音构成;第三组用于检测系统的识别率,由未参与训练的5个人的语音组成。
实验中点击系统“语音识别”的二级菜单中的“输入语音”菜单,可以通过麦克风录音,如数字“0”;然后完成语音信号的分帧和端点检测等“预处理”;“特征提取”模块可完成对语音信号特征参数的提取,本实验提取的是12维MFCC及其12维一阶导数,共24维,这样可以反映语音信号的静态和动态特征;“识别”模块完成对所录入的语音和模板库内的语音的匹配,选择累计概率最大的一个作为识别结果。对录入数字“0”的识别结果的输出界面如图8所示。
重复上述过程,可完成数字语音0~9的孤立词识别。通过实验分析,可进一步完成系统对参与训练人的语音识别与第三组中未参与训练人的识别率的统计结果比较。
本文设计完成了一种运用Matlab图形化编程环境进行语音信号处理的虚拟实验平台,能很好地结合学生的书本理论,方便地完成对语音信号的采集、预处理、语音分析和语音处理等功能及其结果显示。系统具有用户界面简洁和易于扩展实验功能的特点。
参考文献:
[1]赵力.语音信号处理(第2版)[M].北京:机械工业出版社,2009.
[2]张志涌,杨祖樱.MATLAB教程[M].北京:北京航空航天大学版社,2010.
[3]张德丰.MATLAB/Simulink建模与仿真[M].北京:电子工业出版社,2009.
课题项目:湖北省高等学校省级教学研究项目“大学生研究性学习与创新性实验研究”(20070089)
作者简介:阙大顺(1963-),男,教授,博士,主要研究方向为信号与信息处理的科研与教学。