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