如何做好遊戲內實時語音體驗

騰訊雲加社群發表於2018-02-28

歡迎大家前往+社群,獲取更多騰訊海量技術實踐乾貨哦~。

作者:張曉愚,騰訊雲遊戲行業資深架構師

騰訊遊戲雲發表在雲+社群

遊戲內語音溝通需求

早在2015年,艾媒諮詢即有移動遊戲社交相關資料統計:近40%的玩家因為社交因素選擇一款遊戲;15.6%的玩家因為一款遊戲社交性差而選擇離開。因此,如何提高遊戲的社交屬性已成為各大遊戲廠商遊戲策劃的重要組成部分。從小隊戰鬥、團隊副本,到遊戲排名、PVP團隊競技、公會、家族等遊戲玩法,無一不是為了增強遊戲的社交性,進而提高遊戲粘性和玩家活躍度、留存率的有效方式。隨著移動裝置效能大幅攀升,移動遊戲也從場景簡單的休閒類遊戲發展為更追求操作和遊戲體驗的競技類和大型MMO類等重度遊戲,該類遊戲內玩家間的溝通交流是其必不可少的功能需求。然而相比端遊而言,手遊內打字系統更加不方便,文字訊息完全無法滿足溝通的實時性需求;此外,由於重度遊戲對手機網路及效能的要求很高,不穩定的網路和有限的計算資源是每個移動端目前都無法完全解決的問題,遊戲外的語音通訊軟體如移動QQ等也無法滿足在資源緊張的情況下做到不影響遊戲內玩家的體驗,因此,移動遊戲內整合輕量級的語音聊天能力已成為各手遊廠商的必然選擇。

移動遊戲語音能力面臨的挑戰

實時語音通訊技術在行業內早已不是一個新話題,從傳統的VOIP呼叫中心廠商,到雲通訊領域的語音服務提供商,均有大量現成的SDK供各類APP整合其實時語音能力。然而,針對移動遊戲內的實時通訊需求,不僅僅是簡單實現實時通話就可以滿足,更多的挑戰如下:

1. 對遊戲核心玩法的影響

近年來,移動裝置效能大幅增強,但相對玩家對遊戲體驗的追求而言,目前消費級智慧裝置的效能仍然是隻能滿足高品質遊戲的基本需求,並沒有過多的富餘。若實時語音能力佔用了過多的裝置CPU和記憶體,會導致遊戲本身體驗的下降,社交需求雖然是玩家選擇遊戲的重要方向,但遊戲體驗才是決定一個遊戲能否存活的根本。而從15年起,對網路延遲要求極高的MOBA和FPS類遊戲也被搬上移動端,面對移動端極度不穩定的網路環境和昂貴的4G流量費用,各遊戲廠商為了優化遊戲報文、減少網路流量、降低網路延遲費心盡力,若由於語音能力的加入將遊戲網路質量一夜影響到解放前,顯然是得不償失的。此外,語音能力的加入是否會大幅提高遊戲下載首包的大小也是各大遊戲發行廠商關注的重中之重。

2. 移動遊戲環境下的聲音處理

相比於客戶端遊戲的場景,移動端遊戲最大的優勢在於我們可以“移動”著玩遊戲,然而在實時語音上,這種“移動”的便捷性也為清晰的語音傳輸引入了更多的問題:地鐵或路上嘈雜的背景音影響正常的語音質量;手機距離嘴巴距離的忽遠忽近,聲音忽大忽小;多人說話外加遊戲的背景音的混疊導致能量過大引起爆音;多玩家手機聲音外放造成的大量回聲。這些都是在端遊相對簡單的環境加耳麥場景下不會頻繁產生的複雜的聲音處理問題。

3. 移動遊戲多語音場景的能力覆蓋

目前比較重度的手遊中,競技類如MOBA、吃雞和MMO類遊戲佔據了主流,該類遊戲的實時戰鬥屬性急需移動遊戲引入語音能力,而休閒類遊戲內語音也逐步成了增強玩家間交流的重要手段。在新進火熱的社交類遊戲中,語音已成為遊戲的基礎能力之一。然而,各類遊戲對語音能力的需求也不盡相同:競技類遊戲要求遊戲內同隊玩家均可連麥遊戲,在保證基本溝通需求的同時儘量減少對移動裝置效能和網路的影響;MMO類玩家很多,如PVP場景下的小隊語音、PVE場景下的團隊語音,而類似遊戲內主播頻道的玩法也在最近被眾多MMO遊戲所關注;社交類遊戲如狼人殺更關注實時語音的音質,流暢無卡頓的溝通是遊戲長久運營的必要條件;休閒類遊戲也將實時語音和語音訊息作為輔助的社交手段來提高玩家的活躍度。 此外,也有眾多玩家在移動端的環境下不具備收聽語音的能力,因此類似微信上提供的語音訊息轉文字功能也是移動遊戲必不可少的能力之一。

