Facebook 360度音訊編碼與渲染

NO IMAGE

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

從360度視訊到Oculus,通過Facebook 360音訊編碼與渲染都可實現身臨其境的感受,並且使用的聲道更少,小於0.5毫秒的渲染延遲。Facebook技術團隊撰文對此進行了解讀,LiveVideoStack對文章進行了編譯。

文 / Hans Fugal, Varun Nair

譯 / 郭俊翔

審校 / 包研

• 全新的360度空間音訊編碼和渲染技術,使得空間化的音訊在從編輯者到使用者的整個處理過程中,都能保持高質量。這一技術有望首次實現大規模商用。

•我們支援一種被稱為“hybrid higher-order ambisonics(混合高階立體聲高保真混響)”的技術,使得空間化的聲音在整個處理過程中依舊能保持很高的質量。這是一個具有渲染與優化功能的8聲道音訊處理系統,可藉助更少的聲道實現更高的立體聲質量,最終達到節省頻寬的目的。

• 我們的音訊系統同時支援空間化音訊和頭部定向音訊。在空間化音訊中,當聽到來自某種場景的聲音時,系統會根據使用者在360度全景視訊的體驗中,頭部會轉向不同的方向作出不同反應。通過頭部定向音訊,人物對白和背景音樂等音訊在方位上會保持靜止。這是我們在業界第一次實現同時渲染混合高階立體聲和頭部定向音訊。

• 空間音訊渲染系統能夠為開發者帶來延遲小於半毫秒的實時渲染體驗。

• FB360編碼器工具可以將處理後的音訊傳輸至多個平臺。用於音訊渲染的SDK可整合在Facebook和Oculus Video之中,保證了從製作到釋出的體驗統一性。這樣可以節省工作時間,並確保開發者在製作中聽到的內容和最終釋出的內容一致。

Facebook上的360度全景視訊體驗令人驚歎,給人帶來身臨其境的非凡體驗。但如果想獲得更加完美的視聽體驗,也可能需要360度空間音訊。當使用者使用360度空間音訊時,每種聲音聽起來像是從空間中對應的方位發出,就像我們在現實生活環境中感知聲音一樣。在攝像機上方飛行的直升機轟鳴聽起來就像是在使用者的上方,在攝像機前方的演員對白聽起來就像是在使用者的前面。當使用者環視整個視訊畫面時,系統需要根據使用者頭部方向的變化作出反應並將每種聲音重新定位到畫面上的相應位置。無論是通過手機,瀏覽器還是VR頭戴顯示器,當使用者每次觀看360度全景視訊時,音訊都需要被重新計算並更新方位以完美還原使用者真實的空間感受。

簡而言之,為了實現這種效果,我們必須開發一種即使不依賴放置了揚聲器的大房間也能為使用者帶來超越影院沉浸感的音訊處理系統。在等待我們解決的一系列問題中,首要的是必須架構能夠反映真實世界環境的音訊環境,並通過耳機以更高的聲音解析度呈現給使用者,同時不斷追蹤使用者的視覺方位。通過頭戴式耳機聽到的常規立體聲可能會幫助使用者瞭解聲音是在自己的左耳還是右耳播放,但它不會幫助使用者感知環境中聲音的深度或高度,也無法準確感知聲音是源於自己的前方還是在後方。

創造這種空間化聽覺體驗並將其大規模商用化需要許多新技術。儘管空間音訊研究正在學術領域如火如荼地進行,但到目前為止,還沒有出現可靠的端到端的傳輸方式能將這種技術大規模地推向消費市場。最近我們推出了新的使用者工具和渲染方法,這使得我們首次有機會為大規模的消費市場提供高質量的空間音訊技術。這些渲染技術被應用於一個名為“空間音訊工作站”的新型強大工作平臺,使創作者能夠在360度全景視訊中新增空間化音訊。該渲染系統也適用於Facebook應用程式,這樣使用者便可以通過Facebook聽到創作者上傳的同樣生動的全景音訊。

這兩項改進都能幫助視訊製作人在多種裝置與平臺上重塑現實。我們在這篇文章中,將探討我們已經探索到的一些技術細節。不過先讓我們瞭解一下空間音訊的發展歷史與背景。

初識空間音訊

由於頭相關傳輸函式(HRTFs)的存在,通過耳機使使用者聽到具有逼真空間感的聲音是有可能實現的。 HRTFs幫助開發者構建可應用於音訊流的音訊濾波器,使得聲音聽起來像是位於其特定的正確位置 ——在聽者之上、之後或旁邊等等。 HRTFs通常適用於具有人類主體模型或人體頭部和軀幹模型的消聲室中,但通過其他方法也可以達到這種效果。

