延遲(Latency)一直是直播市場拓展網紅經濟上的一大難題。因為網路傳輸的緣故,當直播主說了什麼話,唱了什麼歌,做了什麼動作,觀眾要過了好一段時間才能夠接收到,觀眾也得要過了一段時間才能對直播主做出反應。
這是一種非常糟糕的使用者體驗,直播的目的在於讓直播主與觀眾不管相隔多遠,都可以在同一個虛擬空間中齊樂融融,甚至進入人類學家所說的 communitas 的狀態。但延遲完全破壞了這種體驗,進而影響直播平台與使用者之間的 engagement,以及新會員 acquantance。
要創造從直播主到觀眾之間完全零延遲的網路直播,我們首先就要了解延遲究竟從何而來。
造成延遲的原因
首先是取樣的問題。時間是一種沒有絕對最小單位的存在,而對電腦而言,聲音與影片是離散的數位訊號,通常的規格是我們每秒鐘會將聲音採樣成 44100 的訊號,而影片則可能會是每秒鐘 30 格、60 格…等規格,這邊採樣的單位都叫做「格」(frame)。所以,在不考慮壓縮的狀況下,直播主必須至少花 1/44100 秒,才能夠錄製第一個聲音訊號,聽眾也必須要得到 1/44100 秒,才能得到第一個訊號。影片也是同樣的道理。
但實際上,直播的訊號會經過壓縮,目前常見會使用 AAC、Vorbis 等格式傳輸聲音,用 H.264、H.265、VP8 …等格式傳輸影片。以 AAC 格式來說,會累積 1024 個 frame 組成一個封包,壓縮後傳送,所以 AAC 封包的單位就是 1024/44100,大概 0.023 秒,直播主獎了話之後要這樣的時間,才會產生第一個 AAC 封包。
至於影片,如果我們將拍攝的每一格都傳出去,是種不怎麼經濟的作法。在一部影片中,往往前一格與下一格之前的差異不怎麼大,如果是一段有個人在揮手的影片,你會發現每格畫面中,就只有手的位置不太一樣,其他像是人物、背景,全是相同的,所以我們會將其中一格當做關鍵影格,要表達其他幾格的畫面的內容,只要記錄與關鍵影格的差異即可,以降低傳輸過程中需要的資料量。但這麼做,就是得累積一定數量的畫面,而不能一拿到一個畫面就送出。
由於每個封包都對人類的感官來說都不大,如果封包與封包之間出現了傳輸不穩定的狀況,就畫面來說會出現卡頓,對聲音來說,不連續、中間出現空白的訊號聽起來則是噪音,所以媒體播放器往往要累積到一定大小的封包之後,才會開始播放,這個過程我們叫做緩衝(Buffering)。
在舉行網路直播的時候,一定會遇到量的問題:同時有多少人、多少終端在觀看你的直播?一台主機無法負荷超過上限的連線,引此需要將連線分散在大量的主機上。目前直播技術大量使用 HTTP 技術,我們會透過 media server,將直播訊源中的影音每隔幾秒鐘切成一個小檔案,然後將眾多個小檔案佈署在 CDN 上。
Media server 還要負擔轉檔的任務,因為不是每個平台都能支援某種影音檔案格式,或是對某種格式最佳化,或是因為每個用戶的網路頻寬不同,有些人的頻寬可以觀看高品質的影片,有些人不然,media server 就得轉換出不同格式、不同品質的檔案。轉檔也要花時間。
從直播訊源傳輸到 media server,從 media server 到 CDN,從 CDN 到用戶的裝置上,中間還有傳輸的過程,就算全程都用光纖,傳輸也需要時間。光速每秒行進 299792458 公尺,所以,如果我們是從美國紐約送出訊號,要送到台北,地表直線距離是 12550 公里,光速需要 0.04 秒,穿越地球內部則是 10627 公里,光速需要 0.035 秒。
要達成完全零延遲的網路直播,就是要去除掉所有取樣、傳輸、緩衝所需要的時間,甚至,我們要去除的是「因為直播主說了一句話,才被觀眾看到」這種因果律,我們要打破事物之間的先後關係。所以,可行的方式,就只有想辦法抵消掉這些時間。也就是說,我們必須要在直播主還沒說某句話之前,就要把這句話傳送給觀眾。
透過人工智慧實現完全零延遲
在直播業界常見的作法是,在直播主還沒說某句話之前,就讓直播系統當中的人工智慧,透過對直播主平時一舉一動的大數據進行深度機器學習,以及當下直播主腦內活動的動態分析,事先預估直播主接下來會講什麼話、會有什麼舉動,接著,預先透過電腦影像以及音聲合成技術產生直播的內容,傳送到觀眾端。
例如,我們預估在直播主與觀眾之間,會有大約三十秒左右的延遲,人工智慧系統就要提早預測直播主三十秒之後會講什麼話,提早發送。
這麼做的技術難度在於如何提昇人工智慧預估的準確度,讓系統可以完全準確預測直播主會講什麼話,要提昇準確度,一方面需要強大的運算效能,所以,現在直播平台執行運算基本上都得使用量子電腦;另一方面就是要提供人工智慧更多可觀的資料,一般的聲音辨識、動作捕捉甚至表情偵測所蒐集的資料,應用在預測直播主行為時,準確度以及預測速度都有限。
所以現在愈來愈多直播平台採取的作法是在直播主的大腦中植入晶片,讓電腦可以直接讀取直播主的腦內活動,如果直播主可以做全身義體化改造的話,效果更佳。有時候直播主在進行戶外直播時,直播平台還會需要出動像是攻殼車這樣的直播設備。
而最近的趨勢是,直播平台發現,既然直播主在大腦中都已經植入晶片了,其實可以讓人工智慧接管直播主的大腦,人工智慧先送出合成的畫面、讓觀眾接收之後,再發出指令,控制直播主發言。而從最近的一些數據成果顯示,直播平台在改變思維與作法之後,人工智慧與直播主之間的同步率獲得了飛躍式的提升。
有些人主張,既然觀眾所收看的其實都是人工智慧合成出來的畫面,那麼直播主還有存在的必要嗎?未必如此,如果你直播的是現場演唱會活動,我們還是需要歌手、樂團在台上表演,而使用人工智慧控制歌手的大腦,其實也同時解決了歌手在表演時走音、忘詞的問題。
改寫直播時間的定義
這樣的作法,其實引起了另外一派具備社會及哲學關懷的工程師的非議。這一派工程師主張,使用人工智慧控制直播主的大腦,其實已經悖離了直播的本意,直播主作為人的人格、能動性及主體性,不應該被外部的系統所掌控,直播主應該要是直播的主角,但是最後卻變成直播的奴隸 — 怎麼可以這樣對待直播主呢?這應該是工程師的專屬待遇啊!
因此,這一派工程師另闢蹊徑,直播的問題,其實既是時間的問題,而既然是時間的問題,就要從時間的本質下手。人類所可以觀測、感知的時間流逝速度,是光的移動,根據愛因斯坦的狹義相對論,質量會造成時空的扭曲,而光就會按照扭曲後的路徑前進。也就是,就是改變直播傳遞的速度,就是要從改變宇宙當中的質量。
地球上的光基本上就會受到地球本身質量的捕捉,所以,如果我們想讓地球上的直播速度變快,我們不妨可以把地球炸掉,這樣就會因為時間整體變快,而讓直播的速度變快。但是,由於我們自己的時間也變快了,因此我們還是會感受到直播的延遲。
所以,要實現零延遲的直播,我們應該要反過來增加物體的質量,當物體的質量大到一定程度後,會造成時空的坍塔,也就是俗稱的黑洞,時空的坍塔會連結到另外一個時空,最終兩個時空會連結在一起,也就是所謂的蟲洞。工程師採取的作法就是,把直播訊號送往蟲洞,讓直播訊號穿越奇異點,如果我們預估直播訊號會延遲三十秒,我們就會先把直播訊號送往黑洞,通過黑洞之後,送到另外一個三十秒之前的時空。
原理說起來簡單,但是當中需要大量精密的計算,我們還得考慮地球與蟲洞之間的距離,如果我們跟蟲洞的出入口之間距離五十億光年,那麼,我們就要對準五十億年又三十秒之前的平行宇宙,這樣才能夠讓直播訊號在通過蟲洞後,再花五十億年傳回地球,在剛好抵達地球的時候,抵消這三十秒的延遲。
「念念不忘,終有迴響」 — 只要我們抱持著對使用者體驗的堅持,沒有什麼技術上、科學上不能克服的問題。沒有什麼做不到。