《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于UDA1341和FM1182的嵌入式語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計(jì)
基于UDA1341和FM1182的嵌入式語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2012年第2期
孫 銳, 徐 駿, 李 景, 張紅星, 凌 強(qiáng), 王 嵩
(中國(guó)科學(xué)技術(shù)大學(xué) 信息學(xué)院, 安徽 合肥 230027)
摘要: 針對(duì)當(dāng)前語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)中存在的環(huán)境噪聲、回波、設(shè)備工作不穩(wěn)定等問(wèn)題,提出了一種新型的嵌入式語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)以ARM9嵌入式處理器S3C2410為核心,ARM Linux為實(shí)時(shí)操作系統(tǒng),CS8900為網(wǎng)絡(luò)傳輸芯片,UDA1341為音頻編解碼芯片,使用了一種新型的芯片F(xiàn)M1182進(jìn)行語(yǔ)音處理,能夠很好地實(shí)現(xiàn)噪聲抑制和回波抵消。給出了相關(guān)硬件的電路設(shè)計(jì)方案,同時(shí)介紹了軟件實(shí)現(xiàn)流程,并詳細(xì)介紹了語(yǔ)音緩沖區(qū)的算法。
Abstract:
Key words :

摘  要: 針對(duì)當(dāng)前語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)中存在的環(huán)境噪聲、回波、設(shè)備工作不穩(wěn)定等問(wèn)題,提出了一種新型的嵌入式語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)以ARM9嵌入式處理器S3C2410為核心,ARM Linux為實(shí)時(shí)操作系統(tǒng),CS8900為網(wǎng)絡(luò)傳輸芯片,UDA1341為音頻編解碼芯片,使用了一種新型的芯片FM1182進(jìn)行語(yǔ)音處理,能夠很好地實(shí)現(xiàn)噪聲抑制和回波抵消。給出了相關(guān)硬件的電路設(shè)計(jì)方案,同時(shí)介紹了軟件實(shí)現(xiàn)流程,并詳細(xì)介紹了語(yǔ)音緩沖區(qū)的算法。
關(guān)鍵詞: 嵌入式系統(tǒng); UDA1341; FM1182; 語(yǔ)音傳輸; 多線程

    近年來(lái),嵌入式音頻系統(tǒng)廣泛應(yīng)用于手機(jī)、PDA、MP3、對(duì)講系統(tǒng)等消費(fèi)電子產(chǎn)品。如今對(duì)嵌入式音頻系統(tǒng)的要求不僅僅只是完成通話功能,對(duì)語(yǔ)音傳輸?shù)那逦?、?shí)時(shí)性、抗干擾性以及系統(tǒng)的穩(wěn)定性、安全性也提出了嚴(yán)格的要求[1]。
    本設(shè)計(jì)應(yīng)用Samsung公司的S3C2410微處理器,Philips公司的UDA1341音頻編解碼芯片以及Fortemedia公司的FM1182語(yǔ)音處理器,結(jié)合SDRAM、Flash存儲(chǔ)電路、CS8900網(wǎng)絡(luò)傳輸芯片等其他外圍電路構(gòu)成了一個(gè)嵌入式網(wǎng)絡(luò)語(yǔ)音傳輸系統(tǒng)。該系統(tǒng)語(yǔ)音數(shù)據(jù)的采集、編解碼、網(wǎng)絡(luò)數(shù)據(jù)包傳輸、播放等過(guò)程均為L(zhǎng)inux下的多線程操作,實(shí)現(xiàn)了網(wǎng)絡(luò)實(shí)時(shí)傳輸功能。該系統(tǒng)還添加了一個(gè)加速度傳感器的報(bào)警電路,防止系統(tǒng)設(shè)備被移動(dòng)。該系統(tǒng)設(shè)計(jì)特別適用于公共場(chǎng)所的語(yǔ)音求助,如銀行的ATM柜員機(jī)、火車站等。
