1. 程式人生 > >實時音視訊直播新玩法中的混音技術

實時音視訊直播新玩法中的混音技術

作者|冼牛

編輯|覃雲

最近半年,視訊直播領域中產生不少創新玩法,其中包括 K 歌直播和合唱直播。這些創新玩法都用到實時音訊混音技術。今天我們來聊一下混音技術的實現,及其在創新玩法中的應用。

混音的應用場景

混音,顧名思義,就是把兩路或者多路音訊流混合在一起,形成一路音訊流。筆者曾經寫過兩篇關於混流的文章,混流也被稱為合流,指的是把視訊畫面和音訊對齊,然後混合成一路音視訊流。我們今天要聊的實時音訊混音,指的只是音訊流的混合。

混音的邏輯可以在終端裝置上實現,也可以在伺服器上實現,因此可以分為終端混音和雲端混音。終端混音一般應用於背景配音,音樂伴奏等場景。雲端混音可以是雲端混流的一部分,主要目的是利用雲端的計算能力去做多路音視訊流的音畫對齊,還有降低下行頻寬成本;也可以做純粹的雲端混音,來實現合唱直播等場景的需求。

混音技術在視訊直播應用場景中並不新鮮。視訊直播間裡比較機械化的掌聲、笑聲、口哨聲甚至背景音樂,都是混音技術的應用。在主播端,採集主播的聲音形成音訊流 A1,從音訊檔案中讀取音訊流 A2,把 A1 和 A2 兩路音訊流混合,形成一路音訊流,這就是混音。

然而,視訊直播的玩法創新日新月異。2017 年 12 月酷狗直播上線了 KTV 直播的玩法,主播可以線上跟隨伴奏 K 歌,直播間的觀眾能聽到主播和伴奏的歌聲,還能看到歌詞字幕。2018 年 5 月全民 K 歌上線了合唱直播的玩法,主播和嘉賓一起線上同唱同一首歌,直播間的觀眾能聽到主播和嘉賓的合唱以及伴奏。

這些新的玩法都是對混音技術的深度應用。本文後面將對這兩種玩法的邏輯展開討論。

混音之前的處理

並非任何兩路音訊流都可以直接混合。兩路音視訊流,必須符合以下條件才能混合:

  • 格式相同,要解壓成 PCM 格式。
  • 取樣率相同,要轉換成相同的取樣率。主流取樣率包括:16k Hz、32k Hz、44.1k Hz 和 48k Hz。
  • 幀長相同,幀長由編碼格式決定,PCM 沒有幀長的概念,開發者自行決定幀長。為了和主流音訊編碼格式的幀長保持一致,推薦採用 20ms 為幀長。
  • 位深(Bit-Depth)或採樣格式 (Sample Format) 相同,承載每個取樣點資料的 bit 數目要相同。
  • 聲道數相同,必須同樣是單聲道或者雙聲道 (立體聲)。這樣,把格式、取樣率、幀長、位深和聲道數對齊了以後,兩個音訊流就可以混合了。

在混音之前,還需要做回聲消除、噪音抑制和靜音檢測等處理。回聲消除和噪音抑制屬於語音前處理範疇的工作。在編碼之前,採集、語音前處理、混音之前的處理、混音和混音之後的處理應該按順序進行。靜音抑制(VAD,Voice Activity Detect)可做可不做。對於終端混音,是要把採集到的主播聲音和從音訊檔案中讀到的伴奏聲音混合。如果主播停頓一段時間不發出聲音,通過 VAD 檢測到了,那麼這段時間不混音,直接採用伴奏音樂的資料就好了。然而,為了簡單起見,也可以不做 VAD。主播不發聲音的期間,繼續做混音也可以(主播的聲音為零振幅)。

基礎混音演算法

我們的周遭環境就是個天然的混音場,各種聲波在空氣中傳播,相互疊加,傳入到我們的耳朵裡。不同聲波在空氣中的振幅疊加是線性的,因此,在混音演算法中,音訊取樣資料表徵聲音的振幅,音訊資料的疊加也是線性的。然而,我們需要考慮兩方面的因素:

混合權重

兩個音訊流的振幅表示聲音的能量水平,然而兩個聲音可能一個很大,一個很小,對比懸殊。在混音的時候,從使用者聽音的主觀感受來說,是希望兩個聲音混合後聽起來比較均衡。因此,混音演算法要考慮兩個聲音振幅的權重,或者說調節音量。

