Smule 藉助 Oboe 音訊庫提升使用者體驗,助力音樂創作 | Android 開發者故事

語言: CN / TW / HK

作者 / Smule 工程團隊: David Gayle、Chris Manchester、Mark Gills、Trayko Traykov、Randal Leistikow、Mariya Ivanova。

Smule 採用 Oboe 音訊庫提升錄製率

作為目前下載量排名前列的唱歌類應用, Smule Inc. 一直致力於投入大量資源來提升其應用的 Android 體驗,以提高整體音訊質量。具體而言就是減少延遲時間,讓歌手在表演時能夠通過耳機聽到自己的聲音。擅長音訊和影片技術的團隊在 2021 年很大一部分時間都忙於必需的提升工作,將逾千萬 Android 使用者使用的 Smule 應用從使用 OpenSL 音訊 API 轉換為使用 Oboe 音訊庫,從而使錄製完成率提高了約 10% 以上。

  • Smule

    https://play.google.com/store/apps/details?id=com.smule.singandroid

簡介

Smule Inc. 是卡拉 OK 應用的潮流企業,旗下的應用每天幫助數百萬使用者演唱最愛的歌曲,並分享表演。Smule 應用超越了傳統的卡拉 OK,專注於共同創作,為使用者創造了獨一無二的機會,可以與朋友、平臺上的其他歌手及其最喜歡的音樂人分享音樂和合作。而音訊質量至關重要,Smule 團隊在 2020 年看到了在 Android 平臺提升體驗的潛力。

Smule 使用的舊版 OpenSL 雖然支援全球市場的各種裝置,但不太適合利用新裝置的高速硬體。Smule 開發團隊認為,升級音訊系統是必要且合乎邏輯的改進。

Oboe 釋出策略

Smule 曾面對兩種可行的改進途徑,第一種是針對 AAudio 進行改進,這是 Android O 中引入的高效能 Android C 音訊 API,專為需要低延遲的應用而設計。第二種是採用在內部同時封裝了 AAudio 和 OpenSL 的 Oboe。經過細緻評估,Smule 開發團隊選擇了 Oboe ,此方案具有易用的程式碼庫、廣泛的裝置相容性和強大的社群支援,可最大限度減少延遲時間,並充分利用可用的原生音訊。

  • AAudio

    https://developer.android.google.cn/ndk/guides/audio/aaudio/aaudio
  • Oboe

    https://developer.android.google.cn/games/sdk/oboe

改用 Oboe 意味著在應用架構和技術上將發生重大的變化。因此,Smule 在更新過程中採取了謹慎的做法,有計劃地逐步釋出,首先面向少數的特定裝置型號以驗證質量;然後逐漸地面向更多裝置 (將少數使用 Oboe 時出現問題的裝置恢復到 OpenSL)。這種循序漸進、有條不紊的方法可以最大限度地降低風險,並讓開發團隊能夠在出現裝置特定問題時及時處理。

改善音訊質量體驗

Smule 改用 Oboe 來幫助改善應用體驗。他們希望大幅降低音訊播放崩潰率,消除錄製時的迴響和噼啪聲等問題,以及減少音訊延遲。在之前的推文《 關於 Android 音訊延遲的最新動態 》中曾介紹過,二十種最熱門的裝置使用 Oboe 後,平均延遲時間從 2017 年的 109 毫秒減少到現在的 39 毫秒。109 毫秒的監聽延遲會聽到干擾現場演唱的明顯迴響,而延遲 39 毫秒則低於實時應用可接受的閾值。當下高階裝置的延遲時間都在 22 毫秒以內,這種一致性是一大優勢。

Smule 使用 Oboe 後,或許是因為延遲時間更短,歌手藉助 Smule 首屈一指的音訊效果演唱時能通過耳機聽到自己的聲音,同時又沒有迴響,錄製完成率因此得以提升。

