[6038]基于DSP的语音识别:计算效率问题和性能分析外文翻译资料

 2021-12-08 22:18:39

基于DSP的语音识别:计算效率问题和性能分析

Meng Yuan, Tan Lee *, P.C. Ching, Yu Zhu

摘要

本文详细介绍了在定点数字信号处理器(DSP)上实现语音自动识别(ASR)算法的过程。它旨在为DSP工程师在开发类似应用程序时提供有用的参考。本文对基于隐马尔可夫模型(HMM)的ASR算法进行了详细的分析。明确了计算关键步骤,并针对每一个步骤提出了计算优化的不同方法。通过三个示例系统定量说明如何较好平衡计算效率、内存需求和识别性能,一个用于孤立中文单词的识别,另两个用于英语和汉语数字字符串的识别。本文还讨论了在实际应用中可以进一步提高识别性能的其他技术。

关键词:数字信号处理器;自动语音识别;计算复杂度;内存需求;连续时间建模

1. 绪论

自动语音识别(ASR)技术在过去的十年中飞速发展。虽然许多ASR应用程序使用功能强大的计算机来处理复杂的识别算法,但显然对便携式通信设备和各种低成本消费电子系统等嵌入式系统的有效解决方案存在需求。数字信号处理器(Digital signal processor, DSP)是目前最流行的嵌入式平台之一,可以在其上实现计算密集型算法。它提供了良好的开发灵活性,并且只需要较短的应用程序开发周期。虽然在DSP上实现高性能的大词汇量连续语音识别在实际中是比较困难的,但是在词汇量有限(如几十个单词)的情况下,可靠、准确的孤立/连接词识别(IWR/CWR)是很容易实现的,可以支持许多实际应用。

ASR算法的实现通常涉及大量的浮点运算和复杂的函数,这对于低成本的DSP来说是不可取的。算法为了尽可能地删除这些元素,需要进行优化。这是通过数值量化、简化和近似的技术来实现的,不可避免地会导致计算精度的损失和识别精度的下降。语音识别算法不仅涉及传统的信号处理函数,如数字滤波和傅里叶变换,而且还涉及动态模式匹配和统计建模技术,如动态规划和隐马尔可夫模型(HMM)。通常训练有素的DSP工程师在理解和实现这些算法时可能会遇到困难,从而在处理速度和精度之间取得良好的平衡。

已有文献描述了许多在低成本嵌入式系统上成功实现ASR的尝试。然而,这些论文要么侧重于几个具体的识别子过程,要么只是浅显地描述了优化的一般过程,没有清晰地揭示每种优化方法的有效性和局限性。我们发现缺乏一个可供参考的全面描述来开发类似的应用程序。本文的目的就是为了达到这个目的。一方面从实现的角度详细阐述了每一个计算步骤,并对其对计算成本和识别性能的贡献进行了评述,从而提出了最合适的优化方法。另一方面,通过实验结果在几个示例任务中,以定量的方式解释了计算效率和准确性之间的权衡。这将为DSP工程师设计满足硬件资源和性能要求的ASR应用程序提供有效的参考。

由于在实际操作环境中存在噪声,ASR系统的性能可能会大幅下降。可以采用多种方法提高系统的鲁棒性。它们包括健壮的解码、特性级和模型级补偿。在本文中,我们描述了在DSP中使用状态级持续时间模型进行连接词识别。这是一种简单的技术,可以很容易地实现实时处理。实验结果表明,在噪声条件下,连续时间模型能显著提高语音识别的准确率。

在第2节中,介绍了基于HMM的ASR算法以及显式持续时间建模技术。还解释了基于能量的端点检测。这些算法的各种优化方法将在第3节中讨论。第4节介绍了三种不同语音识别系统的实现细节,分析了它们的计算效率和内存需求。在第5节中,结合实验结果,阐述了识别精度与计算代价之间的权衡。结论见第6节。

2. 基于hmm的ASR和持续时间建模

图1为语音识别系统的一般流程。系统大致分为前端信号处理和模式识别两部分。前端过程将语音信号转换为短时特征向量,而模式识别过程则尝试确定与特征向量输入序列最匹配的单词序列。这是基于一组预先训练的统计模型,该模型描述了语音的声学变化。