實踐經驗表明,採集到的主播聲音相對比較小,而檔案讀取的音訊聲音比較大,推薦保持主播的聲音音量不變,而調節伴奏音樂的音量到一個比較合適的水平,然後再混合。

溢位處理

兩個音訊流的兩個對應的取樣點的資料線性相加可能會造成溢位。每一個音訊取樣點的資料由 16bit,也就是 2 個位元組來表示,能夠表示的有符號整型數的範圍是 -32768~32767。

兩個音訊流的兩個對應的取樣點由兩個 16bit 的整數表示,這兩個整數相加可能會溢位,向上溢位或者向下溢位。因此,混音演算法要能夠處理溢位的情況。溢位處理的方法有很多,這裡只提一種:直接加和並且鉗位,加和後往上溢位的話,就採用最大正值(32767),如果往下溢位,就採用最大負值(-32768)。

混音之後的處理

混音處理以後,要做溢位檢測,針對溢位的取樣點做溢位處理。也可以做一些平滑處理的操作,不過這不是必要的。混音的效果好不好,最終還是要以使用者的主觀聽感來做判斷標準。

混音技術一般不會單獨使用。在視訊直播場景中,往往是和其它一些技術混合使用。比如說,K 歌直播場景中,用到的技術包括混音技術,歌詞與媒體同步傳輸技術。合唱直播場景中,用到的技術包括混音技術,連麥直播技術等。多種技術的靈活組合使用,就能創造出讓主播和使用者喜愛的玩法,拉昇直播平臺的使用者活躍度。

混音與 KTV 直播

KTV 直播,也就是線上 K 歌房的玩法,真實地還原了線下 K 歌房的玩法。舉個例子,小明是個麥霸,週末想去 K 歌房 K 歌,可是朋友們都沒空,約不到人一起 K 歌。於是小明就通過手機或者 PC,進入線上的 K 歌房,房間裡有和小明一樣的其它使用者。和其它使用者一樣,小明要排隊輪流上麥 K 歌,在上麥之前要點好要唱的歌曲。K 歌的時候,小明能聽到伴奏和看到歌詞,其它同在 K 歌房的使用者能聽到小明的歌聲和伴奏,還能看到同步的歌詞,完美地還原了線下 K 歌房的體驗。這樣,小明就算約不到朋友,也可以在線上 KTV 找到網友一起 K 歌。

從技術的角度來看,本質上 KTV 直播是在視訊直播的基礎上,混音技術和媒體通道傳資料技術的應用。混音技術在上面已經詳細介紹,媒體通道傳資料技術就是在媒體通道內傳輸資料資訊,比如說歌詞等資訊。下圖展示了 KTV 直播的技術架構:

KTV 直播的技術架構圖

                                                                                                  KTV 直播的技術架構圖

在歌手的終端,歌手的歌聲和伴奏音樂被混合,和歌手的視訊一起編碼成音視訊流推送到實時傳輸網路。這是混音技術,前面已經介紹過。歌詞資訊和音視訊資訊是在同一個媒體通道傳輸的,這樣可以保障歌詞和音視訊同步。這就是媒體通道傳資料技術,可以被應用到 KTV 直播,還有直播答題和線上教育等場景。大概的業務流程如下:

  • 歌手端從伴奏音樂庫下載伴奏音樂和歌詞資訊,並實時播放;
  • 歌手演唱,歌手端採集歌手的歌聲和視訊畫面;
  • 歌聲和伴奏被混音,形成單一的音訊流;
  • 歌詞資訊和音視訊資料一起被編碼;
  • 音視訊流和歌詞資訊同步被推送到實時傳輸網路;
  • 音視訊流經過實時傳輸網路加速,轉發到內容分發網路;
  • 輪麥的使用者從實時傳輸網路拉流播放,歌聲和歌詞同步;
  • 普通的使用者從內容分發網路拉流播放,歌聲和歌詞同步。

這是典型的視訊直播場景,再加上混音技術和媒體通道傳資料技術結合,真實地還原線下 KTV 的效果。

混音與合唱直播

合唱直播,其實是 KTV 直播加上合唱的場景,真實地還原了線上下 K 歌房中合唱的玩法。合唱直播,指的是兩個或者以上的使用者,隨著伴奏看著歌詞一起 K 歌。合唱直播和 KTV 直播的關鍵區別在於,有兩個或者以上的使用者一起 K 歌,混音的場所(在哪個終端?是終端還是雲端?)是考慮的關鍵,最終要讓歌聲、伴奏和歌詞同步。KTV 直播混音的場所是歌手端裝置,而合唱直播的混音場所可以是歌手端裝置,也可以是雲端,要根據不同的方案而定。

