榮相
摘要簡(jiǎn)要介紹ADPCM技術(shù)原理和數(shù)字音頻芯片VS1003在煤礦廣播對(duì)講系統(tǒng)中應(yīng)用的關(guān)鍵技術(shù)設(shè)計(jì),并闡述了該方案的優(yōu)點(diǎn),為煤礦基于現(xiàn)有寬帶網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字語(yǔ)音廣播對(duì)講提供了一種新的方法,具有較強(qiáng)的實(shí)用價(jià)值。
關(guān)鍵詞ADPCM;數(shù)字語(yǔ)音;VS1003;煤礦廣播對(duì)講
中圖分類(lèi)號(hào):TN828 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1671-7597(2014)11-0107-02
自適應(yīng)差分脈沖編碼調(diào)制(ADPCM)技術(shù)能以32kbit/s碼率達(dá)到符合64kbit/s碼率的語(yǔ)音質(zhì)量要求,因此國(guó)際電報(bào)電話咨詢(xún)委員會(huì)(CCITT)在1984年提出了基于ADPCM語(yǔ)音編碼的G.721建議,1986年進(jìn)行了實(shí)用化修正后應(yīng)用到了最早的數(shù)字通信系統(tǒng)中[1]。煤礦生產(chǎn)離不開(kāi)通信廣播,目前大部分煤礦仍然在大量使用傳統(tǒng)的模擬電話,因井下環(huán)境惡劣,噪聲大,電磁干擾嚴(yán)重,導(dǎo)致電話通信故障頻發(fā),通話時(shí)斷時(shí)續(xù),聽(tīng)不清對(duì)方說(shuō)話的內(nèi)容。為保障井下作業(yè)人員聯(lián)系和信息暢通,提高了煤礦語(yǔ)音通信質(zhì)量,采用數(shù)字語(yǔ)音通信技術(shù)具有其獨(dú)特的優(yōu)勢(shì),同時(shí),基于煤礦現(xiàn)有寬帶網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字語(yǔ)音通信也是數(shù)字化煤礦技術(shù)的一個(gè)重要組成部分。本文就基于ADPCM技術(shù)實(shí)現(xiàn)煤礦數(shù)字化廣播對(duì)講系統(tǒng)的關(guān)鍵技術(shù)原理和實(shí)現(xiàn)方法進(jìn)行論述。
1ADPCM編解碼原理
ADPCM用預(yù)測(cè)編碼來(lái)壓縮數(shù)據(jù),其核心思想是利用自適應(yīng)的思想改變量化階的大小[2],實(shí)際上編碼記錄并不是語(yǔ)音波形的真實(shí)幅度,而是對(duì)當(dāng)前樣本與預(yù)測(cè)樣本之間的差值進(jìn)行量化編碼,為減小斜率過(guò)載以及顆粒噪聲,根據(jù)統(tǒng)計(jì)算法自動(dòng)修正量化階的大小,差值較小時(shí)使用小的量化階編碼,差值較大時(shí)使用大的量化階編碼,并使用過(guò)去的樣本值估算下一個(gè)輸入樣本與預(yù)測(cè)值,使實(shí)際樣本值與預(yù)測(cè)值之間的差值最小,采用非均勻量化,保證不同幅度信號(hào)的信噪比在同一水平。解碼是編碼的逆過(guò)程,解碼的輸入即為編碼的輸出,在此不再贅述。
2數(shù)字語(yǔ)音硬件實(shí)現(xiàn)
由于ADPCM編解碼技術(shù)優(yōu)勢(shì)明顯,應(yīng)用廣泛,各大音頻處理芯片制造商均有自己專(zhuān)門(mén)或兼容ADPCM編解碼格式的數(shù)字音頻處理芯片。VS1003b是芬蘭LVSI半導(dǎo)體公司一款價(jià)格低廉,功能強(qiáng)大,支持多種音頻格式文件的解碼,能對(duì)話筒輸入或線路輸入進(jìn)行IMA-ADPCM編碼,帶DSP內(nèi)核以及PLL時(shí)鐘鎖相環(huán)倍頻器,片內(nèi)含高性能數(shù)模轉(zhuǎn)換器,有5.5KB供用戶(hù)使用的程序代碼和數(shù)據(jù)RAM空間,具有SPI串行數(shù)據(jù)接口以及URAT通信接口。該器件能完全滿足礦用廣播通信系統(tǒng)的功能要求,應(yīng)用電路如圖1所示。
圖中X1、R1~R4、C1~C6為麥克風(fēng)輸入電路,R6-R10、C7~C12為立體聲音頻輸出電路,RCAP為線路輸入提供偏置,晶振Y1的振蕩頻率為12.288MHz,UART串口不用時(shí)RX必須接高電平,與CPU采用SPI串行接口,XRESET用于控制芯片復(fù)位,DREQ為外部中斷,XDCS用于區(qū)分SPI接口傳輸?shù)氖菙?shù)據(jù)還是命令碼。
圖1VS1003應(yīng)用電路
3基于ADPCM的廣播對(duì)講軟件實(shí)現(xiàn)
采用VS1003實(shí)現(xiàn)廣播對(duì)講,ADPCM編碼進(jìn)行遠(yuǎn)程傳輸,只要網(wǎng)絡(luò)有效帶寬在32K以上,即可保證語(yǔ)音數(shù)據(jù)的實(shí)時(shí)傳輸。為保證實(shí)時(shí)性以及能實(shí)現(xiàn)多方對(duì)講,以UDP組播為基礎(chǔ)的RTP/RTCP協(xié)議,若要完全實(shí)現(xiàn)RTP/RTCP協(xié)議比較復(fù)雜并且需要占用較多的CPU資源,本文采用RTCP的傳輸控制模式,自行設(shè)計(jì)一套簡(jiǎn)單傳輸控制協(xié)議。在應(yīng)用中需要注意, UDP并非可靠傳輸,數(shù)據(jù)報(bào)文有可能后發(fā)而先至,對(duì)方在播放之前必須對(duì)報(bào)文進(jìn)行排序,因此編碼報(bào)文中必須包含報(bào)文的ID序號(hào)。
VS1003可以解碼多種音頻數(shù)據(jù),以何種方式解碼,依靠送入芯片的文件頭格式進(jìn)行自適應(yīng)編碼判斷,因此需要在編碼數(shù)據(jù)前增加一個(gè)WAV文件頭做先導(dǎo)才能正常解碼。在每次語(yǔ)音播放開(kāi)始時(shí)先向VS1003發(fā)送512字節(jié)文件頭,然后再將接收到的報(bào)文數(shù)據(jù)依次送入VS1003,芯片即可進(jìn)行自適應(yīng)解碼并輸出模擬音頻信號(hào)。WAV文件頭的制作過(guò)程簡(jiǎn)單描述如下。
1)設(shè)計(jì)兩個(gè)常量數(shù)組分別定義如下:
const uint8 RIFFHeader0[] = {
'R' , 'I' , 'F' , 'F' , // Chunk ID (RIFF)
0xff, 0xff, 0xff, 0xff, // Chunk payload size (calculate after rec!)
'W' , 'A' , 'V' , 'E' , // RIFF resource format type
'f' , 'm' , 't' , ' ' , // Chunk ID (fmt )
0x14, 0x00, 0x00, 0x00, // Chunk payload size (0x14 = 20 bytes)
0x11, 0x00, // Format Tag (IMA ADPCM)
0x01, 0x00, // Channels (1)
0x80, 0x3e, 0x00, 0x00, // Sample Rate, 0x3e80 = 16.0kHz
0xd7, 0x0f, 0x00, 0x00, // Average Bytes Per Second
0x00, 0x01, // Data Block Size (256 bytes)
0x04, 0x00, // ADPCM encoded bits per sample (4 bits)
0x02, 0x00, // Extra data (2 bytes)
0xf9, 0x01, // Samples per Block (505 samples)
'f' , 'a' , 'c' , 't' , // Chunk ID (fact)
0xc8, 0x01, 0x00, 0x00, // Chunk payload size (456 bytes (zeropad!))
0xff, 0xff, 0xff, 0xff// Number of Samples (calculate after rec!)
}
const uint8 RIFFHeader504[] = {
'd' , 'a' , 't' , 'a' , // Chunk ID (data)
0xff, 0xff, 0xff, 0xff// Chunk payload size (calculate after rec!)
}
2)程序中定義一個(gè)512字節(jié)長(zhǎng)度的臨時(shí)數(shù)組,全初始化為零,再將前52個(gè)字節(jié)用RIFFHeader0代替,將最后8個(gè)字節(jié)用RIFFHeader504代替,以上有3個(gè)需要計(jì)算長(zhǎng)度的地方全部用0xff代替,根據(jù)采樣速率的不同,Sample Rate的具體數(shù)值需要調(diào)整。
3)每次播放ADPCM語(yǔ)音之前將上述512字節(jié)首先送入VS1003。
ADPCM錄音保存的方法是,從VS1003讀取編碼數(shù)據(jù)后一方面通過(guò)網(wǎng)絡(luò)發(fā)送出去,另一方面建立或打開(kāi)一個(gè)WAV文件,將錄音數(shù)據(jù)保存到文件中。WAV文件頭的簡(jiǎn)單制作過(guò)程在前文中已有說(shuō)明,只是在錄音結(jié)束后,利用最終的文件長(zhǎng)度分別計(jì)算上文中的3個(gè)長(zhǎng)度值,然后重新寫(xiě)入文件,形成一個(gè)正常的WAV文件。
4基于ADPCM的煤礦廣播對(duì)講系統(tǒng)特點(diǎn)
由于采用了ADPCM數(shù)字語(yǔ)音技術(shù),與傳統(tǒng)的模擬或基于其他技術(shù)實(shí)現(xiàn)的廣播對(duì)講系統(tǒng)相比具有以下優(yōu)勢(shì)。
1)系統(tǒng)抗干擾能力強(qiáng),無(wú)傳輸損耗,可借助已有數(shù)字通信網(wǎng)絡(luò),實(shí)現(xiàn)遠(yuǎn)距離傳輸。由于廣播對(duì)講系統(tǒng)采用了數(shù)字音頻編解碼器以及數(shù)字通信技術(shù),顯著提高了系統(tǒng)抗干擾能力,減小了使用環(huán)境的影響,降低了對(duì)電源的要求,并可采用本安電路實(shí)現(xiàn),信號(hào)傳輸過(guò)程幾乎沒(méi)有損耗和失真,傳輸距離不受限制。
2)通信帶寬要求低,語(yǔ)音效果優(yōu)良,可實(shí)現(xiàn)全雙工通話。ADPCM在保證優(yōu)良音質(zhì)的情況下最高通信速率為32Kbit/s,在實(shí)際使用過(guò)程中還可以適當(dāng)降低采樣率,從而降低帶寬要求,與基于VOIP技術(shù)協(xié)議的廣播對(duì)講系統(tǒng)相比,具有明顯的效果優(yōu)勢(shì)。如果在每臺(tái)廣播對(duì)講設(shè)備中使用2片VS1003,一片專(zhuān)門(mén)用于播放網(wǎng)絡(luò)語(yǔ)音,另一片專(zhuān)門(mén)用于錄音編碼發(fā)送,加上回聲抑制技術(shù)即可實(shí)現(xiàn)煤礦井下全雙工通話。
3)可實(shí)時(shí)播放多種格式音樂(lè),實(shí)現(xiàn)區(qū)域廣播以及多方通話。因VS1003支持大多數(shù)音頻文件解碼,系統(tǒng)配上后臺(tái)軟件后,可實(shí)現(xiàn)在線廣播MP3音樂(lè),另外因系統(tǒng)采用的是組播傳輸,可以在不增加任何帶寬條件下,軟件可靈活控制終端設(shè)備是否加入組播,因此可以實(shí)現(xiàn)分區(qū)廣播,多方通話功能,這是傳統(tǒng)模擬系統(tǒng)無(wú)法實(shí)現(xiàn)的。
5結(jié)束語(yǔ)
實(shí)踐證明,采用ADPCM編解碼技術(shù)實(shí)現(xiàn)的煤礦廣播對(duì)講系統(tǒng),音頻失真度低,抗干擾能力強(qiáng),語(yǔ)音效果優(yōu)良,并具備許多附加功能,可替代傳統(tǒng)模擬電話。系統(tǒng)運(yùn)行穩(wěn)定,可解決煤礦語(yǔ)音通信故障率高,抗干擾能力差的問(wèn)題,為煤礦提供了一種高質(zhì)量的語(yǔ)音通信解決方案,具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]陳溯.ADPCM語(yǔ)音壓縮編碼的分析與仿真[J].中國(guó)西部科技,2008,7(32):51-53.
[2]陳明義.基于FPGA的ADPCM語(yǔ)音編解碼器設(shè)計(jì)時(shí)限[J].電子科技,2007(1):44-47.
[3]徐博,郭秋敏.基于SPI協(xié)議的音頻流解碼系統(tǒng)的研究與設(shè)計(jì)[J].工礦自動(dòng)化,2011(1):44-49.
endprint
摘要簡(jiǎn)要介紹ADPCM技術(shù)原理和數(shù)字音頻芯片VS1003在煤礦廣播對(duì)講系統(tǒng)中應(yīng)用的關(guān)鍵技術(shù)設(shè)計(jì),并闡述了該方案的優(yōu)點(diǎn),為煤礦基于現(xiàn)有寬帶網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字語(yǔ)音廣播對(duì)講提供了一種新的方法,具有較強(qiáng)的實(shí)用價(jià)值。
關(guān)鍵詞ADPCM;數(shù)字語(yǔ)音;VS1003;煤礦廣播對(duì)講
中圖分類(lèi)號(hào):TN828 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1671-7597(2014)11-0107-02
自適應(yīng)差分脈沖編碼調(diào)制(ADPCM)技術(shù)能以32kbit/s碼率達(dá)到符合64kbit/s碼率的語(yǔ)音質(zhì)量要求,因此國(guó)際電報(bào)電話咨詢(xún)委員會(huì)(CCITT)在1984年提出了基于ADPCM語(yǔ)音編碼的G.721建議,1986年進(jìn)行了實(shí)用化修正后應(yīng)用到了最早的數(shù)字通信系統(tǒng)中[1]。煤礦生產(chǎn)離不開(kāi)通信廣播,目前大部分煤礦仍然在大量使用傳統(tǒng)的模擬電話,因井下環(huán)境惡劣,噪聲大,電磁干擾嚴(yán)重,導(dǎo)致電話通信故障頻發(fā),通話時(shí)斷時(shí)續(xù),聽(tīng)不清對(duì)方說(shuō)話的內(nèi)容。為保障井下作業(yè)人員聯(lián)系和信息暢通,提高了煤礦語(yǔ)音通信質(zhì)量,采用數(shù)字語(yǔ)音通信技術(shù)具有其獨(dú)特的優(yōu)勢(shì),同時(shí),基于煤礦現(xiàn)有寬帶網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字語(yǔ)音通信也是數(shù)字化煤礦技術(shù)的一個(gè)重要組成部分。本文就基于ADPCM技術(shù)實(shí)現(xiàn)煤礦數(shù)字化廣播對(duì)講系統(tǒng)的關(guān)鍵技術(shù)原理和實(shí)現(xiàn)方法進(jìn)行論述。
1ADPCM編解碼原理
ADPCM用預(yù)測(cè)編碼來(lái)壓縮數(shù)據(jù),其核心思想是利用自適應(yīng)的思想改變量化階的大小[2],實(shí)際上編碼記錄并不是語(yǔ)音波形的真實(shí)幅度,而是對(duì)當(dāng)前樣本與預(yù)測(cè)樣本之間的差值進(jìn)行量化編碼,為減小斜率過(guò)載以及顆粒噪聲,根據(jù)統(tǒng)計(jì)算法自動(dòng)修正量化階的大小,差值較小時(shí)使用小的量化階編碼,差值較大時(shí)使用大的量化階編碼,并使用過(guò)去的樣本值估算下一個(gè)輸入樣本與預(yù)測(cè)值,使實(shí)際樣本值與預(yù)測(cè)值之間的差值最小,采用非均勻量化,保證不同幅度信號(hào)的信噪比在同一水平。解碼是編碼的逆過(guò)程,解碼的輸入即為編碼的輸出,在此不再贅述。
2數(shù)字語(yǔ)音硬件實(shí)現(xiàn)
由于ADPCM編解碼技術(shù)優(yōu)勢(shì)明顯,應(yīng)用廣泛,各大音頻處理芯片制造商均有自己專(zhuān)門(mén)或兼容ADPCM編解碼格式的數(shù)字音頻處理芯片。VS1003b是芬蘭LVSI半導(dǎo)體公司一款價(jià)格低廉,功能強(qiáng)大,支持多種音頻格式文件的解碼,能對(duì)話筒輸入或線路輸入進(jìn)行IMA-ADPCM編碼,帶DSP內(nèi)核以及PLL時(shí)鐘鎖相環(huán)倍頻器,片內(nèi)含高性能數(shù)模轉(zhuǎn)換器,有5.5KB供用戶(hù)使用的程序代碼和數(shù)據(jù)RAM空間,具有SPI串行數(shù)據(jù)接口以及URAT通信接口。該器件能完全滿足礦用廣播通信系統(tǒng)的功能要求,應(yīng)用電路如圖1所示。
圖中X1、R1~R4、C1~C6為麥克風(fēng)輸入電路,R6-R10、C7~C12為立體聲音頻輸出電路,RCAP為線路輸入提供偏置,晶振Y1的振蕩頻率為12.288MHz,UART串口不用時(shí)RX必須接高電平,與CPU采用SPI串行接口,XRESET用于控制芯片復(fù)位,DREQ為外部中斷,XDCS用于區(qū)分SPI接口傳輸?shù)氖菙?shù)據(jù)還是命令碼。
圖1VS1003應(yīng)用電路
3基于ADPCM的廣播對(duì)講軟件實(shí)現(xiàn)
采用VS1003實(shí)現(xiàn)廣播對(duì)講,ADPCM編碼進(jìn)行遠(yuǎn)程傳輸,只要網(wǎng)絡(luò)有效帶寬在32K以上,即可保證語(yǔ)音數(shù)據(jù)的實(shí)時(shí)傳輸。為保證實(shí)時(shí)性以及能實(shí)現(xiàn)多方對(duì)講,以UDP組播為基礎(chǔ)的RTP/RTCP協(xié)議,若要完全實(shí)現(xiàn)RTP/RTCP協(xié)議比較復(fù)雜并且需要占用較多的CPU資源,本文采用RTCP的傳輸控制模式,自行設(shè)計(jì)一套簡(jiǎn)單傳輸控制協(xié)議。在應(yīng)用中需要注意, UDP并非可靠傳輸,數(shù)據(jù)報(bào)文有可能后發(fā)而先至,對(duì)方在播放之前必須對(duì)報(bào)文進(jìn)行排序,因此編碼報(bào)文中必須包含報(bào)文的ID序號(hào)。
VS1003可以解碼多種音頻數(shù)據(jù),以何種方式解碼,依靠送入芯片的文件頭格式進(jìn)行自適應(yīng)編碼判斷,因此需要在編碼數(shù)據(jù)前增加一個(gè)WAV文件頭做先導(dǎo)才能正常解碼。在每次語(yǔ)音播放開(kāi)始時(shí)先向VS1003發(fā)送512字節(jié)文件頭,然后再將接收到的報(bào)文數(shù)據(jù)依次送入VS1003,芯片即可進(jìn)行自適應(yīng)解碼并輸出模擬音頻信號(hào)。WAV文件頭的制作過(guò)程簡(jiǎn)單描述如下。
1)設(shè)計(jì)兩個(gè)常量數(shù)組分別定義如下:
const uint8 RIFFHeader0[] = {
'R' , 'I' , 'F' , 'F' , // Chunk ID (RIFF)
0xff, 0xff, 0xff, 0xff, // Chunk payload size (calculate after rec!)
'W' , 'A' , 'V' , 'E' , // RIFF resource format type
'f' , 'm' , 't' , ' ' , // Chunk ID (fmt )
0x14, 0x00, 0x00, 0x00, // Chunk payload size (0x14 = 20 bytes)
0x11, 0x00, // Format Tag (IMA ADPCM)
0x01, 0x00, // Channels (1)
0x80, 0x3e, 0x00, 0x00, // Sample Rate, 0x3e80 = 16.0kHz
0xd7, 0x0f, 0x00, 0x00, // Average Bytes Per Second
0x00, 0x01, // Data Block Size (256 bytes)
0x04, 0x00, // ADPCM encoded bits per sample (4 bits)
0x02, 0x00, // Extra data (2 bytes)
0xf9, 0x01, // Samples per Block (505 samples)
'f' , 'a' , 'c' , 't' , // Chunk ID (fact)
0xc8, 0x01, 0x00, 0x00, // Chunk payload size (456 bytes (zeropad!))
0xff, 0xff, 0xff, 0xff// Number of Samples (calculate after rec!)
}
const uint8 RIFFHeader504[] = {
'd' , 'a' , 't' , 'a' , // Chunk ID (data)
0xff, 0xff, 0xff, 0xff// Chunk payload size (calculate after rec!)
}
2)程序中定義一個(gè)512字節(jié)長(zhǎng)度的臨時(shí)數(shù)組,全初始化為零,再將前52個(gè)字節(jié)用RIFFHeader0代替,將最后8個(gè)字節(jié)用RIFFHeader504代替,以上有3個(gè)需要計(jì)算長(zhǎng)度的地方全部用0xff代替,根據(jù)采樣速率的不同,Sample Rate的具體數(shù)值需要調(diào)整。
3)每次播放ADPCM語(yǔ)音之前將上述512字節(jié)首先送入VS1003。
ADPCM錄音保存的方法是,從VS1003讀取編碼數(shù)據(jù)后一方面通過(guò)網(wǎng)絡(luò)發(fā)送出去,另一方面建立或打開(kāi)一個(gè)WAV文件,將錄音數(shù)據(jù)保存到文件中。WAV文件頭的簡(jiǎn)單制作過(guò)程在前文中已有說(shuō)明,只是在錄音結(jié)束后,利用最終的文件長(zhǎng)度分別計(jì)算上文中的3個(gè)長(zhǎng)度值,然后重新寫(xiě)入文件,形成一個(gè)正常的WAV文件。
4基于ADPCM的煤礦廣播對(duì)講系統(tǒng)特點(diǎn)
由于采用了ADPCM數(shù)字語(yǔ)音技術(shù),與傳統(tǒng)的模擬或基于其他技術(shù)實(shí)現(xiàn)的廣播對(duì)講系統(tǒng)相比具有以下優(yōu)勢(shì)。
1)系統(tǒng)抗干擾能力強(qiáng),無(wú)傳輸損耗,可借助已有數(shù)字通信網(wǎng)絡(luò),實(shí)現(xiàn)遠(yuǎn)距離傳輸。由于廣播對(duì)講系統(tǒng)采用了數(shù)字音頻編解碼器以及數(shù)字通信技術(shù),顯著提高了系統(tǒng)抗干擾能力,減小了使用環(huán)境的影響,降低了對(duì)電源的要求,并可采用本安電路實(shí)現(xiàn),信號(hào)傳輸過(guò)程幾乎沒(méi)有損耗和失真,傳輸距離不受限制。
2)通信帶寬要求低,語(yǔ)音效果優(yōu)良,可實(shí)現(xiàn)全雙工通話。ADPCM在保證優(yōu)良音質(zhì)的情況下最高通信速率為32Kbit/s,在實(shí)際使用過(guò)程中還可以適當(dāng)降低采樣率,從而降低帶寬要求,與基于VOIP技術(shù)協(xié)議的廣播對(duì)講系統(tǒng)相比,具有明顯的效果優(yōu)勢(shì)。如果在每臺(tái)廣播對(duì)講設(shè)備中使用2片VS1003,一片專(zhuān)門(mén)用于播放網(wǎng)絡(luò)語(yǔ)音,另一片專(zhuān)門(mén)用于錄音編碼發(fā)送,加上回聲抑制技術(shù)即可實(shí)現(xiàn)煤礦井下全雙工通話。
3)可實(shí)時(shí)播放多種格式音樂(lè),實(shí)現(xiàn)區(qū)域廣播以及多方通話。因VS1003支持大多數(shù)音頻文件解碼,系統(tǒng)配上后臺(tái)軟件后,可實(shí)現(xiàn)在線廣播MP3音樂(lè),另外因系統(tǒng)采用的是組播傳輸,可以在不增加任何帶寬條件下,軟件可靈活控制終端設(shè)備是否加入組播,因此可以實(shí)現(xiàn)分區(qū)廣播,多方通話功能,這是傳統(tǒng)模擬系統(tǒng)無(wú)法實(shí)現(xiàn)的。
5結(jié)束語(yǔ)
實(shí)踐證明,采用ADPCM編解碼技術(shù)實(shí)現(xiàn)的煤礦廣播對(duì)講系統(tǒng),音頻失真度低,抗干擾能力強(qiáng),語(yǔ)音效果優(yōu)良,并具備許多附加功能,可替代傳統(tǒng)模擬電話。系統(tǒng)運(yùn)行穩(wěn)定,可解決煤礦語(yǔ)音通信故障率高,抗干擾能力差的問(wèn)題,為煤礦提供了一種高質(zhì)量的語(yǔ)音通信解決方案,具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]陳溯.ADPCM語(yǔ)音壓縮編碼的分析與仿真[J].中國(guó)西部科技,2008,7(32):51-53.
[2]陳明義.基于FPGA的ADPCM語(yǔ)音編解碼器設(shè)計(jì)時(shí)限[J].電子科技,2007(1):44-47.
[3]徐博,郭秋敏.基于SPI協(xié)議的音頻流解碼系統(tǒng)的研究與設(shè)計(jì)[J].工礦自動(dòng)化,2011(1):44-49.
endprint
摘要簡(jiǎn)要介紹ADPCM技術(shù)原理和數(shù)字音頻芯片VS1003在煤礦廣播對(duì)講系統(tǒng)中應(yīng)用的關(guān)鍵技術(shù)設(shè)計(jì),并闡述了該方案的優(yōu)點(diǎn),為煤礦基于現(xiàn)有寬帶網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字語(yǔ)音廣播對(duì)講提供了一種新的方法,具有較強(qiáng)的實(shí)用價(jià)值。
關(guān)鍵詞ADPCM;數(shù)字語(yǔ)音;VS1003;煤礦廣播對(duì)講
中圖分類(lèi)號(hào):TN828 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1671-7597(2014)11-0107-02
自適應(yīng)差分脈沖編碼調(diào)制(ADPCM)技術(shù)能以32kbit/s碼率達(dá)到符合64kbit/s碼率的語(yǔ)音質(zhì)量要求,因此國(guó)際電報(bào)電話咨詢(xún)委員會(huì)(CCITT)在1984年提出了基于ADPCM語(yǔ)音編碼的G.721建議,1986年進(jìn)行了實(shí)用化修正后應(yīng)用到了最早的數(shù)字通信系統(tǒng)中[1]。煤礦生產(chǎn)離不開(kāi)通信廣播,目前大部分煤礦仍然在大量使用傳統(tǒng)的模擬電話,因井下環(huán)境惡劣,噪聲大,電磁干擾嚴(yán)重,導(dǎo)致電話通信故障頻發(fā),通話時(shí)斷時(shí)續(xù),聽(tīng)不清對(duì)方說(shuō)話的內(nèi)容。為保障井下作業(yè)人員聯(lián)系和信息暢通,提高了煤礦語(yǔ)音通信質(zhì)量,采用數(shù)字語(yǔ)音通信技術(shù)具有其獨(dú)特的優(yōu)勢(shì),同時(shí),基于煤礦現(xiàn)有寬帶網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)字語(yǔ)音通信也是數(shù)字化煤礦技術(shù)的一個(gè)重要組成部分。本文就基于ADPCM技術(shù)實(shí)現(xiàn)煤礦數(shù)字化廣播對(duì)講系統(tǒng)的關(guān)鍵技術(shù)原理和實(shí)現(xiàn)方法進(jìn)行論述。
1ADPCM編解碼原理
ADPCM用預(yù)測(cè)編碼來(lái)壓縮數(shù)據(jù),其核心思想是利用自適應(yīng)的思想改變量化階的大小[2],實(shí)際上編碼記錄并不是語(yǔ)音波形的真實(shí)幅度,而是對(duì)當(dāng)前樣本與預(yù)測(cè)樣本之間的差值進(jìn)行量化編碼,為減小斜率過(guò)載以及顆粒噪聲,根據(jù)統(tǒng)計(jì)算法自動(dòng)修正量化階的大小,差值較小時(shí)使用小的量化階編碼,差值較大時(shí)使用大的量化階編碼,并使用過(guò)去的樣本值估算下一個(gè)輸入樣本與預(yù)測(cè)值,使實(shí)際樣本值與預(yù)測(cè)值之間的差值最小,采用非均勻量化,保證不同幅度信號(hào)的信噪比在同一水平。解碼是編碼的逆過(guò)程,解碼的輸入即為編碼的輸出,在此不再贅述。
2數(shù)字語(yǔ)音硬件實(shí)現(xiàn)
由于ADPCM編解碼技術(shù)優(yōu)勢(shì)明顯,應(yīng)用廣泛,各大音頻處理芯片制造商均有自己專(zhuān)門(mén)或兼容ADPCM編解碼格式的數(shù)字音頻處理芯片。VS1003b是芬蘭LVSI半導(dǎo)體公司一款價(jià)格低廉,功能強(qiáng)大,支持多種音頻格式文件的解碼,能對(duì)話筒輸入或線路輸入進(jìn)行IMA-ADPCM編碼,帶DSP內(nèi)核以及PLL時(shí)鐘鎖相環(huán)倍頻器,片內(nèi)含高性能數(shù)模轉(zhuǎn)換器,有5.5KB供用戶(hù)使用的程序代碼和數(shù)據(jù)RAM空間,具有SPI串行數(shù)據(jù)接口以及URAT通信接口。該器件能完全滿足礦用廣播通信系統(tǒng)的功能要求,應(yīng)用電路如圖1所示。
圖中X1、R1~R4、C1~C6為麥克風(fēng)輸入電路,R6-R10、C7~C12為立體聲音頻輸出電路,RCAP為線路輸入提供偏置,晶振Y1的振蕩頻率為12.288MHz,UART串口不用時(shí)RX必須接高電平,與CPU采用SPI串行接口,XRESET用于控制芯片復(fù)位,DREQ為外部中斷,XDCS用于區(qū)分SPI接口傳輸?shù)氖菙?shù)據(jù)還是命令碼。
圖1VS1003應(yīng)用電路
3基于ADPCM的廣播對(duì)講軟件實(shí)現(xiàn)
采用VS1003實(shí)現(xiàn)廣播對(duì)講,ADPCM編碼進(jìn)行遠(yuǎn)程傳輸,只要網(wǎng)絡(luò)有效帶寬在32K以上,即可保證語(yǔ)音數(shù)據(jù)的實(shí)時(shí)傳輸。為保證實(shí)時(shí)性以及能實(shí)現(xiàn)多方對(duì)講,以UDP組播為基礎(chǔ)的RTP/RTCP協(xié)議,若要完全實(shí)現(xiàn)RTP/RTCP協(xié)議比較復(fù)雜并且需要占用較多的CPU資源,本文采用RTCP的傳輸控制模式,自行設(shè)計(jì)一套簡(jiǎn)單傳輸控制協(xié)議。在應(yīng)用中需要注意, UDP并非可靠傳輸,數(shù)據(jù)報(bào)文有可能后發(fā)而先至,對(duì)方在播放之前必須對(duì)報(bào)文進(jìn)行排序,因此編碼報(bào)文中必須包含報(bào)文的ID序號(hào)。
VS1003可以解碼多種音頻數(shù)據(jù),以何種方式解碼,依靠送入芯片的文件頭格式進(jìn)行自適應(yīng)編碼判斷,因此需要在編碼數(shù)據(jù)前增加一個(gè)WAV文件頭做先導(dǎo)才能正常解碼。在每次語(yǔ)音播放開(kāi)始時(shí)先向VS1003發(fā)送512字節(jié)文件頭,然后再將接收到的報(bào)文數(shù)據(jù)依次送入VS1003,芯片即可進(jìn)行自適應(yīng)解碼并輸出模擬音頻信號(hào)。WAV文件頭的制作過(guò)程簡(jiǎn)單描述如下。
1)設(shè)計(jì)兩個(gè)常量數(shù)組分別定義如下:
const uint8 RIFFHeader0[] = {
'R' , 'I' , 'F' , 'F' , // Chunk ID (RIFF)
0xff, 0xff, 0xff, 0xff, // Chunk payload size (calculate after rec!)
'W' , 'A' , 'V' , 'E' , // RIFF resource format type
'f' , 'm' , 't' , ' ' , // Chunk ID (fmt )
0x14, 0x00, 0x00, 0x00, // Chunk payload size (0x14 = 20 bytes)
0x11, 0x00, // Format Tag (IMA ADPCM)
0x01, 0x00, // Channels (1)
0x80, 0x3e, 0x00, 0x00, // Sample Rate, 0x3e80 = 16.0kHz
0xd7, 0x0f, 0x00, 0x00, // Average Bytes Per Second
0x00, 0x01, // Data Block Size (256 bytes)
0x04, 0x00, // ADPCM encoded bits per sample (4 bits)
0x02, 0x00, // Extra data (2 bytes)
0xf9, 0x01, // Samples per Block (505 samples)
'f' , 'a' , 'c' , 't' , // Chunk ID (fact)
0xc8, 0x01, 0x00, 0x00, // Chunk payload size (456 bytes (zeropad!))
0xff, 0xff, 0xff, 0xff// Number of Samples (calculate after rec!)
}
const uint8 RIFFHeader504[] = {
'd' , 'a' , 't' , 'a' , // Chunk ID (data)
0xff, 0xff, 0xff, 0xff// Chunk payload size (calculate after rec!)
}
2)程序中定義一個(gè)512字節(jié)長(zhǎng)度的臨時(shí)數(shù)組,全初始化為零,再將前52個(gè)字節(jié)用RIFFHeader0代替,將最后8個(gè)字節(jié)用RIFFHeader504代替,以上有3個(gè)需要計(jì)算長(zhǎng)度的地方全部用0xff代替,根據(jù)采樣速率的不同,Sample Rate的具體數(shù)值需要調(diào)整。
3)每次播放ADPCM語(yǔ)音之前將上述512字節(jié)首先送入VS1003。
ADPCM錄音保存的方法是,從VS1003讀取編碼數(shù)據(jù)后一方面通過(guò)網(wǎng)絡(luò)發(fā)送出去,另一方面建立或打開(kāi)一個(gè)WAV文件,將錄音數(shù)據(jù)保存到文件中。WAV文件頭的簡(jiǎn)單制作過(guò)程在前文中已有說(shuō)明,只是在錄音結(jié)束后,利用最終的文件長(zhǎng)度分別計(jì)算上文中的3個(gè)長(zhǎng)度值,然后重新寫(xiě)入文件,形成一個(gè)正常的WAV文件。
4基于ADPCM的煤礦廣播對(duì)講系統(tǒng)特點(diǎn)
由于采用了ADPCM數(shù)字語(yǔ)音技術(shù),與傳統(tǒng)的模擬或基于其他技術(shù)實(shí)現(xiàn)的廣播對(duì)講系統(tǒng)相比具有以下優(yōu)勢(shì)。
1)系統(tǒng)抗干擾能力強(qiáng),無(wú)傳輸損耗,可借助已有數(shù)字通信網(wǎng)絡(luò),實(shí)現(xiàn)遠(yuǎn)距離傳輸。由于廣播對(duì)講系統(tǒng)采用了數(shù)字音頻編解碼器以及數(shù)字通信技術(shù),顯著提高了系統(tǒng)抗干擾能力,減小了使用環(huán)境的影響,降低了對(duì)電源的要求,并可采用本安電路實(shí)現(xiàn),信號(hào)傳輸過(guò)程幾乎沒(méi)有損耗和失真,傳輸距離不受限制。
2)通信帶寬要求低,語(yǔ)音效果優(yōu)良,可實(shí)現(xiàn)全雙工通話。ADPCM在保證優(yōu)良音質(zhì)的情況下最高通信速率為32Kbit/s,在實(shí)際使用過(guò)程中還可以適當(dāng)降低采樣率,從而降低帶寬要求,與基于VOIP技術(shù)協(xié)議的廣播對(duì)講系統(tǒng)相比,具有明顯的效果優(yōu)勢(shì)。如果在每臺(tái)廣播對(duì)講設(shè)備中使用2片VS1003,一片專(zhuān)門(mén)用于播放網(wǎng)絡(luò)語(yǔ)音,另一片專(zhuān)門(mén)用于錄音編碼發(fā)送,加上回聲抑制技術(shù)即可實(shí)現(xiàn)煤礦井下全雙工通話。
3)可實(shí)時(shí)播放多種格式音樂(lè),實(shí)現(xiàn)區(qū)域廣播以及多方通話。因VS1003支持大多數(shù)音頻文件解碼,系統(tǒng)配上后臺(tái)軟件后,可實(shí)現(xiàn)在線廣播MP3音樂(lè),另外因系統(tǒng)采用的是組播傳輸,可以在不增加任何帶寬條件下,軟件可靈活控制終端設(shè)備是否加入組播,因此可以實(shí)現(xiàn)分區(qū)廣播,多方通話功能,這是傳統(tǒng)模擬系統(tǒng)無(wú)法實(shí)現(xiàn)的。
5結(jié)束語(yǔ)
實(shí)踐證明,采用ADPCM編解碼技術(shù)實(shí)現(xiàn)的煤礦廣播對(duì)講系統(tǒng),音頻失真度低,抗干擾能力強(qiáng),語(yǔ)音效果優(yōu)良,并具備許多附加功能,可替代傳統(tǒng)模擬電話。系統(tǒng)運(yùn)行穩(wěn)定,可解決煤礦語(yǔ)音通信故障率高,抗干擾能力差的問(wèn)題,為煤礦提供了一種高質(zhì)量的語(yǔ)音通信解決方案,具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn)
[1]陳溯.ADPCM語(yǔ)音壓縮編碼的分析與仿真[J].中國(guó)西部科技,2008,7(32):51-53.
[2]陳明義.基于FPGA的ADPCM語(yǔ)音編解碼器設(shè)計(jì)時(shí)限[J].電子科技,2007(1):44-47.
[3]徐博,郭秋敏.基于SPI協(xié)議的音頻流解碼系統(tǒng)的研究與設(shè)計(jì)[J].工礦自動(dòng)化,2011(1):44-49.
endprint