2.1前端

前端包括数据采集和特征提取两个模块。数据采集模块通常包括一个麦克风和一个用于获取数字化语音数据的编解码器。对于DSP应用程序,语音数据通常表示为16位有符号整数序列。然后数字化的语音信号通过一种用一阶FIR滤波器实现光谱平坦化的预处理过程。

图1 语音识别的一般流程

特征提取是在短时间的基础上进行的。语音信号分为重叠定长帧。从每一帧得到一组频域或倒频谱域参数,形成所谓的特征向量。具体步骤如下所述:

加窗。将短时间内的语音样本与一个窗口函数相乘,例如汉明窗(Hamming window)。

快速傅里叶变换(FFT)。利用离散傅里叶变换将窗口时域样本转换为频域样本。

特征提取。频域样本通常具有复杂的值。只使用大小。

Mel-frequency滤波器组。光谱的大小与一组非线性间隔的三角形滤波器相乘,这些滤波器以等间隔的频率为中心。通过每个滤波器,计算对数输出能量。

离散余弦变换。滤波器组输出能量经过离散余弦变换(DCT),得到一组倒谱系数。

梅尔频率倒谱系数(MFCCs)描述了特定帧内的静态光谱特性。为了捕捉帧间的时间变化,将动态特征参数计算为相邻帧间静态MFCCs的一阶差分,记为DMFCC。然后,将静态最小二乘法和动态最小二乘法叠加形成完整的特征向量。

2.2 端点检测(EPD)

传入的语音信号可能包含静音段,在此期间没有有效的语音信号。端点检测(End-point detection, EPD)是指自动检测待处理语音段的开始和结束的过程。有效的端点检测,避免了对非语音数据不必要的处理。关于EPD的建议方法有很多。基于阈值的显式方法简单而有效,尤其适用于在嵌入式系统上实现。在这种情况下,端点检测是根据输入语音信号的短时能量来处理的。

我们假设一个句子开头的前几帧不包含任何言语信号。从这些帧可以估计声背景的特征。计算每一帧的均方能量(MSE)为。它被定义为框架中所有样本的平方的平均值。在沉默帧上的MSE平均值被用来确定经验MSE阈值。将所有传入帧的MSE与此阈值进行比较。如果有一定数量的连续帧超过阈值,则视为语音帧,反之亦然。

2.3 模式识别

如图1所示,模式识别过程需要一组隐马尔可夫模型(HMMs)。每个HMM代表一个特定的声音单元,它可以是一个音素或一个单词。HMM由一定数量的状态组成,这些状态与从左到右的转换有关。它由以下参数描述:

—状态i到状态j的转移概率,ij。

(.) -概率密度函数(pdf),描述状态j的声学特征的统计变化。通常,它是一个参数分布,如多元高斯分布。

对于语音识别,HMM状态形成一个搜索空间,如图2所示。给定一个序列的特征向量{},在搜索空间中确定最优路径。这条路径被认为是最优的,因为它在所有可能路径中具有最高的累积概率。累积概率的权重从和 .和)中的参数是从大量的语音数据中估计出来的。该估计和训练是用期望最大化算法[31]来完成的。对于一个给定的特征向量,计算动态帧t时处理。

维特比搜索算法是基于HMM的语音识别中最常用的算法。如图2所示,根据前一帧递归计算出帧t和状态j的累积概率

(1)

其中h表示一个特定的HMM, 和表示该HMM的模型参数,N为HMM中的状态总数。对于孤立的单词识别,每个HMM代表一个单词。路径扩展总是在模型中。通过比较模型的总体累积概率并选择最大的概率来做出识别决策。对于连词识别,一个HMM的退出状态与另一个HMM的进入状态相连接。在这种情况下,路径扩展也可以跨模型,即

(2)

图2 Viterbi搜索基于hmm的语音识别

其中v为前一个HMM, H为HMMs的总个数。识别结果由最后一帧累积概率最大的最佳模型序列给出。

在最先进的ASR系统中,是用多个高斯分布的加权和表示

(3)

其中M为混合组分的数量。为了简单起见,省略了模型索引h、状态索引j和框架索引t。第m个混合元素给出

(4)

