基于TMS320C64x DSP/BIOSⅡ的嵌入式語音采集與盲分離系統(tǒng)設(shè)計
盲信號分離(BSS)是指在對彼此獨立的源信號的混合過程及各源信號本身均未知的情況下,如何從混合信號中分離出這些源信號。BSS可以用來從多個話筒混合語音信號中提取出單個的語音信號。然而,現(xiàn)有的BSS算法比較復(fù)雜、運算量大、實時性差,不能滿足語音處理對實時性的要求,從而限制了它的硬件實現(xiàn)和應(yīng)用。
隨著IC技術(shù)的發(fā)展,DSP芯片的功能越來越強大。以數(shù)字器件特有的穩(wěn)定性、可重復(fù)性、可大規(guī)模集成,特別是可編程性高和易于實現(xiàn)自適應(yīng)處理的特點,DSP芯片從另一個方向解決了像BSS這樣復(fù)雜算法的實現(xiàn)問題。由于系統(tǒng)開發(fā)中的復(fù)雜硬件功能現(xiàn)在均已集成到了DSP芯片中,系統(tǒng)開發(fā)人員只需選擇合適的芯片并根據(jù)該硬件結(jié)構(gòu)來設(shè)計軟件即可。因此,系統(tǒng)開發(fā)的主要難度已經(jīng)轉(zhuǎn)移到了軟件設(shè)計上。而傳統(tǒng)的編程方式很難應(yīng)付日益復(fù)雜的算法、系統(tǒng)設(shè)計,編程難度很大。DSP/BIOS II是TI公司為它的TMS320C5000和TMS320C6000系列DSP而設(shè)計的、免費的、用于復(fù)雜系統(tǒng)開發(fā)與應(yīng)用的、可裁減的多任務(wù)實時內(nèi)核,它大大地簡化了程序設(shè)計的難度和提高了系統(tǒng)的穩(wěn)定性。
本文利用TMS320C6416 DSP設(shè)計出了基于DSP/BIOS II的、高性能的嵌入式混合語音盲信號分離系統(tǒng)。該系統(tǒng)通過采集的兩路混合語音信號進行BSS,能實時地輸出分離的語音信號。
2 盲信號分離
盲信號分離可以用下面的混合方程描述:
式中為n個源信號構(gòu)成的n維向量;為m維觀測數(shù)據(jù)向量,它的元素是各個傳感器得到的輸出;m×n維矩陣A稱為混合矩陣,它的元素表示信號的混合情況。式(1)的含義是n個源信號通過混合得到m維觀測數(shù)據(jù)向量。盲信號分離問題的提法是:在混合矩陣A和源信號未知的情況下,只根據(jù)觀測數(shù)據(jù)向量) X (t)確定分離矩陣W,使得變換后的輸出是源信號向量) S(t) 的復(fù)制或估計。
圖1示意了這一過程。最大熵(ME)算法、獨立成分分析理論(ICA)、最小互信息量(MMI)算法和最大似然盲信號分離(ML)算法是幾種常用的盲信號分離算法。
3 系統(tǒng)設(shè)計
本系統(tǒng)用TMS320C6416芯片的2個McBSP和EDMA來實現(xiàn)語音信號的采集、數(shù)據(jù)的傳遞和分離語音的輸出。
3.1 系統(tǒng)硬件設(shè)計
32 位定點TMS320C6416芯片是TI公司TMS320C64x系列DSP的代表產(chǎn)品,其時鐘頻率為400 ~600MHz,可以同時執(zhí)行8條32位指令,最大峰值速度為4800MIPS。外設(shè)資源十分豐富,其中包含一個具有64個獨立通道的增強型存儲器直接存儲(EDMA)控制器和3個多通道緩沖串口(McBSP)。
用于語音數(shù)據(jù)轉(zhuǎn)換的ADC和DAC很多,如TI公司生產(chǎn)的語音信號編碼解碼芯片TLC320AD50,ADI公司的AD1674等。由于C6416的McBSP通道含有μ律和A律壓擴硬件,支持對輸入數(shù)據(jù)的μ律或A律擴展以及對輸出數(shù)據(jù)的μ律或A律壓縮,又美國國家半導(dǎo)體(NS)公司的A律編解碼芯片TP3057為8位的串行A律壓擴編解碼器,包含一個利用D/A、A/D轉(zhuǎn)換結(jié)構(gòu)的A律脈沖編碼調(diào)制的編/解碼器電路和一個串行PCM接口。因此,我們選用作TP3057為ADC和DAC。
系統(tǒng)選用兩片TP3057,它們把用麥克風(fēng)采集到的語音信號數(shù)字化(8kHz的采樣頻率),輸出8位A律PCM碼。同時,其中一片TP3057還將C6416 McBSP輸出的A律PCM碼解壓縮后,通過揚聲器輸出。圖2所示為TP3057和C6416的接口圖。
我們將C6416的McBSP0和McBSP2分別與兩片TP3057相連,采集兩路混合語音信號,TP3057(1)還會輸出分離語音信號。TP3057將模擬混合語音信號轉(zhuǎn)換為8位A律PCM碼,然后在FSX為低期間,C6416通過McBSP接收PCM碼,經(jīng)McBSP A律解壓縮后放入DRR中,再由EDMA控制器將數(shù)據(jù)從DRR中讀到L2中的SDRAM指定單元,最后進行BSS處理。分離語音信號由EDMA送到McBSP0中的發(fā)送寄存器(DXR),經(jīng)過A律壓縮后送入發(fā)送移位寄存器,然后在FSR為低期間,經(jīng)接口送到TP3057(1)。TP3057(1)把數(shù)據(jù)A律解壓縮后用揚聲器輸出。
3.2 嵌入式設(shè)計
DSP/BIOS II是TI為它的TMS320C5000和TMS320C6000系列DSP開發(fā)的一個免費的、用戶可剪裁的實時操作系統(tǒng),集成在TI的Code Composer Studio集成開發(fā)環(huán)境之中,主要由四部分組成:搶占式多任務(wù)實時內(nèi)核、配置工具、實時分析工具和芯片支持庫。利用此實時操作系統(tǒng),可以方便快速地開發(fā)復(fù)雜的DSP程序。操作系統(tǒng)維護、調(diào)度多線程的運行,只需將定制的數(shù)字信號算法作為一個線程嵌入系統(tǒng)即可;芯片支持庫幫助管理外設(shè)資源;復(fù)雜的外設(shè)寄存器初始化可以直接利用圖形工具配置;實時分析工具可以幫助分析算法實時運行情況。DSP/BIOS II以模塊化方式提供給用戶,對線程、中斷、定時器、內(nèi)存資源、所有外設(shè)資源的管理能力都可以根據(jù)需要剪裁。實際應(yīng)用中需要定制的算法作為一個線程插入隊列,由DSP/BIOS II進行調(diào)度。
在本系統(tǒng)中,需要用DSP/BIOS II的配置工具來配置生成一個軟件中斷(BssSWI)、三個PIP對象(DSS_rx1Pipe、DSS_rx2Pipe和DSS_txPipe)、一個硬件中斷(HWI)。BssSWI實現(xiàn)BSS。三個PIP對象完成與語音編解碼芯片相連接的串口和軟件中斷之間的數(shù)據(jù)交換,語音編解碼芯片采集到的兩路語音數(shù)據(jù)流向串口,然后經(jīng)DSS_rx1Pipe和DSS_rx2Pipe送到軟件中斷,軟件中斷對兩路信號進行盲分離(BSS),然后將分離出來的信號DSS_txPipe送回串口ISR,最后送到語音編解碼芯片輸出。程序信號流程圖如圖3所示。
圖中三個PIP對象中的DSS_rx2Pipe和DSS_rx1Pipe分別對應(yīng)著SWI郵箱中的bit2和bit1,DSS_txPipe對應(yīng)著SWI郵箱中的bit0,初始值均為1,通過這三位來實現(xiàn)同步。當(dāng)ISR接收到一滿幀信號,就會調(diào)用相應(yīng)的SWI_andn( ) 來清除SWI 郵箱中的相應(yīng)位(如DSS_rx1Pipe調(diào)用SWI_andn(1)來清除郵箱中的bit1)。而且, 當(dāng)出現(xiàn)一個空的數(shù)據(jù)接收塊時,將調(diào)用SWI_andn(0)來清除郵箱中的bit0。一旦bit2、bit1和bit0均為0時,觸發(fā)BssSWI,就調(diào)用Bss( )來進行盲信號分離。
4 結(jié)束語
本文設(shè)計了一個高性能的、基于DSP/BIOS II的嵌入式混合語音信號的采集與盲分離系統(tǒng),采集到的數(shù)據(jù)經(jīng)過DSP的McBSP和EDMA通道直接被送到片內(nèi)存儲器堆棧中,然后進行BSS,將混合語音分離出來。系統(tǒng)還采用了實時操作系統(tǒng)DSP/BIOS II,大大地簡化了編程的難度和提高了系統(tǒng)的實時性和穩(wěn)定性。由于該系統(tǒng)結(jié)構(gòu)簡單、實時性好、性能穩(wěn)定和易于集成,所以在移動通信終端有廣泛的應(yīng)用空間和良好的市場前景。
另外,由于BSS算法復(fù)雜,在一定程度上影響了整個系統(tǒng)的性能。因此,要想進一步提高系統(tǒng)的實時性,研究簡單的、易于實現(xiàn)的、魯棒性好的BSS算法是十分必要的,這也是我們的下一步工作。