基于神经网络的语音信号识别与分类

2023-12-18 08:58薛雅洁贺红霞
现代电子技术 2023年24期
关键词:音素字符声学

薛雅洁, 贺红霞, 杨 祎

(西安邮电大学 电子工程学院, 陕西 西安 710061)

0 引 言

人类对于语音识别技术的研究开始于20 世纪50年代初,最初是在贝尔实验室通过简单地提取元音字母的共振峰信息,实现了单个单词的语音识别[1]。直到1970 年,李开复教授首次将隐马尔可夫模型引入到语音识别中,提出了高斯混合模型(Gaussian Mixture Model, GMM)加隐马尔科夫模型(Hidden Markov Model, HMM)的GMM-HMM 模型[2]。随后的研究逐渐开始采用深度神经网络(Deep Neural Network, DNN)进行自动学习实现特征表示的方法来取代高斯混合模型。文献[3]中将传统识别方法与神经网络识别方法做了对比,相对于经典GMM 模型,深度学习技术对语音识别能够提取更加精准的特征信息,从而使得在DNN 和HMM的结合应用下,语音识别技术的系统识错率大幅下降[4]。

目前主流的语音识别技术都是以大词汇连续语音和深度神经网络为基础的,根据不同的实际情况和数据特征对传统的神经网络进行了相关的改进,相对于经典的DNN-HMM 方法,语音信号识别与分类性能有了较大的改善。

在现有的端对端的语音识别技术上以.wav 模式音频文件为识别对象,分别采用深度全序列卷积神经网络(Deep Full Convolutional Neural Network, DFCNN)模型和Transformer 模型作为语音识别的声学模型和语言模型,并在DFCNN 输出时连接基于损耗函数(Connectionist Temporal Classification, CTC)的损失函数进行语音识别,研究传统语音识别与该算法的识别准确率、复杂度等方面的异同。

1 语音信号识别基本原理

1.1 语音信号预处理

语音信号预处理一般包括数字化(将采集的模拟信号离散为数字信号)、预加重(就是对信号中的高频加重,去除口唇辐射的影响)、端点检测(识别出静音段,消除长时间静音段,减少对信号的干扰)、分帧、加窗(用矩形窗、汉明窗、汉宁窗等常用函数实现)等步骤[5]。

为了降低干扰,在进行语音识别之前,首先要对语音的前后端进行消音切除。切割工作采用端点检测技术(Voice Activity Detection, VAD),又称语音端点检测技术,对信号进行处理。分帧是利用语音信号具有短时平稳性把语音变成很多小段。分帧通过可移动的有限长度窗口进行加权的方法来实现。图1 表示帧长为N、帧移为M的语音分帧过程,即相邻两帧间会有Mms 的重叠,每帧长度为N+M。

图1 语音分帧过程

使用汉明窗对语音信号进行加窗操作。使用的汉明窗为:

式中N′为窗口宽度。

由于在时域内很难观察到信号的特性,因此必须把时域特性转化为频域的能量分配,从而判断出信号的特性[6]。对信号进行傅里叶变换,从而获得频谱和能量分布。傅里叶变换的计算和能量分布计算的表达式为:

式中:N为信号周期;S(n)为指数形式傅里叶变换系数。

1.2 声学特征提取

接下来进行声学特征的提取,在经典语音识别的方法中,最常用的语音特征提取技术是梅尔倒谱系数(Mel-Scale Frequency Cepstral Coefficients, MFCC)特征提取方法。特征提取的基本原则是,把每个信号的波形变换为多维矢量,使得机器能够很容易地了解包含在矢量中的帧内音频信息的内容。在此应用基于滤波器组的特征(Filter Bank, Fbank)声学特征提取技术。

Fbank 声学特征是根据人耳的生理特性,把每一帧波形变成一个多维向量,可以简单地理解为这个向量包含了这帧语音的内容信息。Fbank 特征提取步骤如图2所示,基本原理是:先将线性频谱映射到基于听觉感知的梅尔滤波器的非线性频谱中,然后转换到倒谱上就可以得到所需音频初步特征[7]。

图2 Fbank 特征提取步骤

与MFCC 方法相比,Fbank 特征提取方法在深度神经网络中有更优异的表现[8]。提取Fbank 特征之后,就可以得到信号的能量谱,谱的横轴为时间,纵轴为频率,亮的表示高振幅,暗的表示低振幅[9]。

1.3 声学模型和语言模型

在得到语谱图后就需要引入音素的概念。对于汉语而言,一般将全部声母和韵母作为音素集。语音识别的初级阶段是把帧识别成状态,把状态组合成音素,把音素组合成单词。建立声学模型的目的是建立语音与相应语言音素的联系。通过使用大量的语音数据训练声学模型,从模型中得到单词组合对应的概率,从而就可以知道每一帧对应的音素的概率,最终将语音对应的音素或单词识别出来。

