基于C语言的设计流优化语音识别芯片结构设计2007-10-08据预测,市场对语音控制应用设备的需求将急剧增长,其推动力来自电话机市场。电话机将更多地采用语音命令进行控制。其他应用领域包括玩具和手持设备如计算器、语音控制的安全、家用电器及车载设备(立体声、视窗、环境控制、车灯和导航控制)。本文从可复用和优化芯片空间的角度出发介绍语音识别芯片结构设计的种种考虑,其思路有利于开发一系列其它语音识别芯片。新加坡Columns公司在便携式语音控制产品应用中起步较早,其中一个产品是执行欧元与其他欧洲货币之间进行兑换的“语音控制欧洲货币兑换器”。欧元兑换器的设计要求包括:1. 功率小,电池寿命至少为1年;2. 价格低廉,产品零售价不超过9美元;3.具有很强的灵活性,能用多种语言精确地识别并合成与说话人相关的语音;4. 整个语音控制核产品应具备可复用的特性。本文介绍利用Frontier Design公司设计工具来开发欧元兑换器ASIC产品 的全过程。在ASIC中实现复杂DSP算法的要求通常极为苛刻,但采用Frontier的结构合成工具A|RT Designer工具能迅速优化RTL描述,该工具还允许自由选择备用结构以优化应用设计。通过应用基于C语言的设计流,能在结构设计阶段对新特性进行设计和硬件优化,这能降低50%的硅片面积,通过加快 C语言原型硬件的设计,可以进一步扩展设计的性能以满足用户对产品规格的严格要求。 算法研究欧元兑换器的效率在一定程度上取决于语音命令与存储数据库的比较以及执行命令的能力。开发出满足最终产品要求的算法对设计的成功至关重要,因为没有人希望看到语音控制设备不能始终如一地识别命令,人们需要算法自始至终达到98%以上的识别精度。因此,目前面临的难题包括检测并清除背景噪声、区分真实的命令字和其他噪声(呼吸声、微小静电干扰声及麦克风声响)、确定命令字的起始和终止以及将输入与存储的“声纹谱”数据库及随后的命令字识别(图1)进行比较。

以下几种先进的计算密集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位,内存容量要求为几千字节,典型语音用户接口的输出以每秒几字节的速率测量。