如果想讓使用者在觀看全景視訊時也聽到全景聲,開發者必須將聲音放在正確的位置。換句話說,他們必須設計並傳輸空間音訊。有很多方法可以實現這一點。其中一種方法是基於物件的空間音訊,場景中的每個物件(例如,直升機或演員)單獨發出的聲音會被儲存為具有位置後設資料的離散流。大多數遊戲的聲音環境架構使用的便是這種基於物件的空間音訊渲染系統,因為每個音訊流的位置可根據玩家移動的位置而隨時變化 。

 

Ambisonics技術是另一種能夠展現整個聲場的空間音訊方法。我們可以將其視為音訊的全景照片。多聲道音訊流可輕鬆用於展現整個聲場,這使得與基於物件的空間音訊處理技術相比具有更容易進行轉碼和流式傳輸。一個 Ambisonic的流可以通過各種方案來呈現。這些方案最大的區別在於the order of the ambisonic sound field。一階聲場會產生四個聲道資料,而三階聲場則會產生16個聲道資料。通常,較高的聲階意味著更好的音質和更準確的空間定位。我們可以將低階的ambisonic sound field理解為模糊的全景照片。

工作流程與工具

Spatial Workstation空間音訊工作站是我們開發的一套音訊處理工具,可幫助專業音效設計師設計能夠用於360度全景視訊和線性VR體驗的空間音訊。該工作站與現有音訊工作站相比具有更強大的音訊處理能力,開發者藉此可以根據360度全景視訊在三維空間中定位聲音,同時通過VR耳機上的聲音輸出端對空間音訊進行預聽。這開創了一套貫穿內容建立到釋出整個過程的高質量“端到端”工作流程。

 

傳統的立體聲音訊只包括兩個音訊通道。我們使用Spatial Workstation開發的系統可實現八個音訊通道的輸出。因為聲場已被優化調整以適應VR和360全景視訊,我們將此稱為混合高階ambisonic系統。這套系統被整合(tuned)到我們的空間音訊渲染器中,這樣能最大限度地提高聲音的質量和位置精度,同時把對效能的要求和延遲時間降至最低。此外,Spatial Workstation還可以輸出兩個頭部定向音訊聲道。此時輸出的,是一個不會對頭部進行追蹤並以旋轉來作出響應的立體聲流,此時聲音將保持被“鎖定”到頭部周圍某個方位的狀態。大多數360度全景體驗使用的是混合的空間化音訊和頭部定向音訊,空間化音訊可用於在360度全景內進行的動作,而頭部定向音訊可用於旁白或背景音樂。

640?wx_fmt=gif

SPATIALIZED / HEAD-LOCKED

非凡的渲染效果

我們的空間音訊渲染器凝萃了我們這幾年開發的一系列技術,可以將空間音訊輕鬆擴充套件到廣大不同型別和配置的裝置中,同時保持最佳質量。渲染器使用引數化和表示HRTFs的方式,可以衡量HRTFs的各個組成部分來決定在渲染時是側重速度還是質量,或在兩者之中找到一個最佳的均衡點。除此之外,我們的渲染器音訊延遲小於半毫秒,比大多數渲染器低一個數量級,這使得它非常適合用於優化全景音視訊的實時體驗,例如帶頭部追蹤的全景視訊。

 

這種靈活性有利於全景音視訊在一系列臺式計算機,移動裝置和瀏覽器等載體上的傳播。我們的渲染器被調整優化,能為不同平臺的使用者帶來協調統一的工作體驗,並且在這些不同的平臺上都能很好地工作。對於建立高質量的空間音訊而言,這種一致性非常重要。由於對執行效能有不同的要求,音訊可能在不同平臺或裝置上呈現出不同的效果,這樣對於整個生態而言顯然是不利的。我們希望在如Facebook這樣的平臺的大規模使用下確保全景音視訊在各種常用裝置和生態中都能一致保持優秀的質量。

跨平臺高效工作

渲染器是Audio360音訊引擎的一部分,它可以將混合高階ambisonic和頭部定向音訊流空間化。音訊引擎是用C 編寫的,這為每個平臺提供了優化的向量指令。它非常輕量,可通過多執行緒和Lock-Free system進行列隊(queueing)與空間化(spatialization)工作並混合(mixing)。它還能直接與每個平臺上的音訊系統(Android上的openSL,iOS / macOS上的CoreAudio,Windows上的WASAPI)進行交流協作,以最大限度地減少輸出延遲並儘可能地提高處理效率。這種輕量化設計不僅可以讓開發者時刻保持高效工作,還能通過保持二進位制大小(binary size small)來減少應用程式的臃腫。音訊引擎中二進位制檔案會被編譯為大約100千位元組。

 

