基于TMS320C64x DSP/BIOSⅡ的嵌入式语音采集与盲分离系统设计
扫描二维码
随时随地手机看文章
盲信号分离(BSS)是指在对彼此独立的源信号的混合过程及各源信号本身均未知的情况下,如何从混合信号中分离出这些源信号。BSS可以用来从多个话筒混合语音信号中提取出单个的语音信号。然而,现有的BSS算法比较复杂、运算量大、实时性差,不能满足语音处理对实时性的要求,从而限制了它的硬件实现和应用。
随着IC技术的发展,DSP芯片的功能越来越强大。以数字器件特有的稳定性、可重复性、可大规模集成,特别是可编程性高和易于实现自适应处理的特点,DSP芯片从另一个方向解决了像BSS这样复杂算法的实现问题。由于系统开发中的复杂硬件功能现在均已集成到了DSP芯片中,系统开发人员只需选择合适的芯片并根据该硬件结构来设计软件即可。因此,系统开发的主要难度已经转移到了软件设计上。而传统的编程方式很难应付日益复杂的算法、系统设计,编程难度很大。DSP/BIOS II是TI公司为它的TMS320C5000和TMS320C6000系列DSP而设计的、免费的、用于复杂系统开发与应用的、可裁减的多任务实时内核,它大大地简化了程序设计的难度和提高了系统的稳定性。
本文利用TMS320C6416 DSP设计出了基于DSP/BIOS II的、高性能的嵌入式混合语音盲信号分离系统。该系统通过采集的两路混合语音信号进行BSS,能实时地输出分离的语音信号。
2 盲信号分离
盲信号分离可以用下面的混合方程描述:
式中为n个源信号构成的n维向量;为m维观测数据向量,它的元素是各个传感器得到的输出;m×n维矩阵A称为混合矩阵,它的元素表示信号的混合情况。式(1)的含义是n个源信号通过混合得到m维观测数据向量。盲信号分离问题的提法是:在混合矩阵A和源信号未知的情况下,只根据观测数据向量) X (t)确定分离矩阵W,使得变换后的输出是源信号向量) S(t) 的复制或估计。
图1示意了这一过程。最大熵(ME)算法、独立成分分析理论(ICA)、最小互信息量(MMI)算法和最大似然盲信号分离(ML)算法是几种常用的盲信号分离算法。
3 系统设计
本系统用TMS320C6416芯片的2个McBSP和EDMA来实现语音信号的采集、数据的传递和分离语音的输出。
3.1 系统硬件设计
32 位定点TMS320C6416芯片是TI公司TMS320C64x系列DSP的代表产品,其时钟频率为400 ~600MHz,可以同时执行8条32位指令,最大峰值速度为4800MIPS。外设资源十分丰富,其中包含一个具有64个独立通道的增强型存储器直接存储(EDMA)控制器和3个多通道缓冲串口(McBSP)。
用于语音数据转换的ADC和DAC很多,如TI公司生产的语音信号编码解码芯片TLC320AD50,ADI公司的AD1674等。由于C6416的McBSP通道含有μ律和A律压扩硬件,支持对输入数据的μ律或A律扩展以及对输出数据的μ律或A律压缩,又美国国家半导体(NS)公司的A律编解码芯片TP3057为8位的串行A律压扩编解码器,包含一个利用D/A、A/D转换结构的A律脉冲编码调制的编/解码器电路和一个串行PCM接口。因此,我们选用作TP3057为ADC和DAC。
系统选用两片TP3057,它们把用麦克风采集到的语音信号数字化(8kHz的采样频率),输出8位A律PCM码。同时,其中一片TP3057还将C6416 McBSP输出的A律PCM码解压缩后,通过扬声器输出。图2所示为TP3057和C6416的接口图。
我们将C6416的McBSP0和McBSP2分别与两片TP3057相连,采集两路混合语音信号,TP3057(1)还会输出分离语音信号。TP3057将模拟混合语音信号转换为8位A律PCM码,然后在FSX为低期间,C6416通过McBSP接收PCM码,经McBSP A律解压缩后放入DRR中,再由EDMA控制器将数据从DRR中读到L2中的SDRAM指定单元,最后进行BSS处理。分离语音信号由EDMA送到McBSP0中的发送寄存器(DXR),经过A律压缩后送入发送移位寄存器,然后在FSR为低期间,经接口送到TP3057(1)。TP3057(1)把数据A律解压缩后用扬声器输出。
3.2 嵌入式设计
DSP/BIOS II是TI为它的TMS320C5000和TMS320C6000系列DSP开发的一个免费的、用户可剪裁的实时操作系统,集成在TI的Code Composer Studio集成开发环境之中,主要由四部分组成:抢占式多任务实时内核、配置工具、实时分析工具和芯片支持库。利用此实时操作系统,可以方便快速地开发复杂的DSP程序。操作系统维护、调度多线程的运行,只需将定制的数字信号算法作为一个线程嵌入系统即可;芯片支持库帮助管理外设资源;复杂的外设寄存器初始化可以直接利用图形工具配置;实时分析工具可以帮助分析算法实时运行情况。DSP/BIOS II以模块化方式提供给用户,对线程、中断、定时器、内存资源、所有外设资源的管理能力都可以根据需要剪裁。实际应用中需要定制的算法作为一个线程插入队列,由DSP/BIOS II进行调度。
在本系统中,需要用DSP/BIOS II的配置工具来配置生成一个软件中断(BssSWI)、三个PIP对象(DSS_rx1Pipe、DSS_rx2Pipe和DSS_txPipe)、一个硬件中断(HWI)。BssSWI实现BSS。三个PIP对象完成与语音编解码芯片相连接的串口和软件中断之间的数据交换,语音编解码芯片采集到的两路语音数据流向串口,然后经DSS_rx1Pipe和DSS_rx2Pipe送到软件中断,软件中断对两路信号进行盲分离(BSS),然后将分离出来的信号DSS_txPipe送回串口ISR,最后送到语音编解码芯片输出。程序信号流程图如图3所示。
图中三个PIP对象中的DSS_rx2Pipe和DSS_rx1Pipe分别对应着SWI邮箱中的bit2和bit1,DSS_txPipe对应着SWI邮箱中的bit0,初始值均为1,通过这三位来实现同步。当ISR接收到一满帧信号,就会调用相应的SWI_andn( ) 来清除SWI 邮箱中的相应位(如DSS_rx1Pipe调用SWI_andn(1)来清除邮箱中的bit1)。而且, 当出现一个空的数据接收块时,将调用SWI_andn(0)来清除邮箱中的bit0。一旦bit2、bit1和bit0均为0时,触发BssSWI,就调用Bss( )来进行盲信号分离。
4 结束语
本文设计了一个高性能的、基于DSP/BIOS II的嵌入式混合语音信号的采集与盲分离系统,采集到的数据经过DSP的McBSP和EDMA通道直接被送到片内存储器堆栈中,然后进行BSS,将混合语音分离出来。系统还采用了实时操作系统DSP/BIOS II,大大地简化了编程的难度和提高了系统的实时性和稳定性。由于该系统结构简单、实时性好、性能稳定和易于集成,所以在移动通信终端有广泛的应用空间和良好的市场前景。
另外,由于BSS算法复杂,在一定程度上影响了整个系统的性能。因此,要想进一步提高系统的实时性,研究简单的、易于实现的、鲁棒性好的BSS算法是十分必要的,这也是我们的下一步工作。