嵌入式以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

相關(guān)專題: 芯片

以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)主要是指以以太網(wǎng)為傳播介質(zhì)提供音頻服務(wù)的廣播系統(tǒng),可以很好地利用以太網(wǎng)解決語(yǔ)音信號(hào)遠(yuǎn)距離傳輸難題。允許設(shè)計(jì)者創(chuàng)建大型網(wǎng)絡(luò)結(jié)構(gòu)來實(shí)現(xiàn)數(shù)以千路的數(shù)字語(yǔ)音信號(hào)在以太網(wǎng)上傳輸,充分利用了現(xiàn)有網(wǎng)絡(luò)資源,避免重復(fù)架設(shè)線路的麻煩,實(shí)現(xiàn)了廣播與計(jì)算機(jī)網(wǎng)絡(luò)的多網(wǎng)合一,徹底解決了傳統(tǒng)廣播系統(tǒng)存在的音質(zhì)不佳、容易受干擾、維護(hù)管理復(fù)雜以及互動(dòng)性差等問題。同時(shí)可以實(shí)現(xiàn)選擇全部、部分或特定區(qū)域進(jìn)行定向分組廣播,突破了傳統(tǒng)廣播系統(tǒng)只能對(duì)全部區(qū)域進(jìn)行公共廣播的局限。現(xiàn)有的以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)在實(shí)現(xiàn)區(qū)域廣播功能上大都采用控制信號(hào)控制播放終端加入或者離開組播組的方式實(shí)現(xiàn),需要在實(shí)現(xiàn)廣播之前發(fā)送控制信號(hào)使終端加入組播組然后才能實(shí)現(xiàn)廣播,或者在服務(wù)器端建立一張復(fù)雜的映射表來維護(hù)播放終端的狀態(tài)以實(shí)現(xiàn)區(qū)域廣播,功能實(shí)現(xiàn)較為復(fù)雜。

在此給出一種嵌入式以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)解決方案,能夠較簡(jiǎn)單地實(shí)現(xiàn)廣播系統(tǒng)的區(qū)域廣播功能。該系統(tǒng)基于ARM架構(gòu),采用系統(tǒng)播放終端仲裁的方法控制區(qū)域廣播的實(shí)現(xiàn),廣播內(nèi)容能夠同步播放和保存。

1 結(jié)構(gòu)設(shè)計(jì)

該系統(tǒng)采用C/S結(jié)構(gòu),由廣播系統(tǒng)服務(wù)器端與廣播系統(tǒng)播放終端兩部分組成,如圖1所示。

廣播系統(tǒng)服務(wù)器端在PC機(jī)上實(shí)現(xiàn),是一個(gè)由VC++實(shí)現(xiàn)的語(yǔ)音信號(hào)采集、存儲(chǔ)、網(wǎng)絡(luò)傳輸?shù)某绦。該部分通過麥克風(fēng)對(duì)語(yǔ)音信號(hào)進(jìn)行采集存儲(chǔ),然后將語(yǔ)音數(shù)據(jù)通過UDP的方式傳輸?shù)揭蕴W(wǎng)上,實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的網(wǎng)絡(luò)傳輸功能。

廣播系統(tǒng)播放終端為基于LM3S8962的嵌入式終端,實(shí)現(xiàn)從以太網(wǎng)上接收發(fā)送給它的IP語(yǔ)音數(shù)據(jù)包,并由音頻解碼芯片MS6336完成語(yǔ)音數(shù)據(jù)的數(shù)/模轉(zhuǎn)換及播放。

2 廣播系統(tǒng)播放終端硬件設(shè)計(jì)

廣播系統(tǒng)播放終端主控制芯片采用LuminaryMicro公司所提供的微控制器LM3S8962。該系列芯片是首款基于ARM CortexTM-M3的控制器,內(nèi)部集成以太網(wǎng)控制器,是業(yè)界首款支持工業(yè)以太網(wǎng)(IEEE)的ARM芯片,可以方便地實(shí)現(xiàn)網(wǎng)絡(luò)功能。

音頻解碼芯片采用MOSA公司生產(chǎn)的MS6336芯片。該芯片是一款16位立體聲音頻數(shù)字模擬轉(zhuǎn)換器,支持的數(shù)字輸入格式有Right Justifl-ed,Left Justified,I2S。MS6336控制接口采用I2C總線,接口容易設(shè)定。DAC部分具有精確穩(wěn)定的電流量,結(jié)合極好的對(duì)稱譯碼方式,能夠重現(xiàn)出高質(zhì)量的音頻信號(hào)。