1 系統(tǒng)總體設(shè)計(jì)和工作流程
    本語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)包括ARM9處理器S3C2410控制模塊,網(wǎng)絡(luò)傳輸模塊(包括網(wǎng)絡(luò)傳輸芯片CS8900、網(wǎng)卡變壓器和網(wǎng)絡(luò)接口等),音頻編解碼模塊UDA1341,語(yǔ)音處理模塊FM1182,存儲(chǔ)器設(shè)備和其他外圍設(shè)備(包括數(shù)據(jù)緩沖電路、報(bào)警電路、RS232串口電路、JTAG接口等),其結(jié)構(gòu)框圖如圖1所示。

    ARM9處理器為整個(gè)系統(tǒng)的核心,控制著其他模塊的工作運(yùn)行。系統(tǒng)通過(guò)網(wǎng)口與因特網(wǎng)連接,連入遠(yuǎn)端中心,通過(guò)網(wǎng)絡(luò)進(jìn)行語(yǔ)音數(shù)據(jù)包的傳送和接收。語(yǔ)音處理模塊FM1182負(fù)責(zé)麥克風(fēng)錄入聲音和音箱設(shè)備播放語(yǔ)音,并且通過(guò)線輸入線輸出與語(yǔ)音編解碼芯片UDA1341相連,進(jìn)行語(yǔ)音數(shù)據(jù)模擬傳輸。語(yǔ)音編解碼芯片通過(guò)IIS總線與ARM9處理相連,語(yǔ)音格式采用線性PCM編碼。
    整個(gè)系統(tǒng)的運(yùn)行流程如下:FM1182的麥克風(fēng)錄音后,語(yǔ)音數(shù)據(jù)通過(guò)線輸出送入U(xiǎn)DA1341,線性PCM編碼后通過(guò)IIS總線送入ARM9處理器,然后生成網(wǎng)絡(luò)數(shù)據(jù)包,經(jīng)過(guò)因特網(wǎng)向遠(yuǎn)端傳送;從因特網(wǎng)接收到數(shù)據(jù)包后,經(jīng)過(guò)IIS總線送入U(xiǎn)DA1341進(jìn)行解碼,然后通過(guò)線輸入將語(yǔ)音數(shù)據(jù)送入FM1182,最后通過(guò)音箱進(jìn)行放音。
2 系統(tǒng)硬件設(shè)計(jì)
    系統(tǒng)硬件主要分為控制模塊、音頻編解碼模塊、存儲(chǔ)模塊、網(wǎng)絡(luò)傳輸模塊和語(yǔ)音處理模塊5個(gè)模塊。
2.1 控制模塊
     采用Samsung公司的S3C2410微處理器。S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18 μm制造工藝的32 bit微控制器。該處理器擁有:獨(dú)立的16 KB指令Cache和16 KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer,I/O口,RTC,8路10 bit ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203 MHz[2]。此外,為了調(diào)試系統(tǒng),還增加RS232串口電路和JTAG調(diào)試接口。
2.2 音頻編解碼模塊
     采用Philips公司的UDA1341音頻編解碼芯片。UDA1341提供2組音頻信號(hào)輸入線、1組音頻信號(hào)輸出線、1組IIS總線接口信號(hào)線和1組L3總線。UDA1341通過(guò)IIS-BUS接口與S3C2410傳輸音頻數(shù)據(jù),控制數(shù)據(jù)通過(guò)L3接口傳輸。L3總線接口包括微處理器串行數(shù)據(jù)線L3DATA、微處理器接口模式選擇線L3MODE和微處理器接口串行時(shí)鐘線L3CLOCK。當(dāng)UDA1341工作在微處理器輸入模式時(shí),微處理器通過(guò)L3總線對(duì)UDA1341中的音頻處理參數(shù)和系統(tǒng)控制參數(shù)進(jìn)行配置。S3C2410中沒(méi)有L3總線專用接口,電路中使用I/O口連接L3總線。IIS總線接口信號(hào)線包括位時(shí)鐘輸入BCK、字選擇輸入WS、數(shù)據(jù)輸入DATAI、數(shù)據(jù)輸出DATA0和音頻系統(tǒng)時(shí)鐘SYSCLK信號(hào)線。IIS總線接口對(duì)FIFO存取提供DMA傳輸模式代替中斷模式,它可以同時(shí)發(fā)送數(shù)據(jù)和接收數(shù)據(jù),也可以只發(fā)或只收[3-4]。
2.3 存儲(chǔ)模塊
     存儲(chǔ)模塊分為Nand Flash和SDRAM兩部分,包括一片64 M×8 bit的Flash(K9F1208)和兩片4 M×16 bit×4 Banks的SDRAM(K4S561632C)。S3C2410芯片本身提供了SDRAM接口,只須對(duì)存儲(chǔ)器控制器相關(guān)的寄存器進(jìn)行適當(dāng)?shù)呐渲?。系統(tǒng)上電或復(fù)位后從Flash中運(yùn)行Boot loader, 由Boot loader初始化硬件并將μCLinux 拷貝到SDRAM中運(yùn)行。