4. 移動遊戲語音全球化能力

2017年國內移動遊戲使用者規模已接近6億,增速逐年放緩,人口紅利已然消失,競爭日益激烈,也逼迫各大廠商走向遊戲精品化路線。相比之下,國產遊戲在海外則大有發展空間,更多的精品手遊也在獲得國內玩家認可後在迅速在全球推廣發行。外國玩家是否也有跟國內玩家一致的語音需求呢?在Greg Wadley等人的調研報告中(Voice in Virtual Worlds: The Design, Use, and Influence of Voice Chat in Online Play),給出了明確的答案:遊戲內語音在全球來看,都是可以極大的提升玩家遊戲體驗的。遊戲全球化對遊戲內語音提出了新的挑戰—如何為跨地域的玩家提供流暢清晰的語音體驗—不穩定的網路,長距離的傳輸外加全球各地語音服務基礎設施的部署與運維,都是讓遊戲廠商頭疼的問題。

實時語音常用技術方案

在語音相關的眾多研究中,已有大量關於不同環境下語音處理的方法,並且在網際網路環境下流媒體協議及如何解決的一些網路問題也有前人給出建議。本節即針對上述移動遊戲環境下實時語音所面對的挑戰,介紹一些語音預處理、流媒體協議等通用的解決方案。

圖1 語音預處理常規流程

1. 語音降噪

在移動裝置所處複雜環境的情況下,接收語音訊號的同時會接收到大量噪音,因此語音降噪技術是提高音質、增加語音識別準確率的的必要手段。降噪技術一般分為單麥克風系統和多麥克風系統下的降噪方法,其中多麥克風系統對多麥克的方向、之間的距離要求很高,常用的移動裝置中並不具備如此完善的多麥克風通道設計,因此單麥克風下的濾波降噪或噪聲閾值方法在移動裝置噪聲處理中更為常用。噪聲處理在移動裝置上相對比較簡單,第一因為許多高階智慧裝置上已經內建了專用降噪晶片供作業系統呼叫,並且移動作業系統中也內建了很多高效的降噪演算法供開發者呼叫,如Android中的NoiseSuppressor。

2. 語音啟用檢測(VAD, Voice Activiy Dection)

語音啟用檢測的目的即判斷一段聲音是背景噪音還是語音,該技術往往作為在各類語音後續處理及語音識別技術的基礎。在移動遊戲無處不在的噪聲環境中,語音訊號的準確識別尤為關鍵。一方面,可以通過對語音訊號的識別,去掉沒有語音的部分的聲音,減少語音傳輸檔案的大小,也減少了其他語音處理方法的CPU記憶體消耗;另一方面,準確提取語音訊號,也可以有效提高語音識別轉文字的準確性。

圖2 VAD處理過程

由於語音本身的特性及其相對背景音的區別:能量高且不連續,因此在聲音的時域分析方法中短時能量結合短時過零率的分析可以有效辨別聲音是語音還是噪音;在頻域中語音訊號也可以通過倒譜及譜熵等特徵作為識別引數;隨著機器學習的發展,隱馬爾科夫模型、決策樹模型乃至最新的深度神經網路也被應用於VAD領域,以提高噪音環境下VAD的準確率。幾種方式比較而言,時域分析對硬體要求最低,頻域分析速度最快,而模型方式則相對較複雜,但在準確率上更佔優勢。截止目前,市場上三類VAD分析方法都在不同需求場景中被廣泛應用。

3. 回聲消除

回聲,作為噪音和背景音外的第三類另人頭疼語音問題,在移動遊戲場景下也廣泛存在。噪聲的處理過程可簡單的理解為從近端收集的所有音訊中,通過自適應濾波器消除遠端傳來的音訊訊號,再輸出到對端,即完成了回聲消除的目的,其中的關鍵點在於不斷減小濾波器權值與回聲路徑通道權值的誤差。

圖3 回聲消除—自適應濾波器

