APP下载

面向本科教育的语音情感识别实验设计与实现

2018-09-28唐闺臣梁瑞宇

大学教育 2018年9期
关键词:特征向量信号处理语音

唐闺臣 梁瑞宇 王 杰

(1.南京工程学院通信工程学院,江苏 南京 211167;2.广州大学机械与电气工程学院,广东 广州 510006)

语音信号处理是用数字信号处理技术和语音学知识对语音信号进行处理的一门新兴学科,是一门理论性强、实用面广、内容新、难度大的交叉学科[1][2]。语音信号处理作为信息处理专业的一门重要的专业课,所涉及的理论知识较多。从应用方面来说,包括语音增强、语音编码、语音合成、语音识别、说话人识别、情感识别[3]、语音隐藏、声源定位等。围绕着这些应用,该课程还会涉及一些相关理论,如矢量量化、隐马尔科夫模型、高斯混合模型,支撑向量机等。因此,如何激发学生的学习兴趣,让学生从枯燥的理论中走出来,是提升课堂教学质量的关键。

当今世界科技水平高速发展,人们也对计算机提出了更多要求。在人机交互系统中,语音情感识别已成为关键技术之一,对语音信号的情感分析,使得人机交互更加流畅[4]。智能人机交互系统通过对操作者的情感进行分析,可以更主动、更准确的去完成操作者的指示,并实时调整对话的方式,使交流变得更加友好、和谐和智能。此外,在单调的、高强度的任务中,执行人员的某些负面情绪监测具有使用价值,有效的识别这些负面情绪,有助于提高个体认知和工作效率,减少影响认知和工作能力的因素。因此,对语音信号情感识别的研究具有重要意义。

目前,很多高校语音信号处理的授课时间在32到48学时之间。在短暂的课堂授课时间内,要想使学生对各种应用有所了解,并从中选择一到两种进行深入研究是一件非常困难的事。为此,很多高校都会增加实验环节,让学生对课堂内容进行巩固和吸收[5][6]。目前,语音信号处理实验主要以MATLAB仿真为主[7],其目的在于快速帮助学生理解理论知识。

为此,综合目前语音研究的热点问题以及语音信号处理的教学现状,本文以语音情感识别实验为例,以MATLAB为实验平台,介绍了面向本科教育的语音实验的设计与实现。在前期基础实验的基础上,语音情感识别实验分为特征提取,模式识别算法两大部分,通过原理讲解,实例参考,过程解析,由浅入深地引导学生完成整个实验过程。实验效果显示,相比于枯燥的理论实验,有一定应用背景的实验更能激发学生的学习热情,提升教学质量。

一、语音信号处理课程设置

针对语音信号处理的重点内容,以48学时课程为例,将语音信号处理课程设置为理论教学(36课时)、实验教学(12课时)和综合课题三个组成部分。理论教学注重培养学生基本问题的分析方法,从而掌握基本的语音信号处理的理论与概念。教学形式多样,包括网上学习、课外阅读、大型作业、主题调查、读书报告、分组讨论等。对语音信号的原理与方法,课堂教学尽可能用简明、通俗的语言,以深入浅出、通俗易懂的方式讲解,并借助Flash动画、语音样本等形式展现出来。

