SPCE061A單片機(jī)采集語(yǔ)音信號(hào)并傳送到PC機(jī)中解析方案
2 軟件設(shè)計(jì)與實(shí)現(xiàn)
2.1 語(yǔ)音信號(hào)的采集壓縮與數(shù)據(jù)傳輸
語(yǔ)音信號(hào)處理的基礎(chǔ)是對(duì)語(yǔ)音信號(hào)進(jìn)行數(shù)字化,并采樣存儲(chǔ)。SRCE061A內(nèi)置專(zhuān)門(mén)用于語(yǔ)音信號(hào)采集的自動(dòng)增益控制放大器(AGC)的麥克風(fēng)輸入通道(MIC_IN)。語(yǔ)音信號(hào)經(jīng)麥克轉(zhuǎn)換成電信號(hào),由隔離電容隔掉直流成分,然后輸入至內(nèi)部前置放大器。SPCE061A內(nèi)部自動(dòng)增益控制電路AGC能隨時(shí)跟蹤、監(jiān)視前置放大器輸出的音頻信號(hào)電平,當(dāng)輸入信號(hào)增器時(shí),AGC電路自動(dòng)減小放大器的增益;當(dāng)輸入信號(hào)減小時(shí),AGC電路自動(dòng)增大放大器的增益,以便使進(jìn)入A/D的信號(hào)保持在最佳電平,又可使諧波減至最小。
ADC初始化程序如下:
INT OFF;
R1=0x0030;
[P_TimerA_Ctrl]=R1;
//時(shí)鐘頻率為CLKA的fosc/2
R1=0xfa00;
[P_TimerA_Data]=R1;
//采樣率為16kHz
R1=0x003d;
[P_ADC_Ctrl]=R1; //設(shè)置AGC功能
R1=0x00A8;
[P_DAC_Ctrl]=R1; //采用自動(dòng)方式且通過(guò)MIC_IN通道輸入,通過(guò)定時(shí)器A的溢出鎖存數(shù)據(jù),ADC為自動(dòng)方式
R1=0x1000;
[P_INT_Ctrl]=R1; //開(kāi)中斷IRQ1_TM
INT IRQ;
采樣后的數(shù)字語(yǔ)音信號(hào)數(shù)據(jù)量非常大,且由于語(yǔ)音信號(hào)采樣點(diǎn)幅度分布的非均勻性和樣本間的相關(guān)性等原因,使語(yǔ)音信號(hào)中含有大量的冗余信息。因此,在實(shí)際應(yīng)用中采用各種信源編碼技術(shù)來(lái)消除語(yǔ)音信號(hào)的冗余度。語(yǔ)音編碼方法主要有波形編碼、參數(shù)編碼和混合編碼。
*波形編碼的基本原理是以波形逼近為原則,在時(shí)域上把幅度樣本分層量化并用代碼表示;特點(diǎn)是語(yǔ)音質(zhì)量高、抗噪性強(qiáng)編碼率高,適于語(yǔ)音及高保真音樂(lè)。
*參數(shù)編碼是基于某種語(yǔ)音產(chǎn)生模型,在編程端分析出該模型參數(shù)選擇適當(dāng)?shù)姆绞竭M(jìn)行編碼;特點(diǎn)是語(yǔ)音質(zhì)量差、抗噪抗弱和編碼率低。
*混合編碼綜合了波形和參數(shù)編碼之優(yōu)點(diǎn)。
凌陽(yáng)SPCE061A提供了壓縮算法庫(kù)——SACMLIB(見(jiàn)表1),其處理的語(yǔ)音信號(hào)范圍是200Hz~3.4kHz的電話語(yǔ)音,并將A/D、編/解碼、存儲(chǔ)及D/A做成相應(yīng)的模塊,對(duì)于每個(gè)模塊都有其應(yīng)用程序接口API。
表1 SACM-LIB庫(kù)中模塊及其算法
(2)語(yǔ)音數(shù)據(jù)的傳輸
SPCE061A的通用異步串口(UART)提供了一個(gè)8位全雙工標(biāo)準(zhǔn)接口,用于完成SPCE061A與外設(shè)之間的串行通信。借助于IOB口的特殊功能和UART IRQ中斷,可以同時(shí)完成UART接口的接收與發(fā)送數(shù)據(jù)的過(guò)程。根據(jù)應(yīng)用需求,把UART設(shè)置為中斷方式接收數(shù)據(jù),以查詢方式發(fā)送數(shù)據(jù)。
UART初始化程序InitUART()見(jiàn)網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。
評(píng)論