張文興



摘要:針對車載電子系統中多路音頻輸出時混音所帶來的問題以及傳統多路音頻控制方案中存在的缺陷,設計一種基于音頻焦點的多路音頻控制方案。根據音頻流類型定義其優先級,進而定義音頻焦點控制策略。當音頻焦點變化時,根據預設的音量規則,調整各個音頻流播放音量。測試結果表明,該方案能夠有效地去除混音所帶來的聽覺混淆并克服了傳統多路音頻控制方案中的缺陷。從實現上看,其具有較強的通用性,較好的可擴展性以及可維護性。該方案已經被應用于量產并且投入市場的某車載電子產品中,從市場反饋來看,用戶體驗度以及駕駛安全性都得到了很大提升。
[關鍵詞]多路音頻控制音頻焦點音量規則車載電子系統
1引言
隨著車輛的普及,各類車載電子產品層出不窮,功能多樣。聲音作為系統與駕駛者交互的一種方式,發揮著越來越重要的作用,同時,人們對其實用性、安全性、友好性的要求越來越高。眾所周知,在一個系統中,同一時刻,可能有多個應用需要使用音頻設備輸出音頻流,原生系統的混音功能,使得人耳在同一時刻,聽到的是多路聲音的共同輸出。對于車載電子系統來說,車輛在行駛過程中,導航播報、音樂播放、語音助理、電話等應用,可能同時發聲,車內的人聽到的是各個音頻流混音后的效果,有可能造成聽覺混淆,甚至導致安全隱患。因此,需要對各個音頻流進行統一控制,使得同一時刻,人耳聽到的是清晰、明確、可靠的聲音。
為了去除混音所帶來的問題,傳統的音頻控制方案主要是針對音頻流本身的播放邏輯進行控制,例如,通話中,音樂暫停;通話結束,音樂繼續播放。這種方案處理的對象是各個音頻流的實例,存在以下缺點:
(1)需要維護各個音頻流的狀態機,控制邏輯復雜,狀態切換頻繁,并且切換過程中往往伴隨著資源的申請和釋放,對系統性能影響較大。
(2)當控制策略發生變化時,需修改源碼,可擴展性較低,不能適應不同產品之間的變化,維護成本較高。
(3)不適用對實時音頻流的處理,例如本地電臺,此音頻流是不能被暫停的,需要單獨的控制邏輯。
本文針對其缺陷,提出一種基于音頻焦點并結合預設音量規則的多路音頻控制方案,然后給出其在Android原生系統中的實施用例以及測試分析,最終得出結論。
2基于音頻焦點的多路音頻控制
基于音頻焦點的多路音頻控制的基本思想為:根據音頻焦點控制策略確定享有音頻焦點的音頻流;實時監聽系統音頻焦點的變化,根據預設的音量規則對系統各路音頻流音量進行調整。音頻焦點控制策略為:根據系統中每路音頻流類型規定其優先級,當某個音頻流需要播放時,請求音頻焦點,如果其優先級大于當前正在播放的音頻流的優先級,賦予其音頻焦點,否則便不賦予其音頻焦點;當享有音頻焦點的音頻流停止播放時,釋放其音頻焦點,并為剩余正在播放的音頻流中優先級最高的音頻流賦予音頻焦點。預設的音量規則為:規定每種音頻流的原始音量,享有音頻焦點時的音量以及其不享有音頻焦點時的音量。在控制過程中實時維護每路音頻流信息,包括:類型、優先級、原始音量、享有1不享有音頻焦點時的音量、當前是否享有音頻焦點。按照功能可以將以上所述劃分為如下模塊:
(1)控制模塊:根據音頻焦點控制策略
確定享有音頻焦點的音頻流,更新相關的音頻流信息,并通知調整模塊;
(2)調整模塊:監聽音頻焦點的變化,獲取各路音頻流信息,按照預設的音量規則,調整其播放音量;
(3)維護模塊:維護各路音頻流信息,包括類型、優先級、原始音量、享有1不享有音頻焦點時的音量、當前是否享有音頻焦點。各個模塊間的交互如圖1所示。
控制模塊流程如圖2所示,調整模塊流程如圖3所示。
3測試分析
將該方案移植進Android原生系統進行測試,音頻流類型以及為各個類型音頻流預設音量規則如表1所示。其中,規定優先級由高到低為0-9,音量值范圍為0-15。
測試效果需通過聽覺進行感知,該方案能夠有效去除多路音頻輸出時混音所帶來的聽覺混淆,其已經被應用于量產并且投放市場的某車載電子產品中,系統中跟音頻輸出相關的應用為電話、語言助理、導航、音樂、藍牙,所對應的音頻流類型規定為STREAM_VOICE_CALL、STREAM_NOTIFICATION、STREAM_SYSTEM、STREAMMUSIC、STREAMBLUETOOTHSCO,音量規則按照表1進行設定,從市場反饋來看,用戶體驗度和駕駛安全性都得到了很大提升。
4結論
根據定義的音頻焦點控制策略以及預設的音量規則,當音頻焦點變化時,調整各音頻流的播放音量。對享有音頻焦點和不享有音頻焦點的音頻流設置不同的播放音量,從而實現對多個音頻流分別采用不同的播放音量同時播放,可以很好的解決混音所帶來的問題,既能實現多路音頻的同時播放,又不會造成聽覺混淆,極大的提升了使用者的體驗度和安全性。
從實現上來看,可以將音頻焦點控制策略以及音量規則定義成可配置的文件,與傳統的多路音頻控制方案相比,優勢在于:
(1)當控制策略發生變化時,無需修改源碼,只需修改配置即可,可擴展性較強,能夠快速適應不同產品之間的變化,降低了開發和維護成本;
(2)對音頻流的控制不改變音頻流本身的播放邏輯,不存在系統資源的申請和釋放,對性能影響較小;
(3)對實時音頻流的控制和本地音頻流的控制相同,無需獨立的邏輯。
該方案的應用場景并不局限于車載電子系統,可以將其應用于任何有此類需求的智能系統中,并且適用于各種類型的音頻流,對其進行統一管理,并對播放規則進行控制,通用性較強,可擴展性較好,且維護成本較低。
參考文獻
[1]李釣,谷守康,車載信息系統市場應用現狀[J].汽車工程師,2018(05):14-17.
[2]王穎,張偉,吳姓,車載信息系統與駕駛安全研究綜述[J].科技導報,2009(13):105-110.
[3]白杰。車載娛樂信息系統的設計與實現[D].吉林:吉林大學計算機科學與技術學院,2015.
[4]竺增寶,車載多媒體音頻系統的設計與實現[D]上海:上海交通大學電子信息與電氣工程學院,2015.
[5]林學森,深入理解Android內核設計思想[M].第2版(上冊).北京:人民郵電出版社,2017:2-35,526-611.