CN102831895A - 一种用现场可编程门阵列实现mfcc参数提取的方法 - Google Patents

一种用现场可编程门阵列实现mfcc参数提取的方法 Download PDF

Info

Publication number
CN102831895A
CN102831895A CN201210313695XA CN201210313695A CN102831895A CN 102831895 A CN102831895 A CN 102831895A CN 201210313695X A CN201210313695X A CN 201210313695XA CN 201210313695 A CN201210313695 A CN 201210313695A CN 102831895 A CN102831895 A CN 102831895A
Authority
CN
China
Prior art keywords
output terminal
module
input end
chronotron
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201210313695XA
Other languages
English (en)
Inventor
马丕明
吕桂龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN201210313695XA priority Critical patent/CN102831895A/zh
Publication of CN102831895A publication Critical patent/CN102831895A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

一种用FPGA实现MFCC参数提取的方法,属电子信息的信号处理技术,装置包括预加重处理、分帧处理模块等,参数提取方法为对待提取MFCC特征参数的语音信号进行预加重处理、分帧处理、加窗处理、离散功率谱估计、Mel三角滤波器组滤波、取自然对数及离散余弦变换,得到MFCC参数。本发明的有益效果为:通过对各部分数据处理模块的改进并借助Xilinx公司System Generator开发工具,将Xilinx开发的一些模块嵌入到Simulink的库中,在Simulink中进行定点仿真,并且生成HDL文件,在ISE中进行调用,快速实现了MFCC特征提取硬件的开发,提高了信号处理速度和研发周期。

Description

