一、什么是耳返功能
耳返功能又稱耳機返聽、耳機采集監聽,在設備上插入耳機(普通耳機或藍牙耳機),能從耳機側聽到麥克風采集的聲音。
現實中,耳返常見的使用者是歌手。在嘈雜的演唱環境里,通過耳返歌手能清楚地聽到伴奏和自己的聲音,來鑒定自己有沒有走音。
而在線上,通過耳返也同樣可以讓主播在K歌直播、K歌歌曲錄制、個人清唱,朗誦等場景下實時監聽自己的聲音,不斷調整主播的聲音狀態,給觀眾呈現最佳的視聽效果。
二、實現耳返功能有哪些技術難點
難點一:Android 系統自帶的耳返功能較為單一,不能滿足用戶多樣化的需求。
難點二:Android系統繁雜,型號多樣,大部分手機設備廠商直接使用Android系統的接口,硬件支持程度的不同,導致耳返效果不同,一些機型耳返延遲(從系統采集到人聲從耳機輸出)較高。
即構對市面上多家Android機型做了系統的測試,發現一些機型的耳返數據甚至達到300ms以上,以下是部分Android機型耳返數據:
以上兩個痛點,導致肉耳可辨別的延遲讓耳返功能大打折扣。直播時,主播聽到自己聲音變調之后不能及時調整自己的音調,影響了觀眾的視聽體驗;在個人清唱、個人歌曲本地錄制時,需要歌唱者頻繁地停下來重新錄制變調部分。另外,當歌唱者跟隨伴唱一起唱的時候,會出現讓歌唱者伴奏對不上的情況,導致錄制出來的效果極差。
對於相同的K歌應用場景而言,iOS系統的表現比Andoid系統好很多,然而對App應用開發商來說,優化耳返效果依然是有心無力。因為無論iOS系統或是Android系統,都是調用系統接口進行音頻的采集與輸出,開發者從App層面優化的空間極為有限。
三、部分手機廠商針對耳返功能的特殊優化
針對以上提到的兩大痛點,安卓手機廠商也做了努力。我們發現,華為、oppo、vivo等廠商新發布的機型,針對耳返功能從系統底層做了特殊的優化。通過底層芯片級優化,提供低時延音頻數據通路和混音耳返的音效。
以華為新機型為例,華為K歌耳返方案提供雙流的底回環通路,錄音數據到達HAL層之后,一部分數據送給上層APP,另外一部分數據送給HIFI模塊,HIFI模塊混音特效加持后直接送給用戶,而APP只要實現伴奏的播放即可。同時,在新平台對底層又進行深度優化,底層回環耳返延遲(見下圖綠色箭頭)可達到30ms以下。
這樣從系統底層的優化,從根本上解決了耳返的延遲高問題,讓App應用開發者可以無須再為耳返延遲高苦惱,只需在App層面進行復雜的算法優化,就可極大提升k歌場景的用戶體驗,讓Android設備也能成為專業的歌曲生成、剪輯工具。
同時,為了對App應用開發者更友好,廠商在該方案也提供了一個界面提示用戶進行相關的耳返和混音的設置,有了這樣的設置,一般的App應用開發者只需很小的工作量就可以實現音頻混響功能的設置。
如下圖所示,當在支持的機型上成功使用此功能時,在APP上會提供一個懸浮按鈕,點開后會有相應的設置界面。
四、App開發者依然存在的問題
由於目前各廠商的耳返優化的功能都是使用其私有接口實現,各廠商的機型都需要通過調用一系列不同的私有接口,來判斷具體機型是否支持耳返優化的功能,這給開發者帶來了一定的工作量。App應用開發者需要與不同的手機廠商溝通對接,來實現該功能的效果。
另外,由於此耳返優化的功能目前並非通用功能,需要App應用開發者獲取具體廠商系統的使用權限,即將自己應用的包名提交給具體的手機廠商,手機廠商會將App開發者的應用包名添加到其系統的白名單上,經過以上步驟,App應用才能在具體支持耳返優化功能的機型上使用此功能的能力。
五、ZEGO SDK 適配Android機型的耳返優化
針對當前普通機型耳返存在的痛點,以及廠商對最新機型進行耳返優化后App開發者依然存在的問題,ZEGO Android SDK 在支持耳返延遲優化功能的機型上,針對App應用開發者需要對不同廠商的系統進行不同私有接口調用的問題進行了適配,將開發者復雜的適配測試工作歸結為使用ZEGO Android SDK時的一個接口的調用上,大大降低了開發者需要針對不同機型的適配工作量。
另外,ZEGO Android SDK針對APP開發商在對接過程中遇到的兩大問題進行了逐一解決。
問題一:
開發者在與廠商對接過程中,需要具備一定較為專業的 Android 系統底層音頻采集的知識,這對App應用開發者來說增加了一定的學習成本。另一方面,App開發商也需要儲備在音頻領域具備一定專業水平的開發者,人才成本增加。
不僅如此,開發者在開發過程中會花費較多的時間在調試工作上,不符合如今互聯網行業需求快速迭代的場景。
ZEGO 解決方案:
ZEGO擁有一批專門從事數字音頻領域的技術專家,也有配套的專業技術支持團隊7*24小時指導,開發者不需要了解音頻相關知識,在ZEGO技術團隊的指導下,在自己的應用實現接入低延遲耳返的功能,極大降低了開發商的人才投入成本。
問題二:
由於 Android 系統機型眾多,系統版本不一,ZEGO在適配低延遲耳返的功能中,發現部分機型存在魚和熊掌不可兼得的情況,一種適配方案無法滿足所有機型可能出現的異常情況,例如耳返完全變聲的問題。該問題產生的原因是在應用層面上,對於部分本身就不支持的機型沒有具體的系統接口來或者采集的音頻聲道數據,導致在優化過程中,出現音頻數據采集異常的情況。
ZEGO 解決方案:
在此問題基礎上,與其他廠商要求開發者自己來維護無法兼容的機型黑名單不同,ZEGO從開發者接入友好、開發過程更便捷的角度出發,由 ZEGO 側來維護一份黑名單機型列表,從而避免了開發者需要更復雜的邏輯來處理無論如何都無法兼容的機型的問題。
問題分析清楚了,解決方案也有了,你不自己上手試試?
耳返適配優化示例Demo 源碼下載地址:
https://github.com/zegodev/EarLoopbackOptimization
ZEGO耳返及優化集成文檔:
https://doc-zh.zego.im/zh/2151.html