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