一种用现场可编程门阵列实现MFCC参数提取的方法
技术领域
本发明涉及一种用现场可编程门阵列实现MFCC参数提取的方法,属电子信息中的信号处理技术领域。 
背景技术
MFCC是Mel频率倒谱系数(Mel Frequency Cepstrum Coefficient,MFCC)的缩写;Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系;Mel频率倒谱系数则是利用它们之间的这种关系,计算得到的Hz频谱特征; 
MFCC的分析着眼于人耳的听觉特性,因为人耳所听到的声音的高低与声音的频率并不成线性正比关系,而Mel频率尺度则更符合人耳的听觉特性;所谓Mel频率尺度,它的值大体上对应于实际频率的对数分布关系;Mel频率与实际频率的具体关系可用式Mel(f)=2595lg(1+f/700)表示,其中f的单位是Hz;临界频率带宽随着频率的变化而变化,并与Mel频率的增长一致,在1000Hz以下,大致呈线性分布,带宽为100Hz左右;在1000Hz以上呈对数增长; 
MFCC已被广泛地应用在语音识别领域;由于Mel频率与Hz频率之间非线性的对应关系,使得MFCC随着频率的提高,其计算精度随之下降;因此,在应用中常常只使用低频MFCC,而丢弃中高频MFCC;)语音信号特征参数MFCC的提取是语音技术的难点,其设计复杂,硬件开发周期较长,文章“语音MFCC特征提取的FPGA实现”(见《计算机工程与设计》2008年11月,第29卷,第21期,文章编号:1000.7024(2008)21.5474.02。)即属于此列。 
发明内容
为了克服现有技术存在的缺陷与不足,本发明提出了一种用现场可编程门阵列(FPGA)实现MFCC参数提取的方法。 
本发明的技术方案如下: 
一种现场可编程门阵列(FPGA),包括预加重处理模块、分帧处理模块、加窗处理模块、离散功率谱估计模块、Mel滤波器组模块、取自然对数模块和离散余弦变换模块,其特征在于预加重处理模块输出端连接到分帧处理模块的输入端;分帧处理模块输出端连接到加窗处理模块的输入端,其使能控制端分别和加窗处理模块及离散功率谱估计模块的使能端相连接;加窗处理模块的输出端和离散功率谱估计模块的输入端相连接;离散功率谱估计模块输出端连接到Mel滤波器组模块的输入端,同时其使能控制端和Mel滤波器组模块的使能端相连接;Mel滤波器组模块的输出端、使能控制端分别和取自然对数模块的输入端、使能端相连接;取自然对数模块的输出端、使能控制端分别连接到离散余弦变换模块的输入端和使能端; 
所述的预加重处理模块由减法器、加法器、延时器和移位寄存器组成,减法器和延时器的输入端相连;延时器输出端分别连接到减法器和移位寄存器的输入端;减法器和移位寄存器的输出端连接到加法器的输入端; 
所述的分帧处理模块由分帧控制单元、FIFO1、FIFO2和一个多路选择器组成;分帧控制单元包括计数器1、计数器2、与门1、与门2和反相器,计数器1的输出端分别连接FIFO1的写使能端、计数器2的输入端和加窗处理模块的使能端;计数器2的输出端经反相器与计 数器1的另一路输出端连接后又分别连接到与门1及与门2,与门1输出连接FIFO2的写使能端,计数器2的输出端连接到FIFO2的读使能端;与门2输出连接到FIFO1的读使能端及多路选择器的选择端;FIFO1的输出端连接多路选择器的一个输入端,同时连接到FIFO2的输入端;FIFO2的输出端连接到多路选择器的一个输入端;多路选择器输出连接到下一级加窗处理模块输入端; 
所述的加窗处理模块由计数器、存储器和乘法器组成,计数器的输出端连接存储器的地址端;存储器的输出端连接到乘法器的一个输入端;乘法器的另一输入端连接到分帧处理模块中的多路选择器的输出端; 
所述的离散功率谱估计模块由FFT模块、乘法器1、乘法器2和加法器1组成,FFT模块有三个输出端,分别为实部信号输出端、虚部信号输出端和数据有效端,实部信号输出端连接乘法器1的两个输入端,虚部信号输出端连接乘法器2的两个输入端;两个乘法器输出端连接加法器1输入端,加法器1输出端连接Mel滤波器组模块中FIFO3和FIFO4的数据输入端; 
所述的Mel滤波器组模块由输入控制单元、FIFO3、FIFO4、滤波器系数存储器和输出控制单元组成;输入控制单元包括三个计数器3-5、5个延时器1-5、与门、反相器1和FIFO控制器,计数器3使能端连接离散功率谱估计模块中FFT模块的数据有效端,计数器3输出端与离散功率谱估计模块使能信号输出端一起连接到与门的输入端,与门输出端连接反相器1输入端,反相器1输出端连接FIFO控制器输入端,与门还连接延时器5,延时器5输出端连接滤波器系数存储器使能端;FIFO控制器一个输出端连接延时器1,延时器1连接FIFO3读使能端和输出控制单元中乘累加器1的使能端,另一个输出端连接延时器2,延时器2连接FIFO4读使能端和输出控制单元中乘累加器2的使能端;上一级离散功率谱估计模块连接延时器3,延时器3输出端连接FIFO3使能端;离散功率谱估计模块还连接延时器4,延时器4输出端连接FIFO4使能端;离散功率谱估计模块中FFT模块的数据有效端还连接到计数器2和计数器3,计数器4和计数器5的输出端分别连接FIFO3和FIFO4的写使能端;FIFO控制器由硬件描述语言编写实现;FIFO3和FIFO4输入端连接上一级离散功率谱估计模块的输出端,FIFO3及FIFO4的输出端分别连接到输出控制单元的输入端;输出控制单元由两个乘累加器和加法器2组成,第1个乘累加器输入端连接FIFO1输出端和滤波器系数存储器的输出端,第2个乘累加器2输入端连接FIFO2输出端和滤波器系数存储器的输出端;加法器2的输入端连接两个乘累加器的输出端,加法器2的输出端作为Mel滤波器组模块的输出; 
所述的取自然对数模块由初始化单元、对数运算单元、移位器和延时器6组成,初始化单元和对数运算单元各有一个输入使能端连接Mel滤波器组模块第8个输出端,延时器6连接Mel滤波器组模块第8个输出端;初始化单元的三个输出端连接对数运算单元的另外三个输入端;对数运算单元输出端连接移位器输入端; 
初始化单元由加法器3、减法器3、rom1和rom2组成,加法器3的使能端和减法器3的使能端相连接作为初始化单元的使能端;加法器3的一个输入端和减法器3的一个输入端相连接;rom1和rom2的输入端接地,rom1的输出端分别连接到加法器3和减法器3的另一个输入端,加法器3和减法器3及rom2的输出端分别和对数运算单元的三个输入端相连接; 
对数运算单元由23级CORDIC运算单元顺序连接组成,每级CORDIC运算单元数据输入端连接上一级CORDIC运算单元的三个输出端,Mel滤波器组模块的第8个输出端连接到第一级 CORDIC运算单元的输入使能端;CORDIC运算单元由移位器1、移位器2、加减法器1、加减法器2、加减法器3、rom3和反相器2组成;加减法器1、加减法器2、加减法器3的使能端相连接后作为CORDIC运算单元的使能端;移位器1输出端连接减加法器1的一个输入端,移位器2连接加减法器2的一个输入端,反相器2的输出端连接加减法器3的加减选择端,反相器2输出端同时连接加减法器1、2的加减选择端,rom3输入端接地,rom3连接加减法器3的一个输入端; 
所述的离散余弦变换模块包括并行运算单元、缓存器控制单元和输出缓存器,并行运算单元包括12个DCT运算单元、12个延时器7-18、计数器4和多路选择器,其中DCT运算单元由计数器5、ROM、乘累加器组成;计数器5的使能端作为DCT运算单元的使能输入端,计数器5分别连接到ROM地址输入端和乘累加器的使能端;ROM输出端连接乘累加器的一个数据输入端;乘累加器另一个数据输入端作为DCT运算单元数据输入端连接取自然对数模块数据输出端;乘累加器输出端作为DCT运算单元的输出端;12个DCT运算单元数据输入端并行连接到上一级取自然对数模块的数据输出端,DCT运算单元使能端连接到取自然对数模块中延时器6的输出端,第一个DCT运算单元的输出端直接连接到多路选择器的一个数据端,第2至12个DCT运算单元的输出端分别顺序连接到延时器8至延时器18,延时器8至延时器18输出端分别连接多路选择器的11个数据端;延时器7连接上一级取自然对数模块使能信号输出端,延时器7输出端连接计数器4,计数器4输出端连接多路选择器的选择端;多路选择器输出端作为并行运算单元输出端连接输出缓存器的数据输入端; 
缓存器控制单元由计数器6和延时器19组成,计数器6使能端连接并行运算单元延时器7输出端,计数器6输出端连接到输出缓存器写使能端;延时器19输入端连接并行运算单元的延时器7输出端,延时器19输出端连接输出缓存器读使能端;输出缓存器的一个输入端连接并行运算单元数据输出端,另两个输入端连接缓存器控制单元的输出端。 
本发明预加重处理模块中的延时器对输入语音信号延时一个时钟;减法器接收原始语音信号减去延时器输出信号作为其输出;延时器输出信号再经过移位寄存器,右移四位,在加法器内与减法器输出信号求和作为预加重处理模块的输出信号; 
本发明分帧处理模块中的分帧控制单元是整个分帧处理模块的控制单元,由两个计数器实现,计数器1开始计数时同时输出一路到信号到FIFO1的写使能端,作为FIFO1的写使能信号;计数器1计数到512时输出另一路信号作为下一级加窗模块的使能信号;计数器1计数到640时使能计数器2,计数器2开始计数实现128为一帧的分帧要求,计数器2输出经反相器后与加窗模块使能信号逻辑与作为FIFO1的读使能信号及多路选择器的选择端信号;计数器2输出还是FIFO2的读使能信号;计数器2输出信号取反与计数器1输出相与并延时一个时钟作为FIFO2的写使能信号;FIFO1的输出信号同时也是FIFO2的输入信号,FIFO1和FIFO2的输出端连接到多路选择器的输入端; 
本发明加窗模块采用查找表实现,根据式汉明窗公式计算出窗长256的汉明窗各点数值,存入到深度为256的ROM中。ROM的地址与一个模256的计数器输出的计数值相对应。这样ROM每输出一个数值对应来自分帧处理模块的一个分帧后语音信号,通过乘法器相乘,实现加窗功能,输出加窗语音信号;计数器的输入使能端接收分帧处理模块的使能信号,计数器的输出端连接存储器ROM的地址端;存储器ROM的输出端连接到乘法器的一个输入端;乘法器接收来自分帧处理模块处理的语音信号与存储器ROM输出的数据做乘法运算; 
本发明离散功率谱估计模块中的FFT模块是调用Xilinx公司的Fast Fourier Transform7.1 IP核实现的;FFT模块输出实部与虚部信号分别通过乘法器,实现对各自取平方运算,然后两路信号通过加法器输出,得到语音信号的离散功率谱估计值; 
本发明Mel滤波器组模块中的输入控制单元结合硬件描述语言编写并搭载Black Box模块实现,输入控制单元对FIFO3、FIFO4和滤波器系数存储器进行控制,控制FIFO3、FIFO4的读写和滤波器系数存储器的输出;输出控制单元由两个乘累加器和一个加法器组成,输出控制单元接收来自FIFO3、FIFO4和滤波器系数存储器的输出信号,分别完成FIFO3、FIFO4与滤波器系数的乘累加运算,然后通过加法器合并输出,此输出即为每一帧语音信号经过Mel滤波器的滤波结果; 
本发明取自然对数模块中的初始化单元对输入待求对数值的信号做初始化处理,输出三路信号作为对数运算单元的输入,对数运算单元由二十三个级联的CORDIC运算单元组成,每一级CORDIC运算单元完成一次迭代运算;待求对数值的信号输入到初始化单元中加法器的一个输入端和减法器的一个输入端,rom1连接加法器的另一个输入端和减法器的另一个输入端,以此对待求对数值的信号实现加1和减1初始化操作,输出两路信号;rom2的输出端作为对数运算单元的一个数值输入端;对数运算单元的三个输入端接收初始化单元的三个输出信号,对数运算单元的输出端连接移位器,移位器的输出信号即为取自然对数模块的输出信号;CORDIC运算单元三个数据输入端接收上一级CORDIC运算单元的三个输出端输出的信号,使能端连接Mel滤波器组模块第8个输出端,假设三个数据输入端输入信号分别为信号x,信号y,信号z,信号y经过移位器1移位与信号x输入加减法器1运算作为信号x的迭代值输出,信号x经过移位器2移位与信号y连接到加减法器2运算作为信号y的迭代值输出,rom3和信号z输入加减法器3,经加减法器3运算作为信号z的迭代值输出; 
本发明离散余弦变换模块采用查找表及并行运算来实现;这里设计了十二个DCT运算单元并行运算通过一个十二路多路选择器对DCT运算选择输出,输出结果送至一个FIFO中缓存,此FIFO中存储的即为MFCC参数;每个DCT运算单元结构完全相同,每个DCT运算单元由一个计数器、一个ROM、一个乘累加器组成,ROM中存储该DCT运算所需DCT余弦值,计数器输出保证ROM与DCT运算单元输入同步输出到乘累加器,乘累加器的输出即是这一个DCT运算单元的输出值; 
上述FPGA(Field-Programmable GateArray)意为现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 
上述FFT模块是本技术领域中的通用模块,意思是快速傅里叶变换模块; 
上述FIFO是英文First In First Out的缩写,意思是一种先进先出的数据缓存器。 
上述FIFO控制器是本技术领域中的常用模块,意思是对FIFO的读写进行控制。 
上述CORDIC(Coordinate Rotation Digital Computer)即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数、双曲线、指数、对数的计算。该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数、乘法、开方、反三角、指数等函数。 
一种利用上述现场可编程门阵列(FPGA)实现语音MFCC参数提取的方法,设待提取特征的语音信号为8kHz采样、8bit量化的单一音频信号,步骤如下: 
1)对待测语音信号进行预处理 
a.对待测语音信号进行预加重处理,使待测语音信号通过一个系统函数为H(z)=1-0.9375z-1预加重处理模块,对语音信号中的高频部分频谱进行提升,从而增加语音高频部分的分辨率,其中z为复数变量; 
b.对待测语音信号进行分帧处理,信号分帧采用2个FIFO相互存储数据的方法实现,帧长选256个采样值为一帧,帧移为128采样值;FIFO1的深度为256,FIFO2的深度为128; 
2个FIFO实现分帧的基本思路为:FIFO1的读时钟是写时钟的2倍,其读时钟与FIFO2的读写时钟相同,FIFO1的写信号始终为1;当FIFO1第一次写满256个数据后,开始读取写入的前128个数据;当读完第一个128数据后,继续读128个数据,同时打开FIFO2写使能,将输出的数据写入FIFO2;当FIFO2写满后,FIFO1停止读出,FIFO2开始读出;FIFO2读空后,FIFO1再次读出,同时再次写入FIFO2,实现128个数据值的重复读出、移帧;此过程中需要一个多路选择器MUX,选择对FIFO1和FIFO2进行读出,实现分帧,分帧处理之后的一帧语音记为s(n); 
c.对待测语音信号进行加窗处理,对已取出的一帧语音s(n)进行加窗处理,用长度为256的窗函数w(n)对语音信号进行加权处理,从而形成加窗语音ww(n),即ww(n)=s(n)w(n),所用的窗函数是汉明窗,汉明窗函数公式: 
w ( n ) = 0.54 - 0.46 · cos ( 2 πn / ( N - 1 ) ) n = 0,1 . . . N - 1 0 n = else , 其中else为除了n以外的所有正整数;N为窗长,这里取256,n为自变量; 
用查表的方法来实现加窗模块;按照汉明窗的公式对ROM进行初始化,存入汉明窗(256)各点数值,并用一个计数器用于产生ROM的地址addr;用分帧后的信号与ROM输出各点的值相乘,即得加窗后的语音信号帧; 
2)对待测语音信号进行离散功率谱估计,对一帧语音进行离散傅里叶变换,并计算变换结果模值的平方,即得到待测语音信号的离散功率谱;通过离散功率谱估计模块中的FFT模块调用Xinlix Fast Fourier Transform 7.1 IP核来计算离散傅里叶变换,并对计算输出进行乘法及加法运算,求得待测语音信号的离散功率谱; 
3)对待测语音信号进行Mel三角滤波器组滤波,Mel滤波器组是一个24阶的三角滤波器,其系数是一个24×129的矩阵,而在该滤波器系数组中,大部分系数为0,且其分别呈规律性:24阶滤波器中,奇数阶数和偶数阶数的系数在顺序上分别与下一阶衔接,而且所有非零系数的个数为242,小于一帧的采样点数;利用这一规律,采用类似分帧的观点,用硬件描述语言编写FIFO控制器,用两个FIFO作为缓冲器,分别将FIFO3和FIFO4的输出数据与事先存在ROM中的Mel滤波器组系数相乘,即在一帧256个时钟时刻内实现一帧语音信号与24阶滤波器相乘的实时操作; 
4)对待测语音信号进行取自然对数运算,利用CORDIC算法的双曲旋转法实现自然对数运算,在双曲坐标系下,CORDIC算法的迭代方程如下: 
x n + 1 = x n + · y n · d n · 2 - n y n + 1 = y n + x n · d n · 2 - n z n + 1 = z n - d n · tanh - 1 ( 2 - n ) - - - ( 1 )
其中,x和y是双曲线坐标系下的两个点,z为旋转角度累加值;xn、xn+1分别为x的第n次和第n+1此迭代值;yn、yn+1分别为y的第n次和第n+1次迭代值;zn、zn+1分别为第n次和第n+1次角度累加值;dn是判决算子,用于确定旋转的方向; 
在向量模式下, d n = + 1 y n 0 - 1 y n ≥ 0 , 经n次迭代后的输出方程为: 
z n + 1 ≈ z 0 - tanh - 1 ( y 0 / x 0 ) | tanh - 1 ( y 0 / x 0 ) | 1.1182 - - - ( 2 )
其中,x0、y0和z0是迭代初始值,zn+1是第n+1次角度累加值; 
因为 
Figure BDA00002071677800064
所以对于t,如果我们要求ln(t),只要做如下初始化: 
x=t+1,y=t-1,z=0                                (3) 
则输出z=0.5ln(t),只需要在CORDIC运算之后再做一次左移即可得到ln(t),即, 
ln ( t ) = 2 arctanh ( t - 1 t + 1 ) ;
所用的迭代公式: 
当n<=0时, 
x n + 1 = x n + y n &CenterDot; d n &CenterDot; ( 1 - 2 n - 2 ) y n + 1 = y n + x n &CenterDot; d n &CenterDot; ( 1 - 2 n - 2 ) z n + 1 = z n - d n &CenterDot; tanh - 1 ( 1 - 2 n - 2 ) - - - ( 4 )
当n>0时, 
x n + 1 = x n + y n &CenterDot; d n &CenterDot; 2 - n y n + 1 = y n + x n &CenterDot; d n &CenterDot; 2 - n z n + 1 = z n - d n &CenterDot; tanh - 1 ( 2 - n ) - - - ( 5 )
其中,x和y是双曲线坐标系下的两个点,z为旋转角度累加值;xn、xn+1分别为x的第n次和第n+1此迭代值;yn、yn+1分别为y的第n次和第n+1次迭代值;zn、zn+1分别为第n次和第n+1次角度累加值;dn是判决算子,用于确定旋转的方向; 
在自然对数运算器系统搭建中,选取n的范围为-2~20,采用流水线结构,总共23级流 水,实现了对0~26000以内数值的取自然对数运算; 
5)对待测语音信号进行离散余弦变换,离散余弦转换将对数频谱变换到倒谱域,即得到所需的MFCC系数。 
本发明是基于xilinx公司的数字信号处理开发工具System Generator for DSP,借助System Generator快速开发的优势,可以更快的实现DSP系统的开发;本发明实现了语音信号MFCC特征参数的提取,若对待测语音信号进行离散余弦变换后的MFCC系数进行一阶差分,甚至二阶差分,可得到更好的应用效果; 
本发明的有益效果如下: 
针对MFCC特征提取设计复杂,硬件开发周期较长,本发明通过对各部分数据处理模块的改进并借助Xilinx公司System Generator开发工具,通过将Xilinx开发的一些模块嵌入到Simulink的库中,在Simulink中进行定点仿真,并且生成HDL文件,在ISE中进行调用,快速实现了MFCC特征提取硬件的开发,提高了信号处理速度和研发周期; 
语音MFCC参数的提取的一般方法包括预加重、分帧、加窗、离散功率谱估计、MEL滤波、取对数运算、离散余弦变换(DCT)等。 
附图说明
图1为本发明FPGA装置的整体结构示意框图; 
其中:1、预加重处理模块,2、分帧处理模块,3、加窗处理模块,4、离散功率谱估计模块,5、Mel滤波器组模块,6、取自然对数模块,7、离散余弦变换模块。 
图2为本发明预加重处理模块结构示意框图; 
其中:8、减法器,9、延时器,10、移位寄存器,11、加法器。 
图3为本发明分帧模块结构示意框图; 
其中:12、分帧控制单元,13、FIFO1,14FIFO2,15、多路选择器。 
图4为本发明加窗处理模块结构示意框图; 
其中:16、计数器,17、存储器,18、乘法器。 
图5为本发明离散功率谱估计模块结构示意框图; 
其中:19、FFT模块,20、乘法器1,21、乘法器2,22、加法器1。 
图6为本发明Mel滤波器组实现结构示意框图。 
其中:23、输入控制单元,24、FIFO3,25、FIFO4,26、滤波器系数存储器,27、输出控制单元。 
图7为本发明取自然对数模块结构示意框图; 
其中:28、初始化单元,29、对数运算单元,30、移位器,31、延时器6。 
图8为本发明取自然对数模块中的初始化单元结构示意框图; 
其中:32、加法器3,33、减法器3,34、rom1,35、rom2。 
图9为本发明取自然对数模块中的CORDIC运算单元结构示意框图; 
其中:36、移位器1,37、移位器2,38、反相器,39、rom3,40、加减法器1,41、加减法器2,42、加减法器3。 
图10为本发明离散余弦变换模块结构示意框图;其中:43、并行运算单元,44、缓存器 控制单元,45、输出缓存器。 
具体实施方式
下面结合附图和实施例对本发明做进一步说明,但不限于此。 
实施例1: 
本发明实施例如图1-10所示,一种现场可编程门阵列(FPGA),包括预加重处理模块(1)、分帧处理模块(2)、加窗处理模块(3)、离散功率谱估计模块(4)、Mel滤波器组模块(5)、取自然对数模块(6)和离散余弦变换模块(7),其特征在于预加重处理模块(1)输出端连接到分帧处理模块(2)的输入端;分帧处理模块(2)输出端连接到加窗处理模块(3)的输入端,其使能控制端分别和加窗处理模块(3)及离散功率谱估计模块(4)的使能端相连接;加窗处理模块(3)的输出端和离散功率谱估计模块(4)的输入端相连接;离散功率谱估计模块(4)输出端连接到Mel滤波器组模块(5)的输入端,同时其使能控制端和Mel滤波器组模块(5)的使能端相连接;Mel滤波器组模块(5)的输出端、使能控制端分别和取自然对数模块(6)的输入端、使能端相连接;取自然对数模块(6)的输出端、使能控制端分别连接到离散余弦变换模块(7)的输入端和使能端; 
所述的预加重处理模块(1)由减法器(8)、加法器(11)、延时器(9)和移位寄存器(10)组成,减法器(8)和延时器(9)的输入端相连;延时器(9)输出端分别连接到减法器(8)和移位寄存器(10)的输入端;减法器(8)和移位寄存器(10)的输出端连接到加法器(11)的输入端; 
所述的分帧处理模块(2)由分帧控制单元(12)、FIFO1(13)、FIFO2(14)和一个多路选择器(15)组成;分帧控制单元(12)包括计数器1、计数器2、与门1、与门2和反相器,计数器1的输出端分别连接FIFO1(13)的写使能端、计数器2的输入端和加窗处理模块(3)的使能端;计数器2的输出端经反相器与计数器1的另一路输出端连接后又分别连接到与门1及与门2,与门1输出连接FIFO2(14)的写使能端,计数器2的输出端连接到FIFO2(14)的读使能端;与门2输出连接到FIFO1(13)的读使能端及多路选择器(15)的选择端;FIFO1(13)的输出端连接多路选择器(15)的一个输入端,同时连接到FIFO2(14)的输入端;FIFO2(14)的输出端连接到多路选择器(15)的一个输入端;多路选择器(15)输出连接到下一级加窗处理模块(3)输入端; 
所述的加窗处理模块(3)由计数器(16)、存储器(17)和乘法器(18)组成,计数器(16)的输出端连接存储器(17)的地址端;存储器(17)的输出端连接到乘法器(18)的一个输入端;乘法器(18)的另一输入端连接到分帧处理模块(2)中的多路选择器(15)的输出端; 
所述的离散功率谱估计模块(4)由FFT模块(19)、乘法器1(20)、乘法器2(21)和加法器1(22)组成,FFT模块(19)有三个输出端,分别为实部信号输出端、虚部信号输出端和数据有效端,实部信号输出端连接乘法器1(20)的两个输入端,虚部信号输出端连接乘法器2(21)的两个输入端;两个乘法器(20)、(21)输出端连接加法器1(22)输入端,加法器1(22)输出端连接Mel滤波器组模块(5)中FIFO3和FIFO4的数据输入端; 
所述的Mel滤波器组模块(5)由输入控制单元(23)、FIFO3(24)、FIFO4(25)、滤波器系数存储器(26)和输出控制单元(27)组成;输入控制单元(23)包括三个计数器3-5、5个延时器1-5、与门、反相器1和FIFO控制器,计数器3使能端连接离散功率谱估计模块 (4)中FFT模块(19)的数据有效端,计数器3输出端与离散功率谱估计模块(4)使能信号输出端一起连接到与门的输入端,与门输出端连接反相器1输入端,反相器1输出端连接FIFO控制器输入端,与门还连接延时器5,延时器5输出端连接滤波器系数存储器(26)使能端;FIFO控制器一个输出端连接延时器1,延时器1连接FIFO3(24)读使能端和输出控制单元(27)中乘累加器1的使能端,另一个输出端连接延时器2,延时器2连接FIFO4(25)读使能端和输出控制单元(27)中乘累加器2的使能端;上一级离散功率谱估计模块(4)连接延时器3,延时器3输出端连接FIFO3(24)使能端;离散功率谱估计模块(4)还连接延时器4,延时器4输出端连接FIFO4(25)使能端;离散功率谱估计模块(4)中FFT模块(19)的数据有效端还连接到计数器2和计数器3,计数器4和计数器5的输出端分别连接FIFO3(24)和FIFO4(25)的写使能端;FIFO控制器由硬件描述语言编写实现;FIFO3(24)和FIFO4(25)输入端连接上一级离散功率谱估计模块(4)的输出端,FIFO3(24)及FIFO4(25)的输出端分别连接到输出控制单元(27)的输入端;输出控制单元(27)由两个乘累加器和加法器2组成,第1个乘累加器输入端连接FIFO1(13)输出端和滤波器系数存储器(26)的输出端,第2个乘累加器2输入端连接FIFO2(14)输出端和滤波器系数存储器(26)的输出端;加法器2的输入端连接两个乘累加器的输出端,加法器2的输出端作为Mel滤波器组模块(5)的输出; 
所述的取自然对数模块(6)由初始化单元(28)、对数运算单元(29)、移位器(30)和延时器6(31)组成,初始化单元(28)和对数运算单元(29)各有一个输入使能端连接Mel滤波器组模块(5)第8个输出端,延时器6(31)连接Mel滤波器组模块第8个输出端;初始化单元的三个输出端连接对数运算单元(29)的另外三个输入端;对数运算单元(29)输出端连接移位器(30)输入端; 
初始化单元(28)由加法器3(32)、减法器3(33)、rom1(34)和rom2(35)组成,加法器3(32)的使能端和减法器3(33)的使能端相连接作为初始化单元(28)的使能端;加法器3(32)的一个输入端和减法器3(33)的一个输入端相连接;rom1(34)和rom2(35)的输入端接地,rom1(34)的输出端分别连接到加法器3(32)和减法器3(33)的另一个输入端,加法器3(32)和减法器3(33)及rom 2(35)的输出端分别和对数运算单元(29)的三个输入端相连接; 
对数运算单元(29)由23级CORDIC运算单元顺序连接组成,每级CORDIC运算单元数据输入端连接上一级CORDIC运算单元的三个输出端,Mel滤波器组模块(5)的第8个输出端连接到第一级CORDIC运算单元的输入使能端;CORDIC运算单元由移位器1(36)、移位器2(37)、加减法器1(40)、加减法器2(41)、加减法器3(42)、rom3(39)和反相器2(38)组成;加减法器1(40)、加减法器2(41)、加减法器3(42)的使能端相连接后作为CORDIC运算单元的使能端;移位器1(36)输出端连接加减法器1(40)的一个输入端,移位器2(37)连接加减法器2(41)的一个输入端,反相器2(38)的输出端连接加减法器3(42)的加减选择端,反相器2(38)输出端同时连接加减法器1(40)、2(41)的加减选择端,rom3(39)输入端接地,rom3(39)连接加减法器3(42)的一个输入端; 
所述的离散余弦变换模块(7)包括并行运算单元(43)、缓存器控制单元(44)和输出缓存器(45),并行运算单元(43)包括12个DCT运算单元、12个延时器7-18、计数器4和多路选择器,其中DCT运算单元由计数器5、ROM、乘累加器组成;计数器5的使能端作为DCT运算单元的使能输入端,计数器5分别连接到ROM地址输入端和乘累加器的使能端;ROM 输出端连接乘累加器的一个数据输入端;乘累加器另一个数据输入端作为DCT运算单元数据输入端连接取自然对数模块(6)数据输出端;乘累加器输出端作为DCT运算单元的输出端;12个DCT运算单元数据输入端并行连接到上一级取自然对数模块的数据输出端,DCT运算单元使能端连接到取自然对数模块(6)中延时器6的输出端,第一个DCT运算单元的输出端直接连接到多路选择器的一个数据端,第2至12个DCT运算单元的输出端分别顺序连接到延时器8至延时器18,延时器8至延时器18输出端分别连接多路选择器的11个数据端;延时器7连接上一级取自然对数模块(6)使能信号输出端,延时器7输出端连接计数器4,计数器4输出端连接多路选择器的选择端;多路选择器输出端作为并行运算单元输出端连接输出缓存器(45)的数据输入端; 
缓存器控制单元(44)由计数器6和延时器19组成,计数器6使能端连接并行运算单元延时器7输出端,计数器6输出端连接到输出缓存器(45)写使能端;延时器19输入端连接并行运算单元(43)的延时器7输出端,延时器19输出端连接输出缓存器(45)读使能端;输出缓存器(45)的一个输入端连接并行运算单元(43)数据输出端,另两个输入端连接缓存器控制单元(44)的输出端。 
实施例2: 
一种利用上述现场可编程门阵列(FPGA)实现语音MFCC参数提取的方法,设待提取特征的语音信号为8kHz采样、8bit量化的单一音频信号,该方法步骤如下: 
1)对待测语音信号进行预处理 
a.对待测语音信号进行预加重处理,使待测语音信号通过一个系统函数为H(z)=1-0.9375z-1预加重处理模块,对语音信号中的高频部分频谱进行提升,从而增加语音高频部分的分辨率,其中z为复数变量; 
b.对待测语音信号进行分帧处理,信号分帧采用2个FIFO相互存储数据的方法实现,帧长选256个采样值为一帧,帧移为128采样值;FIFO1的深度为256,FIFO2的深度为128; 
2个FIFO实现分帧的基本思路为:FIFO1的读时钟是写时钟的2倍,其读时钟与FIFO2的读写时钟相同,FIFO1的写信号始终为1;当FIFO1第一次写满256个数据后,开始读取写入的前128个数据;当读完第一个128数据后,继续读128个数据,同时打开FIFO2写使能,将输出的数据写入FIFO2;当FIFO2写满后,FIFO1停止读出,FIFO2开始读出;FIFO2读空后,FIFO1再次读出,同时再次写入FIFO2,实现128个数据值的重复读出、移帧;此过程中需要一个多路选择器MUX,选择对FIFO1和FIFO2进行读出,实现分帧,分帧处理之后的一帧语音记为s(n); 
c.对待测语音信号进行加窗处理,对已取出的一帧语音s(n)进行加窗处理,用长度为256的窗函数w(n)对语音信号进行加权处理,从而形成加窗语音ww(n),即ww(n)=s(n)w(n),所用的窗函数是汉明窗,汉明窗函数公式: 
w ( n ) = 0.54 - 0.46 &CenterDot; cos ( 2 &pi;n / ( N - 1 ) ) n = 0,1 . . . N - 1 0 n = else , 其中else为除了n以外的所有正整数;N为窗长,这里取256,n为自变量; 
用查表的方法来实现加窗模块;按照汉明窗的公式对ROM进行初始化,存入汉明窗(256) 各点数值,并用一个计数器用于产生ROM的地址addr;用分帧后的信号与ROM输出各点的值相乘,即得加窗后的语音信号帧; 
2)对待测语音信号进行离散功率谱估计,对一帧语音进行离散傅里叶变换,并计算变换结果模值的平方,即得到待测语音信号的离散功率谱;通过离散功率谱估计模块中的FFT模块调用Xinlix Fast Fourier Transform 7.1 IP核来计算离散傅里叶变换,并对计算输出进行乘法及加法运算,求得待测语音信号的离散功率谱; 
3)对待测语音信号进行Mel三角滤波器组滤波,Mel滤波器组是一个24阶的三角滤波器,其系数是一个24×129的矩阵,而在该滤波器系数组中,大部分系数为0,且其分别呈规律性:24阶滤波器中,奇数阶数和偶数阶数的系数在顺序上分别与下一阶衔接,而且所有非零系数的个数为242,小于一帧的采样点数;利用这一规律,采用类似分帧的观点,用硬件描述语言编写FIFO控制器,用两个FIFO作为缓冲器,分别将FIFO3和FIFO4的输出数据与事先存在ROM中的Mel滤波器组系数相乘,即在一帧256个时钟时刻内实现一帧语音信号与24阶滤波器相乘的实时操作; 
4)对待测语音信号进行取自然对数运算,利用CORDIC算法的双曲旋转法实现自然对数运算,在双曲坐标系下,CORDIC算法的迭代方程如下: 
x n + 1 = x n + &CenterDot; y n &CenterDot; d n &CenterDot; 2 - n y n + 1 = y n + x n &CenterDot; d n &CenterDot; 2 - n z n + 1 = z n - d n &CenterDot; tanh - 1 ( 2 - n ) - - - ( 1 )
其中,x和y是双曲线坐标系下的两个点,z为旋转角度累加值;xn、xn+1分别为x的第n次和第n+1此迭代值;yn、yn+1分别为y的第n次和第n+1次迭代值;zn、zn+1分别为第n次和第n+1次角度累加值;dn是判决算子,用于确定旋转的方向; 
在向量模式下, d n = + 1 y n 0 - 1 y n &GreaterEqual; 0 , 经n次迭代后的输出方程为: 
z n + 1 &ap; z 0 - tanh - 1 ( y 0 / x 0 ) | tanh - 1 ( y 0 / x 0 ) | 1.1182 - - - ( 2 )
其中,x0、y0和z0是迭代初始值,zn+1是第n+1次角度累加值; 
因为 
Figure BDA00002071677800114
所以对于t,如果我们要求ln(t),只要做如下初始化: 
x=t+1,y=t-1,z=0                                (3) 
则输出z=0.5ln(t),只需要在CORDIC运算之后再做一次左移即可得到ln(t),即, 
ln ( t ) = 2 arctanh ( t - 1 t + 1 ) ;
所用的迭代公式: 
当n<=0时, 
x n + 1 = x n + y n &CenterDot; d n &CenterDot; ( 1 - 2 n - 2 ) y n + 1 = y n + x n &CenterDot; d n &CenterDot; ( 1 - 2 n - 2 ) z n + 1 = z n - d n &CenterDot; tanh - 1 ( 1 - 2 n - 2 ) - - - ( 4 )
当n>0时, 
x n + 1 = x n + y n &CenterDot; d n &CenterDot; 2 - n y n + 1 = y n + x n &CenterDot; d n &CenterDot; 2 - n z n + 1 = z n - d n &CenterDot; tanh - 1 ( 2 - n ) - - - ( 5 )
其中,x和y是双曲线坐标系下的两个点,z为旋转角度累加值;xn、xn+1分别为x的第n次和第n+1此迭代值;yn、yn+1分别为y的第n次和第n+1次迭代值;zn、zn+1分别为第n次和第n+1次角度累加值;dn是判决算子,用于确定旋转的方向; 
在自然对数运算器系统搭建中,选取n的范围为-2~20,采用流水线结构,总共23级流水,实现了对0~26000以内数值的取自然对数运算; 
5)对待测语音信号进行离散余弦变换,离散余弦转换将对数频谱变换到倒谱域,即得到所需的MFCC系数。 

