牛勇鋼
(中國(guó)民航大學(xué)電子信息與自動(dòng)化學(xué)院,天津 300300)
隨著計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)通信技術(shù)的發(fā)展,數(shù)字化在中國(guó)經(jīng)濟(jì)社會(huì)生活中扮演著重要角色,各行業(yè)都在大力推進(jìn)數(shù)字化建設(shè)[1]?,F(xiàn)實(shí)生活中人們聽(tīng)到的聲音是以模擬量存在的,信號(hào)數(shù)據(jù)量大、抗干擾能力弱,不便進(jìn)行運(yùn)算、存儲(chǔ)及網(wǎng)絡(luò)傳輸,因此將原始語(yǔ)音信號(hào)進(jìn)行數(shù)字化處理十分必要[2]。隨著數(shù)字音頻技術(shù)和電子集成技術(shù)的發(fā)展,語(yǔ)音數(shù)字化系統(tǒng)已逐漸成熟,各種嵌入式語(yǔ)音數(shù)字化及網(wǎng)絡(luò)傳輸系統(tǒng)應(yīng)運(yùn)而生。
文獻(xiàn)[3-4]設(shè)計(jì)的數(shù)字化語(yǔ)音存儲(chǔ)與回放系統(tǒng),均具有體積小、功耗低的特點(diǎn),但文獻(xiàn)[3]設(shè)計(jì)的帶通濾波電路通帶范圍較窄、上限頻率低,文獻(xiàn)[4]設(shè)計(jì)的采樣頻率較低,雖然系統(tǒng)低頻效果較好,但存在高頻語(yǔ)音信號(hào)失真較嚴(yán)重的問(wèn)題。文獻(xiàn)[5]實(shí)現(xiàn)的語(yǔ)音數(shù)字化通信系統(tǒng),基于RS485 總線設(shè)計(jì),具有成本低、適合多設(shè)備交互、傳輸速率較高的特點(diǎn),但存在總線利用率低且無(wú)容錯(cuò)機(jī)制的問(wèn)題。文獻(xiàn)[6]設(shè)計(jì)的數(shù)字化語(yǔ)音系統(tǒng),采用改進(jìn)型靜音壓縮算法,節(jié)省了語(yǔ)音數(shù)據(jù)的存儲(chǔ)空間,但犧牲了一定的語(yǔ)音質(zhì)量。如果后端用于語(yǔ)音識(shí)別與分析系統(tǒng),將會(huì)影響語(yǔ)音識(shí)別的準(zhǔn)確度。文獻(xiàn)[7]主要研究語(yǔ)音數(shù)字化傳輸過(guò)程中信息的隱藏及盲提取技術(shù),雖然增強(qiáng)了數(shù)字化語(yǔ)音傳輸?shù)陌踩?,但由于?shù)據(jù)加密及提取需要消耗較大的計(jì)算資源,對(duì)嵌入式語(yǔ)音數(shù)字化終端的處理器帶來(lái)極大挑戰(zhàn),僅適合語(yǔ)音量小且對(duì)保密性要求較高的情況。
結(jié)合以上語(yǔ)音數(shù)字化系統(tǒng)的優(yōu)缺點(diǎn),設(shè)計(jì)了一種語(yǔ)音數(shù)字化及網(wǎng)絡(luò)傳輸系統(tǒng)。針對(duì)現(xiàn)階段基于嵌入式平臺(tái)的語(yǔ)音數(shù)字化系統(tǒng)存在語(yǔ)音解碼準(zhǔn)確率不理想、總線傳輸速度欠佳的問(wèn)題,采用兩片高速ARM 處理器分別處理語(yǔ)音解碼和以太網(wǎng)傳輸過(guò)程,保證了語(yǔ)音數(shù)字化后的高還原度和網(wǎng)絡(luò)傳輸?shù)母咚傩阅?。通過(guò)加入高速以太網(wǎng)通信功能,數(shù)據(jù)傳輸速度有了大幅提高,可將數(shù)據(jù)傳輸至計(jì)算機(jī)端,解決了嵌入式終端存儲(chǔ)空間小的問(wèn)題,且便于后期進(jìn)行語(yǔ)音識(shí)別、分析、處理等。采用的WM8978 芯片功耗低、體積小易便攜,且信噪比較高,能夠減少風(fēng)噪聲。系統(tǒng)還加入了容錯(cuò)機(jī)制,能夠降低誤碼率,其網(wǎng)絡(luò)傳輸功能設(shè)計(jì)具有網(wǎng)絡(luò)傳輸易配置、丟包率低的特點(diǎn)。
根據(jù)系統(tǒng)實(shí)現(xiàn)的基本功能,系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 語(yǔ)音數(shù)字化及傳輸處理過(guò)程Fig.1 Voice digitization and transmission processing flow
首先是語(yǔ)音模擬信號(hào)輸入,語(yǔ)音輸入后預(yù)處理部分主要是進(jìn)行混疊濾波操作,目的是提取此范圍內(nèi)的頻譜分量,然后進(jìn)行采樣得到數(shù)字化編碼[8]。其中采樣頻率直接決定了聲音的保真度,頻率越高,采樣信號(hào)與源聲音信號(hào)越吻合,同時(shí)采樣得到的數(shù)據(jù)量也越大。采樣頻率既要保證語(yǔ)音特征的保留提取,又需使語(yǔ)音數(shù)字化采樣與傳輸在處理器處理能力范圍內(nèi)。然后將語(yǔ)音數(shù)字信號(hào)進(jìn)行網(wǎng)絡(luò)傳輸,最后將其還原為模擬語(yǔ)音信號(hào)。
針對(duì)以上語(yǔ)音數(shù)字化及網(wǎng)絡(luò)傳輸系統(tǒng)的設(shè)計(jì)目標(biāo),考慮硬件成本和性能,設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)框圖Fig.2 System block diagram
系統(tǒng)前端為音頻濾波及數(shù)字化采樣電路,主要選用帶揚(yáng)聲器驅(qū)動(dòng)的立體聲多媒體數(shù)字信號(hào)編譯碼芯片WM8978,采樣數(shù)據(jù)通過(guò)I2S(inter-IC sount bus)接口發(fā)送給處理器STM32F405,經(jīng)過(guò)解析處理,將音頻數(shù)字化數(shù)據(jù)通過(guò)串口發(fā)送給同型號(hào)的另1 塊單片機(jī),該單片機(jī)用于以太網(wǎng)信息配置,通過(guò)SPI 接口控制以太網(wǎng)接口控制芯片W5500,配置后將數(shù)據(jù)通過(guò)TCP/IP協(xié)議透?jìng)鞯椒?wù)器端進(jìn)行存儲(chǔ)。
由于語(yǔ)音數(shù)據(jù)量較大,為保證系統(tǒng)數(shù)字化處理及網(wǎng)絡(luò)傳輸?shù)膶?shí)時(shí)性及準(zhǔn)確性,系統(tǒng)使用兩片STM32F405處理器分別處理數(shù)字化功能和網(wǎng)絡(luò)傳輸功能。此外以太網(wǎng)控制單片機(jī)留有1 個(gè)RS232 接口,方便對(duì)服務(wù)器IP 地址及相應(yīng)接收數(shù)據(jù)的端口號(hào)進(jìn)行配置。
WM8978 是一個(gè)低功耗、高質(zhì)量的立體聲多媒體數(shù)字信號(hào)編譯碼專用芯片,具有高級(jí)的片上數(shù)字信號(hào)處理功能,同時(shí)具備ADC 音頻采樣及DAC 音頻輸出功能,在ADC 線路上提供了一個(gè)數(shù)字濾波功能,能有效減少風(fēng)噪聲,主要應(yīng)用于便攜式設(shè)備需要音頻采集的場(chǎng)所[9]。利用其設(shè)計(jì)的音頻采樣電路如圖3所示。
WM8978 除了引出I2S 音頻接口外,控制接口可以操作為3 線或2 線微處理器接口,MODE 引腳確定2 線或3 線模式,系統(tǒng)設(shè)計(jì)中MODE 引腳通過(guò)下拉電阻接地,配置為2 線模式,即I2C(inter-integrated circuit)總線模式。I2C 接口作用是在啟動(dòng)音頻采樣前對(duì)WM8978 內(nèi)部寄存器進(jìn)行配置,如設(shè)置采樣聲道增益、采樣率、采樣數(shù)據(jù)位數(shù)及I2S 工作模式等。
I2S 是針對(duì)數(shù)字音頻設(shè)備之間的音頻數(shù)據(jù)傳輸而制定的一種總線標(biāo)準(zhǔn)[10]。在I2S標(biāo)準(zhǔn)中,既規(guī)定了硬件接口規(guī)范,也規(guī)定了數(shù)字音頻數(shù)據(jù)的格式。WM8978芯片I2S 接口支持左對(duì)齊、右對(duì)齊和I2S 飛利浦標(biāo)準(zhǔn)模式及PCM 和DSP 模式。系統(tǒng)配置WM8978 I2S 接口模式為I2S 標(biāo)準(zhǔn)模式,數(shù)據(jù)長(zhǎng)度配置為16 位,為保證音頻數(shù)據(jù)的準(zhǔn)確傳輸,STM32F405 單片機(jī)也應(yīng)將I2S 接口配置成相同模式。
系統(tǒng)設(shè)置采樣參數(shù)為44.1 kHz 采樣頻率,16 位數(shù)據(jù)長(zhǎng)度,左右雙聲道。語(yǔ)音數(shù)字化后數(shù)據(jù)量大,設(shè)置STM32F405 單片機(jī)串口波特率為3 000 kHz 進(jìn)行傳輸,可以滿足實(shí)時(shí)傳輸要求。
由于音頻數(shù)字化編碼后數(shù)據(jù)量較大,且以太網(wǎng)對(duì)傳輸實(shí)時(shí)性要求較高,因此對(duì)于音頻數(shù)字化與以太網(wǎng)傳輸部分分別采用單獨(dú)的處理器進(jìn)行功能實(shí)現(xiàn),以太網(wǎng)傳輸部分采用STM32F405 單片機(jī)通過(guò)SPI 總線對(duì)W5500 芯片進(jìn)行Socket 配置和音頻數(shù)據(jù)的透?jìng)鳌?/p>
圖3 WM8978 音頻采樣電路Fig.3 WM8978 audio sampling circuit
W5500 作為高性能以太網(wǎng)接口芯片系列之一,是一款全硬件TCP/IP 嵌入式以太網(wǎng)控制器[11]。具有8 個(gè)獨(dú)立的硬件Socket,各路通信互不影響,有很好的穩(wěn)定性。進(jìn)行嵌入式系統(tǒng)設(shè)計(jì)時(shí)不用考慮網(wǎng)絡(luò)傳輸協(xié)議的實(shí)現(xiàn)部分,此部分完全由芯片硬件實(shí)現(xiàn),開(kāi)發(fā)應(yīng)用時(shí)只需對(duì)Socket 編程配置即可。W5500 芯片外圍電路簡(jiǎn)單,電路如圖4所示。
對(duì)W5500 進(jìn)行配置時(shí),需要設(shè)置本機(jī)MAC 地址、網(wǎng)關(guān)地址、子網(wǎng)掩碼、IP 地址、端口號(hào)及目標(biāo)服務(wù)器的IP 和端口等信息,這些信息在初始化時(shí)單片機(jī)可通過(guò)SPI 接口對(duì)W5500 的寄存器進(jìn)行配置。初始化數(shù)據(jù)存儲(chǔ)在單片機(jī)的EEPROM 中,掉電不會(huì)消失,需要更改配置信息時(shí),由預(yù)留的RS232 接口連接上位機(jī)或通過(guò)本地網(wǎng)絡(luò)進(jìn)行更改。
圖4 以太網(wǎng)控制電路Fig.4 Ethernet control circuit
軟件設(shè)計(jì)主要包括語(yǔ)音采集和以太網(wǎng)傳輸配置部分,兩部分程序并行存在于兩片處理器中,此種方法能夠降低各功能間的耦合性,保證了語(yǔ)音采樣與傳輸?shù)膶?shí)時(shí)性,相當(dāng)于雙線程運(yùn)行的CPU。
STM32F405 處理器通過(guò)I2C 訪問(wèn)WM8978 內(nèi)部寄存器,實(shí)現(xiàn)芯片工作環(huán)境配置,此種模式下,芯片設(shè)備地址[12]固定為0011010。WM8978 內(nèi)部有48 個(gè)可控寄存器,標(biāo)號(hào)R0~R47,每個(gè)寄存器控制字共16 位,前7 位是地址位,用來(lái)選擇存取的寄存器,后9 位是寄存器數(shù)據(jù)。I2C 數(shù)據(jù)寫入時(shí)先寫入固定的設(shè)備地址,再發(fā)送7 位寄存器地址加數(shù)據(jù)位最高位數(shù)據(jù),然后再發(fā)送剩下的低8 位數(shù)據(jù)。
配置好采樣率、左右通道輸入增益之后,開(kāi)啟ADC進(jìn)行采樣及旁路輸出,通過(guò)耳機(jī)監(jiān)聽(tīng)輸入音頻,然后設(shè)置I2S 為飛利浦標(biāo)準(zhǔn)模式,該模式的數(shù)據(jù)長(zhǎng)度為16 位。對(duì)于立體聲輸入,處理器通過(guò)WS 信號(hào)來(lái)區(qū)分左右聲道的數(shù)據(jù)。如圖5所示,對(duì)于所有I2S 數(shù)據(jù)格式和通信標(biāo)準(zhǔn)而言,始終會(huì)先發(fā)送最高有效位(MSB 優(yōu)先)。在傳輸時(shí)為避免左右聲道及高8 位和低8 位數(shù)據(jù)造成混淆,程序設(shè)置每傳輸64 B 發(fā)送4 B 數(shù)據(jù)0xFF 0xFF 0x00 0x00,接收時(shí)進(jìn)行識(shí)別判斷。
圖5 I2S Philips 協(xié)議Fig.5 I2S Philips protocol
W5500 內(nèi)置TCP/IP 協(xié)議棧,提供SPI 協(xié)議接口作為微控制器接口,W5500 有1 個(gè)通用寄存器,8 個(gè)Socket 寄存器區(qū)及對(duì)應(yīng)每個(gè)Socket 的收發(fā)緩存區(qū)[13]。程序設(shè)計(jì)時(shí),只用對(duì)其相關(guān)寄存器進(jìn)行初始化配置即可實(shí)現(xiàn)網(wǎng)絡(luò)化傳輸。詳細(xì)的初始化過(guò)程如下。
1)SPI 配置
W5500 與MCU 接口SPI 有兩種工作模式,根據(jù)SCSn 引腳是否受MCU 可控分為可變數(shù)據(jù)長(zhǎng)度模式(VDM)和固定數(shù)據(jù)長(zhǎng)度模式(FDM),當(dāng)采用FDM 模式時(shí)需將SCSn 引腳接地。
2)裝載網(wǎng)絡(luò)參數(shù)
讀取EEPROM 中網(wǎng)絡(luò)參數(shù)數(shù)值,配置相關(guān)寄存器,進(jìn)行本地網(wǎng)絡(luò)參數(shù)及目標(biāo)服務(wù)器網(wǎng)絡(luò)參數(shù)的設(shè)置。
芯片初始化配置完成之后,即可檢查網(wǎng)關(guān)服務(wù)器進(jìn)行Socket 設(shè)置,設(shè)置發(fā)送和網(wǎng)絡(luò)接收中斷,項(xiàng)目中語(yǔ)音數(shù)據(jù)的透?jìng)魇峭ㄟ^(guò)串口0 接收中斷進(jìn)行,接收到數(shù)據(jù)后通過(guò)Socket0 傳輸,串口1 和網(wǎng)絡(luò)接收中斷配置Socket1 用來(lái)對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行更新。上位機(jī)軟件連接RS232 接口或連接本地局域網(wǎng),點(diǎn)擊搜索設(shè)備,可以發(fā)現(xiàn)本地在線設(shè)備,參數(shù)更改后寫入配置,再點(diǎn)擊重啟設(shè)備即可。上位機(jī)軟件基于MFC 框架開(kāi)發(fā),其界面如圖6所示。
圖6 網(wǎng)絡(luò)參數(shù)配置軟件Fig.6 Network parameter configuration software
通過(guò)該配置軟件對(duì)語(yǔ)音數(shù)字信號(hào)數(shù)據(jù)通信傳輸?shù)陌l(fā)送端及接收端的IP 地址、端口及網(wǎng)關(guān)等信息進(jìn)行配置。模塊IP 即Socket 通信CLIENT 發(fā)送端的IP 地址,目標(biāo)IP 即Socket 通信SERVER 接收端的IP 地址。發(fā)送端和接收端設(shè)置成同一網(wǎng)段,并連接到同一網(wǎng)關(guān),形成一個(gè)簡(jiǎn)單的局域網(wǎng)。
網(wǎng)絡(luò)傳輸測(cè)試時(shí)選用GPS 數(shù)據(jù)作為數(shù)據(jù)源,通過(guò)串口將數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)傳輸模塊,通過(guò)網(wǎng)絡(luò)助手進(jìn)行測(cè)試,測(cè)試結(jié)果如圖7所示,接收數(shù)據(jù)符合完整的NMEA-0183 協(xié)議,無(wú)丟包現(xiàn)象。
在網(wǎng)絡(luò)傳輸測(cè)試無(wú)丟包情況下,對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸測(cè)試。輸入一段語(yǔ)音,數(shù)字化之后對(duì)網(wǎng)絡(luò)端采樣數(shù)據(jù)進(jìn)行擬合,數(shù)據(jù)結(jié)果如圖8所示,通過(guò)對(duì)比分析,采樣保留了語(yǔ)音特征,擬合后的波形與原始語(yǔ)音近乎重合。
圖7 網(wǎng)絡(luò)傳輸測(cè)試Fig.7 Network transmission test
圖8 語(yǔ)音數(shù)字測(cè)試Fig.8 Audio waveform after speech digitization
基于STM32F405 芯片設(shè)計(jì)的語(yǔ)音數(shù)字化及網(wǎng)絡(luò)傳輸系統(tǒng),具備的優(yōu)勢(shì)有:①硬件成本較低、處理速度快、網(wǎng)絡(luò)傳輸速度高,適合多終端大規(guī)模語(yǔ)音數(shù)字化傳輸?shù)慕K端部署;②數(shù)字化過(guò)程采樣精度高、信噪比高,網(wǎng)絡(luò)傳輸配置簡(jiǎn)便、丟包率低;③采樣前的語(yǔ)音信號(hào)與數(shù)字化后恢復(fù)的語(yǔ)音信號(hào)擬合度高,保證了語(yǔ)音數(shù)字化的質(zhì)量,滿足了語(yǔ)音識(shí)別等現(xiàn)代化智能語(yǔ)音分析處理系統(tǒng)對(duì)高質(zhì)量語(yǔ)音數(shù)字化輸入信號(hào)的基本要求。該系統(tǒng)的設(shè)計(jì)仍存在不足之處,對(duì)輸入音頻的采樣不能進(jìn)行自動(dòng)增益調(diào)節(jié),輸入音頻的幅值有局限性,后續(xù)設(shè)計(jì)中會(huì)考慮在輸入前端增加一個(gè)自動(dòng)增益調(diào)節(jié)電路。