改善话音质量和加快话音传输速度一直是电信行业的要求。在消费电器和汽车等其他市场领域,语音识别也在迅速成为最终产品的标准人机接口方法。传统上,这些市场中的应用系统往往同时使用数字信号处理器(DSP)和单片机(MCU)。单片机用于录制和播放话音,同时控制用户交互过程。DSP则严格作为数字计算引擎用来处理录制的话音。近年来,出现了一类称为数字信号控制器(DSC)的新产品。DSC集成了功能丰富的定点DSP引擎、单片机和多个外设模块。对于高质量低成本话音和电信应用而言,DSC极具吸引力。本文将探讨DSC和DSP在处理语音信号的嵌入式系统中所起的作用。
我们先看一个采用Microchip dsPIC DSC的手机免提套件参考设计(图1)。这一应用面临不少难题。呼叫者的话音从汽车的扬声器系统自动反馈到麦克风中,导致呼叫者会听到自己说话的回声。而且,如果汽车周围的环境嘈杂,那么远端的受话方就可能无法听清驾车人在说什么。因此,免提套件需要采用数学算法来抑制背景噪声并消除话音信号的回声。这也是语音信号处理系统面临的一些典型难题。为了确定处理器是否满足此类应用中的计算要求,我们需要研究语音信号的特性。
图1 Microchip公司的手机免提套件参考设计(略)
语音处理要求
就象其他模拟信号一样,人声可以描述为有一定频带和幅度的信号。由于语音信号的带宽不超过4kHz,数字化时的最高采样速率通常为16kHz。这为处理系统设定了第一个重要的实时约束条件——数字化样本需要在约65ms时间里处理完毕。主观听音测试表明语音信号要能够听清,信噪比(SNR)应大于65 dB。这带来第二个约束 条件——存储和处理数字化语音样本的字长必须大于11位(每位6 dB动态范围)。 采用16位处理器可提供96dB的动态范围,有足够的处理余量。既然我们已确定了两个处理器级的约束条件,我们就来研究为什么定点DSC或DSP对于处理语音信号是非常理想的。
DSP用于语音应用
目前,许多厂商都提供了一系列用于语音信号处理的软件库。这些软件库可以高效地发挥DSP的功能,以便最终用户 不需要从头开始学习DSP。在许多情况下,这些软件库都遵循一定的业界 标准。例如,现有的一些软件库符合G.167(回声消除 标准)、G.168(线路回波消除标准)及G.711或Speex(语音编码和解码标准)。尽管有了这些现成的软件库,对所评估的DSC或DSP产品具有的一些基本DSP功能有所了解仍是必要的。
所有语音信号处理算法的核心都是“卷积和”运算。为了尽可能快地完成这一运算,DSC和DSP均提供了可在单个周期执行的乘加(MAC)指令。对于采样 速率为16 kHz的语音数据来说,4000万MIPS的DSC 可以在两次语音采样之间执行2600条MAC指令。如果打算将来在产品中增加功能,这可以帮助预估所选平台的可扩展能力。
在16位DSP或DSC中,一条MAC指令的输入为两个16位字,将它们相乘后再将32位结果加到累加器中。累加器通常是一个40位的寄存器,其宽度足够存储多次MAC运算的结果。DSC/DSP还可对累加器内容进行自动界限检查(limit-checking),保证累加器不会出现错误或超出边界。这样的功能通常也称为“溢出保护”和“饱和”。一个16位DSC或DSP内的许多运算实际上都是以40位精度执行的。不过,当所有处理完成后需要将输出样本数据存储到存储器中时,DSC/DSP会对40位累加器结果进行智能近似操作,以便将结果存储到16位存储器空间。
语音应用中的系统集成
许多DSC都集成了片上模拟模块、单片机和DSP组件,从而可将语音应用的大部分功能在单个芯片内实现。语音应用的输入话音信号由麦克风提供。输入的话音信号利用片外CODEC或片上的12位模数(A/D)转换器采样为16位脉冲编码调制(PCM)的数字化样本,以便进行数字处理。处理阶段输出的PCM样本在经过数模(D/A)转换后从扬声器或耳机传出。D/A转换可利用独立的CODEC完成,也可以利用片上集成的D/A转换器完成。
另一种逐渐流行的低成本替代方案是驱动一个片上脉宽调制(PWM)外设。PWM输出经低通滤波后再到达扬声器。有些DSC还集成了直接存储器访问(DMA)外设。这一外设有利于自动缓存数据,同时避免了处理器响应中断服务所需要的开销。图2演示了这些外设和软件库与麦克风和扬声器等外部接口的关系。
图2 嵌入式语音应用实例(略)
从消费电器到VoIP电话,语音处理在嵌入式系统中越来越常见。数字信号控制器可帮助语音应用实现高度系统集成,从而降低系统成本并提高可靠性。 |