2.4 網(wǎng)絡(luò)傳輸模塊
    網(wǎng)絡(luò)傳輸模塊包括以太網(wǎng)接口芯片CS8900A、網(wǎng)絡(luò)指示燈、網(wǎng)絡(luò)變壓器和RJ45接口等,用于實(shí)現(xiàn)本系統(tǒng)設(shè)計(jì)與局域網(wǎng)之間的數(shù)據(jù)交換。硬件電路使用的芯片除了處理器S3C2410和以太網(wǎng)芯片CS8900A,還有網(wǎng)卡變壓器。CS8900A通過(guò)數(shù)據(jù)總線和地址總線S3C2410處理器相連接。為了保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性,在S3C2410和CS8900A之間增加了數(shù)據(jù)緩沖芯片SN74LVTH162245。
2.5 語(yǔ)音處理模塊
    FM1182語(yǔ)音處理器是富迪科技公司最新推出的低功耗,高性能的芯片。FM1182提升AEC性能-60 dB (聲學(xué)回聲消除), 增強(qiáng)噪聲抑制能力。通過(guò)內(nèi)建支持SAM(迷你陣列麥克風(fēng))技術(shù), 采用兩個(gè)幾乎靠在一起的麥克風(fēng)可以達(dá)到拾音束形成的效果[5]。
    本設(shè)計(jì)中,F(xiàn)M1182通過(guò)其UART口連接到S3C2410,微處理器通過(guò)串口對(duì)FM1182進(jìn)行功能配置。FM1182通過(guò)線路輸出LINEOUT和線路輸入LINEIN分別與UDA1341的VIN1和VOUT相連,由于傳輸?shù)臑槟M語(yǔ)音信號(hào),因而電路設(shè)計(jì)中LINEOUT和LINEIN與UDA1341連接的線應(yīng)盡量短,以免受到電磁干擾。FM1182的麥克風(fēng)陣列電路使用一個(gè)全向麥克風(fēng),一個(gè)定向麥克風(fēng),形成麥克風(fēng)拾音束。FM1182的SPEAK接口通過(guò)功放連接一個(gè)音箱進(jìn)行語(yǔ)音播放。FM1182、UDA1341和S3C2410的連接圖如圖2所示。

3 系統(tǒng)軟件設(shè)計(jì)
    本系統(tǒng)采用的是開放源代碼的Linux操作系統(tǒng),允許任何人獲取并修改Linux的源碼。在配置Linux的應(yīng)用程序時(shí),可以選擇加載然后根據(jù)用戶的需要設(shè)計(jì)這些軟件的配置文件從而實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能。嵌入式Linux操作系統(tǒng)主要由三個(gè)基本部分組成:引導(dǎo)程序、Linux內(nèi)核(由內(nèi)存管理、進(jìn)程管理和中斷處理等構(gòu)成)和文件系統(tǒng)。系統(tǒng)軟件設(shè)計(jì)部分主要包括操作系統(tǒng)的裁剪和編譯、驅(qū)動(dòng)程序的編寫和主程序的設(shè)計(jì)。
3.1 軟件體系結(jié)構(gòu)
    系統(tǒng)的軟件設(shè)計(jì)架構(gòu)從下而上分為硬件驅(qū)動(dòng)層、操作系統(tǒng)層、網(wǎng)絡(luò)協(xié)議層和應(yīng)用程序?qū)?。硬件?qū)動(dòng)層主要包括CS8900和UDA1341的驅(qū)動(dòng)程序設(shè)計(jì);操作系統(tǒng)層移植了ARM Linux的操作系統(tǒng)內(nèi)核;網(wǎng)絡(luò)協(xié)議層移植了TCP/IP的網(wǎng)絡(luò)通信協(xié)議;應(yīng)用程序?qū)釉谇度胧絃inux操作系統(tǒng)上運(yùn)行應(yīng)用程序。
    Linux下網(wǎng)絡(luò)數(shù)據(jù)傳輸主要利用套接字socket接口進(jìn)行。套接字socket是一種常用的進(jìn)程間通信機(jī)制,通過(guò)它不僅能實(shí)現(xiàn)本地機(jī)器上的進(jìn)程間通信,而且通過(guò)網(wǎng)絡(luò)能夠在不同的機(jī)器上的進(jìn)程間進(jìn)行通信。常用的套接字socket類型主要有兩種:對(duì)應(yīng)TCP服務(wù)的流式套接字socket和對(duì)應(yīng)UDP服務(wù)的數(shù)據(jù)報(bào)式套接字socket[6]。傳統(tǒng)的語(yǔ)音傳輸一般采用UDP通信協(xié)議,即不保證網(wǎng)絡(luò)數(shù)據(jù)包是否在網(wǎng)絡(luò)中丟失。針對(duì)此語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)的應(yīng)用背景,即主要應(yīng)用于銀行的ATM柜員機(jī)的對(duì)講系統(tǒng),要保證語(yǔ)音信號(hào)在傳輸過(guò)程中不丟失,所以對(duì)經(jīng)過(guò)編碼后的語(yǔ)音信號(hào)采用TCP/IP協(xié)議進(jìn)行傳輸。本系統(tǒng)的基于TCP協(xié)議的通信流程圖如圖3所示。

 

 


