当前位置:天才代写 > tutorial > C语言/C++ 教程 > 基于C语言的设计流优化语音识别芯片布局设计

基于C语言的设计流优化语音识别芯片布局设计

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:599

副标题#e#

据预测,市场对语音节制应用设备的需求将急剧增长,其敦促力来自电话机市场。电话机将更多地回收语音呼吁举办节制。其他应用规模包罗玩具和手持设备如计较器、语音节制的安详系统、家用电器及车载设备(立体声、视窗、情况节制、车灯和导航节制)。本文从可复用和优化芯片空间的角度出发先容语音识别芯片布局设计的各种思量,其思路有利于开拓一系列其它语音识别芯片。

新加坡Columns公司在便携式语音节制产物应用中起步较早,个中一个产物是执行欧元与其他欧洲钱币之间举办兑换的“语音节制欧洲钱币兑换器”。欧元兑换器的设计要求包罗:1. 功率小,电池寿命至少为1年;2. 价值低廉,产物零售价不高出9美元;3.具有很强的机动性,能用多种语言准确地识别并合成与措辞人相关的语音;4. 整个语音节制核产物应具备可复用的特性。

本文先容操作Frontier Design公司设计东西来开拓欧元兑换器ASIC产物 的全进程。在ASIC中实现巨大DSP算法的要求凡是极为苛刻,但回收Frontier的布局合成东西A|RT Designer东西能迅速优化RTL描写,该东西还答允自由选择备用布局以优化应用设计。

通过应用基于C语言的设计流,能在布局设计阶段对新特性举办设计和硬件优化,这能低落50%的硅单方面积,通过加速 C语言原型硬件的设计,可以进一步扩展设计的机能以满意用户对产物规格的严格要求。 

算法研究

欧元兑换器的效率在必然水平上取决于语音呼吁与存储数据库的较量以及执行呼吁的本领。开拓出满意最终产物要求的算法对设计的乐成至关重要,因为没有人但愿看到语音节制设备不能始终如一地识别呼吁,人们需要算法自始至终到达98%以上的识别精度。因此,今朝面对的困难包罗检测并排除配景噪声、区分真实的呼吁字和其他噪声(呼吸声、微小静电滋扰声及麦克风声响)、确定数令字的起始和终止以及将输入与存储的“声纹谱”数据库及随后的呼吁字识别(图1)举办较量。

基于C语言的设计流优化语音识别芯片机关设计

以下几种先进的计较麋集DSP算法合用于办理上述问题:1. Mel频率声谱(cepstral)系数(MFCC)算法,MFCC算法由快速傅立叶调动(FFT)成果谱、Mel定标和log ii组成;2. 反离散余弦调动(iDCT);3. 应用多重预计和选择算法持续识别并预计配景声音和语音噪声的持续噪声电平预计措施;4. 在呼吁字有效期间及其四周对声音能级实施详尽阐明的不准确和准确呼吁字界线检测算法;5. 对一系列不等长度的向量举办较量并在这些向量间较量一连时间变革的动态时间扭曲算法(dynamic time warp)。 

该算法用浮点C语言编程,为了调解并优化参数,浮点C代码的编译和仿真速度要足够快以检讨算法的机能。最后,C语言代码必需能在传统的PC机上运行,语音识别和合成算法的机能可在实际情况中举办测试。最终的语音识别算法在450MHz奔驰机上测试,当用该公司的内部语音记录库举办测试时,可获得99%的识别精度。

浮点算法向定点算法转换

芯片实现需要将浮点算法转换为定点算法,要担保动态范畴和精度并防备转换后逾越动态极限。通例定点操纵数的非优化范畴大概导致操纵数绕回(wrap around, 如(max+1)获得(min)),并激发严重的削波和误码。定点的准确度同等重要,出格是在反复的信号处理惩罚运算中。当准确度不足时,反复的信号处理惩罚算法将导致妨碍流传和错误累积,最终信号大概逐渐退化成白噪声,这对付语音节制产物来说无疑是劫难性的错误。

