基于神经网络的说话人识别实验设计

2020-10-30 08:23瑶,晓,b
实验室研究与探索 2020年9期
关键词:实验者权值语音

杨 瑶, 陈 晓,b

(南京信息工程大学a.电子与信息工程学院;b.江苏省大气环境与装备技术协同创新中心,南京210044)

0 引 言

说话人识别是通过对说话人语音信号分析自动确定说话人是谁的过程[1-2]。由于语音特征的特殊性,很难在目前实验中看到关于语音的案例或实验。然而,语言在极大程度上增加了人们的交流互动,深入语音信号的研究也越来越受到人们的关注[3]。神经网络是由若干个神经元组成的一个错综复杂的网络系统,是一种既有多层式的,又不断向前进行反馈的网络,广泛运用于各个方面,很强的非线性能力、容错能力、泛化能力和自适应能力,且其是通过逆传播算法来实现的,所以又被称为误差逆向传播神经网络[4]。神经网络的研究范围较广,体现了许多学科结合交叉的特点。而人工智能课程实验,可以帮助学生更好地探讨人工智能算法和系统的运行和实现过程。目前高校在教学过程中,都相对比较重视实际动手的操作能力,只有开展相对的实验课程,让学生更好地参与到整个教学过程中,主动思考,从而提高学习能力和创新能力[5]。

本文设计了说话人的语音识别实验,采用BP 神经网络对语音信号进行分类。实验过程中采取实验者的训练语音和测试语音,先对输入语音进行预处理,提取特征参数MFCC,BP 算法对语音特征向量进行训练,进而获得有效的网络权值[6]。用训练好的BP 神经网络对说话人的语音归类,从而识别出说话人身份。实验时既可用训练好的网络直接进行说话人识别的验证性实验,也可作为创新性实验,由学生自行设计并编程实现神经网络来进行说话人识别。实验训练和测试样本也可以由学生自行采集完成。

1 实验基本原理

1.1 说话人识别原理

表示语音信号个性的特征参数有LPCC、LPC、MFCC和DWTC[7]。对语音信号可以通过两方面进行分析:①时域过程中的语音信号。运用短时间内的能量函数判断一段语音信号中有、无声音的区间,判断该声音的清浊。②结合以上几个特征参数判断语音信号起始点和终止点的位置,进行对能量的门限调整,就是实现对各端点进行检测的过程。而后,在频域的范围内对语音进行分析处理,则需要分析信号的频谱值、倒谱值、功率谱值以及将不同频率的振幅中最高的那个点进行连接;并且在频域过程中,实验经常采用通过带通滤波器的方法和对其进行傅里叶的变换方法进行分析处理[8]。

说话者身份确认的实验过程就是从说话者的一段语音中,提取出表现其特征的参数,将参数进行一定的处理分析,从而得出测试者的身份。根据实验者声音处理的目的不同,可以分为对实验者的辨认和对实验者的确认,一个说话者的识别系统可以分成①训练过程,②测试过程,如图1 所示。

图1 说话人识别典型结构

1.1.1 数据预处理

首先将语音信号数字化,随后对输入的语音信号进行预加重、去噪、分帧、加窗以及端点检测等处理[9]。

(1)预加重。为了使参与实验的语音信号更加稳定,处于高低的频率之间,也可以减少噪声所带来的影响。

(2)分帧。将一大段信号分解成一小段一小段的操作过程,称这一小段为“帧”,通常情况下帧的长度为(10 ~30)×106s[10]。

(3)加窗。使信号能够在一定的范围内,让整个语音系统的语音信号更加连续,并且在进行加窗的操作后,让原本没有周期的语音信号能够表现出部分的周期特征。对可移动的有限长度窗口进行加权。

(4)检测端点。端点检测主要分两步走,①先通过一定的操作方法分割出语音信号中无声、有声部分;②选取有声部分片段作为处理的实验对象,根据语音信号的个性特征进行判断,从而确定其起始点和终止点。

1.1.2 提取MFCC参数

提取特征[11]的任务是去掉所输入语音信号里无用的冗余信息,并从输入的一段说话人语音信号中提取可代表其个性特征的参数,本文主要涉及的特征参数是梅尔倒谱系数(Mel Frequency Cepstrum Coefficient,MFCC)[12]。MFCC的提出是以听觉的模型为基础,不同于LPCC和LPC,且根据研究表明,MFCC参数的性能是超越LPCC的。实验提取MFCC主要过程[13]为:①用mel 滤波器进行实验需要的处理步骤,将各系数进行归一处理;②对倒谱的提升窗口也归一;③由输入语音信号实施起始点和最终点;④处理大段语音信号,分成一小部分的语音片段,并求各部分的参数;⑤合并参数的一阶差分值和所求值;⑥取出合适范围内的MFCC系数。

MFCC特征区分于其他倒谱特征的显著特点是其拥有不均匀划分的频率轴,MFCC 系数的计算步骤如下[14]:①先输入待实验的语音;②提取的实验者待测试的信号,对其进行预加重、分帧、加窗处理;③对一小段一小段的信号进行傅里叶变换从而得到语音信号的线性频谱值;④对上一步所求的频谱通过mel 滤波器组生成mel频谱,并且对其进行平方求值,则能够得到能量谱的值,用K 带通滤波器进行实验步骤,得出其输出功率谱为X(K);⑤MFCC参数的求解是通过对其做反离散余弦变换,M一般取12 ~16。

1.2 BP神经网络算法原理

BP神经网络[15-16]就是将输入的信号通过中间隐含层对输出层所做出的反应。BP 算法主要由工作信号的正向传播和误差信号的反向传播组成[17]。

