張士宏 王翀 劉丹 馮沖

摘要:本文在對Android原生音頻流處理方案進行深入研究的基礎上,提出了一種新的音頻流傳輸策略,很好地滿足車載娛樂系統的各種應用場景,非常適合車載Android娛樂系統的定制化開發方案的實現。
關鍵詞:Android;音頻流傳輸;車載娛樂
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9416(2020)01-0062-02
1 Android操作系統及IVI系統介紹
Android是當前消費電子各領域最為活躍的嵌入式操作系統之一,它已經廣泛應用在智能手機、平板電腦、電視、智能手表等給各類電子產品中[1]。Google公司在2019年推出的最新Android版本是Android 10.0。
車載信息娛樂系統(IVI)是一類基于車身總線系統和網絡服務的獨立綜合信息處理系統。IVI系統通常要支持實時路況、三維導航、輔助駕駛、車輛信息、無線通訊、影音娛樂等一系列車載應用[2]。
2 Android操作系統原生音頻流傳輸策略分析
Android操作系統的音頻系統負責各種音頻數據流的傳輸、調度和策略控制,并負責音頻設備的管理,它是Android操作系統中最復雜的子系統之一。Android原生音頻系統的軟件架構主要包含了APP層、Framework層、Lib層、Hal層以及driver層[3]。
APP層主要包含了各種應用程序。Framework層提供音頻流的播放和采集策略以及聲音控制、通道選擇、音效設置等功能。Lib層又被稱為native framework層,提供音頻數據的輸出控制、錄音數據的采集控制、音頻事務的綜合管理、音頻設備的切換、音量調節策略及輸入、輸出流設備的管理等。Hal層主要提供了調用音頻聲卡的抽象接口以及音頻流控制方法。Driver層主要功能是直接操作聲卡物理設備來實現指定動作。
3 Android操作系統原生音頻流傳輸策略的改進
由于原生Android音頻系統不滿足IVI系統對于音頻系統的需求,故需要對原生Android音頻系統進行定制化開發。原生Android音頻模塊與IVI系統主要區別如下:(1)原生Android只支持單聲道和雙聲道,而IVI系統有時需要多聲道;(2)原生Android音源類型比較少且通過AudioFocus機制來控制各音源的焦點搶占,而IVI系統有導航音頻流、藍牙電話音頻流、FM音頻流、在線音樂音頻流等等,并且除了AudioFocus機制之外還存在各音源混音和衰減等需求;(3)IVI系統要支持Carlife等車機端與手機端的互動功能,此外還有一些場景需要實現智能語音控制,這對于音頻數據采集以及噪聲控制又提出更高的要求。
根據IVI系統的這些音頻流處理需求,我們提出了一種基于Android原生音頻子模塊的音頻流傳輸改進策略,此策略能夠很好的滿足IVI系統對音頻的需求。改進后音頻流傳輸策略如圖1所示,圖中標示了各模塊間交互雙方和音頻流的傳遞方向。新的音頻流傳輸策略有以下幾個方面的改進:
(1)在Driver層,針對不同的數據輸入源獨立出三個輸入子聲卡,分別是Mic、Tuner和BT聲卡。Mic聲卡負責從麥克風采集環境音頻數據,用于電話和Carplay/Carlife等語音識別場景。Tuner聲卡從FM芯片中采集FM音頻流用于廣播的播放。BT聲卡負責從藍牙芯片采集HFP音頻數據用于藍牙電話遠端音頻的播放,同時也負責將Mic聲卡采集到的音頻數據發送到遠端HFP。對于音頻輸出流,在一個獨立實時多媒體聲卡設備的基礎上針對輸出流類型獨立出多個輸出子聲卡,各子聲卡分別將不同的音頻流數據傳輸到音頻處理芯片上處理并通過speaker播放。
(2)在Hal層中,在StreamIn類中通過調用tinyalsa開源庫實現對各音頻輸入流聲卡的數據采集功能。同時根據音源類型的不同實現數據采集時的多聲道適配和采樣率適配,以滿足IVI系統的要求。在StreamOut類中通過調用tinyalsa開源庫實現將不同的音頻輸出流數據寫入到對應的輸出子聲卡。還需要改造HIDL模塊的方法,以適配StreamIn類方法和StreamOut類方法的改變。同時,增加一個EC模塊,利用一定的回聲消除算法,消除音頻數據中的回聲和雜音,提升音頻質量。
(3)在framework層,修改AudioFlinger模塊,加入對三個音頻輸入流以及多個音頻輸出流的支持,通過調用libfmq開源庫實現framework層與Hal層之間的數據傳輸與控制命令發送。同時在AudioService模塊中調用AudioTrack與AudioRecord提供的方法,實現音頻流的邏輯控制接口。
4 結語
本文提出了一種基于Android原生音頻架構的改進型音頻流傳輸策略,可適應車載娛樂系統的不同場景,支持靈活配置聲卡數量以及靈活安排混音和音量調節策略。隨著汽車電子化的程度越來越高,汽車系統逐步朝著智能化的方向發展,對車載娛樂系統的需求也會越來越豐富。把Android技術應用到IVI系統是一個很好的選擇,既能充分發揮Android在影音娛樂方面的優勢,又節省大量開發成本。
參考文獻
[1] 馮少奇,鞏思亮,陳春明.面向Android的音視頻傳輸策略的研究[J].電視技術,2017,41(6):9-14.
[2] 石攀,董天哥,劉暢.基于用戶體驗的車載信息娛樂系統研究[J].機械工程與自動化,2019(3):224-226.
[3] 王峻.基于Android系統的音頻架構[J].電聲技術,2012,36(11):76-79.