Claims (2)

1.一种现场可编程门阵列,包括预加重处理模块、分帧处理模块、加窗处理模块、离散功率谱估计模块、Mel滤波器组模块、取自然对数模块和离散余弦变换模块,其特征在于预加重处理模块输出端连接到分帧处理模块的输入端;分帧处理模块输出端连接到加窗处理模块的输入端,其使能控制端分别和加窗处理模块及离散功率谱估计模块的使能端相连接;加窗处理模块的输出端和离散功率谱估计模块的输入端相连接;离散功率谱估计模块输出端连接到Mel滤波器组模块的输入端,同时其使能控制端和Mel滤波器组模块的使能端相连接;Mel滤波器组模块的输出端、使能控制端分别和取自然对数模块的输入端、使能端相连接;取自然对数模块的输出端、使能控制端分别连接到离散余弦变换模块的输入端和使能端;
所述的预加重处理模块由减法器、加法器、延时器和移位寄存器组成,减法器和延时器的输入端相连;延时器输出端分别连接到减法器和移位寄存器的输入端;减法器和移位寄存器的输出端连接到加法器的输入端;
所述的分帧处理模块由分帧控制单元、FIFO1、FIFO2和一个多路选择器组成;分帧控制单元包括计数器1、计数器2、与门1、与门2和反相器,计数器1的输出端分别连接FIFO1的写使能端、计数器2的输入端和加窗处理模块的使能端;计数器2的输出端经反相器与计数器1的另一路输出端连接后又分别连接到与门1及与门2,与门1输出连接FIFO2的写使能端,计数器2的输出端连接到FIFO2的读使能端;与门2输出连接到FIFO1的读使能端及多路选择器的选择端;FIFO1的输出端连接多路选择器的一个输入端,同时连接到FIFO2的输入端;FIFO2的输出端连接到多路选择器的一个输入端;多路选择器输出连接到下一级加窗处理模块输入端;
所述的加窗处理模块由计数器、存储器和乘法器组成,计数器的输出端连接存储器的地址端;存储器的输出端连接到乘法器的一个输入端;乘法器的另一输入端连接到分帧处理模块中的多路选择器的输出端;
所述的离散功率谱估计模块由FFT模块、乘法器1、乘法器2和加法器1组成,FFT模块有三个输出端,分别为实部信号输出端、虚部信号输出端和数据有效端,实部信号输出端连接乘法器1的两个输入端,虚部信号输出端连接乘法器2的两个输入端;两个乘法器输出端连接加法器1输入端,加法器1输出端连接Mel滤波器组模块中FIFO3和FIFO4的数据输入端;
所述的Mel滤波器组模块由输入控制单元、FIFO3、FIFO4、滤波器系数存储器和输出控制单元组成;输入控制单元包括三个计数器3-5、5个延时器1-5、与门、反相器1和FIFO控制器,计数器3使能端连接离散功率谱估计模块中FFT模块的数据有效端,计数器3输出端与离散功率谱估计模块使能信号输出端一起连接到与门的输入端,与门输出端连接反相器1输入端,反相器1输出端连接FIFO控制器输入端,与门还连接延时器5,延时器5输出端连接滤波器系数存储器使能端;FIFO控制器一个输出端连接延时器1,延时器1连接FIFO3读使能端和输出控制单元中乘累加器1的使能端,另一个输出端连接延时器2,延时器2连接FIFO4读使能端和输出控制单元中乘累加器2的使能端;上一级离散功率谱估计模块连接延时器3,延时器3输出端连接FIFO3使能端;离散功率谱估计模块还连接延时器4,延时器4输出端连接FIFO4使能端;离散功率谱估计模块中FFT模块的数据有效端还连接到计数器2和计数器3,计数器4和计数器5的输出端分别连接FIFO3和FIFO4的写使能端;FIFO控制器由硬件描述语言编写实现;FIFO3和FIFO4输入端连接上一级离散功率谱估计模块的输出端,FIFO3及FIFO4的输出端分别连接到输出控制单元的输入端;输出控制单元由两个乘累加器和加法器2组成,第1个乘累加器输入端连接FIFO1输出端和滤波器系数存储器的输出端,第2个乘累加器2输入端连接FIFO2输出端和滤波器系数存储器的输出端;加法器2的输入端连接两个乘累加器的输出端,加法器2的输出端作为Mel滤波器组模块的输出;
所述的取自然对数模块由初始化单元、对数运算单元、移位器和延时器6组成,初始化单元和对数运算单元各有一个输入使能端连接Mel滤波器组模块第8个输出端,延时器6连接Mel滤波器组模块第8个输出端;初始化单元的三个输出端连接对数运算单元的另外三个输入端;对数运算单元输出端连接移位器输入端;
初始化单元由加法器3、减法器3、rom1和rom2组成,加法器3的使能端和减法器3的使能端相连接作为初始化单元的使能端;加法器3的一个输入端和减法器3的一个输入端相连接;rom1和rom2的输入端接地,rom1的输出端分别连接到加法器3和减法器3的另一个输入端,加法器3和减法器3及rom2的输出端分别和对数运算单元的三个输入端相连接;
对数运算单元由23级CORDIC运算单元顺序连接组成,每级CORDIC运算单元数据输入端连接上一级CORDIC运算单元的三个输出端,Mel滤波器组模块的第8个输出端连接到第一级CORDIC运算单元的输入使能端;CORDIC运算单元由移位器1、移位器2、加减法器1、加减法器2、加减法器3、rom3和反相器2组成;加减法器1、加减法器2、加减法器3的使能端相连接后作为CORDIC运算单元的使能端;移位器1输出端连接减加法器1的一个输入端,移位器2连接加减法器2的一个输入端,反相器2的输出端连接加减法器3的加减选择端,反相器2输出端同时连接加减法器1、2的加减选择端,rom3输入端接地,rom3连接加减法器3的一个输入端;
所述的离散余弦变换模块包括并行运算单元、缓存器控制单元和输出缓存器,并行运算单元包括12个DCT运算单元、12个延时器7-18、计数器4和多路选择器,其中DCT运算单元由计数器5、ROM、乘累加器组成;计数器5的使能端作为DCT运算单元的使能输入端,计数器5分别连接到ROM地址输入端和乘累加器的使能端;ROM输出端连接乘累加器的一个数据输入端;乘累加器另一个数据输入端作为DCT运算单元数据输入端连接取自然对数模块数据输出端;乘累加器输出端作为DCT运算单元的输出端;12个DCT运算单元数据输入端并行连接到上一级取自然对数模块的数据输出端,DCT运算单元使能端连接到取自然对数模块中延时器6的输出端,第一个DCT运算单元的输出端直接连接到多路选择器的一个数据端,第2至12个DCT运算单元的输出端分别顺序连接到延时器8至延时器18,延时器8至延时器18输出端分别连接多路选择器的11个数据端;延时器7连接上一级取自然对数模块使能信号输出端,延时器7输出端连接计数器4,计数器4输出端连接多路选择器的选择端;多路选择器输出端作为并行运算单元输出端连接输出缓存器的数据输入端;
缓存器控制单元由计数器6和延时器19组成,计数器6使能端连接并行运算单元延时器7输出端,计数器6输出端连接到输出缓存器写使能端;延时器19输入端连接并行运算单元的延时器7输出端,延时器19输出端连接输出缓存器读使能端;输出缓存器的一个输入端连接并行运算单元数据输出端,另两个输入端连接缓存器控制单元的输出端。
2.一种利用权利要求1所述的现场可编程门阵列实现语音MFCC参数提取的方法,设待提取特征的语音信号为8kHz采样、8bit量化的单一音频信号,步骤如下:
1)对待测语音信号进行预处理
a.对待测语音信号进行预加重处理,使待测语音信号通过一个系统函数为H(z)=1-0.9375z-1预加重处理模块,对语音信号中的高频部分频谱进行提升,从而增加语音高频部分的分辨率,其中z为复数变量;
b.对待测语音信号进行分帧处理,信号分帧采用2个FIFO相互存储数据的方法实现,帧长选256个采样值为一帧,帧移为128采样值;FIFO1的深度为256,FIFO2的深度为128;
2个FIFO实现分帧的基本思路为:FIFO1的读时钟是写时钟的2倍,其读时钟与FIFO2的读写时钟相同,FIFO1的写信号始终为1;当FIFO1第一次写满256个数据后,开始读取写入的前128个数据;当读完第一个128数据后,继续读128个数据,同时打开FIFO2写使能,将输出的数据写入FIFO2;当FIFO2写满后,FIFO1停止读出,FIFO2开始读出;FIFO2读空后,FIFO1再次读出,同时再次写入FIFO2,实现128个数据值的重复读出、移帧;此过程中需要一个多路选择器MUX,选择对FIFO1和FIFO2进行读出,实现分帧,分帧处理之后的一帧语音记为s(n);
c.对待测语音信号进行加窗处理,对已取出的一帧语音s(n)进行加窗处理,用长度为256的窗函数w(n)对语音信号进行加权处理,从而形成加窗语音ww(n),即ww(n)=s(n)w(n),所用的窗函数是汉明窗,汉明窗函数公式:
w ( n ) = 0.54 - 0.46 &CenterDot; cos ( 2 &pi;n / ( N - 1 ) ) n = 0,1 . . . N - 1 0 n = else , 其中else为除了n以外的所有正整数;N为窗长,这里取256,n为自变量;
用查表的方法来实现加窗模块;按照汉明窗的公式对ROM进行初始化,存入汉明窗(256)各点数值,并用一个计数器用于产生ROM的地址addr;用分帧后的信号与ROM输出各点的值相乘,即得加窗后的语音信号帧;
2)对待测语音信号进行离散功率谱估计,对一帧语音进行离散傅里叶变换,并计算变换结果模值的平方,即得到待测语音信号的离散功率谱;通过离散功率谱估计模块中的FFT模块调用Xinlix Fast Fourier Transform 7.1 IP核来计算离散傅里叶变换,并对计算输出进行乘法及加法运算,求得待测语音信号的离散功率谱;
3)对待测语音信号进行Mel三角滤波器组滤波,Mel滤波器组是一个24阶的三角滤波器,其系数是一个24×129的矩阵,而在该滤波器系数组中,大部分系数为0,且其分别呈规律性:24阶滤波器中,奇数阶数和偶数阶数的系数在顺序上分别与下一阶衔接,而且所有非零系数的个数为242,小于一帧的采样点数;利用这一规律,采用类似分帧的观点,用硬件描述语言编写FIFO控制器,用两个FIFO作为缓冲器,分别将FIFO3和FIFO4的输出数据与事先存在ROM中的Mel滤波器组系数相乘,即在一帧256个时钟时刻内实现一帧语音信号与24阶滤波器相乘的实时操作;
4)对待测语音信号进行取自然对数运算,利用CORDIC算法的双曲旋转法实现自然对数运算,在双曲坐标系下,CORDIC算法的迭代方程如下:
x n + 1 = x n + &CenterDot; y n &CenterDot; d n &CenterDot; 2 - n y n + 1 = y n + x n &CenterDot; d n &CenterDot; 2 - n z n + 1 = z n - d n &CenterDot; tanh - 1 ( 2 - n ) - - - ( 1 )
其中,x和y是双曲线坐标系下的两个点,z为旋转角度累加值;xn、xn+1分别为x的第n次和第n+1此迭代值;yn、yn+1分别为y的第n次和第n+1次迭代值;zn、zn+1分别为第n次和第n+1次角度累加值;dn是判决算子,用于确定旋转的方向;
在向量模式下, d n = + 1 y n < 0 - 1 y n &GreaterEqual; 0 , 经n次迭代后的输出方程为:
z n + 1 &ap; z 0 - tanh - 1 ( y 0 / x 0 ) | tanh - 1 ( y 0 / x 0 ) | 1.1182 - - - ( 2 )
其中,x0、y0和z0是迭代初始值,zn+1是第n+1次角度累加值;
因为
Figure FDA00002071677700044
所以对于t,如果我们要求ln(t),只要做如下初始化:
x=t+1,y=t-1,z=0                        (3)
则输出z=0.5ln(t),只需要在CORDIC运算之后再做一次左移即可得到ln(t),即,
ln ( t ) = 2 arctanh ( t - 1 t + 1 ) ;
所用的迭代公式:
当n<=0时,
x n + 1 = x n + y n &CenterDot; d n &CenterDot; ( 1 - 2 n - 2 ) y n + 1 = y n + x n &CenterDot; d n &CenterDot; ( 1 - 2 n - 2 ) z n + 1 = z n - d n &CenterDot; tanh - 1 ( 1 - 2 n - 2 ) - - - ( 4 )
当n>0时,
x n + 1 = x n + y n &CenterDot; d n &CenterDot; 2 - n y n + 1 = y n + x n &CenterDot; d n &CenterDot; 2 - n z n + 1 = z n - d n &CenterDot; tanh - 1 ( 2 - n ) - - - ( 5 )
其中,x和y是双曲线坐标系下的两个点,z为旋转角度累加值;xn、xn+1分别为x的第n次和第n+1此迭代值;yn、yn+1分别为y的第n次和第n+1次迭代值;zn、zn+1分别为第n次和第n+1次角度累加值;dn是判决算子,用于确定旋转的方向;
在自然对数运算器系统搭建中,选取n的范围为-2~20,采用流水线结构,总共23级流水,实现了对0~26000以内数值的取自然对数运算;
5)对待测语音信号进行离散余弦变换,离散余弦转换将对数频谱变换到倒谱域,即得到所需的MFCC系数。
CN201210313695XA 2012-08-29 2012-08-29 一种用现场可编程门阵列实现mfcc参数提取的方法 Pending CN102831895A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210313695XA CN102831895A (zh) 2012-08-29 2012-08-29 一种用现场可编程门阵列实现mfcc参数提取的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210313695XA CN102831895A (zh) 2012-08-29 2012-08-29 一种用现场可编程门阵列实现mfcc参数提取的方法