Frontier东西拥有一个称为A|RT库的C++类库,它是阐明C代码定点机能的东西。该类库支持多种定点数据范例,对多重溢出行为(如饱和和绕回)提供位真建模(bit-true modeling),并提供截断和舍入零等多重量化模子。原始的32位浮点语音识别算法支持数据以8 KHz输入,其典范信号带宽为32位,内存容量要求为几千字节,典范语音用户接口的输出以每秒几字节的速率丈量。


#p#副标题#e#

代码归并实现最终产物

阐明表白,全局数据范例(globaldata-type)和数组只需16位(1个标记位,10个动态位,5个精度位)就足以保持算法的精度,而不会发生噪声。可是,高度反复性的FFT子措施需要8个动态位、7个精度位以及1个标记位。凡是这种阐明可用全局利用的19位字宽满意任何操纵的动态位和精度位的最大体求。由于A|RT库答允字宽动态改变,而全局数据范例界说了1个标记位、10个动态位和5个精度位,FFT的MAC功效分派了1个标记位、8个动态位和5个精度位,因此设计的字宽(包罗总线)保持为16位。这样可大大节减硅单方面积。

#p#分页标题#e#

完成定点C算法转换后,就可用通例C++编译器编译C代码,并在PC机上运行(也可在HP或SUN呆板上运行)。所有信号的位真界说(bit-truedefinition)担保了硬件映射的正确索引以及到其他数字部件如HDL编译器和仿真器的直接接口。将定点识别代码与欧元兑换器应用措施的C代码归并,就可获得完整的可执行最终代码。

系统设计的思量

为了到达本钱方针,单片SoC办理方案是独一可行的方案。SoC必需将如下资源集成至不高出25,000门的芯片上:1.语音识别与合成(SRS)识别核;2.语音识别与合成(SRS)措施和欧元兑换器代码(最大30KB);3.语音合成实例(最大30KB);4.用于存储声纹(voiceprint)并用作中间功效存储器的RAM(最大30K字节);5.AD/DA转换器;6.麦克风接口;7.扬声器接口。

功耗也是要思量的重要问题,电池寿命至少应为1年半。要满意这些苛刻的功率要求,系统必需具备省电模式、在RAM中存储声纹、处理惩罚器具有较低的时钟频率以及高效率的音频放大器。

SRS处理惩罚器布局

要给定所必须的处理惩罚和低功耗约束条件,选择方针时钟频率是首要任务。按照对初始功耗和处理惩罚计较的预计,我们认为2到4MHz时钟频率足以满意要求。选择3.579MHz是因为该频率是NTSC视频系统的基本,而石英本钱低廉。

#p#副标题#e#

该算法需要检测并去除配景噪声。为了从奔驰机的450MHz时钟获得3.5MHz时钟,并保持芯片核门数小于25,000,SRS要回收专用布局。

设计专用处理惩罚器费时艰辛,要用HDL语言重写算法以得到最佳方案。A|RTDesigner东西综合了基于节制器的布局,并直接以高效能的C语言算法为基本。设计工程师通过阐明和优化,然后转化为Verilog或VHDL代码。 

设计工程师利用A|RTDesigner东西为语音识别算法合成适当的布局,之后举办RTL描写。该东西分派必须的数据通路资源(乘法器、加法器、ALU、I/O、RAM、ROM等),为这些资源分派算术运算,并对运算进程举办调治。同时将自动生成一个节制器、微代码(用来节制资源分派和调治)及寄存器、多路转换器和总线。

将SRS算法映射到硬件布局的要害参数是:以3.5MHz方针时钟频率运行完整的SRS代码,且不高出最大25,000门的约束条件。利用A|RTDesigner的“负载视图(loadview)”,设计工程师识别出代表机能瓶颈的几个多周期运算(multiplecycleoperation)。视图上呈现瓶颈的位置将显示相关C代码,设计工程师因而能识别发生瓶颈的原因并试验备选办理方案。

最明明的瓶颈是MEL运算中的麋集FFT计较,它占据了及时处理惩罚周期80%的时间。通过增加一个二级加法器和专用地点计较单位ACU(addresscalculationunit),FFT就能优化到只占原始运算周期的10%。这固然增加了硬件设备,但支付的价钱只是4,000个门,正亏得硬件预算以内。即便如此改造,所用周期的总数目实在太高,难以到达3.5MHz的时钟频率。