去年 11 月,馬雲和王菲合唱一首《風清揚》,作為《功守道》的主題曲,成了刷爆朋友圈的熱點。如果馬雲和王菲使用合唱直播技術在線上合唱的話,效果圖大概如下:

從技術的角度來看,本質上合唱直播是在視訊直播的基礎上,混音技術、媒體通道傳資料技術甚至加上連麥直播技術的應用。

一般來說,合唱直播有兩種方案:

方案一

兩個歌手不連麥,混音在終端完成,歌聲、伴奏和歌詞嚴格同步,但是隻有一個歌手能聽到另外一個歌手的歌聲。方案一的架構圖如下:

這裡以馬雲和王菲線上合唱為例,來說明方案一的業務邏輯:

  • 王菲的手機從音樂庫下載 MV 播放,包含伴奏音樂、MV 視訊和歌詞;
  • 王菲伴隨著伴奏音樂演唱,歌聲和伴奏音樂混音,形成音視訊流 X 推送到實時傳輸網路;
  • 馬雲的手機從實時網路拉取音視訊流 X 播放,伴奏音樂包含王菲的歌聲和 MV 伴奏;
  • 馬雲伴隨著伴奏音樂演唱,歌聲和伴奏被混音,形成音視訊流 Y 推送到實時傳輸網路;
  • 音視訊流 Y 經過實時傳輸網路加速後,被轉推內容分發網路(CDN)進行分發;
  • 直播間的觀眾從內容分發網路拉取音視訊流 Y 播放。

至此,直播間的觀眾能聽到馬雲和王菲合唱的歌聲,好像他們兩個就是在同一個 KTV 裡面合唱一樣。方案一的優點是,兩位歌手的歌聲、畫面和歌詞嚴格同步,觀眾的體驗最優;不足是,王菲聽不到馬雲的歌聲,而馬雲能聽到王菲的歌聲,兩位歌手沒有連麥,缺乏互動。

方案二

兩個歌手連麥,混音在雲端完成,兩個歌手能相互聽到對方的歌聲,但是歌聲、伴奏和歌詞難以做到嚴格同步。方案二的架構圖如下:

這裡以歌手 A 和歌手 B 合唱為例,來說明方案二的業務邏輯:

  • 歌手 A 從音樂庫下載伴奏音樂和歌詞,歌手 B 同樣;
  • 歌手 A 隨著伴奏音樂和字幕演唱,歌手 B 同樣;
  • 歌手 A 把採集到的歌聲和視訊,封裝成音視訊流,推送到實時網路,歌手 B 同樣;
  • 歌手 A 從實時網路拉取歌手 B 的音視訊流播放,歌手 B 同樣,兩個歌手實現連麥互動;
  • 在雲端把歌手 A 的歌聲、歌手 B 的歌聲、伴奏音樂混音,封裝成音視訊流;
  • 在雲端把歌詞加入音視訊流的媒體通道傳輸;
  • 在雲端把音視訊流轉推內容分發網路;
  • 觀眾們從內容分發網路拉取音視訊流播放。

這樣可以實現全互動的合唱直播,好像歌手 A 和歌手 B 就在同一個 K 歌房裡合唱一樣:

  • 歌手 A 和歌手 B 相互能聽到對方的歌聲;
  • 歌手 A 和歌手 B 跟隨著伴奏一起演唱;
  • 觀眾們能聽到歌手 A 和歌手 B 合唱,歌聲和伴奏還有歌詞大致同步。

方案二的優點是互動感強,兩位歌手能相互聽到對方的歌聲,歌手的體驗最優;不足是兩位歌手的歌聲、伴奏還有歌詞很難做到嚴格同步,原因是兩個歌手的歌聲、還有伴奏的音樂(三者對應的時間戳)抵達雲端的時間難以做到完全一致,受到網路延遲的影響較大。網路狀況好的情況下,同步效果較好,和方案一相當,網路不好的情況下,不同步的情況就比較明顯。

總結  

混音技術作為一項技術,常常被和其它技術靈活組合,來實現具體場景中的玩法創新。上面提到的 KTV 直播和合唱直播都是混音技術的具體應用。視訊直播作為一個綜合的應用場景,隨著技術和業務的發展,逐漸衍生出眾多的微場景,包括上面提到的兩個微場景。在視訊直播微場景需求的驅動下,各種音視訊技術點靈活組合能衍生出各種技術方案。