高效率多通道語音記錄系統(tǒng)的研制
介紹一種采用一片TMS320C542實(shí)現(xiàn)4路電話壓縮的話音處理卡,對(duì)處理卡硬件結(jié)構(gòu)和RPE-LTP算法及DSP實(shí)現(xiàn)作了敘述,最后提出一種基于該處理卡的語音記錄系統(tǒng)的構(gòu)想。
??? 關(guān)鍵詞: 語音記錄器 語音編解碼 數(shù)字信號(hào)處理器(DSP)規(guī)則脈沖激勵(lì)-長(zhǎng)時(shí)線性預(yù)測(cè)(RPE-LEP) ADPCM算法
??? 多通道的語音記錄和回放系統(tǒng)有著廣泛的應(yīng)用背景,主要應(yīng)用在語音記錄、話音檔案、數(shù)字語音存儲(chǔ)等領(lǐng)域。隨著計(jì)算機(jī)性價(jià)比不斷提高和應(yīng)用的普及,由計(jì)算機(jī)管理的語音系統(tǒng)越來越受到重視。
??? 傳統(tǒng)的多通道語音記錄系統(tǒng),過去由于受到DSP運(yùn)算能力和價(jià)格的限制,一般采用ITU-G.726建議書提出的ADPCM作為壓縮語音的算法。該算法運(yùn)算量少,最低碼率為16kb/s,但低碼率時(shí)語言質(zhì)量較差。近年來DSP的性價(jià)比不斷提高,這使性能更好的語音壓縮算法可以應(yīng)用于多路語音壓縮系統(tǒng)。本項(xiàng)目采用了美國(guó)德州儀器(TI)的DSP芯片TMS320C542PGE-40,完成了在GSM系統(tǒng)中使用的規(guī)則脈沖激勵(lì)-長(zhǎng)時(shí)線性預(yù)測(cè)(RPE-LTP)算法,實(shí)現(xiàn)了高效率的多通道語音記錄系統(tǒng)。
??? 本系統(tǒng)具有面向應(yīng)用的配置和靈活的擴(kuò)展接口。由配置的不同,系統(tǒng)可支持4~8路話音處理。系統(tǒng)采用ISA總線與PC機(jī)接口。為了加強(qiáng)業(yè)務(wù)擴(kuò)展能力,卡上保留一個(gè)外部接口,可用于功能擴(kuò)展。在無擴(kuò)展部分時(shí)支持4路話音處理。
??? 1 硬件結(jié)構(gòu)
??? 硬件框圖如圖1所示。系統(tǒng)硬件包括’C542、擴(kuò)展RAM、ISA總線接口、模擬接口、擴(kuò)展接口(虛線框中部分)五大部分。其中,模擬接口(ADC)為TMS320AC01,擴(kuò)展RAM為TC55B8016,兩者都是TI的產(chǎn)品。FIFO為IDT公司的IDT7201。
??? ’C542是系統(tǒng)的核心部件,它的功能是進(jìn)行底層硬件的管理和語音數(shù)據(jù)的壓縮。’C542是TI公司于1995年推出的面向移動(dòng)通信的新一代產(chǎn)品。它采用改進(jìn)的哈佛體系結(jié)構(gòu),集成了許多并行處理單元,使它特別適合完成高復(fù)雜度的算法。本系統(tǒng)采用的’C542具有40MIPS的運(yùn)算能力。’C542還具有幾種高效的片內(nèi)外設(shè):1個(gè)64K×16的并口,2個(gè)同步串口,1個(gè)8位的主機(jī)接口(HPI)和1個(gè)定時(shí)器。它能響應(yīng)5個(gè)中斷,具有總線掛起功能?!疌542豐富的片內(nèi)外設(shè)極大地減省了片外電路。
??? 模擬接口由以主從方式級(jí)連在一起的四個(gè)’AC01組成,這四個(gè)ADC掛接在’C542的串口0上,如圖2所示。因?yàn)樗穆份斎腚娐废嗤手煌暾嫵鲆宦?。此時(shí)’C542的同步串口工作在觸發(fā)模式,即:數(shù)據(jù)的傳輸由’AC01主動(dòng)觸發(fā)。四個(gè)’AC01通過FSD信號(hào)(類似于接力棒)以時(shí)分復(fù)用方式與串口通信。首先,主’AC01發(fā)出幀同步脈沖,傳輸一個(gè)采樣點(diǎn)。串行傳完16位信息后,主’AC01通過FSD信號(hào)通知第一個(gè)從’AC01開始傳數(shù),同時(shí)觸發(fā)幀同步。第一個(gè)從’AC01傳完一個(gè)樣值后通知第二個(gè)從’AC01,依此類推。待四個(gè)ADC都傳完第一個(gè)樣值后再在由主’AC01傳輸?shù)诙€(gè)樣值,如此循環(huán)。在傳入’C542的16位信息中,高14位是2進(jìn)制補(bǔ)碼形式的樣值。低2位為00時(shí)表示該值是由主’AC01傳入,為01表示該值是由從’AC01傳入。DSP程序根據(jù)這一點(diǎn)區(qū)分各路語音數(shù)據(jù)。由圖2可見’C542串口的收、發(fā)幀同步信號(hào)(FSR、FSX)被接在一起,所以,’C542在收到一個(gè)數(shù)據(jù)的同時(shí)也向當(dāng)時(shí)發(fā)數(shù)的’AC01發(fā)出一個(gè)數(shù)據(jù)?!疉C01將收到的數(shù)據(jù)通過它的DA部分轉(zhuǎn)變成模擬量。
??? ’AC01前端的電路為輸入整形電路。Vi首先經(jīng)過一個(gè)低通濾波器,然后通過電壓跟隨器被運(yùn)算電路分解成兩個(gè)差分分量in+,in-。其中in+=Vm+Vi/2;in-=Vm-Vi/2。’AC01工作在+5V,Vm是它提供的中值電壓:Vm=2.5V。在輸入前端Vi已被限制在±5V的范圍。
??? 在整個(gè)系統(tǒng)中,PC作為數(shù)據(jù)存儲(chǔ)器和人機(jī)交換信息窗口,它的作用是存儲(chǔ)數(shù)據(jù)和管理整個(gè)插卡運(yùn)行,在系統(tǒng)的初始化階段PC機(jī)還要為DSP裝載程序。PC與’C542的接口部分由ISA總線和’C542的主機(jī)接口HPI組成。HPI是’C542的片內(nèi)外設(shè),它為’C542內(nèi)部的一段2K字的RAM提供一個(gè)窗口,主機(jī)通過此窗口可以直接訪問這段RAM??梢?這段2K字RAM的作用就相當(dāng)于傳統(tǒng)片外片擴(kuò)展的雙口RAM。因?yàn)镠PI的RAM在DSP片內(nèi),所以它能提供更高的讀寫效率。同時(shí)主機(jī)接口作為一個(gè)’C542的部件,它還能用來中斷主機(jī)和接受主機(jī)中斷,’C542還有HPI的bootload方式。在本系統(tǒng)中,主機(jī)首先用’C542的HPI bootload方式將程序載入’C542中,并讓它運(yùn)行,然后再以HPI RAM中的160字作為緩沖區(qū)來與’C542交換數(shù)據(jù)。
??? 有了上面三個(gè)基本部分,本系統(tǒng)已經(jīng)具備了同時(shí)記錄和播放4路語音的能力。我們注意到,此時(shí)’C542的潛力還沒有得到充分的發(fā)揮。實(shí)際上,4路GSM編解碼(這種情況不常用)僅用掉約20MIPS的運(yùn)算能力,為其運(yùn)算能力的一半。另外,并口、串口1、定時(shí)器等片內(nèi)外設(shè)都沒有使用。圖1的虛框內(nèi)的部分用來擴(kuò)展這部分資源。
??? 擴(kuò)展RAM是16K字的SRAM。它直接掛在’C542的地址、數(shù)據(jù)總線上,可以實(shí)現(xiàn)0等待周期讀寫。擴(kuò)展接口是板外電路訪問板上資源(包括并口、串口1、定時(shí)器、中斷等)的途徑。利用這兩個(gè)部件可以進(jìn)一步提高本卡處理語音的能力;它能同時(shí)壓縮8路語音,或者它還能完成數(shù)據(jù)搬移、轉(zhuǎn)儲(chǔ)、分析等功能。
??? 2 RPL-LTP算法
??? 我們采用的語音編碼算法是RPE-LTP法,具體算法在ETSI-G.06.10中規(guī)定。它要求的采樣率為8kHz,采樣精度為13位,算法的原始碼率為104kb/s,編碼碼率是13kb/s,MOS分為3.6,編解碼延遲為。這種算法與傳統(tǒng)的多路語音記錄系統(tǒng)所采用的ADPCM算法相比具有非常良好的語音回放質(zhì)量。在ITU-G.726,ADPCM算法當(dāng)碼率為32kb/s時(shí)MOS分為4;當(dāng)碼率為24kb/s時(shí)MOS分為3.2;當(dāng)碼率為16kb/s時(shí)MOS分僅為2。相應(yīng)地這種算法較ADPCM算法復(fù)雜,它是一種混合編碼:它既利用了語音信號(hào)的相關(guān)性進(jìn)行參數(shù)編碼,又利用了激勵(lì)源信號(hào)的幅度特性進(jìn)行波形編碼。另外,還利用人耳的聽覺特性,進(jìn)一步消除語音信號(hào)中的主觀冗余度。在我們的實(shí)現(xiàn)中,其運(yùn)算復(fù)雜度為4.7M,IPS(編解碼),所用程序、數(shù)據(jù)存儲(chǔ)空間分別為2K和1.2K。單純地從運(yùn)算能力上看,單片’C542可以壓縮近8路語音。因此可以預(yù)測(cè),在多路語音記錄系統(tǒng)設(shè)計(jì)中,隨著DSP性價(jià)比的不斷提高,一些碼率低、語音質(zhì)量好的壓縮算法將逐漸取代ADPCM算法。
??? RPE-LTP算法的流程如圖3。
??? 3 軟件設(shè)計(jì)
??? 軟件部分包括DSP編程和PC編程。DSP編程的主要任務(wù)是初始化、管理板上的資源和完成語音編解碼算法。PC編程則重點(diǎn)在管理DSP操作和應(yīng)用層軟件編寫。DSP與PC之間的軟件接口則是一套自定義的“通信協(xié)議”。
??? DSP程序首先初始化’C542和模擬接口,使四個(gè)’AC01按照時(shí)分復(fù)用的方式傳輸四路語音的樣值。在一幀語音?20ms?之后的中斷中,服務(wù)程序首先將4路語音數(shù)據(jù)分開,分別存入四個(gè)緩沖區(qū),然后調(diào)用編碼程序依次編碼。編碼程序?yàn)槊柯氛Z音數(shù)據(jù)保留一個(gè)緩沖區(qū),用來保存其中間結(jié)果以備下一幀使用。編碼完成后程序?qū)嚎s碼流寫入HOI ? RAM中,同時(shí)中斷主機(jī),主機(jī)讀出碼流后存儲(chǔ)。解碼過程相對(duì)簡(jiǎn)單,主機(jī)按幀將碼流寫入HPI RAM,’C542解碼后放入輸出緩沖區(qū),同步串口依次將該幀的數(shù)據(jù)以采樣率速度傳給’AC01回放。待一幀傳完后,’C542的中斷服務(wù)程序通知主機(jī)傳輸下一幀碼流。
??? 系統(tǒng)中多路語音的有無是隨機(jī)的,因此在壓縮算法之前加入了話音的存在性檢測(cè)單元??捎袃煞N選擇,一種是手工方式,即程序檢查一個(gè)硬件狀態(tài)位,它是在人工干預(yù)下觸發(fā)(如摘機(jī));另一種方式是利用程序進(jìn)行話音的活性檢測(cè),它利用語音區(qū)別于噪聲的性質(zhì)檢測(cè)語音的存在性。具體算法在ETSI-G.06.32中規(guī)定。在每幀的樣值和碼流的頭部標(biāo)識(shí)出該幀是否存在。
??? PC方的編程則包括DSP接口部分和應(yīng)用層編程部分。在PC程序的開始,與DSP接口部分的程序先調(diào)用初始化函數(shù)將DSP程序下載到DSP中。由于HPI RAM只有2k字而DSP程序大于2k字。所以初始化程序須首先在DSP中載入一個(gè)很小的自舉程序,然后通過自舉程序一段一段地把全部程序載入DSP。初始化完成后,與DSP接口部分程序再按自定義的“通信協(xié)議”在指定位置讀出DSP處理結(jié)果幀或DSP的請(qǐng)求幀,并將它交給上一層(應(yīng)用程序)處理。應(yīng)用程序亦通過與DSP接口部分程序向DSP發(fā)出各種命令。
??? 上層應(yīng)用程序是用戶使用系統(tǒng)的界面,它提供語音數(shù)據(jù)庫管理和系統(tǒng)管理兩項(xiàng)功能。語音數(shù)據(jù)庫管理包括語音的錄入、分類、監(jiān)聽、回放等。由于硬盤空間有限,語音數(shù)據(jù)庫還要定期備份、清理。這部分功能是系統(tǒng)的重點(diǎn),它應(yīng)能使用戶以最便捷的方式管理信息。系統(tǒng)管理則包括設(shè)置、讀取系統(tǒng)狀態(tài)。它的目標(biāo)是讓用戶能有效地控制系統(tǒng)的操作,及時(shí)獲得系統(tǒng)的運(yùn)行狀態(tài)。
??? 4 基于本處理卡的話音記錄系統(tǒng)
??? 在某些關(guān)鍵崗位,如廠礦的指揮室、遠(yuǎn)洋輪船的指揮室、音訊服務(wù)臺(tái),為了跟蹤事故和提高工作人員的責(zé)任感,利用本卡可以對(duì)其話音進(jìn)行記錄。利用卡中’C542的剩余處理能力可以提供諸如說話人識(shí)別、數(shù)據(jù)分析等功能。另外,利用該卡的擴(kuò)展接口還可以完成數(shù)據(jù)搬移的功能,如將遠(yuǎn)洋輪船或戰(zhàn)地指揮部的全球定位數(shù)據(jù)(GPS)存入微機(jī),以供處理。
??? 圖4是一個(gè)實(shí)用的處理卡。該卡可以同時(shí)記錄四路電話信息和撥入、撥出的電話號(hào)碼。FIFO是回放話音時(shí)的緩沖區(qū)。同時(shí)利用RS232電路把本機(jī)信息傳出或接受串行信號(hào)。
??? 綜上所述,本處理卡是建立在PC機(jī)上的一個(gè)語音記錄、管理系統(tǒng)。系統(tǒng)設(shè)計(jì)中采用了模塊化的方式,用戶可根據(jù)需要制定系統(tǒng)。由于DSP程序由主機(jī)下載,系統(tǒng)容易升級(jí)和增加功能。因次,它具有廣泛的應(yīng)用前景。
評(píng)論
查看更多