3.2 系統(tǒng)主程序的設(shè)計(jì)
    系統(tǒng)的主程序分別運(yùn)行在PC機(jī)和ARM嵌入式系統(tǒng)上,主程序建立通信過(guò)程如下:
    PC端首先要向ARM端發(fā)起TCP連接,PC端接收到來(lái)自ARM的TCP連接請(qǐng)求后,驗(yàn)證ARM端發(fā)送過(guò)來(lái)的密碼。密碼驗(yàn)證通過(guò)后,建立TCP連接,然后PC機(jī)與ARM嵌入式系統(tǒng)進(jìn)行雙向語(yǔ)音傳輸。同時(shí),當(dāng)ARM有中斷請(qǐng)求信號(hào)時(shí),TCP連接中斷。PC端主程序的流程圖如圖4(a)所示。

    ARM端語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)設(shè)備上電后,首先對(duì)硬件設(shè)備進(jìn)行初始化操作,然后ARM向PC端發(fā)起TCP連接。TCP連接過(guò)程中,首先打開MAC配置文件,然后設(shè)置ARM的IP、子網(wǎng)掩碼、服務(wù)器的IP、監(jiān)聽(tīng)端口,以及密碼驗(yàn)證、設(shè)置ARM端的用戶名。以上配置成功后再向服務(wù)器發(fā)出連接請(qǐng)求。當(dāng)ARM端與PC端建立了網(wǎng)絡(luò)連接之后,PC端開始和ARM端進(jìn)行網(wǎng)絡(luò)語(yǔ)音傳輸 。ARM端主程序的流程圖如圖4(b)所示。
