基于短时能量和短时过零率的VAD算法
及其FPGA实现
李昱,林志谋,黄云鹰,卢贵主
(厦门大学电子工程系现代电路与系统技术研究所,福建厦门361005)
摘要:介绍了一种基于短时能量和短时过零率的VAD算法,并对该算法进行了硬件实现。对其中主要的运算模块———滤波器和平方器模块,在硬件实现方法上进行了优化和改进,取得了较好效果使其在保证实时性要求的同时节省了资源,为进一步向低成本器件上移植或系统中作为IP模块应用提供了可能性。
关键词:语音激活检测短时能量短时过零率现场可编程门阵列
语音激活检测VAD(VoiceActivityDetection)是一种通过特定的判决准则判断语音中出现的停顿和静默间隔,检测出有效语音部分的技术。运用这种技术可以在确保语音质量的前提下,对不同类别的语音段采用不同的比特数进行编码,从而降低语音的编码速率。由于在双工移动通信系统中,一方只有35%的时间处于激活状态[1],如何降低静音期的编码速率对于减少传输带宽、功率以及容量具有积极的作用,因此VAD技术在语音通信领域具有重要的使用价值。随着适合于变比特率语音编码的CDMA和PRMA等多址技术的出现,应用于蜂窝的语音激活检测的重要性也随之提高
[2]
1算法及检测流程
1.1算法简述
语音激活检测算法可以基于时域或频域。本文采用的算法是时域分析的方法。算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。算法以短时能量检测为主,短时过零率检测为辅。根据语浊音以及静音音的统计特性,可以把语音段分为清音、
(包括背景噪声)三种。在本算法中,短时能量检测可以较好地区分出浊音和静音。对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段。
。
由于语音通信的特殊性,要求检测过程能达到实时性的要求。而目前主流DSP芯片的并行度并不高,因此在实时处理的要求下,保证语音质量和降低语音的编码速率两者难以兼顾。而现场可编程门阵列(FPGA)由于其硬件具有可编程的灵活性,可以实现较高的并行度,从而可以在满足实时性要求的前提下,很好地保证语音质量并降低语音的编码速率。
1.2检测流程
检测流程:对输入信号先进行高通滤波,减弱以噪声为主的信号能量。接着进行窗长为80个数据的加窗处理,然后计算该帧的平均能量,再利用短时能量进行
VAD初判。若平均能量大于门限则判为语音帧,若平均
2LeeNayes,LarryLauenger.AddinBoundaryScanTestCabilitytoanExistingMulti-strategyTester[J].Autotestcon,19933陈光禹,潘中良.可测试性设计技术[M].北京:电子工业出
版社,1997
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(接上页)
扫描通道使芯片处于某个特定的功能模式,以提高系统控制的灵活性并便于系统设计。本文通过设计实例,详细介绍了利用边界扫描技术控制IC芯片处于高阻模式基的思路和方法,并且通过实验实现,达到了预期目标。于边界扫描技术的测试机制在产品全寿命周期的不同阶段都可以共享,因此利用边界扫描技术可以方便地对电路系统进行调试、测试,显著地降低了产品的开发周期和费用。参考文献
1IEEEstd1149.1-2001:IEEEStandardTestAccessPortandBoundaryScanArchitecture[S].NewYork,USA,2001
4杨廷善.边界扫描技术及其应用[M].测控技术,2000;19
(9):5~8
5姜立东.VHDL语言程序设计及应用[M].北京:北京邮电
大学出版社,2001
6专用集成电路和集成系统自动化设计方法[M].北京:国防
工业出版社,1997
7高平,成立.数字VLSI电路测试技术—BIST方案[J].半导体技术2003;28(9):29~32
(收稿日期:2006-03-15)
110欢迎网上投稿www.aetnet.cnwww.aetnet.com.cn《电子技术应用》2006年第9期
能量小于门限则判为静音帧。对于初判为静音帧的帧再进行VAD平滑,即参考前三帧的情况:如果前三帧中至少包含一帧非平滑过的语音帧,则将该帧平滑为语音帧,同时记录下该帧为平滑所得的语音帧;反之,则判断为静音帧。如果平滑结果仍为静音帧,且当前帧的过零率介于30~70之间时,则改判为语音帧;反之则仍判为静音帧[3]。VAD算法的检测流程图如图1所示。
CPLD的开发流程,并提供调用其他EDA工具,如Model-Synplify/SynplifyPro、FPGAComplier的接口。Sim、
本设计的输入为16位PCM编码的数字语音信号,
输出是每80个数据为一帧的语音信号的检测结果,其中高电平表示语音,低电平表示静音。根据所用算法的特点,将本设计划分成五个模块:FIFO模块、高通滤波模块、平均能量模块、判决模块以及控制模块。系统结构框图如图2所示。
2.1FIFO模块
输入的语音信号的采样率为8kHz,如果将8kHz作为系统的时钟频率,极大地削弱了FPGA芯片的速度优势。因此系统需要两个时钟,一个是频率为8kHz的采样时钟,另一个为系统主时钟。
在FPGA设计中,多时钟设计会带来不稳定的隐患。为了提高系统的稳定性,本设计采用一个双口的FIFO作时钟隔离。FIFO模块具有16位的数据输入口及16位的数据输出口、8kHz时钟输入口以及系统主时钟输入口。此外,由于FIFO的读速度大于写速度,因此当FIFO为空时,需要输出一个empty信号。
在高通滤波、平均能量计算、判决、控制这四个模块中均可采用单时钟设计,而且所使用的时钟均为系统主时钟。
2.2滤波器模块
滤波器对输入信号进行高通滤波的预处理。高通滤波器的传输函数采用CS-ACELP算法所使用的传输函数[4]:
此外,由于人耳的听觉具有掩蔽效应,因此有必要对短时能量门限进行更新[3]。本算法所采用的门限更新方式是:如果连续检测到三帧语音,为了更好地检测到静音,将短时能量门限提高3dB,但如果提高后的门限超过当前帧的平均能量减12dB,则不提高门限;如果连续检测到三帧静音,为了更好地检测到语音,将短时能量门限降低3dB,但如果降低后的门限小于当前帧的平均能量加12dB,则不降低门限。此外,为了防止门限变得太高或降得太低,还应把门限限制在GATE_MIN、
-1
+0.46363718z-2
H(z)=0.46363718-0.92724705z
FPGA中IIR滤波器的设计一般采用如图3所示的
流水线结构(图中以2阶IIR滤波器为例)。这种结构的
6]
滤波器可在一个时钟周期内完成一次滤波计算[5~,并
行度较高,但硬件上需要5个乘法器、4个加法器和若干个寄存器,占用了较多的资源。采用非流水线结构的滤波器(仍以2阶IIR滤波器为例)的结构如图4所示。
GATE_MAX范围内。
2系统实现及优化
本设计采用QuartusII以及ModelSim进行开发(ModelSim是MentorGraphics公司的仿真软件)。Quar-
tusII是Altera公司的一套开发FPGA/CPLD的EDA软
件,可以完成从设计输入、功能仿真、综合优化、后仿真、引脚配置、布局布线到配置芯片的一系列FPGA/
《电子技术应用》2006年第9期
本
刊邮箱:eta@ncse.com.cn111
在加窗的计算中涉及到余弦的运算,为了节省资源及提高处理速度,采用查表法来得到0.54-0.46×cos(e×
i/79)部分的数值。
(2)平方器的实现
由于平方运算与普通的乘法器相比具有一定的特殊性,因此在平方器的硬件实现上采用如下的算法来减少硬件资源并提高运算速度:
其
中:fifo_out
为FIFO模
块输出的数据,empty为FIFO是否为空的标志信号,ready_out信号为完成一次滤波计算的标志信号。此结构的滤波器每5个时钟周期完成一次滤波计算,并行度较低,但在硬件上只需要1个乘法器、
设X的二进制表示为InIn-1……I1I0,Iij为第i位和第j位的乘积。由于在平方运算中Iij=Iji,故Iij+Iji=2Iij。因此以4bit数的平方运算为例,参考图5,可以通过合并相同项后,左移一位(相当于乘2运算)来减少部分积的位数
[7]
1个累加器、1个计数器以及若干个寄存器。
由于本文的算法其信号的采样率只有8kHz,非流水线结构滤波器的处理速度已可以满足要求。因此,为了合理利用资源,本设计采用了基于非流水线结构的滤波器。同时考虑到系统的同步性和稳定性,所设计的滤波器每8个时钟周期完成一次滤波运算并将结果锁存。表1为两种不同结构的滤波器(系数采用18位量化,即2位整数加16位小数)在同一器件上实现的结果比较,
所用器件为Altera公司CycloneII系列的EP2C5T144C7,综合工具为QuartusII5.0,优化选项均为balanced。由表
。对所得到的部分积使用Wallace压缩树将部分
积压缩至两组,然后再使用超前进位加法器来得到最后结果。
由于本模块计算得到的平均能量仅用于同语音判决模块中的门限比较,出于节省硬件资源的考虑,该平均能量和语音判决模块中的门限均不化成dB单位。通过Matlab仿真验证,这种做法并不会影响到最后的判决结果。加窗、平均能量计算模块的处理延迟为5个时钟周期,图6为本模块的结构框图。图中的ready_out信号为高通滤波模块完成一次滤波计算后输出的数据可读信号,acc_clken信号为累加器的时钟使能信号。
1的比较结果可以看出,虽然非流水线结构的滤波器速
度比流水线的慢,但所使用的资源却大大减少,并且能在101.61ns内完成一次滤波计算,可满足实时性的要求。此模块的处理延迟为8个时钟周期。平均能量计算模块2.3加窗、
(1)相关公式
将通过高通滤波器的信号进行加Hamming窗处理,窗长为80个数据。处理所使用的计算公式如下:
i))×y(i)=(0.54-0.46×cos(e×x(i)(i为整数,且0!
i! 79;e=6.283185)
其中,x(i)为通过高通滤波器后的信号,y(i)为经过
加窗处理后的信号。
对经过加窗处理过的信号,计算其平均能量的计算公式如下:
E_average=
(y2(0)+y2(1)+……+y2(79))
80
2.4语音判决模块
根据计算出的当前帧的平均能量以及之前帧的情况,判断该帧是否为语音帧。通过使用四个标志位:
其中,y(0)、……、y(1)、y(79)为经过加窗处理的信号,E_average为该帧的平均能量。
表1滤波器单元FPGA实现资源比较
滤波器流水线非流水线
逻辑单元
(个)
嵌入式乘法器
(个)
frame_attribute[2:0]和smooth来决定是否需要进行平滑,其中,frame_at-
在fmax下,完成一次滤波计算的时间(ns)
fmax(滤波器)
(MHz)39.7278.73
T(滤波器)
(ns)25.1812.70
tribute[2:0]记录前三帧的属性,smooth记录前三帧中是否存在非平
滑过的语音。此模块的处理延迟为
2376293
268
25.18
12.70ns×8=101.61
1个时钟周期。
112欢迎网上投稿www.aetnet.cnwww.aetnet.com.cn《电子技术应用》2006年第9期
2.5控制模块
控制模块控制高通滤波、加窗、平均能量计算以及语音判决模块的运行,并且根据实际情况对门限进行更新。
由前面各个模块的分析结果可以推算出,本设计在采集完一帧数据、在14个时钟周期后可将判决结果输出。
本文介绍了基于短时能量和短时过零率的VAD算法的FPGA实现。整个系统采用VHDL进行描述,并进
行了仿真,验证了设计的正确性。系统的时钟频率可达46.22MHz,可在采集完一帧数据后的
2.6系统综合结果
表2为本设计在两款FPGA芯片上的综合结果。
表2本设计在不同FPGA芯片上综合的结果
芯片型号
系列
逻辑单元(个)
寄存器bits
9bit乘法器(个)
16/48
(33%)12/26(46%)
EP1S10F484C5EP2C5T144C7
StratixCycloneII
959/10570(9%)1015/4608(22%)
880/920448(<1%)880/119808(<1%)
302.90ns内输出检测结果,符合实时性的要求。
由于本设计采用VHDL进行描述,因此具有可移植性,同时由于设计所使用的硬件资源并不多,因此也可以作为一个模块应用到其他系统中。
综合结果显示,本设计在硬件上占用的资源较少,并可在低成本的FPGA(考虑到成本,选用CycloneII系列的EP2C5T144C7)上实现。因此本设计也可以与其他数字语音处理模块一起构成完整的语音处理芯片。
参考文献
1BRADYPT.Atechniqueforinvestigatingon-offpatternsofspeech[J].BellSystTechJ,1965;(44):1~22
2GERSHOA,PAKSOYE.Anoverviewofvariableratespeechcodingforcellularnetworks[A].IEEEConfSelectedon175TopicsWirelessCommun[C].Vancouver,1992;172~3吴智勇.VoIP中语音压缩Codec的研究与实现.硕士论文.
南开大学,2003
2.7仿真结果及分析
图7为ModelSim仿真结果。图中最后一行信号为检测结果,高电平表示语音,低电平表示静音。由仿真结果可以看到,所设计的FPGA可以满足准确性及实时性的要求。
4ITU-TRec.G.729,Codingofspeechat8Kbit/susingcon-jugate-structurealgebraic-code-excitedlinearprediction(CS-ACELP)[S].1996
5ParhiKK.VLSIdigitalsignalprocessingsystems:DesignandImplementation.北京:机械工业出版社,20036KuoSM,LeeBH著,卢伯英译.实时数字信号处理.
北京:中国铁道出版社,2004
7韩雁,姚庆栋.数字专用集成电路中平方运算的硬件实现.
电子科学学刊,1996;18(6)
(收稿日期:2006-03-15)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(上接第106页)
的断点,必须满足两个条件:一是在程序中允许中断,即调用__EI()函数;二是中断服务程序的中断级别高于7(因为Bootloader-UART的中断级别是7)。
SMS;而且可以对现场设备实行远程开关量控制。该数
可靠,而且据采集卡传输与协议转换透明化,使用方便、
配备系统配置和维护接口,方便现场维护,可普遍应用于远程监控、远程仪表数据读取等场合。参考文献
1曾志永,凌振宝,王君.基于GSM技术的智能家居系统
的设计.电子技术应用,2005;(9):31 ̄33
(f)MB90F462带有两个UART,其中UART0是Boot-loaderUart,用于在线调试和烧录程序,也可以和用户程
序复用。复用时需要调用AccemicMDE中定义的函数acc_KernelUART(1),参数默认值为1,表示UART0用作
正常的用户程序通信;参数默认值为0,表示UART0用作调试接口,用户程序中没有用到UART0时不需要调用此函数。
综上所述,该数据采集卡提供8路模拟量输入及8路开关量输入接口,具备两路RS-232接口,支持RS-485、
2马鑫.基于GPRS的数据传输系统研究与应用.哈尔滨工
业大学硕
士学位论文,2005
3XenakixC,MerakoxL.OnDemandNetwork-wideVPNdeploymentinGPRS.IEEENetwork,2002;(11):28 ̄374MC35hardwareinterfacedescription.SIEMENSMobile,20025TC35/TC37Hardwareinterfacedescription,SIEMENSMobile.2001
6UserandreferencemanualforACCEMICMDE.AccemicGmbHCo.KG,2002
(收稿日期:2006-03-21)
RS-232、3.3V、5V等多种输入电平,可以实现现场数据采集和远程传输,远程通讯及传输方式有GPRS和
《电子技术应用》2006年第9期本刊邮箱:eta@ncse.com.cn113
基于短时能量和短时过零率的VAD算法
及其FPGA实现
李昱,林志谋,黄云鹰,卢贵主
(厦门大学电子工程系现代电路与系统技术研究所,福建厦门361005)
摘要:介绍了一种基于短时能量和短时过零率的VAD算法,并对该算法进行了硬件实现。对其中主要的运算模块———滤波器和平方器模块,在硬件实现方法上进行了优化和改进,取得了较好效果使其在保证实时性要求的同时节省了资源,为进一步向低成本器件上移植或系统中作为IP模块应用提供了可能性。
关键词:语音激活检测短时能量短时过零率现场可编程门阵列
语音激活检测VAD(VoiceActivityDetection)是一种通过特定的判决准则判断语音中出现的停顿和静默间隔,检测出有效语音部分的技术。运用这种技术可以在确保语音质量的前提下,对不同类别的语音段采用不同的比特数进行编码,从而降低语音的编码速率。由于在双工移动通信系统中,一方只有35%的时间处于激活状态[1],如何降低静音期的编码速率对于减少传输带宽、功率以及容量具有积极的作用,因此VAD技术在语音通信领域具有重要的使用价值。随着适合于变比特率语音编码的CDMA和PRMA等多址技术的出现,应用于蜂窝的语音激活检测的重要性也随之提高
[2]
1算法及检测流程
1.1算法简述
语音激活检测算法可以基于时域或频域。本文采用的算法是时域分析的方法。算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。算法以短时能量检测为主,短时过零率检测为辅。根据语浊音以及静音音的统计特性,可以把语音段分为清音、
(包括背景噪声)三种。在本算法中,短时能量检测可以较好地区分出浊音和静音。对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段。
。
由于语音通信的特殊性,要求检测过程能达到实时性的要求。而目前主流DSP芯片的并行度并不高,因此在实时处理的要求下,保证语音质量和降低语音的编码速率两者难以兼顾。而现场可编程门阵列(FPGA)由于其硬件具有可编程的灵活性,可以实现较高的并行度,从而可以在满足实时性要求的前提下,很好地保证语音质量并降低语音的编码速率。
1.2检测流程
检测流程:对输入信号先进行高通滤波,减弱以噪声为主的信号能量。接着进行窗长为80个数据的加窗处理,然后计算该帧的平均能量,再利用短时能量进行
VAD初判。若平均能量大于门限则判为语音帧,若平均
2LeeNayes,LarryLauenger.AddinBoundaryScanTestCabilitytoanExistingMulti-strategyTester[J].Autotestcon,19933陈光禹,潘中良.可测试性设计技术[M].北京:电子工业出
版社,1997
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(接上页)
扫描通道使芯片处于某个特定的功能模式,以提高系统控制的灵活性并便于系统设计。本文通过设计实例,详细介绍了利用边界扫描技术控制IC芯片处于高阻模式基的思路和方法,并且通过实验实现,达到了预期目标。于边界扫描技术的测试机制在产品全寿命周期的不同阶段都可以共享,因此利用边界扫描技术可以方便地对电路系统进行调试、测试,显著地降低了产品的开发周期和费用。参考文献
1IEEEstd1149.1-2001:IEEEStandardTestAccessPortandBoundaryScanArchitecture[S].NewYork,USA,2001
4杨廷善.边界扫描技术及其应用[M].测控技术,2000;19
(9):5~8
5姜立东.VHDL语言程序设计及应用[M].北京:北京邮电
大学出版社,2001
6专用集成电路和集成系统自动化设计方法[M].北京:国防
工业出版社,1997
7高平,成立.数字VLSI电路测试技术—BIST方案[J].半导体技术2003;28(9):29~32
(收稿日期:2006-03-15)
110欢迎网上投稿www.aetnet.cnwww.aetnet.com.cn《电子技术应用》2006年第9期
能量小于门限则判为静音帧。对于初判为静音帧的帧再进行VAD平滑,即参考前三帧的情况:如果前三帧中至少包含一帧非平滑过的语音帧,则将该帧平滑为语音帧,同时记录下该帧为平滑所得的语音帧;反之,则判断为静音帧。如果平滑结果仍为静音帧,且当前帧的过零率介于30~70之间时,则改判为语音帧;反之则仍判为静音帧[3]。VAD算法的检测流程图如图1所示。
CPLD的开发流程,并提供调用其他EDA工具,如Model-Synplify/SynplifyPro、FPGAComplier的接口。Sim、
本设计的输入为16位PCM编码的数字语音信号,
输出是每80个数据为一帧的语音信号的检测结果,其中高电平表示语音,低电平表示静音。根据所用算法的特点,将本设计划分成五个模块:FIFO模块、高通滤波模块、平均能量模块、判决模块以及控制模块。系统结构框图如图2所示。
2.1FIFO模块
输入的语音信号的采样率为8kHz,如果将8kHz作为系统的时钟频率,极大地削弱了FPGA芯片的速度优势。因此系统需要两个时钟,一个是频率为8kHz的采样时钟,另一个为系统主时钟。
在FPGA设计中,多时钟设计会带来不稳定的隐患。为了提高系统的稳定性,本设计采用一个双口的FIFO作时钟隔离。FIFO模块具有16位的数据输入口及16位的数据输出口、8kHz时钟输入口以及系统主时钟输入口。此外,由于FIFO的读速度大于写速度,因此当FIFO为空时,需要输出一个empty信号。
在高通滤波、平均能量计算、判决、控制这四个模块中均可采用单时钟设计,而且所使用的时钟均为系统主时钟。
2.2滤波器模块
滤波器对输入信号进行高通滤波的预处理。高通滤波器的传输函数采用CS-ACELP算法所使用的传输函数[4]:
此外,由于人耳的听觉具有掩蔽效应,因此有必要对短时能量门限进行更新[3]。本算法所采用的门限更新方式是:如果连续检测到三帧语音,为了更好地检测到静音,将短时能量门限提高3dB,但如果提高后的门限超过当前帧的平均能量减12dB,则不提高门限;如果连续检测到三帧静音,为了更好地检测到语音,将短时能量门限降低3dB,但如果降低后的门限小于当前帧的平均能量加12dB,则不降低门限。此外,为了防止门限变得太高或降得太低,还应把门限限制在GATE_MIN、
-1
+0.46363718z-2
H(z)=0.46363718-0.92724705z
FPGA中IIR滤波器的设计一般采用如图3所示的
流水线结构(图中以2阶IIR滤波器为例)。这种结构的
6]
滤波器可在一个时钟周期内完成一次滤波计算[5~,并
行度较高,但硬件上需要5个乘法器、4个加法器和若干个寄存器,占用了较多的资源。采用非流水线结构的滤波器(仍以2阶IIR滤波器为例)的结构如图4所示。
GATE_MAX范围内。
2系统实现及优化
本设计采用QuartusII以及ModelSim进行开发(ModelSim是MentorGraphics公司的仿真软件)。Quar-
tusII是Altera公司的一套开发FPGA/CPLD的EDA软
件,可以完成从设计输入、功能仿真、综合优化、后仿真、引脚配置、布局布线到配置芯片的一系列FPGA/
《电子技术应用》2006年第9期
本
刊邮箱:eta@ncse.com.cn111
在加窗的计算中涉及到余弦的运算,为了节省资源及提高处理速度,采用查表法来得到0.54-0.46×cos(e×
i/79)部分的数值。
(2)平方器的实现
由于平方运算与普通的乘法器相比具有一定的特殊性,因此在平方器的硬件实现上采用如下的算法来减少硬件资源并提高运算速度:
其
中:fifo_out
为FIFO模
块输出的数据,empty为FIFO是否为空的标志信号,ready_out信号为完成一次滤波计算的标志信号。此结构的滤波器每5个时钟周期完成一次滤波计算,并行度较低,但在硬件上只需要1个乘法器、
设X的二进制表示为InIn-1……I1I0,Iij为第i位和第j位的乘积。由于在平方运算中Iij=Iji,故Iij+Iji=2Iij。因此以4bit数的平方运算为例,参考图5,可以通过合并相同项后,左移一位(相当于乘2运算)来减少部分积的位数
[7]
1个累加器、1个计数器以及若干个寄存器。
由于本文的算法其信号的采样率只有8kHz,非流水线结构滤波器的处理速度已可以满足要求。因此,为了合理利用资源,本设计采用了基于非流水线结构的滤波器。同时考虑到系统的同步性和稳定性,所设计的滤波器每8个时钟周期完成一次滤波运算并将结果锁存。表1为两种不同结构的滤波器(系数采用18位量化,即2位整数加16位小数)在同一器件上实现的结果比较,
所用器件为Altera公司CycloneII系列的EP2C5T144C7,综合工具为QuartusII5.0,优化选项均为balanced。由表
。对所得到的部分积使用Wallace压缩树将部分
积压缩至两组,然后再使用超前进位加法器来得到最后结果。
由于本模块计算得到的平均能量仅用于同语音判决模块中的门限比较,出于节省硬件资源的考虑,该平均能量和语音判决模块中的门限均不化成dB单位。通过Matlab仿真验证,这种做法并不会影响到最后的判决结果。加窗、平均能量计算模块的处理延迟为5个时钟周期,图6为本模块的结构框图。图中的ready_out信号为高通滤波模块完成一次滤波计算后输出的数据可读信号,acc_clken信号为累加器的时钟使能信号。
1的比较结果可以看出,虽然非流水线结构的滤波器速
度比流水线的慢,但所使用的资源却大大减少,并且能在101.61ns内完成一次滤波计算,可满足实时性的要求。此模块的处理延迟为8个时钟周期。平均能量计算模块2.3加窗、
(1)相关公式
将通过高通滤波器的信号进行加Hamming窗处理,窗长为80个数据。处理所使用的计算公式如下:
i))×y(i)=(0.54-0.46×cos(e×x(i)(i为整数,且0!
i! 79;e=6.283185)
其中,x(i)为通过高通滤波器后的信号,y(i)为经过
加窗处理后的信号。
对经过加窗处理过的信号,计算其平均能量的计算公式如下:
E_average=
(y2(0)+y2(1)+……+y2(79))
80
2.4语音判决模块
根据计算出的当前帧的平均能量以及之前帧的情况,判断该帧是否为语音帧。通过使用四个标志位:
其中,y(0)、……、y(1)、y(79)为经过加窗处理的信号,E_average为该帧的平均能量。
表1滤波器单元FPGA实现资源比较
滤波器流水线非流水线
逻辑单元
(个)
嵌入式乘法器
(个)
frame_attribute[2:0]和smooth来决定是否需要进行平滑,其中,frame_at-
在fmax下,完成一次滤波计算的时间(ns)
fmax(滤波器)
(MHz)39.7278.73
T(滤波器)
(ns)25.1812.70
tribute[2:0]记录前三帧的属性,smooth记录前三帧中是否存在非平
滑过的语音。此模块的处理延迟为
2376293
268
25.18
12.70ns×8=101.61
1个时钟周期。
112欢迎网上投稿www.aetnet.cnwww.aetnet.com.cn《电子技术应用》2006年第9期
2.5控制模块
控制模块控制高通滤波、加窗、平均能量计算以及语音判决模块的运行,并且根据实际情况对门限进行更新。
由前面各个模块的分析结果可以推算出,本设计在采集完一帧数据、在14个时钟周期后可将判决结果输出。
本文介绍了基于短时能量和短时过零率的VAD算法的FPGA实现。整个系统采用VHDL进行描述,并进
行了仿真,验证了设计的正确性。系统的时钟频率可达46.22MHz,可在采集完一帧数据后的
2.6系统综合结果
表2为本设计在两款FPGA芯片上的综合结果。
表2本设计在不同FPGA芯片上综合的结果
芯片型号
系列
逻辑单元(个)
寄存器bits
9bit乘法器(个)
16/48
(33%)12/26(46%)
EP1S10F484C5EP2C5T144C7
StratixCycloneII
959/10570(9%)1015/4608(22%)
880/920448(<1%)880/119808(<1%)
302.90ns内输出检测结果,符合实时性的要求。
由于本设计采用VHDL进行描述,因此具有可移植性,同时由于设计所使用的硬件资源并不多,因此也可以作为一个模块应用到其他系统中。
综合结果显示,本设计在硬件上占用的资源较少,并可在低成本的FPGA(考虑到成本,选用CycloneII系列的EP2C5T144C7)上实现。因此本设计也可以与其他数字语音处理模块一起构成完整的语音处理芯片。
参考文献
1BRADYPT.Atechniqueforinvestigatingon-offpatternsofspeech[J].BellSystTechJ,1965;(44):1~22
2GERSHOA,PAKSOYE.Anoverviewofvariableratespeechcodingforcellularnetworks[A].IEEEConfSelectedon175TopicsWirelessCommun[C].Vancouver,1992;172~3吴智勇.VoIP中语音压缩Codec的研究与实现.硕士论文.
南开大学,2003
2.7仿真结果及分析
图7为ModelSim仿真结果。图中最后一行信号为检测结果,高电平表示语音,低电平表示静音。由仿真结果可以看到,所设计的FPGA可以满足准确性及实时性的要求。
4ITU-TRec.G.729,Codingofspeechat8Kbit/susingcon-jugate-structurealgebraic-code-excitedlinearprediction(CS-ACELP)[S].1996
5ParhiKK.VLSIdigitalsignalprocessingsystems:DesignandImplementation.北京:机械工业出版社,20036KuoSM,LeeBH著,卢伯英译.实时数字信号处理.
北京:中国铁道出版社,2004
7韩雁,姚庆栋.数字专用集成电路中平方运算的硬件实现.
电子科学学刊,1996;18(6)
(收稿日期:2006-03-15)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(上接第106页)
的断点,必须满足两个条件:一是在程序中允许中断,即调用__EI()函数;二是中断服务程序的中断级别高于7(因为Bootloader-UART的中断级别是7)。
SMS;而且可以对现场设备实行远程开关量控制。该数
可靠,而且据采集卡传输与协议转换透明化,使用方便、
配备系统配置和维护接口,方便现场维护,可普遍应用于远程监控、远程仪表数据读取等场合。参考文献
1曾志永,凌振宝,王君.基于GSM技术的智能家居系统
的设计.电子技术应用,2005;(9):31 ̄33
(f)MB90F462带有两个UART,其中UART0是Boot-loaderUart,用于在线调试和烧录程序,也可以和用户程
序复用。复用时需要调用AccemicMDE中定义的函数acc_KernelUART(1),参数默认值为1,表示UART0用作
正常的用户程序通信;参数默认值为0,表示UART0用作调试接口,用户程序中没有用到UART0时不需要调用此函数。
综上所述,该数据采集卡提供8路模拟量输入及8路开关量输入接口,具备两路RS-232接口,支持RS-485、
2马鑫.基于GPRS的数据传输系统研究与应用.哈尔滨工
业大学硕
士学位论文,2005
3XenakixC,MerakoxL.OnDemandNetwork-wideVPNdeploymentinGPRS.IEEENetwork,2002;(11):28 ̄374MC35hardwareinterfacedescription.SIEMENSMobile,20025TC35/TC37Hardwareinterfacedescription,SIEMENSMobile.2001
6UserandreferencemanualforACCEMICMDE.AccemicGmbHCo.KG,2002
(收稿日期:2006-03-21)
RS-232、3.3V、5V等多种输入电平,可以实现现场数据采集和远程传输,远程通讯及传输方式有GPRS和
《电子技术应用》2006年第9期本刊邮箱:eta@ncse.com.cn113