利用 Oboe 專用的高效協作式 GitHub 門戶,Google 團隊發揮了重要作用,不但幫助 Smule 實現 Oboe 整合,還為其提供重要的資料洞察和支援。兩家團隊通力合作,完成了迄今最大的 Oboe 部署,數百萬活躍使用者受益匪淺。Smule 團隊解決了某些 Oboe 程式碼問題,而 Google 團隊與部分移動裝置製造商一起進一步增強了 Oboe 的相容性。

  • Oboe

    https://github.com/google/oboe/issues

對於歌手社群而言,音訊質量至關重要,我們一起致力於幫助 Smule 提供最佳體驗,並助力音樂創作,我們為此深感欣慰。

Smule 首席技術官 Eric Dumas

既然是大規模部署,自然會面臨裝置特定問題。例如,作業系統內建功能會導致原始音訊流中出現迴響聲效,造成 Smule 不能正常應用自己的專利 DSP 演算法和音訊濾波器。Google 團隊立即施以援手,迅速為開發庫提供更新和補丁。Oboe 問題反饋的流程簡單,描述明確,便於 Google 團隊及時解決。

Smule 還克服了其他裝置特定障礙,其中包括特定晶片組錯誤。比如,Oboe 需要單聲道麥克風輸入時,一些裝置提供的是引入一個模擬單聲道麥克風輸入的立體聲輸入。Smule 在 Oboe 的 GitHub 中建立工單,以提供示例並使用 Oboe 測試應用重現此問題。

  • Oboe 的 GitHub

    https://github.com/google/oboe

Google 開發的 Oboe 測試器應用 工具可幫助使用者在實現過程中解決和標識問題。事實證明,此工具在測試 Oboe、AAudio 和 OpenSL ES 的許多功能、測試 Android 裝置,以及衡量延遲時間和故障等方面特別有用。此應用可提供大量有助於模擬絕大部分音訊設定的功能。Oboe 測試器還可用於自動化測試,方法是使用 Android Intent 從 Shell 指令碼啟動。由於整合涉及大量裝置,Smule 非常依賴自動化測試。

  • Oboe 測試器應用

    https://github.com/google/oboe/tree/master/apps/OboeTester/docs

在 Smule 確信已解決裝置特定問題,並且 Oboe 音訊相當穩定後,Smule 改用大範圍的對比測試釋出方式。短短几周內,Smule 將使用 Oboe 的人群從目標裝置的 10% 增加到 100%,這得益於 Oboe 在釋出期間不斷收到積極反饋和綠色 KPI 指標。

結果不言而喻,使用 Oboe 的 Smule 使用者會唱更多歌,就這麼簡單。不重複的卡拉 OK 錄製量以及合唱 (或二重奏) 增加了高達 8.07%,不重複的上傳量增加了 3.84%,而演唱完成率則增加了 4.10% 以上。Smule 觀察到,在 2021 年第三季度和第四季度,錄製完成率增加了 10% 以上。

使用 Google 提供的 Firebase Crashlytics 工具,Smule 發現自 Oboe 全面應用以來,與音訊相關的崩潰減少,應用更穩定,即便使用低端裝置也如此。Smule 敬業的客服團隊發現,與音訊相關的投訴減少了 33%,其中包括 (非預期的) 機器人音效和迴響等問題的投訴。

  • Firebase Crashlytics

    https://firebase.google.cn/docs/crashlytics

改用 Oboe 的決策已頗有成效。此應用不同以往,更穩定更出類拔萃,Smule 完全能夠採用更新技術,進一步提升音訊和硬體質量。最重要的是,Smule 使用者可以更得心應手地製作音樂,這才是我們的使命。

歡迎您關注 "Android 開發者" 微信公眾號瞭解更多 開發者的成功故事

您可以通過下方二維碼或在文章底部私信,向我們提交反饋,分享您喜歡的內容、發現的問題。您的反饋對我們非常重要,感謝您的支援!

推薦閱讀

如頁面未載入,請重新整理重試

點選屏末   閱讀原文  |  即刻 瞭解更多應用質量優化的相關內容