3.3 語(yǔ)音緩沖區(qū)的算法設(shè)計(jì)
    由于在網(wǎng)絡(luò)協(xié)議層中采用TCP協(xié)議進(jìn)行語(yǔ)音網(wǎng)絡(luò)數(shù)據(jù)包的傳送,網(wǎng)絡(luò)環(huán)境容易產(chǎn)生變化,因而,相比較UDP協(xié)議,使用TCP協(xié)議在網(wǎng)絡(luò)傳輸中會(huì)產(chǎn)生一些時(shí)延。由于網(wǎng)絡(luò)時(shí)延不可避免,如果要取得良好的通話效果,必須保證語(yǔ)音在播放時(shí)不會(huì)產(chǎn)生斷斷續(xù)續(xù)的情形?;谝陨锨闆r,可以在語(yǔ)音信號(hào)播放前,設(shè)置一個(gè)緩沖區(qū)來(lái)解決這個(gè)問(wèn)題。但在引入緩沖區(qū)的同時(shí),也導(dǎo)致了語(yǔ)音傳輸時(shí)間的滯后。緩沖區(qū)太小,無(wú)法克服網(wǎng)絡(luò)時(shí)延的影響。緩沖區(qū)太大,會(huì)嚴(yán)重影響語(yǔ)音傳輸?shù)膶?shí)時(shí)性。
    NGB(下一代廣播電視網(wǎng))的語(yǔ)音通信最大時(shí)間延遲不應(yīng)超過(guò)150 ms,超過(guò)這個(gè)極限后,人耳聽(tīng)到的聲音將會(huì)覺(jué)得無(wú)法接受[7]。因而緩沖區(qū)中數(shù)據(jù)包的總傳輸時(shí)間不應(yīng)超過(guò)150 ms。ARM端與PC端(監(jiān)控中心)通信時(shí),采取TCP協(xié)議。所有數(shù)據(jù)以包的形式傳輸。每個(gè)包的第一個(gè)字節(jié)是命令字,后面緊跟著若干字節(jié)(通過(guò)命令字能夠確定出后面有多少字節(jié)),最短的包只包含命令字,即只有一個(gè)字節(jié);最長(zhǎng)的語(yǔ)音數(shù)據(jù)包,有769 B。由于采取TCP協(xié)議,包中的每一個(gè)字節(jié)都能夠確保按序接收。
    在實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)傳輸時(shí),使用最長(zhǎng)的語(yǔ)音數(shù)據(jù)包,即768 B,加上第一個(gè)字節(jié)的命令字,共769 B。語(yǔ)音編碼方式采取線性PCM編碼,每一個(gè)PCM碼共32 B。由于聲卡的讀取和播放的采樣率均為8 kHz,由此可得每收發(fā)一個(gè)數(shù)據(jù)包需要時(shí)間為:
    (768×8/32)/8 000=24 ms
     可以在緩沖區(qū)中存放5個(gè)TCP語(yǔ)音數(shù)據(jù)包,這樣總的時(shí)間延時(shí)為:
    24×5=120 ms<150 ms
    故滿足標(biāo)準(zhǔn)。
    語(yǔ)音緩沖區(qū)的填充數(shù)據(jù)和播放數(shù)據(jù)的流程圖如圖5所示,其算法的設(shè)計(jì)如下:


   (1)在程序啟動(dòng)后,先將緩沖區(qū)中裝滿數(shù)據(jù)后,設(shè)置好播放標(biāo)志位、填充指針和播放指針,然后從數(shù)據(jù)包0開始依次循環(huán)通過(guò)聲卡播放接收到的聲音數(shù)據(jù),同時(shí),填充指針依次循環(huán)后移,向語(yǔ)音緩沖區(qū)填充語(yǔ)音數(shù)據(jù)包。
   (2)聲卡開始播放語(yǔ)音后,只要緩沖區(qū)中數(shù)據(jù)不為空,就正常播放數(shù)據(jù)。
   (3)如果在播放過(guò)程中緩沖區(qū)中沒(méi)有數(shù)據(jù),則將播放標(biāo)志位置零,并停止播放,然后重新開始。
    本文提出了一種基于UDA1341和FM1182的嵌入式語(yǔ)音網(wǎng)絡(luò)傳輸系統(tǒng)的設(shè)計(jì)方法,該方案以ARM9的S3C2410為核心處理器, 利用UDA1341和FM1182構(gòu)成了語(yǔ)音系統(tǒng),通過(guò)CS8900網(wǎng)絡(luò)芯片進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸,基于嵌入式Linux操作系統(tǒng),實(shí)現(xiàn)了遠(yuǎn)程語(yǔ)音網(wǎng)絡(luò)數(shù)據(jù)傳輸。實(shí)驗(yàn)表明,該系統(tǒng)可以很好地實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)傳輸功能,并可以對(duì)環(huán)境中的噪聲進(jìn)行有效地抑制,也可以很好地實(shí)現(xiàn)回波抵消,該設(shè)計(jì)工作穩(wěn)定,非常適合ATM柜員機(jī)等公共場(chǎng)所旁,用于信息求助對(duì)講系統(tǒng)。
參考文獻(xiàn)
[1] 智強(qiáng),李鵬,董明,等. 基于硬件加速模塊的嵌入式語(yǔ)音識(shí)別系統(tǒng)解決方案[J].電子技術(shù)應(yīng)用,2008,34(8):
[2] Samsung Electronics. S3C2410A-200 MHz & 266 MHz 32-Bit RISC Microprocessor. USER’S MANUAL,Revision 1.0,2004.
[3] 李巖,王建衛(wèi),紀(jì)穎,等.基于ARM嵌入式μCLinux系統(tǒng)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2009.
[4] Philips Semiconductor. UDA1341TS Economy audio CODEC for Minidisc (MD) home stereo and portable applications, 1998.12.
[5] MEDIA F. FM1182E Low-Power Voice Processor. Preliminary Data Sheet V2.0, 2008.9.
[6] 楊水清,張劍,施云飛,等.ARM嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.11.
[7] 余少波. NGB的語(yǔ)音通信的最大延遲應(yīng)該小于150 ms[EB/OL].2010-8-9. http://tech.c114.net/166/a531316.html.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。