Publications (1)

Publication Number Publication Date
CN102831895A true CN102831895A (zh) 2012-12-19

Family

ID=47334994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210313695XA Pending CN102831895A (zh) 2012-08-29 2012-08-29 一种用现场可编程门阵列实现mfcc参数提取的方法

Country Status (1)

Country Link
CN (1) CN102831895A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2860706A3 (en) * 2013-09-24 2015-08-12 Agnitio S.L. Anti-spoofing
CN104900227A (zh) * 2014-03-03 2015-09-09 联想(北京)有限公司 语音特征信息的提取方法及电子设备
CN106326628A (zh) * 2015-12-03 2017-01-11 西安邮电大学 一种实现自然对数和自然指数函数的可重构阵列结构
US9767806B2 (en) 2013-09-24 2017-09-19 Cirrus Logic International Semiconductor Ltd. Anti-spoofing
CN107368840A (zh) * 2016-05-11 2017-11-21 中国科学院声学研究所 一种基于mfcc和支持向量机的水下机动小目标识别方法
CN110858478A (zh) * 2019-10-12 2020-03-03 杭州智芯科微电子科技有限公司 语音特征提取的处理方法、装置、计算机设备和存储介质
CN111128245A (zh) * 2019-12-19 2020-05-08 珠海市一微半导体有限公司 一种语音分帧处理电路和方法
CN111210806A (zh) * 2020-01-10 2020-05-29 东南大学 一种基于串行fft的低功耗mfcc语音特征提取电路
CN111597498A (zh) * 2020-05-18 2020-08-28 电子科技大学 一种基于大点数fft电路的频谱获取方法
CN112214195A (zh) * 2020-10-13 2021-01-12 西安微电子技术研究所 一种宇航三线制同步从模式串行通信功能单元电路及方法
CN112365884A (zh) * 2020-11-10 2021-02-12 珠海格力电器股份有限公司 耳语的识别方法和装置、存储介质、电子装置
CN112397086A (zh) * 2020-11-05 2021-02-23 深圳大学 语音关键词检测方法、装置、终端设备和存储介质
CN112491392A (zh) * 2020-12-04 2021-03-12 南京长峰航天电子科技有限公司 窗函数分数延时滤波器设计方法、装置及其存储介质
CN113889142A (zh) * 2021-10-14 2022-01-04 鹰潭市广播电视传媒集团有限责任公司 基于公共播音喇叭的播音监控系统、方法、装置和介质
CN114299966A (zh) * 2021-12-24 2022-04-08 中国人民解放军93114部队 一种基于机场高危鸟类鸣声的智能识别方法

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
姜元亭: "基于FPGA的语音信号实时处理", 《硬件纵横》 *
孙红英等: "语谱分析的FPGA实现", 《电子与信息学报》 *
张士雄等: "用FPGA实现语音信号短时处理", 《电子测量技术》 *
张文希等: "基于FPGA的语音MFCC参数提取", 《制造业自动化》 *
张晶晶等: "音频信号采集与处理系统的FPGA实现", 《声学技术》 *
戚甫峰: "基于FPGA的音频信号分析仪", 《科技信息》 *
谢秋云等: "语音MFCC特征提取的FPGA实现", 《计算机工程与设计》 *
高谦等: "基于FPGA 的高性能MFCC特征参数提取", 《通信技术》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2860706A3 (en) * 2013-09-24 2015-08-12 Agnitio S.L. Anti-spoofing
US9767806B2 (en) 2013-09-24 2017-09-19 Cirrus Logic International Semiconductor Ltd. Anti-spoofing
CN104900227A (zh) * 2014-03-03 2015-09-09 联想(北京)有限公司 语音特征信息的提取方法及电子设备
CN106326628A (zh) * 2015-12-03 2017-01-11 西安邮电大学 一种实现自然对数和自然指数函数的可重构阵列结构
CN106326628B (zh) * 2015-12-03 2018-12-28 西安邮电大学 一种实现自然对数和自然指数函数的可重构阵列结构
CN107368840A (zh) * 2016-05-11 2017-11-21 中国科学院声学研究所 一种基于mfcc和支持向量机的水下机动小目标识别方法
CN110858478A (zh) * 2019-10-12 2020-03-03 杭州智芯科微电子科技有限公司 语音特征提取的处理方法、装置、计算机设备和存储介质
CN111128245A (zh) * 2019-12-19 2020-05-08 珠海市一微半导体有限公司 一种语音分帧处理电路和方法
CN111210806A (zh) * 2020-01-10 2020-05-29 东南大学 一种基于串行fft的低功耗mfcc语音特征提取电路
CN111597498A (zh) * 2020-05-18 2020-08-28 电子科技大学 一种基于大点数fft电路的频谱获取方法
CN111597498B (zh) * 2020-05-18 2023-04-18 电子科技大学 一种基于大点数fft电路的频谱获取方法
CN112214195A (zh) * 2020-10-13 2021-01-12 西安微电子技术研究所 一种宇航三线制同步从模式串行通信功能单元电路及方法
CN112214195B (zh) * 2020-10-13 2022-08-30 西安微电子技术研究所 一种宇航三线制同步从模式串行通信功能单元电路及方法
CN112397086A (zh) * 2020-11-05 2021-02-23 深圳大学 语音关键词检测方法、装置、终端设备和存储介质
CN112365884A (zh) * 2020-11-10 2021-02-12 珠海格力电器股份有限公司 耳语的识别方法和装置、存储介质、电子装置
CN112491392A (zh) * 2020-12-04 2021-03-12 南京长峰航天电子科技有限公司 窗函数分数延时滤波器设计方法、装置及其存储介质
CN112491392B (zh) * 2020-12-04 2024-03-15 南京长峰航天电子科技有限公司 窗函数分数延时滤波器设计方法、装置及其存储介质
CN113889142A (zh) * 2021-10-14 2022-01-04 鹰潭市广播电视传媒集团有限责任公司 基于公共播音喇叭的播音监控系统、方法、装置和介质
CN114299966A (zh) * 2021-12-24 2022-04-08 中国人民解放军93114部队 一种基于机场高危鸟类鸣声的智能识别方法