主控制芯片LM3S8962通過磁性元件與RJ45接口相連,用于從以太網(wǎng)上接收語(yǔ)音數(shù)據(jù)。LM3S8962為音頻解碼芯片MS6336提供控制信號(hào)和語(yǔ)音數(shù)據(jù)信號(hào)。LM3S8962支持I2C功能,PB2和PB3口分別提供了I2C的時(shí)鐘和數(shù)據(jù)信號(hào),可以將這兩個(gè)引腳和MS6336的I2C功能引腳直接相連,并且需要加上拉電阻。LM3S8962不支持MS6336需要的數(shù)據(jù)輸入格式,系統(tǒng)中MS6336的數(shù)據(jù)輸入格式采用I2S,所以要給MS6336提供語(yǔ)音數(shù)據(jù),需要采用LM3S8962的GPIO口軟件模擬實(shí)現(xiàn)MS6336需要的I2S數(shù)據(jù)輸入格式。在設(shè)計(jì)中采用PA5,PA6,PA7口來模擬實(shí)現(xiàn)該功能。三個(gè)引腳分別對(duì)應(yīng)I2S的聲道選擇信號(hào)、時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào),將這三個(gè)引腳和MS6336的I2S功能引腳相連。

以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)播放終端硬件結(jié)構(gòu)如圖2所示。

3 廣播系統(tǒng)軟件設(shè)計(jì)

廣播系統(tǒng)軟件分為廣播系統(tǒng)服務(wù)器端軟件和播放終端軟件兩部分。

該設(shè)計(jì)實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的實(shí)時(shí)播放,所以要求語(yǔ)音數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性得到保障,而對(duì)于數(shù)據(jù)的完整性要求不是太嚴(yán)格,少量的丟包也不會(huì)影響整體的播放效果,所以該系統(tǒng)的語(yǔ)音數(shù)據(jù)傳輸采用UDP傳輸方式,同時(shí)本系統(tǒng)工作在局域網(wǎng)內(nèi),臨時(shí)用戶較少,故采用IP地址靜態(tài)分配,簡(jiǎn)化播放終端軟件部分的實(shí)現(xiàn)。

3.1 廣播系統(tǒng)服務(wù)器端語(yǔ)音數(shù)據(jù)的采集、存儲(chǔ)與發(fā)送

語(yǔ)音數(shù)據(jù)的采集利用低層WAVE音頻API函數(shù)實(shí)現(xiàn),為了不造成語(yǔ)音數(shù)據(jù)的丟失,該設(shè)計(jì)利用雙緩沖來存儲(chǔ)語(yǔ)音數(shù)據(jù),實(shí)現(xiàn)流程如圖3所示。

當(dāng)一個(gè)錄音緩沖區(qū)滿時(shí),系統(tǒng)立刻將另一個(gè)錄音緩沖區(qū)發(fā)送給錄音設(shè)備繼續(xù)錄音,而應(yīng)用程序此時(shí)要讀取已經(jīng)錄音滿的緩沖區(qū)中的數(shù)據(jù),并進(jìn)行處理。然后調(diào)用waveInAddBuffer函數(shù)將該緩沖區(qū)重新賦給錄音設(shè)備,循環(huán)利用。

為了防止錄音過程中語(yǔ)音數(shù)據(jù)的丟失,只是簡(jiǎn)單地利用雙緩沖是不夠的,還要注意的一點(diǎn)是,當(dāng)一個(gè)緩沖區(qū)錄音滿以后,應(yīng)用程序?qū)υ摼彌_區(qū)的數(shù)據(jù)進(jìn)行處理,同時(shí)第二個(gè)緩沖區(qū)用于錄音,數(shù)據(jù)處理的時(shí)間一定要小于第二個(gè)緩沖區(qū)錄音滿需要的時(shí)間,否則在第二個(gè)緩沖區(qū)錄音滿以后第一個(gè)緩沖區(qū)還沒有重新賦給錄音設(shè)備,就會(huì)造成語(yǔ)音數(shù)據(jù)的丟失。當(dāng)語(yǔ)音信號(hào)采樣率大的時(shí)候適當(dāng)增加緩沖區(qū)的大小,可以有效地解決這個(gè)問題。

為了將廣播的內(nèi)容進(jìn)行保存以備后需,需要將廣播內(nèi)容保存在一個(gè)WAV文件中。WAV文件具有固定的頭格式,在保存語(yǔ)音數(shù)據(jù)之前,需要先將WAV文件的頭部設(shè)定好,否則保存的WAV文件無法播放。在每一次錄音緩沖區(qū)滿時(shí),首先找到WAV文件的結(jié)尾處,然后將采集到的數(shù)據(jù)依次寫在文件尾部。當(dāng)整個(gè)廣播過程結(jié)束時(shí),所有的語(yǔ)音數(shù)據(jù)都被保存在了WAV文件中,實(shí)現(xiàn)了語(yǔ)音數(shù)據(jù)的存儲(chǔ)。

當(dāng)一個(gè)錄音緩沖區(qū)滿后,這時(shí)就需要將已經(jīng)采集到的語(yǔ)音數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)送出去。在設(shè)計(jì)中首先利用Csocket類創(chuàng)建一個(gè)套接字,接下來只需要將采集到的數(shù)據(jù)封裝成IP包發(fā)送出去。該設(shè)計(jì)中語(yǔ)音信號(hào)的采樣率為44.1 kHz,16位雙聲道。為了避免語(yǔ)音數(shù)據(jù)丟失,錄音緩沖區(qū)的大小設(shè)定為1024B。

 

作者:閆紅超 茍先太   來源:現(xiàn)代電子技術(shù)
微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點(diǎn)本月熱點(diǎn)

     

      最熱通信招聘

      最新招聘信息