(1)正向传递工作信号过程。输入的语音信号经过前两层的处理,将结果传到输出层,倘若输出的实际值与期望值不一致时,则转向误差的逆传播。

(2)误差信号逆传播过程。将其输出层得出的输出结果反馈给输入层和隐含层,并把产生的误差分给所有的神经元,主要目的是为了反复求权值和阈值,直至它与BP算法求出的误差相对应。

设输入节点、隐含层节点、输出层节点分别用j、k、i表示,计算权值和偏置的表达式如下:

根据梯度下降法原理,前两层的权值和偏置可表示为:

实验时构建BP神经网络需要对网络参数进行设置,从而完成训练过程。实验过程为:

(1)网络初始化。第1 层表示样本各分量的值。令3 层的节点数表示为m、l、n,并且各两层之间连接的权值设为wjk、wki,使第1 个输入的初始阈值为a,输出的阈值为b。

隐含层

(2)隐含层输出。设输入的数据为x,且前两层之间的可连接权值为wjk,隐含层阈值为a,则该层的输出相当于输入的数据经

(3)输出层输出。设后两层之间的连接权值为wki,阈值为b,根据上述所求的输出,从而计算最后一层的输出

(4)网络错误率的计算。由上述的步骤可得出输出的预测值,并设定此网络输出的期望值为Y,网络所产生的错误率

(5)更新权值。根据步骤(4)所产生的数据不断地更迭计算网络间的连接权值

(6)更新阈值。根据错误率计算网络各节点的阈值

(7)返回(2)。进行不断地循环,直至该网络计算的错误率符合原本所要达到的要求。

2 实验方案设计

2.1 实验步骤

(1)利用已建立好的语音库,主要包括p 个实验者的q遍录音,前r遍用于训练,后q-r遍用于测试。

(2)将语音数据的幅度进行归一化操作,整合到[-1,1]之间,对常数的取值进行设置,并于计算过零率、计算短时能量、调整能量门限后,进行端点检测的步骤,找出语音信号的起始点和终止点,从而完成对语音数据的预处理。

(3)将mel滤波器组系数归一化,对倒谱进行处理,增强其窗口,不断地稳定参数的高阶、中阶和低阶的分量,从而增加参数的各方面性能。

(4)通过预加重滤波器对语音信号进行分帧,将一大段的语音信号分为多个小段的信号,对每一小段的信号进行参数求值,合并了一阶参数和参数本身,去掉高低两个值,进行删选,从而提取出符合范围内特征参数MFCC的值。

(5)对训练后的数据进行叠加,把第i 份训练数据组织为x,对每个输出进行编码,每个类别用N个数字来表示,并且定义神经网络和设置神经网络的输入范围,从而开始对train 文件夹中的语音进行训练,并且训练帧的类型分类,从而建立语音模板库。

(6)读入test 文件夹下的语音文件,计算帧的长度,提取MFCC参数的特征值并进行归一化处理,每1帧可算出24 维度特征,对每1 帧求类别并得到每帧的类型,通过对这一类别进行索引,从而可得到这一类别的帧数,帧数的得票越多,就为哪一实验者的语音信号。

2.2 测试结果

在Matlab 软件中导入mytrain. m 和mytest. m 函数,并对mytest.m函数开启运行操作,训练train 文件下的语音文件载入时都可以被系统识别出各个语音所属人的身份。实验过程中则需要用train 文件夹中的语音进行训练,通过训练完成后对test 下的语音文件进行测试环节。

2.2.1 训练部分

BP网络训练设置如下:

hiden =15;

net =newff(pr,[hiden,typenum],{'logsig','purelin'},

'trainrp');net.trainParam.goal =1e-4;

net.trainParam.epochs =3000;

即迭代次数3 000 次,误差目标为10-4,利用train 函数训练BP神经网络。本文所构建的BP 网络是由24个输入、15 个隐藏和7 个输出组成,并且选择Sigmoid激活函数。

选择训练p个人的各自r 段语音,仿真训练结果如图2 所示。绘制出训练的错误率曲线如图3 所示。

图2 说话者训练样本界面

图3 训练误差曲线

由图3 可知,信号经过3 000 次迭代,误差为0.080 219,且接近于0。本次测试的梯度为0.001 267,错误识别率为0,如图4 所示。

2.2.2 实验数据

利用alltest.m计算该系统的准确率,实验结果如表1 所示。

由表1 可知,BP神经网络适用于小范围内语音数量的计算,所采取的数据库越大,则其准确率越低,失真度就会随之增加。

图4 误差梯度和错误识别率

表1 系统准确率

3 结 语

设计了基于神经网络的说话人识别实验,利用MFCC和BP神经网络进行识别的操作过程。由实验结果可知,这两者的结合可以有效缩小识别的时间,从而大大提高了识别率,说话人的身份识别获得了较好的效果。通过实验的设计和完成,可以让学生更深入的了解说话人识别的整体流程,也可以让学生更加灵活地理解神经网络的工作原理,从而提高学生的动手能力。

猜你喜欢
实验者权值语音
一种融合时间权值和用户行为序列的电影推荐模型
CONTENTS
魔力语音
基于MATLAB的语音信号处理
基于MQ3与MP3的价廉物美的酒驾语音提醒器
中西医结合治疗咳嗽变异性哮喘临床分析
基于MATLAB的LTE智能天线广播波束仿真与权值优化
对方正在输入……
水中健身操对非游泳专项的大学生水中平衡能力的影响
基于权值动量的RBM加速学习算法研究