自適應濾波演算法一般分為兩類:最小均方演算法(LMS)和遞推最小二乘(RLS)演算法,RLS優勢在於濾波效果更好,但LMS具有結構簡單、計算複雜度低等優點,因此更多的研究也集中在LMS上,如歸一化最小均方(NLMS),比例歸一化最小均方(PNLMS)等在濾波效能、收斂速度等多方面對LMS演算法進行優化和提高。同時,Android中也同樣提供了AcousticEchoCanceler介面可以直接對聲音進行回聲消除,高階智慧手機中也會內建專業聲音處理晶片,在硬體層面更好的對回聲進行消除。

4. 多路聲音混疊

遊戲中小隊語音會有多個玩家同時說話的情況,並且在玩家收聽語音的同時,遊戲的背景音也不可被去除,因此如何使多路語音清晰傳遞並且不會造成爆音是該場景下優質混音的評判標準。最簡單的混音方式是簡單的時域音訊疊加,強度超過最大值時削峰為最大值來避免爆音,但人為削峰方式會在破壞音訊訊號的同時引入額外的噪音;另一種方式是多路聲音線性疊加後取平均,該演算法實質即把多路音訊音量減小,但聲音路數時多時少時,該方法會導致每路聲音的音量忽大忽小,影響體驗;因此,在實際使用場景中,更好的方式是根據每路語音的重要性,在混音時候給予相應的權重,以保證混音後各路音訊的可識別性。

5. 語音自動增益

自動增益控制技術在資料通訊、語音處理等方面應用廣泛,通訊訊號的訊號幅度經常會發生較大波動,通過自動增益技術可以平滑訊號幅度,進而提高通訊質量。在移動遊戲場景中,手機離人嘴部的距離可能依賴於玩家遊戲時不同的外部環境而劇烈變化,因此,平滑每個人的聲音大小及一個人在不同說話時間的聲音大小對語音通話的質量關係重大。在多人實時語音通訊的場景中,自動增益可在VAD處理後完成,並且門限值可按照多路聲音混疊中的需求所設定,採用基於能量比較的語音自動增益演算法即可實現較好的平滑音量的效果。

圖4 峰值AGC系統結構

6. 流媒體傳輸協議

常見的流媒體協議包含RTP,RTMP,HLS,HTTP-FLV等,其中RTMP,HLS,HTTP-FLV由於在國內外CDN平臺支援度更高,因此更常見於現今流行的各大直播平臺。RTMP為Adobe專利協議,協議延遲較低,國內流行度很高,是最常用的推流協議;HLS為蘋果提出的基於HTTP的流媒體傳輸協議,支援H5,可多平臺多瀏覽器隨意播放,但延遲較高;HTTP-FLV使用HTTP傳輸FLV格式檔案,避免了Adobe協議綁架,延遲略優於RTMP。在實時性要求較高的視訊監控、高清視訊會議領域,RTP為更常用的協議。其相對於前三種基於TCP的流媒體傳輸協議相比最大的區別在於,RTP是基於UDP的協議的。由於UDP本身是無序的,因此RTP常常與RTCP協議公用,用於對RTP協議的包序等內容進行控制。同時也可以採用資料包擁塞控制協議(Datagram Congestion Control Protocol,DCCP)來自如的控制擁塞、延遲及資料質量。如網路視訊會議領域市場佔有率最高的Webex視訊會議系統即採用SRTP(Secure RTP)協議作為其流媒體傳輸協議。而目前各大雲廠商的互動語音視訊產品也大多采用類RTP協議——基於UDP協議優化的私有協議——作為其實時流媒體傳輸協議,以達到降低延遲、頻寬消耗的目的。

7. 流媒體丟包處理

在移動裝置所處的不穩定的網路環境下,外加遊戲全球發行所帶來的跨地域玩家間的網路質量問題,語音通訊需要考慮在網路抖動丟包的情況下,仍然可以保證玩家間的正常通訊。常見的流媒體丟包處理方案有:ARQ、FEC和交叉傳輸。在網路丟包嚴重的情況下,無法根據現有報文處理產生明確的語音資訊,自動重傳請求(ARQ, Automatic Repeat-reQuest)丟失報文的方式可以將大範圍丟失報文重新傳輸,增加延遲但可以保證資料的有效性。前向糾錯(FEC,Forward Error Correction)可以在少量丟包情況下,通過資料冗餘而非資料重傳,來保證資料的有效性,降低重傳頻率,減少延遲。演算法的核心可類比為二元一次方程,需要兩個方程即可以求出兩個元的解。在FEC中,傳輸三個二元一次方程,因此在丟失一個方程的情況下,我們仍然可以求出解,達到可容忍部分包丟失而不影響資訊有效性的目的。