Similar Documents

Publication Publication Date Title
CN102831895A (zh) 一种用现场可编程门阵列实现mfcc参数提取的方法
Lystig et al. Exact computation of the observed information matrix for hidden Markov models
CN107610708B (zh) 识别声纹的方法及设备
CN110718211B (zh) 一种基于混合压缩卷积神经网络的关键词识别系统
CN103559888A (zh) 基于非负低秩和稀疏矩阵分解原理的语音增强方法
CN110365312B (zh) 两通道正交镜像滤波器组的多相结构及其系数设计方法
Szadkowski et al. FPGA/NIOS implementation of an adaptive FIR filter using linear prediction to reduce narrow band RFI for radio detection of cosmic rays
CN106682732B (zh) 一种应用于神经网络的高斯误差函数电路
CN112086100A (zh) 基于量化误差熵的多层随机神经网络的城市噪音识别方法
CN112397090B (zh) 一种基于fpga的实时声音分类方法及系统
CN103176949B (zh) 实现fft/ifft变换的电路及方法
CN103714825A (zh) 基于听觉感知模型的多通道语音增强方法
CN113435304A (zh) 提取扭振信号的扭振信息的方法、系统、设备及存储介质
CN113935246A (zh) 一种信号鲁棒稀疏时频分析方法、终端设备及存储介质
CN112837670A (zh) 语音合成方法、装置及电子设备
Lordelo et al. Investigating kernel shapes and skip connections for deep learning-based harmonic-percussive separation
CN105304073A (zh) 一种敲击弦乐器的音乐多音符估计方法及系统
CN106385311A (zh) 一种基于fpga的复混沌简化系统的混沌信号发生器
CN116052706A (zh) 一种基于神经网络的低复杂度语音增强方法
CN115618176A (zh) 基于改进粒子群算法的莫尔条纹信号误差补偿方法、系统及存储介质
Charoensak et al. Design of low-cost FPGA hardware for real-time ICA-based blind source separation algorithm
Tokuda et al. Spectral estimation of speech by mel‐generalized cepstral analysis
Singh et al. FPGA-based hardware-accelerated design of linear prediction analysis for real-time speech signal
CN105842536A (zh) 一种改进ZoomFFT和ApFFT算法结合分析密集谐波和间谐波的方法
CN103926567B (zh) 高速实时脉冲压缩算法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20121219