语音实验共包含6种。1.语音采集与预处理实验。开设目的:让学生了解MATLAB采集语音信号的原理及常用命令,熟练掌握基于MATLAB的语音文件的创建与读写等基本操作,学会使用Plot命令来显示语音信号波形并掌握基本的标注方法,掌握语音信号的预处理方法。2.语音信号时域特征分析实验。实验目的:让学生了解语音信号分帧与加窗的重要性和必要性,掌握常用的窗函数和加窗分帧处理的原理,能编程实现分帧函数并恢复,掌握短时时域分析的一些参数计算方法,了解短时傅里叶变换的原理并编程实现短时傅里叶函数,了解语谱图的意义和表现方法并编程实现。3.倒谱分析与MFCC系数实验。开设目的:让学生了解语音信号倒谱分析的意义,掌握语音信号倒谱和复倒谱分析的原理,编程实现倒谱和复倒谱计算函数。4.语音端点检测实验。开设目的:让学生了解线性预测分析在语音信号处理中的重要性和必要性,掌握线性预测分析的基本思想,掌握MATLAB进行线性预测分析的流程。5.语音基音周期检测实验。开设目的:让学生了解语音端点检测的重要性和必要性,掌握基于双门限法、相关法、谱熵法、比例法的语音端点检测原理,编程实现基于双门限法、相关法、谱熵法、比例法的语音端点检测函数。6.语音信号处理应用实验。开设目的:让学生了解K近邻分类算法的原理,掌握基于K近邻分类算法的情感识别基本过程,应用MATLAB实现基于K近邻分类算法的情感识别。

这6种实验中前5种以偏重基础为主,并不涉及明确的语音信号处理应用背景;第6个实验以应用为主,注重培养学生的动手能力。这样设置的目的是既让学生掌握语音信号处理的基本方法,又注意培养学生的研究兴趣。下面以语音信号处理中的语音情感分析应用实验为例,介绍语音实验的设置。

二、语音情感分析原理

(一)特征提取

根据语音信号具有短时平稳性,可以对语音信号进行处理提取所需的特征参数。对语音信号进行加窗分帧处理,能够有效利用语音信号的短时平稳性进行特征提取和分析。加窗即把原始的语音信号与特定的窗函数相乘得到加窗语音信号。

重要的与情感相关的语音特征有很多种,主要包括基音频率、共振峰、美尔倒谱系数(MFCC)等。这些都是重要的语音特征,在语音增强[8]、语音编码、语音合成、语音识别、说话人识别[9]、情感识别、语音隐藏、声源定位等领域都有着广泛而重要的应用,尤其对汉语更是如此。基音周期是语音信号处理中描述激励源的重要参数之一。人在发浊音时,气流通过声门使声带产生张弛振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期。目前的基音检测算法主要有自相关函数法、平均幅度差函数法、倒谱法,以及在以上算法基础上的一些改进算法。

而共振峰是指在声音的频谱中能量相对集中的一些区域,共振峰不但是音质的决定因素,而且反映了声道(共振腔)的物理特征。共振峰的本义是指声腔的共鸣频率。与基音提取相似,共振峰估计也被许多问题所困扰,包括虚假峰值、共振峰合并、高基音语音等,其主要求法包括倒谱法和LPC法等。

MFCC是从Mel频率刻度域中提取出的倒谱参数,可以通过人耳的听觉原理对其进行分析。它与声音频率的具体关系可近似表示为:

其中,f表示声音频率,单位为Hz。

MFCC的提取过程为:1.对原始语音信号进行分帧加窗预处理;2.将预处理后的信号进行离散傅里叶变换(DFT),从而得到语音帧的短时频谱;3.将短时频谱的幅度值通过Mel滤波器组进行加权滤波处理;4.对Mel滤波器组的全部输出值进行一个求对数计算;5.将经过求对数计算后得到的值进行离散余弦变换(DCT),从而得到MFCC。

综合几种常用的语音特征,本实验选择的各种特征如表1所示。

表1 语音情感特征构成

(二)情感分类算法

考虑到学生的知识点和课时较短的问题,实验须选用一些易于实现和理解的算法。为此,实验选择了K近邻(k-Nearest Neighbor,KNN)分类算法用来情感识别。