對於Web,音訊引擎使用Emscripten編譯為asm.js。這有助於我們在所有平臺上進行維護、優化並使用相同的程式碼庫。該程式碼只需很少修改就能在瀏覽器中正常工作。渲染器的靈活性和高速性使我們能夠在各種瀏覽器中使用相同的技術來保證音訊質量。這種情況下的音訊引擎被用作WebAudio中的定製處理器節點,其中的音訊流會從Facebook視訊播放器排列至音訊引擎中,同時來自音訊引擎的空間化音訊被傳遞到WebAudio並通過瀏覽器回放。與原生C 實現相比,JS版本只能在2倍慢速或4倍慢速下執行,這對於實時處理而言還是足夠的。

 

隨著電子裝置和瀏覽器的處理速度一年年變得更快,各種裝置和瀏覽器的瀏覽速度都會大幅進化,渲染器和音訊引擎的靈活性和跨平臺特性使我們能夠隨之不斷提升聲音的質量。

從編碼到客戶端

空間音訊編碼和其檔案格式的世界正處於迅速發展不斷變革的狀態。我們希望儘可能方便地將使用Spatial Workstation製作的內容編碼並上傳到Facebook,以便在人們能在所用的所有裝置上觀看和收聽。Spatial Workstation編碼器能準備好8聲道空間音訊和立體聲頭部定向音訊,與360度全景視訊一起打包至一個檔案並上傳到Facebook。

編碼器的選取優化

在尋找可行的檔案格式方面我們遇到了一些挑戰。主要面臨幾個約束條件,其中的一些可以先放一放,但迫切需要解決的是儘早提供一種合適的編碼器。主要的限制因素是將視訊轉碼成Facebook的原生視訊格式:H.264編碼的MP4格式視訊時儘可能地減少整個過程中聲音質量的損失,這意味著存在以下實際限制:

 

•MP4中的AAC支援8個頻道,但不支援10個頻道。

•AAC編碼器將8聲道音訊看作是7.1環繞聲格式,它採用積極的低通濾波器和其他技術來壓縮LFE聲道。這不符合我們致力於呈現的空間音訊。

•MP4後設資料,是可擴充套件的,但會繁瑣地利用工具,如ffmpeg或MP4Box工作。

 

我們選擇使用MP4檔案中包含三條音軌的頻道進行配置。前兩個是沒有LFE的四聲道音軌,共有八個非LFE聲道。第三首曲目是立體聲頭部定向音訊。我們以高位元率進行編碼,以最大限度地減少從WAV轉換到AAC時的質量損失,因為這些音軌將在伺服器上再次進行轉碼以準備通過客戶端傳送。

 

在Facebook,我們擁有核心工程價值(core engineering valve)以實現快速的技術革新。我們認為,隨著用來編輯音訊的工具和相應功能的不斷更新,我們沒能及時考慮清楚可能需要傳達的所有資訊。出於這個原因,我們需要一個前向擴充套件(forward-extensible)且易於使用的後設資料解決方案。定義我們自己的MP4盒子型別感覺很脆弱,所以我們決定將後設資料放入一個位於元框中的xml框中。 XML可以遵循一種能按照開發者的需求快速進化的模式。 MP4Box工具可用於從MP4檔案中讀取和寫入此後設資料。我們為每個音軌(在trak框下)儲存後設資料,為該音軌定義聲道佈局。然後,我們還在檔案級(在moov框下)編寫全域性後設資料。

 

空間工作站編碼器也會將視訊作為輸入的部分。該視訊被整合到生成的檔案中,無需轉碼,並將寫入適當的視訊空間後設資料,以便在上傳到Facebook時伺服器將其作為360度全景視訊進行處理。

 

YouTube目前需要四個頻道來支援一階立體聲效果。我們同樣支援這種格式的視訊。

高效便捷的轉碼操作

一旦開發者上傳了具有360度全景視野和360度空間聲音的視訊,這些視訊就已經準備好推送至各種裝置的客戶端。音訊以多種格式進行類似的處理。我們提取音訊後設資料(無論是YouTube ambiX還是Facebook 360格式)以確定音軌和頻道一一對映,然後將其轉製為各種需要的格式。與其他的所有視訊一樣,有時為了便於比較,我們會使用多個編碼器設定進行轉碼,來獲得最佳的完整體驗;我們還準備了與所有傳統客戶端相容的立體聲雙耳渲染技術,並在出現任何問題時將其作為備選方案。

 

