胡曉婷,宋壽鵬
(江蘇大學(xué) 機(jī)械工程學(xué)院,江蘇 鎮(zhèn)江 212013)
?
基于STM32的光話機(jī)ADPCM壓縮編碼算法與實(shí)現(xiàn)
胡曉婷,宋壽鵬
(江蘇大學(xué) 機(jī)械工程學(xué)院,江蘇 鎮(zhèn)江 212013)
針對(duì)部分光纖鋪設(shè)及維護(hù)工作是在山區(qū)、森林等無線信號(hào)差的條件下進(jìn)行的情況,文中為了解決此種環(huán)境下通話困難的問題,同時(shí)降低數(shù)碼率,節(jié)省光纖帶寬,采用了一種簡(jiǎn)化的語音壓縮編碼算法,并在基于STM32單片機(jī)的光話機(jī)中實(shí)現(xiàn)。該壓縮編碼算法采用自適應(yīng)差分脈沖編碼調(diào)制技術(shù),具有較高的壓縮比。仿真實(shí)驗(yàn)表明,在壓縮比為4:1的條件下,可獲得較低的數(shù)碼率和較高的語音通話質(zhì)量。
光話機(jī);語音;壓縮編碼算法;自適應(yīng)差分脈沖編碼調(diào)制;STM32
隨著光纖的大量使用,光纖鋪設(shè)及維護(hù)工作顯地越重要,且眾多光纖鋪設(shè)及維護(hù)工作是在惡劣的環(huán)境中進(jìn)行的,比如山區(qū)、森林等,這些地區(qū)無線信號(hào)差,普通的通訊設(shè)備通話質(zhì)量差甚至無法通訊,這就給施工人員的工作帶來了困難。光話機(jī)就是為解決以上問題研制的一種光纖通訊設(shè)備,目前市場(chǎng)上普遍存在的光話機(jī)以數(shù)字式為主[1],且價(jià)格昂貴。此外,目前光話機(jī)普遍采用的編碼方法是脈沖編碼調(diào)制(Pulse Code Modulation,PCM),它是比較簡(jiǎn)單的波形編碼方法[2-4]。盡管該種編碼算法簡(jiǎn)單,但其數(shù)碼率高,占用帶寬[5],不利于遠(yuǎn)距離通訊。自適應(yīng)差分脈沖編碼調(diào)制(Adaptive Differential Pulse Code Modulation,ADPCM)技術(shù),可以對(duì)語音信號(hào)實(shí)現(xiàn)較高比例的壓縮,降低比特率[6-7]。國際電報(bào)電話咨詢委員會(huì)提出的G.721、G.726及G.727編碼器建議均采用ADPCM結(jié)構(gòu)作為長(zhǎng)途傳輸中的通用語言編碼方法[8]。但該種壓縮編碼算法較復(fù)雜,計(jì)算量較大[9-10],應(yīng)用在光話機(jī)中就需要高性能的處理器及一系列匹配外設(shè),會(huì)增加系統(tǒng)成本。
針對(duì)以上情況,采用互動(dòng)多媒體協(xié)會(huì)(Interactive Multimedia Association ,IMA)標(biāo)準(zhǔn)的ADPCM語音壓縮編碼算法,并在基于STM32單片機(jī)的光話機(jī)中實(shí)現(xiàn)。該種算法壓縮比比PCM算法高,復(fù)雜度比ADPCM壓縮編碼算法低[11],可解決光纖鋪設(shè)及維護(hù)過程中無線信號(hào)差環(huán)境時(shí)的通訊問題,降低光話機(jī)成本實(shí)現(xiàn)高質(zhì)量語音通話功能。
語音信號(hào)是一種具有短時(shí)平穩(wěn)性的非平穩(wěn)隨機(jī)信號(hào),其相鄰樣點(diǎn)間有著較強(qiáng)的相關(guān)性。IMA-ADPCM的核心思想就是利用自適應(yīng)方法改變量化階的大小,即使用小的量化階去編碼小的差值,使用大的量化階去編碼大的差值;利用語音樣本之間的相關(guān)性,使用過去的樣本值估算下一個(gè)輸入樣本的預(yù)測(cè)值,使實(shí)際樣本值和預(yù)測(cè)值之間的差值總是最小。本系統(tǒng)采用的IMA-ADPCM壓縮編碼算法是一種適用于單片機(jī)的語音編碼算法[12]。該算法采用4位編碼輸出方式,其量化值通過查詢兩個(gè)表的方式自適應(yīng)量化獲得。
假設(shè)采樣點(diǎn)的位置為i,c(i)表示在i點(diǎn)的編碼輸出。輸入信號(hào)的實(shí)際值為x(i),輸入信號(hào)的預(yù)測(cè)值用y(i)表示,Δ表示實(shí)際值和預(yù)測(cè)值的差值。則
(1)
(2)
y(i+1)=y(i)+Δ
(3)
其中,step[index]表中給出了量化階的尺寸;index[c(i)]表中給出了對(duì)應(yīng)的索引值。
編碼算法的自適應(yīng)調(diào)整主要是對(duì)量化階進(jìn)行自適應(yīng)修正,量化階尺寸的變化與當(dāng)前量化階的尺度和上一個(gè)量化編碼輸出值有關(guān)。4位編碼中除最左邊最高位為符號(hào)位外的其余3位作為對(duì)當(dāng)前音頻樣本計(jì)算得到的量化值c(i),用作表index[c(i)]的索引,這個(gè)表中查得的值用于對(duì)表step[index]的索引進(jìn)行修正。
index[i+1]=index[i]+index[c(i)]
(4)
表index的索引值index[c(i)]與上一次儲(chǔ)存的索引index[i]相加,如式(4)所示,檢查所得到的和,要保證本次索引值index[i+1]在0~88之間。然后將其作為表step的索引來查詢量化階尺寸,量化級(jí)尺寸在32 768-32 767之間(16位有符號(hào)數(shù)的范圍)。最后將本次索引值index[i+1]存儲(chǔ),用于下一步的自適應(yīng)量化計(jì)算。
發(fā)送信號(hào)時(shí),語音通過麥克風(fēng)將聲音信號(hào)轉(zhuǎn)換為電信號(hào),再使用VS1053B對(duì)語音信號(hào)進(jìn)行采集編碼之后發(fā)送到單片機(jī),單片機(jī)將壓縮編碼后的數(shù)據(jù)通過串口經(jīng)過電平轉(zhuǎn)換之后發(fā)送到光纖收發(fā)器,最后,光纖收發(fā)器進(jìn)行電光轉(zhuǎn)換將語音信號(hào)從光纖信道發(fā)送出去。接收信號(hào)時(shí),光話機(jī)接收來自另一端光話機(jī)發(fā)送的語音信號(hào),首選光纖收發(fā)器接收到信號(hào)并通過電平轉(zhuǎn)換傳輸至單片機(jī),單片機(jī)控制解碼單元對(duì)接收的待解碼信號(hào)進(jìn)行解碼,最后經(jīng)過功率放大處理后輸出驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。為方便操作,系統(tǒng)還配備了控制按鍵、TFTLCD液晶顯示器、可供選擇使用的耳機(jī)接口等。 光話機(jī)系統(tǒng)工作流程圖如圖1所示。
圖1 光話機(jī)系統(tǒng)工作流程圖
信號(hào)在光纖中的傳輸是通過光纖收發(fā)器實(shí)現(xiàn)的,但光纖收發(fā)器的發(fā)送接收電平為差分輸入輸出電平,與單片機(jī)串口電平不匹配。根據(jù)光話機(jī)全雙工的通訊要求,需要在單片機(jī)和光纖收發(fā)器之間設(shè)計(jì)一個(gè)四線制RS485電平轉(zhuǎn)換電路用于傳輸信號(hào)的電平轉(zhuǎn)換,此處用的是SP1490E,將其分別與單片機(jī)通用收發(fā)串口USART及光纖收發(fā)器連接。此外,選用的光纖收發(fā)器實(shí)現(xiàn)收發(fā)功能還需要外加直流偏置,光纖收發(fā)模塊的具體電路如圖2所示。
圖2 光纖收發(fā)電路
VS1053B內(nèi)部包含一個(gè)高性能、低功耗的DSP處理器內(nèi)核,可實(shí)現(xiàn)多種音頻格式包括WAV(IMA-ADPCM,PCM)格式的音頻解碼和IMA-ADPCM編碼功能。此外該芯片內(nèi)部還具有一個(gè)可變采樣率的ADC及可擴(kuò)展外部DAC的IIS接口。編碼時(shí),語音信號(hào)經(jīng)過麥克風(fēng)進(jìn)入VS1053B,通過其自帶的A/D模數(shù)轉(zhuǎn)換之后進(jìn)行IMA-ADPCM編碼緩存,之后對(duì)編碼信號(hào)添加文件頭使其成為帶有采樣率、通道數(shù)等信息的文件,最后單片機(jī)通過數(shù)據(jù)輸出口讀取緩存數(shù)據(jù)做進(jìn)一步處理;解碼時(shí),將接收的編碼信號(hào)送入VS1053B進(jìn)行解碼并輸出。
圖3 語音編解碼電路
光話機(jī)選用的處理器為STM32F103RBT6,其具有價(jià)格低、功能強(qiáng)、使用簡(jiǎn)單的優(yōu)點(diǎn)。其內(nèi)部集成了20 kB的SRAM,128 kB的片內(nèi)Flash,串行外設(shè)接口SPI,全雙工通用同步/異步串行收發(fā)模塊USART,DMA等強(qiáng)大的外設(shè)功能,可實(shí)現(xiàn)與光話機(jī)系統(tǒng)多個(gè)外設(shè)進(jìn)行通訊的功能。此外,該處理器還具有在線調(diào)試接口JTAG,方便系統(tǒng)程序調(diào)試。最終,STM32單片機(jī)通過控制外部編解碼器實(shí)現(xiàn)語音編解碼功能[13-14],單片機(jī)電路如圖4所示。
圖4 STM32單片機(jī)電路
為驗(yàn)證IMA-ADPCM算法性能,設(shè)計(jì)使用多組不同的語音樣本進(jìn)行仿真試驗(yàn)。語音樣本中包括元音、輔音及長(zhǎng)短不同的語音信號(hào),其中樣本1為元音,樣本2為輔音,樣本3為0.01 s的語音,樣本4為0.03 s的語音。參考ADPCM語音編碼標(biāo)準(zhǔn)的仿真實(shí)現(xiàn)[15],分別用ADPCM壓縮編碼算法和IMA-ADPCM壓縮編碼算法對(duì)各個(gè)語音樣本進(jìn)行仿真。從誤碼率及輸出編解碼波形兩個(gè)方面對(duì)兩種編解碼算法進(jìn)行比較。
設(shè)采樣位數(shù)為16位,采樣頻率為8 kHz。
(5)
并通過式(5)分別對(duì)兩種編碼算法的誤碼率進(jìn)行計(jì)算。式中,ne為誤碼率;ni為編解碼之后的語音信號(hào)值不同于原始語音信號(hào)值的總個(gè)數(shù);n為采集的原始語音的總個(gè)數(shù)。
計(jì)算出4個(gè)語音樣本的誤碼率,如表1所示,可以得出ADPCM和IMA-ADPCM兩種壓縮編碼算法輸出語音的誤碼率都比較低,但ADPCM壓縮編碼算法的誤碼率相對(duì)要高。此外,語音樣本時(shí)間過長(zhǎng)時(shí),兩種算法編解碼都會(huì)出現(xiàn)明顯延時(shí),所以語音幀長(zhǎng)度的選取也不宜過長(zhǎng),否則會(huì)出現(xiàn)語音信號(hào)不連續(xù)的問題。
表1 不同語音樣本誤碼率
選擇一個(gè)內(nèi)容為“12345”的語音樣本,驗(yàn)證經(jīng)過IMA-ADPCM算法編解碼之后的語音信號(hào)與原始語音信號(hào)是否有失真出現(xiàn)。分別采用ADPCM和IMA-ADPCM算法對(duì)語音信號(hào)進(jìn)行編解碼并輸出對(duì)應(yīng)原始信號(hào)及編解碼輸出波形,如圖5所示。從波形輸出結(jié)果可看出,兩種算法編解碼之后輸出的語音信號(hào)波形均未出現(xiàn)明顯失真。
圖5 語音信號(hào)波形對(duì)比圖
文中研究了IMA-ADPCM壓縮編碼算法,并將其在基于STM32的光話機(jī)中實(shí)現(xiàn)。該壓縮編碼算法壓縮比為4∶1,誤碼率低,數(shù)碼率為32 bit·s-1,主觀意見評(píng)分 (Mean Opinion Score,MOS)>4,具有較低的數(shù)碼率和較高的語音質(zhì)量。該光話機(jī)系統(tǒng)電路設(shè)計(jì)簡(jiǎn)單、成本低,對(duì)光話機(jī)產(chǎn)品在壓縮編碼算法方面的研究具有一定的補(bǔ)充意義。
[1] 夏震宇,翟昭文.光纖電話機(jī):中國,200420022025.3[P].2005-09-14.
[2] 張玥.光纖語音電話通信技術(shù)概述[J].現(xiàn)代科技,2009(6):56-58.
[3] 王炳錫.語音編碼[M].西安:西安電子科技大學(xué)出版社,2002.
[4] 吳家安.語音編碼技術(shù)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.
[5] 王培開.基于51單片機(jī)的PCM解碼設(shè)[J].電子制作,2012(1):58-64.
[6] ITU CCITT. Recommendation G.726 40,32,24,16kB/s adaptive differential pulse code modulation[S].Geneva:ITV CCITT,1990.
[7] 李睿.基于FPGA系統(tǒng)的ADPCM編解碼應(yīng)用[D].上海:復(fù)旦大學(xué),2009.
[8] 房德新,魏建強(qiáng).ITU G.726語音編碼器在DSP上的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2001,17(10):28-29.
[9] 王小軍,趙嘎,舒平平,等.基于FPGA的IMA-ADPCM 編/解碼器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 云南大學(xué)學(xué)報(bào):自然科學(xué)版,2012(4):415-419.
[10] 李天任.基于DSP的ADPCM編譯碼系統(tǒng)研究[D].長(zhǎng)春:長(zhǎng)春理工大學(xué),2005.
[11] 徐朝炯,李平,高峰.基于ADPCM 算法的語音錄放系統(tǒng)優(yōu)化設(shè)計(jì)與FPGA 實(shí)現(xiàn)[J].電聲技術(shù),2007,31(S2):27-30.
[12] 萬曉華,陳連坤.一種適用于單片機(jī)的語音編碼算法及應(yīng)用[J].計(jì)算機(jī)工程,2005,31(6):184-185.
[13] 張崇武.基于單片機(jī)的語音編碼系統(tǒng)實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2012.
[14] ST.AN2931 application note implementing the ADPCM algorithm in high-density STM32F103xx microcontrollers [M].Italy:ST,2009.
[15] 張雪英.數(shù)字語音處理及Matlab仿真[M].北京:電子工業(yè)出版社,2010.
Optical Telephone ADPCM Compression Coding Algorithm and Implementation Based on STM32
HU Xiaoting, SONG Shoupeng
(School of Mechanical Engineering, Jiangsu University, Zhenjiang 212013, China)
Some optical fiber laying and maintenance are carried out in poor wireless environment, such as mountain areas and forests. In order to solve the problem of call difficulties in such environments, reduce digital rate and save fiber bandwidth, a simplified speech compression coding algorithm is adopted and realized in optical telephones based on the STM32 single chip microcomputer. The speech compression coding algorithm adopts the adaptive differential pulse code modulation technology, which has high compression ratio. Simulation result shows that it can achieve high-quality voice calls at a compression ratio of 4:1.
optical telephone; speech; compression coding algorithm; adaptive differential pulse code modulation; STM32
2016- 01- 30
胡曉婷(1990-),女,碩士研究生。研究方向: 光纖通信。宋壽鵬(1967-),男,教授,博士。研究方向:超聲波檢測(cè)新原理及檢測(cè)設(shè)備等。
10.16180/j.cnki.issn1007-7820.2016.11.005
TN912
A
1007-7820(2016)11-016-04