基于FPGA的语音特征参数提取模块的设计

2019-07-23 07:20马智愚
通信电源技术 2019年6期
关键词:特征参数频域滤波器

马智愚

(福州大学 物理与信息工程学院,福建 福州 350116)

0 引 言

随着人工智能和物联网技术的兴起,语音识别技术的应用范围越来越广。语音识别技术可用语音取代手工来执行命令,甚至可听懂并预测人们的讲话,加以处理后可完成特定动作[1]。随着手机语音助手和智能音箱等移动终端的普及,语音识别系统对性能和功耗的要求越来越高。

特征参数提取是语音识别的关键问题。目前,语音识别系统中比较常用的是Mel频率倒谱系数(MFCC)、线性预测倒谱系数(LPCC)及线性倒谱对(LSP)等。相较于其他参数,MFCC特征参数充分考虑人耳听觉结构、人类发声的机理特性及人耳的听觉感知情况,已成为语音识别任务中应用最广泛、最成功的特征参数[2]。

MFCC特征参数提取的计算量大且计算复杂。目前许多提取方法都是基于软件或DSP核心平台,但是嵌入式系统对硬件环境和实时性要求更高,普通处理器已不能满足速度和精度的需要。FPGA在数字处理领域具有较高性能且设计灵活,本文以FPGA为平台设计语音MFCC特征提取的全硬件结构,满足了嵌入式系统的应用要求[3]。

1 MFCC特征参数提取算法

MFCC特征参数是由Davies和Mermelstein提出的,Mel频率倒谱系数依据人耳听觉系统的生理特性描述,考虑到了人耳听觉系统的非线性特性,不同于物理学对频率的描述[4]。通常,频率f与Mel频率的转换公式为:

其中,f为实际频率,单位为Hz;fMel为Mel频率,单位为Hz。Mel特征参数提取的流程框图如图1所示。

图1 MFCC特征参数提取流程框图

具体提取步骤包括预处理、FFT运算、计算Mel滤波能量及计算离散余弦变换。

1.1 预处理

预处理主要包含预加重、分帧及加窗。预加重的目的是补偿高频分量的损失,凸显共振峰。预加重滤波器可设为:

其中,α是预加重系数,通常取0.9~1。

分帧是将N个语音采样点集合成一个观测单位。因为语音信号具有短时平稳的特性,所以将语音信号分成较短的帧,每帧信号可看作稳定的语音信号。为使各个相邻帧之间的参数能够平稳过渡,在相邻两帧之间会有重叠部分,包含M个取样点。N为帧长,M为帧移,为方便后续的FFT运算,N通常取256或512,M通常取128。

加窗是将每一帧代入窗函数,目的是平滑语音帧,消除各个帧两端可能造成的信号不连续性。因为DFT运算和FFT运算需要周期性延拓,所以时域中的突变点会对频谱造成明显影响,如频谱泄露。常用的窗函数有方窗、汉明窗及汉宁窗等,根据窗函数的频域特性,常采用汉明窗。汉明窗的公式为:

1.2 FFT运算

语音信号在时域上的变换无法看出信号特性,所以将它转化为频域的能量分布来观察。频谱公式为:

其中,i为当前帧数;Si(n)为一帧内加窗后的语音信号;N为帧长,N=256;k为谐波次数。

功率谱公式为:

1.3 计算Mel滤波能量

Mel滤波是利用同人耳听觉相似的三角滤波器组对语音信号的幅度平方谱进行平滑[5]。每个滤波器的传递函数为:

其中,k为当前频率;m为第m个滤波器;f(m)为第m个滤波器的中心频率。

计算在每个Mel滤波器中的对数能量。相当于把每帧的能量谱E(i,k)与Mel滤波器的频域Hm(k)相乘并相加,公式为:

其中,i为第i帧语音信号,m为第m个Mel滤波器(共有M个),M通常取22~26。

1.4 计算离散余弦变换

把Mel滤波器的能量取对数后进行DCT变换,得到MFCC参数[6]。公式为:

其中,L指MFCC系数阶数,通常取12~16。

2 FPGA设计

2.1 整体设计

图2为总体结构图,由蜂鸟e203 MCU作为主机,MFCC特征参数提取模块作为从机,两者通过蜂鸟e203的ICB自定义总线相连接。

图2 总体结构图

2.2 特征参数提取模块设计

MFCC特征参数模块的内部结构如图3所示。其中,输入的语音信号采样频率是8 kHz,采样精度是16 bit带符号数。运算中的中间数据都采用16 bit的定点数据表示。所有小数部分的运算都采用定点数移位的方法实现。

预加重模块将式(1)简化为:

图3 特征参数提取模块内部结构图

此简化方法避免了乘法运算,通过加法器和移位寄存器实现。

分帧采用FIFO实现,设定每一帧语音长度为256个采样点,帧移为128个采样点。加窗运算常采用查表法和Cordic算法,查表法运算速度快,但精度稍差;Cordic算法精度高,但运算周期较长。考虑语音信号需要实时处理,采用查表法。在Matlab中算出窗函数的表单元,然后和分帧后的信号进行乘法运算[7]。

FFT变换调用了Quartus中的FFT IP核,参数配置信息如图4所示。其中,FFT的点数为一帧的长度即256,输入/输出数据都是16位数据。

通过Mel滤波器组的能量通过查找表的方法实现。Mel滤波器组是由M个三角滤波器叠加而成的,滤波器个数M取24,先在Matlab中算出每组滤波器的中心频率点、上限频率点及下限频率点,将每组数据存入rom中,通过计数器来控制频域信号与Mel滤波器运算。

离散余弦变换是将Mel频谱变换到时域,获得最终的MFCC特征参数。对数运算采用查找表的方法实现,然后通过计数器实现乘累加和。

最后输出数据由控制单元通过ICB总线连接到MCU。

图4 FFT配置信息

3 结 论

本文在DE2-115 FPGA平台上,以蜂鸟e203 MCU作为主机,设计了一个MFCC特征参数提取模块。相较于软件实现方法,利用IP核和查找表方法的信号处理运算速度大幅提高。处理结果与Matlab中计算结果的误差在1%以内,基本可满足系统实时处理要求。

猜你喜欢
特征参数频域滤波器
基于频域的声信号计权改进算法
冕洞特征参数与地磁暴强度及发生时间统计
融合LPCC和MFCC的支持向量机OSAHS鼾声识别
基于交通特征参数预测的高速公路新型车检器布设方案研究
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
频域稀疏毫米波人体安检成像处理和快速成像稀疏阵列设计
一种微带交指滤波器的仿真
网络控制系统有限频域故障检测和容错控制
基于TMS320C6678的SAR方位向预滤波器的并行实现