在声学模型搭建完成后需要进行语言模型的搭建。语言模型是一种可以在大量词汇的识别中找到识别的最优路径,计算出任何句子识别概率的概率模型。语言模型由语法网络和统计架构组成,在该模型中可以对语法和语义进行分析,使得在复杂系统中可以根据语义、语法及语言模型及时进行识别和修正。声学模型和语言模型原理示意图如图3 所示。

图3 声学模型和语言模型原理图

2 端对端的语音识别算法

2.1 DFCNN 声学模型

DFCNN 能够利用大量的卷积层对整个句子进行建模。DFCNN 采用了最优网络结构,每一卷积都使用3×3的小卷积核,并在多卷积后添加一个池化层,以改善网络的表达能力。

同时,DFCNN 可以显示较长的历史和未来的数据,从而可以较好地描述长期相关特性,也比关系网络(Relation Network, RN)网络、长短期记忆(Long Short-Term Memory, LSTM)网络等具有更强的鲁棒性[10]。

把语谱图作为DFCNN 的输入。在模型的构造上,提出一种基于图像的识别方法。在多个卷积层之后,再添加一个池化层,形成一个小型的卷积核,迭代2 次,能够更加准确地提取语音信号的信息。DFCNN 采用时间和频率两个维度,用大量的卷积层和池化层实现全局建模。DFCNN 的结构示意图如图4 所示。

图4 DFCNN 结构示意图

DFCNN 的具体实现步骤是:在对时域信号进行预处理和声学特征提取后得到语谱图;在每次卷积时都采用3×3 的小卷积核,并在多层卷积后添加一个池化层,这使网络的表达能力得到改善。DFCNN 的卷积层与池化层的结构示意图分别如图5 和图6 所示。池化有最大池化和平均池化两种,在此采用最大池化。

图5 卷积层结构示意图

图6 池化层结构示意图

在输出端,DFCNN 以语音作为输入,可以连接CTC损失函数,CTC 的输出端直接与最终识别结果进行匹配,不需要手动对齐,提高了算法的效率。

2.2 基于注意力机制的Transformer 语言模型

视觉注意力机制是一种特殊的脑信息加工机制,在对整个图像进行快速扫描时,可以得到需要注意的目标,然后将更多的精力放在该区域上,从而得到更多的信息。视觉注意力机理特性使得其在处理过程中提升了模型的效率和精确度。

从本质上看,深度学习的注意力机制与人类的选择性注意力机制相似,它的核心目标就是从大量的信息中筛选出对当前任务重要的信息。目前,大部分注意力模型均作用于编码到解码过程,可以通过它来理解深度学习中的注意力模式。

语言模型采用基于注意力机制的Transformer 神经网络结构实现。Transformer 是一种完全基于注意力机制的网络框架,其采用注意力机制主要是因为一个序列每个字符对其上下文字符的影响作用都不同,每个字符对序列的语义信息贡献也不同,可以采用一种机制将原输入序列中字符向量通过加权融合序列中所有字符的语义向量信息来产生新的向量,从而达到增强原语义信息的作用[11]。采用的Transformer 编码器结构示意图如图7 所示。

图7 Transformer 编码网络结构图

在语言研究中,仅需要搭建编码器encoder 结构即可。encoder 由6 个相同的layers 组成,每一层包含两个sub-layers。第一层sub-layer 就是多头注意力层(Multi-Head Attention Layer),然后是一个简单的全连接层。其中,每个sub - layer 都加了残差连接(Residual Connection)和归一化(Normalization)模块[12]。

Attention 机制的核心工作原理是:把Source 中的组成要素看作是一组数据组,包含一组“Key, Value”,给出目标中的一个元素Query,通过计算Query 和单个Key 的相关关系,得出每个Key 的Value 权重,再将加权相加,得出最后的Attention 的值。基本的Attention 机制是将Source 中的价值加权相加,而Query 和Key 则用于计算相应价值的权值[13]。从概念上讲,Attention 就是将一小部分的重要信息从海量的信息中剔除出来,然后将“注意力”集中在这些信息上,忽略那些无关紧要的。焦点反映在权值的计算中,权值愈大,则表明相应的“注意力”越集中。

Attention 机制示意图如图8 所示。

图8 Attention 机制示意图

语言模型搭建的实现步骤包括:定义归一化层(Normalize)、定义嵌入层(Embedding)、创建多头注意力层(Multi-head Attention Layer)、定义多头注意力层、定义前馈层(Feed Forward)、定义标签平滑层(Label_Smoothing)。综合上述各个层,建立一套完整的语言模型,并根据该模型对训练数据及参数做充分的准备。