圖5 FEC:在報文3丟失情況下,仍然可以依靠冗餘報文恢復原始資料

此外,常規的資料包傳輸都是按照嚴格的順序來傳送的,如把一序列資料拆分為123,456,789三個報文傳送,一旦一個報文丟失,會產生一整段資訊的空白,但在流媒體環境下,大多數情況下單幀的丟失內容是完全可以通過前後幀的內容補償而變得影響很小,因此若採用147、258、369的交叉傳輸方式封裝報文,單個報文的丟失並不會對整體體驗帶來很大的影響。此外,在網路頻寬允許但丟包不可控的服務期間跨地域傳輸情況下,單幀多包封裝的傳輸方式也可以有效降低丟包導致頻繁重傳帶來的延遲影響。

綜上可知,僅從聲音的處理、協議的選擇及應對網路抖動方面,即需要專業的語音處理研發人員進行多項優化處理措施。然而,這僅僅是從理論層面的論述,在實際的遊戲場景中,更重要的是在做到上述所有語音優化基礎之上,不能影響遊戲的核心玩法,即:1)需要對語音通訊所需的CPU、記憶體及網路資源進行不斷優化降低;2)在面對市面上眾多安卓裝置時保持極低的Crash率並隨時適配最新裝置;3)支援常用的遊戲引擎如Unity, Cocos。 此外,為保證語音全球服務的穩定性,架構設計的研發成本、多地域間專線連線成本及後期運維成本等問題都是遊戲廠商自建遊戲內語音服務的眾多阻礙。

騰訊雲遊戲語音GVoice—為遊戲而生

作為深耕於遊戲行業的騰訊而言,早在移動遊戲重度化的起步階段(2015年初),騰訊互娛團隊便發現了移動端遊戲內文字溝通的問題,便正式組建了由QT,YY等技術骨幹領導的遊戲語音研發團隊,開始了遊戲語音GVoice的研發歷程。雖然騰訊已有如QQ語音、微信語音訊息及語音轉文字等非常成熟的語音解決方案,但仍然需要針對遊戲語音需求場景做大量的優化和改進,隨著火影忍者、王者榮耀等精品遊戲的崛起,支援這些遊戲語音服務的GVoice也不斷走向成熟,並創新性的在御龍在天手遊中加入了主播頻道玩法,提升了遊戲的可玩性,該玩法也被其他MMO類遊戲爭相採用。隨後在2016年,GVoice在經過大量騰訊遊戲的打磨、產品化後開放到騰訊遊戲雲,眾多合作伙伴僅需簡單的整合到其遊戲中,即可在遊戲內使用騰訊成熟的遊戲語音能力。

作為市場上唯一為遊戲而生的遊戲語音產品,在功能層面包含實時團隊語音、小隊語音、離線語音訊息、語音轉文字及主播平臺等能力,全面覆蓋移動遊戲的所有語音需求場景;在技術層面,GVoice廣泛使用如上文中所述的噪音過濾、回聲消除及語音自動增益等語音處理方法,並不斷優化以提升語音的品質;在保證音質的同時,通過基於UDP協議自研的流媒體傳輸協議,將語音通訊頻寬壓縮到3-5kbps,延遲和頻寬均較標準協議大幅降低;在對整合SDK的不斷優化後,實現CPU佔用率僅2%、整合後僅2MB的包大小,並且具備經過大規模市場考驗的超低Crash率,確保整合GVoice服務對遊戲核心玩法不會造成負面影響;精心雕琢併產品化後的GVoice也可以支援如Unity3D,Cocos2D,Unreal等常用遊戲引擎,僅5行程式碼即可完成所有語音功能的接入;覆蓋全球五大洲超過20個服務節點,結合騰訊雲全球部署的CDN,可為遊戲語音實現一次接入、全球服務。

目前遊戲語音GVoice已經被遊戲行業廣泛採用,如騰訊最火爆的王者榮耀、暢遊的天龍八部、三七的永恆紀元、英雄互娛的全民槍戰、NetMarble在韓國運營的天堂II-重生、網龍全球發行的英魂之刃等,均使用GVoice助力其遊戲內社交,提高玩家活躍度,使遊戲可以更長久的運營。

目前遊戲語音已上線騰訊雲官網,點選下方網址可詳細瞭解產品資訊

相關閱讀

3D位置語音,引領吃雞遊戲體驗升級

漫步vr——unity語音聊天室開發

基於深度學習的語音增強-極簡原始碼

此文已由作者授權雲+社群釋出,轉載請註明文章出處


相關文章