音訊與視訊可以分開處理,並通過使用自適應流媒體協議合併傳送給客戶端。

向客戶交付作品

不同的客戶端具有不同的功能並支援不同的視訊容器/編解碼器格式。我們不能強制所有裝置都同時支援一種格式,因此我們為iOS,Android和網路瀏覽器準備了不同的格式。這令使用者可以跨平臺地在這些裝置上控制視訊播放器,根據不同需求實現特殊行為,但我們更喜歡經過充分測試並且不需要花費額外時間去執行的現有程式碼。出於這個原因,在iOS上我們更喜歡把MP4格式檔案作為視訊載體,在Android和Web瀏覽器上我們更喜歡使用WebM。在iOS和Android上,與單聲道或立體聲音軌不同,解碼10聲道AAC音訊不直接受本機支援或單純依賴硬體加速。上述這些有關AAC以及8聲道或10聲道音訊的問題,使我們發現了特別的編解碼器——Opus正在被其他人用於空間音訊,利用Opus編解碼器可實現更好的壓縮。它是一款先進的開源編解碼器,它的軟體解碼速度比AAC更快。這使Opus自然而然成為我們的最佳選擇,特別是對於WebM這種視訊格式。大多數編碼器或解碼器目前不支援MP4下的Opus。但是,這裡有一份實現MP4下的Opus的擬定草案,並且我們正在進行一項工作來支援ffmpeg。

當我們將上傳的檔案(“4 4 2”)中的三音軌格式轉換為單個10聲道Opus音軌時遇到了一些挑戰。與AAC一樣,允許的通道對映和LFE通道也是一個問題。然而,Opus允許未定義的頻道對映族(255族),意味著這些頻道並不是已知的佈局。這項工作已經足夠完善了,因為我們控制了編碼和解碼,並且我們可以確保兩端的佈局具有相同的理解相同。我們在流動的清單檔案中傳輸通道佈局資訊。未來,隨著Opus中的空間音訊技術的成熟,可能會出現一些特定的能實現在大幅減小檔案體積的同時顯著提升音訊質量的通道對映和增強編碼技術。這樣,我們的客戶將能以最小或無需更改的方式對空間音訊其進行解碼。

未來的發展方向

我們處於一個不斷拓展和進化的空間音訊先進領域 ——正在改進優化非空間視訊和音訊所採用的格式。我們所做的一切,開創了全新的視聽體驗並將其變成現實。但還有很多的事情需要去做:上下堆疊元件、 從工作站到視訊檔案格式等方面都需要進行改進。目前,我們正在研發可以將所有音訊儲存在一個音軌中進行上載的檔案格式,並有可能實現無損編碼。同時我們也對Opus中改善空間音訊壓縮的專案十分感興趣。我們期望探索自適應位元率和自適應通道佈局技術,以改善那些受頻寬所限的使用者、或是擁有足夠多的頻寬並期待獲得更高質量內容的使用者的使用體驗。這是一個令人興奮的領域,我們期待為整個音視訊生態作出更多卓越貢獻。

LiveVideoStack Meet | 上海

多媒體開發新趨勢

2018年初的視音訊技術生態並不平靜,Codec的爭奪進入群雄逐鹿的時代; WebRTC 1.0版定稿在瀏覽器中,移動端乃至IoT上的多媒體通訊; AI,區塊鏈技術的發展,正在與多媒體開發發生在化學反應,將成為推動生態發展的新力量。

2018年,LiveVideoStack將通過“LiveVideoStack Meet:多媒體開發新趨勢”系列沙龍,展現新技術在音視訊領域的探索與實踐,以及新興應用場景和傳統行業的最新最佳實踐。

講師與話題:


 吳威麒:觸寶科技音訊技術專家  

《實時語音通訊的音訊後處理技術》

 曾小偉:蘇寧雲商IT總部技術副總監  

《如何使用機器學習演算法優化分發鏈路》

 沈軻軼:騰訊天天P圖iOS開發組長  

《iOS實時相機的GPU實踐》

 盛驍傑:優酷VR技術專家  

《超高清VR直播技術的演進與挑戰》

 崔文秀:北京三體雲聯科技有限公司總監

《實時音視訊技術賦能傳統行業》

 蔡銳濤:相芯科技圖形引擎負責人  

《Animoji動態表情的技術實現》

640?wx_fmt=png

點選 [閱讀原文] 瞭解相關活動資訊,快來報名吧!