2.3 CTC 损失函数

在语音识别中,要求音位与被译出的文字之间能够一一对应。语音数据对齐原理示意图如图9 所示。

图9 语音数据对齐原理示意图

CTC 能够改善输入与输出之间不能一一对应的问题。输入语音信息后,假设每一个音位原本应对应cat,如果声音被拉得太长,就会出现重复,此时CTC 功能会自动选取一个相似的音素作为记号。此时,CTC 损失函数会引入一个空白(Blank)字符来表示语音中停顿的部分,然后在停顿的部分自动补上空白的字符,这样重叠的音素就可能被忽略掉。

CTC 会自动合并相邻的相同字符。当这些相邻的字符中出现停顿,就会自动加入空格将两个相邻的字符隔开,这样就实现了将双字符隔开的操作。

CTC 引进了Blank 字符,每一种预测值的类别都与一段语音中的一个峰值相对应[14],其他非峰值的默认为Blank,输出一系列的非连续峰值[15],可以将CTC 序列问题形式转化为函数形式。设定单词的表尺寸为n,则CTC 序列目标为一个n维的多项式概率分布。

式中:Nw表示神经网络模型的变换;序列目标为字符串,也就是输出为n维多项概率分布,n为词表的个数。

该n维的多项式概率分布的网络输出形式为y=Nw,t时刻k项的概率为

在CTC 中引入特殊的Blank 字符“%”,原先重叠部分被赋为“%”。定义输出的字符为“B”,然后,合并连续的符号且删除Blank 字符。比如,对于输出的字符“aa% bb%% cc”,经过合并连续的符号且删除Blank 字符后,实际输出为“abc”。随着Blank 和“B”被导入,就能得到一个普通映射。CTC 采用极大似然判据,得到了一种有条件的可能性概率:

式中:BT(l)表示一组输出结果长度为T的字符串的集合;π表示一条由L中元素组成的长度为T的路径。

相对于输入,CTC 假定输出的可能性是独立的,即:

式中:CTC 假设输出的概率是条件独立的,因此路径π的概率为它各个时刻经过某个音素的概率相乘,即ytπt。

3 仿真与结果分析

使用Jupyter Notebooker 平台验证算法的性能。仿真实验使用的数据集为清华大学中文语料库THCHS30。该数据集中,训练(train)数据集音频时长为25 h,句子数为10 000,词数为198 252;检验(dev)数据集的音频时长为2 h 14 min,有893 个语句,有17 743 个单词;测试(test)数据集音频时长为6 h 15 min,句子数为2 495,词数为49 085。

搭建好声学模型和语言模型,训练和测试完成后,对已经录制好的6 个*.wav 中文语言文件进行识别。语音识别部分仿真结果如图10 所示。

图10 语音识别部分仿真结果

由图10 可以看出,语音识别的准确率较高,但是识别的结果还是有一定的错误,如:“难忘”识别结果“难望”,“翻腾蛹动”识别为“翻腾泳动”等。

对上述6 个样本进行了30 次实验,30 次实验识别的平均正确率如表1 所示。

由表1 可以看出,所提方法的语音识别准确率在94%附近波动,样本识别的正确率较高。

4 结 语

通过语音信号预处理提取声学特征,构建卷积神经网络声学模型和Transformer 语言模型,结合CTC 损失函数完成语言识别。仿真结果表明,所提方法能够实现端到端语音识别,也能够有效地进行连续多字符的中文语音识别,达到了对中文音频文件进行识别并输出对应识别文字的效果,识别的正确率较高。然而在实践中,方言、语速、情绪、断句、性别、年龄等诸多因素,会对语音识别产生一定的影响,因此,要想提高辨识精度,就必须要有更多的深度卷积以及更多复杂的语言训练。

另外,系统识别的准确率还有待提升,需要加大对噪声的处理能力以及系统的抗干扰性,提高对数据集的接纳性,使得系统更加稳定的运行,让语音识别系统应用场景更广。未来若想要实现更加复杂庞大的语言识别系统,除了进行普通话的训练之外,还需要对方言的声学特征进行研究和分析,使得识别系统能够更加稳定、准确。

猜你喜欢
音素字符声学
新目标英语七年级(上)Starter Units 1-3 STEP BY STEP 随堂通
寻找更强的字符映射管理器
依托绘本课程,培养学生英语音素意识
爱的就是这股Hi-Fi味 Davis Acoustics(戴维斯声学)Balthus 70
字符代表几
小学英语课堂中音素意识与自然拼读整合训练的探索
一种USB接口字符液晶控制器设计
Acoustical Treatment Primer:Diffusion谈谈声学处理中的“扩散”
Acoustical Treatment Primer:Absorption谈谈声学处理中的“吸声”(二)
消失的殖民村庄和神秘字符