作者 / Don Turner,Android 開發(fā)者關系工程師
本文將介紹 Android 生態(tài)系統(tǒng)最近針對音頻開發(fā)者的動向以及熱門 Android 設備的音頻延遲情況,并討論 Android 在實時音頻應用方面的適用性。
具體變化
在過去四年中,我們采取了一系列措施來改善音頻延遲問題。
降低延遲
這些措施的實施以及設備制造商對音頻延遲問題的重新關注,使設備生態(tài)系統(tǒng)得到顯著改善。當前最熱門 Android 手機的平均延遲已降至 40 毫秒以下,這已完全在實時應用所需的范圍內。
設備熱門程度來源: appbrain.com
appbrain.com
https://www.appbrain.com/stats/top-android-phones
更高的一致性
從下方的數(shù)據可以看到,2017 年的最高值和最低值之間存在著顯著差異 (222 毫秒)。
設備熱門程度來源: appbrain.com
將其與 2021 年的數(shù)據進行比較。區(qū)間收窄至八分之一,僅為 28 毫秒,從而提供了更加一致的音頻體驗??紤]到熱門名單中的 OEM 廠商已從 2017 年的一家變?yōu)槎嗉?,使得這一數(shù)字更加令人印象深刻。需要說明的是,名單中的許多設備都不是高端旗艦機型。
設備熱門程度來源: appbrain.com
點按與發(fā)聲間 (Tap-to-tone) 延遲
到目前為止,我們探討的一直是往返音頻延遲。往返延遲涉及到音頻鏈中的三個組成部分: 音頻輸入、音頻處理和音頻輸出。
許多實時音頻應用都會通過屏幕點按事件生成音頻,而不依賴于輸入音頻。此類應用對于點按與發(fā)聲間延遲(即從點按屏幕到聽到聲音之間的用時)非常敏感。點按觸摸屏引入的延遲在 10-35 毫秒之間,在新一代 Android 設備上通常為 20 毫秒。
點按觸摸屏引入的延遲在 10-35 毫秒之間
https://github.com/google/walt/blob/master/docs/TapLatency.md
要在確定往返延遲的情況下估算點按與發(fā)聲間延遲,您可以減去音頻輸入延遲 (通常為 5 毫秒),并加上觸摸延遲 (通常為 20 毫秒)。也就是說,在往返延遲上加 15 毫秒。鑒于上述數(shù)字,這意味著熱門 Android 手機的平均點按與發(fā)聲間延遲遠低于大多數(shù)實時音頻應用所需的延遲水平。
展望未來
盡管整個 Android 生態(tài)系統(tǒng)中的音頻延遲都已顯著降低,但我們的工作還遠遠沒有完成。專業(yè)的 Android 音頻應用需要 20 毫秒的往返延遲,而降至 10 毫秒仍是我們的長期目標。目前,一些較為冷門的設備仍然具有較高的音頻延遲。但是,如果您曾因音頻延遲問題暫緩開發(fā) Android 應用,現(xiàn)在是時候重新考慮了。
專業(yè)的 Android 音頻應用
https://source.android.com/compatibility/11/android-11-cdd#5_10_professional_audio
要開始使用,歡迎您參閱 Oboe 入門指南或觀看視頻教程。
Oboe 入門指南
https://github.com/google/oboe/blob/master/docs/GettingStarted.md
視頻教程
https://www.youtube.com/watch?v=csfHAbr5ilI&list=PLWz5rJ2EKKc_duWv9IPNvx9YBudNMmLSa
數(shù)據源和工具
OboeTester:
https://github.com/google/oboe/tree/master/apps/OboeTester/docs
WALT:
https://github.com/google/walt
appbrain.com:
http://appbrain.com
superpowered.com/latency:
http://superpowered.com/latency
gsmarena.com:
http://gsmarena.com
juce.com/maq:
http://juce.com/maq
各種內部數(shù)據源