进一步阐明表白,可以改造对数函数的计较。当在RISC DSP (NSC CR16B)上运行C语言算法时,该运算占用约莫1,000个周期,约为及时运算需求的15%。添加专用的特定应用单位ASU (application specific unit)进一步将这些成果的轮回周期降至3个周期,而只增加200个门。上述布局上的改变使最小时钟频率为1.5MHz,少于方针频率的一半。

#p#副标题#e#

对门电路数目和语音识别核功耗的优化可以低落寄存器触发器的数目。触发器的开销很大(每个需要10个门电路),并耗损很大的功率。A|RT Designer的“寿命视图(life-time view)”用来阐明构成每个变量寿命的周期数目及变量被利用的频率。通过在RAM中存储不常利用但恒久有效的变量,即可低落寄存器的总数,进一步减小所需的硅单方面积和功率。该法子节省了50%的寄存器门电路,同时为运算周期预算留下富裕的开销空间。

RAM压缩的实现

在设计初期,我们已经明晰30KB的RAM空间太告急。参考SRS C代码的每个声纹谱(约为1秒钟的语音)字占用约莫1-2KB,相当于30条呼吁,这样险些没给中间功效SRAM留下任何空间。由于30KB的RAM占用了硅片相当大的面积,因此在硅片预算中无法添加更多的RAM(图2)。

整个芯片利用尺度的0.35μm CMOS工艺制造,办理RAM空间问题的独一办理方案是回收某些形式的语音压缩。

声纹数据可用两种要领压缩:无损压缩或有损压缩。今朝存在几种以现有的尺度C代码源措施为基本,用C语言实现的无损压缩要领。声纹采样数据可用作参考,最佳的无损算法可获得30%的压缩率。回收有损压缩,还能再压缩20%,而且不明明低落识别质量。有损压缩完全可以缩放,从而得到依赖于实际声纹长度或词汇表巨细的可变压缩率。由此获得的C代码算法共500行,并对声纹获得50%的压缩率。下一步就可以集成语音压缩和语音识别IP块了。

#p#分页标题#e#

然后只需将这500行代码与10,000行SRS代码归并,获得一个新成果子措施,在存储声纹或读取RAM中的声纹时挪用。但措施的计较劲相当大,初始计较后约需要150万个时钟周期,这与SRS处理惩罚所需的时间相当。幸运地是,有效时钟频率留出的近2.5 MHz能办理这个历程问题,而无需进一步优化。此压缩方案将RAM需求低落到20-25KB,留出至少5KB用于处理惩罚器的中间功效存储器之用。

基于C语言的设计流优化语音识别芯片机关设计

扬声器接口的实现

单电池电源打点偏置网络、数模转换器(DAC)和模仿放大器的要占用较大的芯单方面积,而直接用C语言实现脉宽调制(PWM)扬声器驱动措施可以办理这个问题。

扬声器如何发音?C代码可利用该公司的A|RT Builder “C-到-HDL”转换东西直接转换为VHDL。然后利用Exemplar的Leonardo Spectrum加以合成,并映射到Xilinx的Virtex FPGA,回收Xilinx FPGA主板,就能将扬声器同2个数字输出直接相连,启动开关,即可测听音效了。

RTL描写的生成

当工程人员对语音识别SoC的机能和布局感想满足时,就可利用A|RT Designer东西自动生成用于最终硅片的RTL VHDL语言描写。该东西自动为节制器生成RTL代码及微代码、RAM、ROM和数据通路成果。别的A|RT Designer东西在设计流的每个阶段自动生成测试基准,因此原始的浮点算法仿真可与浮点C和HDL方案中的仿真媲美。VHDL仿真与原始的浮点C代码严格对应,这意味着SoC具有与浮点算法沟通的精度。

最终布局

SRS ASIC所需的全部成果都集成在单芯片上(图2)。别的所有为该SoC开拓的IP都可复用。SRS算法今朝应用于CR16B RISC核的DECT电话语音识别器上。数据压缩成果也可复用,以进一步加强专用可变位率ADPCM音频压缩代码(VADPCM)。VADPCM同样可用于SRS核,在倒霉用模仿元件的条件下,PWM算法及方案仍然能实现高品质的音频输出。SRS实现方案自己在下一代产物中还可以修改。

 

    关键字:

天才代写-代写联系方式