用SPCE061A設(shè)計的嵌入式語音通信平臺
引言
隨著數(shù)字信號處理技術(shù)的發(fā)展,語音交互的嵌入式和網(wǎng)絡(luò)化發(fā)展已日趨成熟。但由于嵌入式系統(tǒng)具有存儲空間小、顯示能力不足的特點,要進行廣泛而深入的嵌入式語音壓縮、語音通信方面的研究和分析,有一個與PC機相連的臺理而完善的語音通信平臺。本文基于臺灣凌陽公司的SPCE061A型號微控制器和ADPCM(自適應(yīng)差分脈沖編碼調(diào)制)的原理,闡述實現(xiàn)嵌入式語音通信平臺的方法,并提出有針對性的設(shè)計策略。
1平臺構(gòu)架
圖1為平臺功能模塊,本文實現(xiàn)的語音網(wǎng)絡(luò)為星型網(wǎng)絡(luò)拓撲結(jié)構(gòu),PC機服務(wù)器與多個語音終端通過MAX232串口相連,承擔(dān)著通信中介和實驗數(shù)據(jù)分析的任務(wù)。
在終端功能模塊中,中心控制和處理選用凌陽公司的SPCE061A。它的CPU內(nèi)核是凌陽最新推出的μ′SP 16位微處理器芯片,因而具有多功能微控制器和高速率微處理器的雙重特色。在音頻處理方面,它具有單通道聲音模/數(shù)轉(zhuǎn)換器,并內(nèi)置有具備自動增益控制(AGC)的麥克風(fēng)放大器,從而簡化了語音處理系統(tǒng)的硬件組成。器件詳細資料見參考文獻。音頻輸入輸出模塊包括話筒輸入和耳機輸出兩個部分。話筒輸入到A/D采樣口之間月LM324N運算放大器構(gòu)建一個兩級防混疊低通濾波器。在D/A口到耳機輸出之間使用SPY0030功率放大器,可提供最大500mW的輸出功率。電源管理模塊采用了SPY0029,可以提供3.14V的低功耗電壓標(biāo)準(zhǔn)。RS232通信接口主要負責(zé)與PC機的通信。這里采用MAX232芯片,可同時提供兩個通道的RS2.32通信連接。
在PC機上軟件的功能模塊圖中,全部模塊由Visual C++實現(xiàn),具有友好的人機交互界面。其中通信模塊實現(xiàn)所有的通信任務(wù),語音算法模塊集成有各類語音壓縮、數(shù)字濾波、靜音檢測以及短時分析等算法;分析模塊可以提供圖形界面,顯示語音的波形圖和頻譜特征;語音算法模塊和分析模塊僅為研究數(shù)字語音算法提供方便。
2 ADPCM編解碼原理
ADPCM是語音壓縮編碼中復(fù)雜度較低的一種方法。它利用語音信號的非平穩(wěn)特點,使用自適應(yīng)預(yù)測和自適應(yīng)量化,能在32kb/s數(shù)碼率上達到64kb/s數(shù)碼率的語音質(zhì)量(MOS分為4.1),從而符合進入公用網(wǎng)的要求。由于ADPCM具有這樣的優(yōu)越性能,目前它在電信長途傳輸系統(tǒng)中和各類音頻傳輸或處理系統(tǒng)中已得到了廣泛的應(yīng)ADPCM編碼原理如圖2所示。
ADPCM的核心思想是:①利用自適應(yīng)的思想改變量化階的大小,即使用小的量化階(step-size)去編碼小的差值,使用大的量化階去編碼大的差值;②使用過去的樣本值估算下一個輸入樣本的預(yù)測值,使實際樣本值和預(yù)測值之間的差值總是最小。
這里采用了后向自適應(yīng)量化和預(yù)測。其主要原理是,根據(jù)前一時刻量化器的輸出數(shù)字碼來確定量化器的量化間隔,并根據(jù)前一時刻的逆量化值來確定這一時刻預(yù)測器的輸出。
量化算法符合Jayant算法,即△(k+1)=△(k)M(|I(k)|)其中,△(k+1)和△(k)分別為這一時刻和前一時刻的量化間隔,I(k)為前一時刻輸出的碼字,而M指以碼字為自變量的關(guān)系函數(shù),取值如下:
|I(k)|值為1,2,3,4,5,6,7,8;
M(|I(k)|)值為0.9,0.9,0.9,0.9,1.2,1.6,2.0,2,4。
預(yù)測算法采用參數(shù)修正算法, 即Pred(k+1)=Pred(k)+D(k)+α△(k)其中,△(k)為前一時刻量化間隔,Pred(k)和Pred(k+1)分別為前一時刻和這一時刻的預(yù)測值,D(k)為前一時刻的差值,α是修正參數(shù)。
ADPCM的具體數(shù)學(xué)推導(dǎo)可見參考文獻[2]和[3]。
3 嵌入式語音通信平臺的實現(xiàn)
3.1 語音編解碼實現(xiàn)策略
這里的編解碼都在嵌入式系統(tǒng)上實現(xiàn)。為了提高語音編碼的速度,所有的編解碼運算全部用匯編語言實現(xiàn):伹由對ADPCM的原理介紹可知,在編碼過程中,計算量化間隔涉及到小數(shù)乘法。這在定點微處理器中實現(xiàn)起來是比較復(fù)雜的:需要判斷差值的大小,再進行相應(yīng)的小數(shù)變整數(shù)、乘除、整數(shù)變小數(shù)等一系列變換才能得到當(dāng)前量化間隔的值,算法復(fù)雜度比較高。針對這一情況,本文采用二級檢索的方法求量化間隔。具體算法如下:
①根據(jù)Jayant算法建立量化間隔表StepSizeTable[45]和量化間隔索引變化表IndexVariaty[8];
②設(shè)索引初值Index=0;
③利用當(dāng)前差值的量化絕對值Differ,查IndexVaria-tyTable[],得到索引的當(dāng)前變化量
IndexVariaty;
④用Index+lndexVanaty更新Index;
⑤再利用Index,查StepSizeTable[],最終得到當(dāng)前的量化間隔。
之后的編碼求量化間隔就是③、④、⑤的循環(huán)。采用二級檢索方法的好處在于,在建立StepSizeTable表時就可以把乘法運算、小數(shù)變整數(shù)等步驟預(yù)處理了,從而降低了編解碼過程的算法復(fù)雜度,減少了終端的處理延遲。
3.2 實時通信的系統(tǒng)策略
為了保證在發(fā)送端采樣和發(fā)送、接收端播放和接收的實時配合,本文利用凌陽豐富的時鐘中斷,采用了前后臺思想。前臺由計數(shù)器TlmerA中斷和異步通信UART中斷程序組成.TimerA定時為每l25μs中斷一次驅(qū)動A/D或D/A進行音頻的采樣、播放,而UART中斷則處理通信的發(fā)送和接收工作。由于傳輸波特率遠高于采樣率,因此采樣的緊迫性要高于傳輸?shù)木o迫性,這樣就要設(shè)置TimerA中斷優(yōu)先級遠高于UART,以保證在發(fā)送端的采樣、接收端的播放不被打斷。后臺則主要是編解碼程序的執(zhí)行、鍵盤控制命令的響應(yīng)處理。在語音編解碼算法時間復(fù)雜度足夠低的情況下,如已經(jīng)實現(xiàn)的ADPCM、CVSD(連續(xù)可變斜率增量調(diào)制)以及凌陽集成的軟模塊SACM_DVR(子帶編碼)等.這種系統(tǒng)可以得到很好的語音交互效果。
3.3 實時緩存實現(xiàn)策略
基于實時通信思想,在接收端要做到一邊接收一邊播音就需要依賴于實時處理機制和緩存策略。
在緩存方面,單片機SPCE061A中SRAM僅有2KB,這對于有線連接115kb/s波特率和播放數(shù)據(jù)率32Kb/s之間的差距而言是遠遠不夠的。因此,采用乒乓制雙體緩存策略,即將緩存分為兩個區(qū),每個區(qū)大小剛好為1幀數(shù)據(jù)量大小(114字節(jié)),通過兩個區(qū)的交替,很好地解決了數(shù)據(jù)率的匹配問題。首先設(shè)置一個應(yīng)答信號,服務(wù)器以此為發(fā)送數(shù)據(jù)信號,且1次只發(fā)送l幀。在PC機端的串口事件響應(yīng)代碼為:
UINT stdcall Tlaread OnCommMscornml(PVOID pvParam){
if(m etrlComm,GetCommEvent()==2){ //事件值為2,表示接收緩沖區(qū)內(nèi)有字符
iffiRunState=State_Receive) //若為接收態(tài),就接收數(shù)據(jù)
else if(iRuIiState==State_Send) //偌為發(fā)送態(tài)就表明收到應(yīng)答信號
if(HaveSendedDataLen〈DataReadedLen)//緩沖區(qū)至少還有1幀數(shù)據(jù)
SendOnePage(); //發(fā)送1幀數(shù)據(jù)
}
}
在嵌入式終端的具體實現(xiàn)如圖3所示。
這樣僅開了288字節(jié)的緩沖區(qū),就很好地解決了高速和低速的匹配問題。
結(jié)語
本文構(gòu)建的平臺不僅可以應(yīng)用在ADPCM算法的語音通信中,基于凌陽微處理器的處理能力,還有較好的可擴展性。如增量編碼、子帶編碼、參數(shù)編碼等都可以進一步移植,無論在應(yīng)用還是在研究中都具有較好的借鑒價值。在應(yīng)用中,可以基于這種思想建立一個具有集中控制、處理能力的星型語音通信網(wǎng)絡(luò);而在研究中,可以在此平臺上對多種語音處理算法進行直觀分析(波形、聽覺)或頻譜分析。在嵌入式終端所做的低復(fù)雜度算法(如各類波形編碼)可以將碼流或語音流傳送到PC機,通過平臺提供的分析工具分析波形和頻譜變化,以對比各種算法對語音原始信號造成的損失程度;而在PC機上所做的高復(fù)雜度算法(如參數(shù)編碼),也可以將處理后的語音信號傳送到嵌入式系統(tǒng),聽到算法的效果。文中設(shè)計為進一步對語音數(shù)字信號處理的研究和開發(fā)工作奠定了基礎(chǔ)。
評論