K近邻(k-Nearest Neighbor,KNN)分类算法,是一种较为简单直观的分类方法[10],但在语音情感识别中表现出的性能却很好。KNN分类器的分类思想是:给定一个在特征空间中的待分类的样本,如果其附近的K个最邻近的样本中的大多数属于某一个类别,那么当前待分类的样本也属于这个类别。在KNN分类器中,样本点附近的K个近邻都是已经正确分类的对象。在分类决策上只依据最邻近的一个或者几个样本的类别信息来决定待分类的样本应该归属的类别。KNN分类器虽然原理上也依赖于极限定理,但在实际分类中,仅同少量的相邻样本有关,而不是靠计算类别所在特征空间区域。因此对于类别域交叉重叠较多的分类问题来说,KNN方法具有优势。

设待分类样本的特征参数为X,已知类别的训练样本集样本的特征参数集为{X1,X2,X3,…,Xn};对于待测样本X,计算其与{X1,X2,X3,…,Xn}中每一样本的欧式距离D(X,Xl),l=1,2,…,n,即:

其中,N代表特征向量的维数。min{D(X,Xl)}称为X的最近邻,而将D(X,Xl)从小到大排列后的前K个值称为X的K近邻。分析K近邻中属于哪一类别的个数最多,则将X归于该类。

KNN算法大致可分为如下四步。

(1)由特征提取函数提取训练样本的特征向量,构成训练样本特征向量集合{X1,X2,X3,…,Xn}。

(2)设定算法中K的值。K值的确定没有一个统一的方法(根据具体问题选取的K值可能有较大的区别)。一般方法是先确定一个初始值,然后根据实验结果不断调试,最终达到最优。

(3)利用特征向量提取函数提取待测样本的特征向量X,并计算X与{X1,X2,X3,…,Xn}中每一样本的欧式距离D(X,Xl),l=1,2,…,n。

(4)统计D(X,Xl),l=1,2,…,n中K个最近邻的类别信息,给出X的分类结果。

实际程序中,我们将训练样本集的特征提取与待测样本的特征提出合并一起,得到总特征向量集合,然后划分出训练样本集和待测样本集,以提高测试时的效率。

三、实验设置

为了突出实验效果,实验选择了情感研究比较著名的数据库——柏林数据库。柏林数据库在语音情感识别领域使用广泛,许多语音情感识别研究成果均在柏林库上进行验证。它包含了生气、无聊、厌恶、恐惧、喜悦、中性和悲伤等语音情感类别,情感语音样本采用表演的方式获得,并由初期的语料录制以及后期的人耳辨别测试最终保存了不到500句质量较高的语料样本构成柏林语音情感库。实验选取柏林库中五类情感每种情感各50个样本共250个样本作为实验用的情感语料库。其中125句为训练样本,其余125句为待测样本。

整个实验的思路:编写特征提取函数→提取语音文件的特征向量→实现KNN分类算法→给出识别结果。

具体实验步骤:1.根据编写好的特征提取函数,提取相应情感语音的特征向量并保存成各自的mat文件,将这些mat文件放入到与主程序相同的路径下;2.根据算法原理编写主程序,主程序功能包括构建训练样本集和待测样本集,设定K值实现KNN算法以及显示识别结果;3.运行主程序,分析实验结果,并选取不同的K值多次测试,对比各自的分类效果,大致确定最优的K值。

说明:1.程序中首先将同文件下的不同情感的mat文件读入工作区,将这些情感特征分成待测类和识别类;2.k值的选取可根据使用情况多次试验调整。

四、总结

针对目前语音信号处理课程偏重于理论教学的现状,为适应目前情感识别研究的热点,本文研究并设计了语音情感识别实验。实验提取了常用的语音特征,并采用易学的KNN算法在通用的数据库上进行实验验证。研究显示,面向应用的语音实验设置,可以有效提高学生的学习热情,改善学生的学习效果。

猜你喜欢

特征向量信号处理语音
包装过程称量信号处理方法研究
克罗内克积的特征向量
高中数学特征值和特征向量解题策略
微信语音恐惧症
魔力语音
Magic Phonetics魔力语音
对方正在输入……
三个高阶微分方程的解法研究
矩阵方法求一类数列的通项