如何在主流MCU和DSC上实现音频算法
数字音频和语音无处不在,产品范围从专业工业嵌入式系统到消费类产品,如耳机和车载套件。许多应用需要处理器将噪声抑制,回声消除和增益控制等算法实时应用于流,以最大化音频质量。大多数设计团队可能会将此类算法与专用于DSP专用处理器的实现相关联,这些处理器专用于音频任务。然而,今天,集成DSP数学功能的微控制器(MCU) - 通常称为数字信号控制器(DSC) - 可以处理实时音频算法和其余的应用要求。我们将研究一些典型的算法,并考虑如何在主流MCU和DSC上实现这些算法。 首先,我们将介绍一些典型的以音频为中心的功能,这些功能可能会用于通信应用,如电话,免提套件,对讲机,无线电和其他设备。噪声是此类应用中的常见问题,尽管抑制算法可以通过麦克风大大降低与语音一起捕获的环境噪声(图1)。噪声源可能是机器,甚至是PC的风扇噪音。
图1:噪声抑制算法可以大大降低麦克风随声音捕获的环境噪声。 噪声抑制算法通常必须在数据流上实时执行。 Microchip提供了与dsPIC DSC一起使用的算法。该算法对语音数据进行操作,该数据采用8 kHz采样,分辨率为16位。该算法顺序处理10毫秒的语音块。 噪声抑制算法中的主要DSP功能是频域快速傅立叶变换(FFT)。该算法不断更新检测到的噪声的轮廓。它可以缩放各个频段的信号,放大语音和静音噪声。 Microchip在噪声抑制库中提供算法。该算法以汇编语言编码以获得最大性能,但高级语言应用程序代码可以通过应用程序编程接口(API)访问这些函数。
声学回声消除 回声消除是另一种方便的算法,可以提高音频质量,尤其是在有线或无线通信链路上(图2)。当麦克风和扬声器彼此靠近时,从扬声器到麦克风的信号传播到通信链路的另一端,产生最多会分散注意力的回声,并且最坏的情况是使链路无用。
图2:回声消除依赖于时域有限脉冲响应(FIR)滤波器来消除通过通信链路传播的语音中的回声。 Microchip提供声学回声消除库,以消除回声现象。时域算法依赖于自适应有限脉冲响应(FIR)滤波器,该滤波器应用于来自通信链路远端的音频。滤波器系数提供此自适应能力,并使用归一化最小均方(NLMS)算法进行设置。该算法确保滤波器紧密地模拟实际声学路径。此外,非线性处理器算法消除了残余回声。 与噪声抑制算法类似,声学回声消除库采用汇编语言编码,可以在dsPIC处理器上实时处理数据。它提供大于40 dB的消除,并使用8 kHz采样率。它还与通常用于汽车免提应用的G.167 ITU标准兼容。 Microchip提供了几个额外的以音频为中心的库。例如,符合ITU G.168标准的线路回声消除库以电话系统为目标。基于GUI的语音和音频快进工具可与其他库(如噪声抑制库)配合使用,以允许调整应用程序。自动增益控制库可轻松调整音频电平。
数字信号控制器 现在我们将讨论您可能在音频应用中使用的处理器类型。如上所述,Microchip库是为公司的dsPIC DSC设计的。 DSC本质上只是一个增加了数学硬件以支持以DSP为中心的应用的MCU。与典型的MCU一样,这些IC仍然集成了存储器和各种外设。 Microchip实际上是第一个使用DSC的术语,尽管现在几乎每个MCU供应商都有这样的产品。 Microchip提供的产品包括dsPIC30F和dsPIC33F/E系列。所有产品都包括单周期硬件MAC(乘法器累加器) - 具体来说,是一个16x16位乘法器和一个40位累加器。 DSC还包括一个桶形移位器,可以在一个周期内移位任意数量的位。桶形移位器和MAC一起实现了以DSP为中心的算法的实时执行。图3中的框图描述了dsPIC30F架构。
图3:dsPIC30F DSC包括一个16x16位乘法器和40位累加器,以及一个桶形移位器,用于实现以DSP为中心的应用。 选择DSPIC系列的成员添加在音频和语音应用中特别方便的外设。例如,dsPIC33FJ128GP804 DSC包含一个16位双通道数模转换器(DAC),可用于输出音频。此外,DSC还包括一个10位模数转换器(ADC),支持多达13个音频输入通道。 ADC每秒可捕获超过一百万个样本。 40 MIPS处理器提供了实现应用程序代码和音频算法的性能余量。
|