其中D是特征向量的维数。指定的高斯组件平均向量和协方差矩。为第m个的权重

混合组件和

如果特征元素之间不相关,就成为一个对角矩阵。设为第d个特征元素的方差。式(4)可计算为

和的对数的元素和分别。

2.4 状态级连续建模

HMM的一个普遍承认的缺点是,它不能有效地控制被建模的语音段的持续时间。基于HMM的ASR系统经常出错。这些错误中有很大一部分表现出不合理的持续时间特征。为了缓解这个问题,可以应用显式持续时间控制来限制可识别段的持续时间。

在本研究中,我们使用国家级持续时间模型对DSP进行鲁棒语音识别。对于每个HMM状态,基于训练数据建立统计持续时间模型。持续时间模型生成持续时间概率得分,这将有助于累积路径扩展的概率。将累积概率修改为再包含一个变量维,记为,其中s计算保持状态j的帧数,路径扩展为

(6)

(7)

当jgt;1时

(8)

为HMM h在状态i下的状态持续时间概率,和为训练数据得到的最小和最大持续时间值。w是一个经验确定的权重因子,来控制持续时间概率。

3.语音识别算法的优化

实时DSP应用语音识别算法的优化步骤如下:

尽量使用定点计算;

分析算法,找出计算上最关键的部分;

简化计算,如使用查表、避免复杂函数等;避免不必要的重复计算;

尽可能将预计算常用参数作为预存储的常数值;

在适当的情况下使用低级编程语言。

我们研究了基于HMM的ASR算法的各种优化方法。通过对ASR中各计算部分的分析,提出了最有效的优化方法。详细情况将在下面的小节中给出。

3.1 计算复杂度的考虑

3.1.1 浮点到定点的转换

在基于HMM的语音识别算法中,需要将浮点算法转换为定点算法的主要有三部分:

声前端

计算高斯pdf

维特比搜索算法

在前端,自相关、卷积、窗口、线性预测编码(LPC)、倒谱分析等常用信号处理技术的定点实现在[8,35]中有提及。在[6]中描述了计算梅尔频率倒谱系数Mel-frequency cepstral coefficient (MFCC)的定点算法。

在本研究中,定点数据的长度为16位。在计算过程中,数据值可能会超过16位的限制

表示,尤指在乘法或求和运算之后。在这种情况下,值必须缩小以适应16位格式。这是通过位的左移来实现的。虽然要移动的位的数量应该保持最小,以保持足够高的精度,但它必须确保数据的最大值不会超出16位范围。该最大值由仿真实验[9]预先判断。

在基于HMM的语音识别系统中,高斯函数的计算花费了搜索最优路径约30-60%的时间。计算的精度对整个识别精度也起着至关重要的作用。在将其转换为定点操作时需要特别注意。减少动态范围的对数经常被使用。从方程式(5),一个特征向量的对数似是计算

(9)

其中第一项

可以预先计算,因为它不依赖于。对于定点实现,最成问题的方程式(9)的一部分。是在第二项中中的计算。涉及乘法和除法操作,这两个需要缩放值,从而意味着精度损失。这个棘手的问题之前已经解决,并针对一些特定的硬件平台提出了解决方案。在这项工作中,建议16位定点DSP采用以下步骤:

(1)预算因子尺度SCALE/(此处为SCALE=)。结果是一个16位整数。除法操作变成了乘法。

(2) 乘以比例因子SCALE左移11位得到index1

(3)将index1乘以左移12位得到index2。

(4)求和后,将结果左移3位(26-11-12=3)替换原来的数值。

这些过程用于计算特定输入帧的对数似然。对于具有大量帧的输入语句,累积的极大似然值将非常大,可能导致溢出。因此,使用一个32位整数来存储累积的对数似然函数。

3.1.2 特征提取技术

3.1.2.1加窗

对于N个点的坐标系,汉明窗口函数由N个值表示,h(1),h(2),。h(N)。对于固定的N, h(N)可以预先计算并存储在内存中。它需要N个16位字的内存空间。

3.1.2.2 整数FFT的实现

虽然快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的有效实现,但它仍然需要计算许多指数或三角函数和乘法。整数实现的FFT是非常可取的DSP应用程序。在本工作中,使用256点

英语原文共 10 页

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。