如何做好游戲內(nèi)實時語音體驗
游戲內(nèi)語音溝通需求
早在2015年,艾媒咨詢即有移動游戲社交相關(guān)數(shù)據(jù)統(tǒng)計:近40%的玩家因為社交因素選擇一款游戲;15.6%的玩家因為一款游戲社交性差而選擇離開。因此,如何提高游戲的社交屬性已成為各大游戲廠商游戲策劃的重要組成部分。
從小隊戰(zhàn)斗、團隊副本,到游戲排名、PVP團隊競技、公會、家族等游戲玩法,無一不是為了增強游戲的社交性,進而提高游戲粘性和玩家活躍度、留存率的有效方式。隨著移動設備性能大幅攀升,移動游戲也從場景簡單的休閑類游戲發(fā)展為更追求操作和游戲體驗的競技類和大型MMO類等重度游戲,該類游戲內(nèi)玩家間的溝通交流是其必不可少的功能需求。
然而相比端游而言,手游內(nèi)打字系統(tǒng)更加不方便,文字消息完全無法滿足溝通的實時性需求;此外,由于重度游戲?qū)κ謾C網(wǎng)絡及性能的要求很高,不穩(wěn)定的網(wǎng)絡和有限的計算資源是每個移動端目前都無法完全解決的問題,游戲外的語音通信軟件如移動QQ等也無法滿足在資源緊張的情況下做到不影響游戲內(nèi)玩家的體驗,因此,移動游戲內(nèi)集成輕量級的語音聊天能力已成為各手游廠商的必然選擇。
移動游戲語音能力面臨的挑戰(zhàn)
實時語音通信技術(shù)在行業(yè)內(nèi)早已不是一個新話題,從傳統(tǒng)的VOIP呼叫中心廠商,到云通信領(lǐng)域的語音服務提供商,均有大量現(xiàn)成的SDK供各類APP集成其實時語音能力。然而,針對移動游戲內(nèi)的實時通信需求,不僅僅是簡單實現(xiàn)實時通話就可以滿足,更多的挑戰(zhàn)如下:
1. 對游戲核心玩法的影響
近年來,移動設備性能大幅增強,但相對玩家對游戲體驗的追求而言,目前消費級智能設備的性能仍然是只能滿足高品質(zhì)游戲的基本需求,并沒有過多的富余。若實時語音能力占用了過多的設備CPU和內(nèi)存,會導致游戲本身體驗的下降,社交需求雖然是玩家選擇游戲的重要方向,但游戲體驗才是決定一個游戲能否存活的根本。而從15年起,對網(wǎng)絡延遲要求極高的MOBA和FPS類游戲也被搬上移動端,面對移動端極度不穩(wěn)定的網(wǎng)絡環(huán)境和昂貴的4G流量費用,各游戲廠商為了優(yōu)化游戲報文、減少網(wǎng)絡流量、降低網(wǎng)絡延遲費心盡力,若由于語音能力的加入將游戲網(wǎng)絡質(zhì)量一夜影響到解放前,顯然是得不償失的。此外,語音能力的加入是否會大幅提高游戲下載首包的大小也是各大游戲發(fā)行廠商關(guān)注的重中之重。
2. 移動游戲環(huán)境下的聲音處理
相比于客戶端游戲的場景,移動端游戲最大的優(yōu)勢在于我們可以“移動”著玩游戲,然而在實時語音上,這種“移動”的便捷性也為清晰的語音傳輸引入了更多的問題:地鐵或路上嘈雜的背景音影響正常的語音質(zhì)量;手機距離嘴巴距離的忽遠忽近,聲音忽大忽??;多人說話外加游戲的背景音的混疊導致能量過大引起爆音;多玩家手機聲音外放造成的大量回聲。這些都是在端游相對簡單的環(huán)境加耳麥場景下不會頻繁產(chǎn)生的復雜的聲音處理問題。
3. 移動游戲多語音場景的能力覆蓋
目前比較重度的手游中,競技類如MOBA、吃雞和MMO類游戲占據(jù)了主流,該類游戲的實時戰(zhàn)斗屬性急需移動游戲引入語音能力,而休閑棋牌類游戲內(nèi)語音也逐步成了增強玩家間交流的重要手段。在新進火熱的社交類游戲中,語音已成為游戲的基礎(chǔ)能力之一。然而,各類游戲?qū)φZ音能力的需求也不盡相同:競技類游戲要求游戲內(nèi)同隊玩家均可連麥游戲,在保證基本溝通需求的同時盡量減少對移動設備性能和網(wǎng)絡的影響;MMO類玩家很多,如PVP場景下的小隊語音、PVE場景下的團隊語音,而類似游戲內(nèi)主播頻道的玩法也在最近被眾多MMO游戲所關(guān)注;社交類游戲如狼人殺更關(guān)注實時語音的音質(zhì),流暢無卡頓的溝通是游戲長久運營的必要條件;休閑類游戲也將實時語音和語音消息作為輔助的社交手段來提高玩家的活躍度。 此外,也有眾多玩家在移動端的環(huán)境下不具備收聽語音的能力,因此類似微信上提供的語音消息轉(zhuǎn)文字功能也是移動游戲必不可少的能力之一。
4. 移動游戲語音全球化能力
2017年國內(nèi)移動游戲用戶規(guī)模已接近6億,增速逐年放緩,人口紅利已然消失,競爭日益激烈,也逼迫各大廠商走向游戲精品化路線。相比之下,國產(chǎn)游戲在海外則大有發(fā)展空間,更多的精品手游也在獲得國內(nèi)玩家認可后在迅速在全球推廣發(fā)行。外國玩家是否也有跟國內(nèi)玩家一致的語音需求呢?在Greg Wadley等人的調(diào)研報告中(Voice in Virtual Worlds: The Design, Use, and Influence of Voice Chat in Online Play),給出了明確的答案:游戲內(nèi)語音在全球來看,都是可以極大的提升玩家游戲體驗的。游戲全球化對游戲內(nèi)語音提出了新的挑戰(zhàn)—如何為跨地域的玩家提供流暢清晰的語音體驗—不穩(wěn)定的網(wǎng)絡,長距離的傳輸外加全球各地語音服務基礎(chǔ)設施的部署與運維,都是讓游戲廠商頭疼的問題。
實時語音常用技術(shù)方案
在語音相關(guān)的眾多研究中,已有大量關(guān)于不同環(huán)境下語音處理的方法,并且在互聯(lián)網(wǎng)環(huán)境下流媒體協(xié)議及如何解決的一些網(wǎng)絡問題也有前人給出建議。本節(jié)即針對上述移動游戲環(huán)境下實時語音所面對的挑戰(zhàn),介紹一些語音預處理、流媒體協(xié)議等通用的解決方案。
圖1 語音預處理常規(guī)流程
1. 語音降噪
在移動設備所處復雜環(huán)境的情況下,接收語音信號的同時會接收到大量噪音,因此語音降噪技術(shù)是提高音質(zhì)、增加語音識別準確率的的必要手段。降噪技術(shù)一般分為單麥克風系統(tǒng)和多麥克風系統(tǒng)下的降噪方法,其中多麥克風系統(tǒng)對多麥克的方向、之間的距離要求很高,常用的移動設備中并不具備如此完善的多麥克風通道設計,因此單麥克風下的濾波降噪或噪聲閾值方法在移動設備噪聲處理中更為常用。噪聲處理在移動設備上相對比較簡單,第一因為許多高端智能設備上已經(jīng)內(nèi)置了專用降噪芯片供操作系統(tǒng)調(diào)用,并且移動操作系統(tǒng)中也內(nèi)置了很多高效的降噪算法供開發(fā)者調(diào)用,如Android中的NoiseSuppressor。
2. 語音激活檢測(VAD, Voice Activiy Dection)
語音激活檢測的目的即判斷一段聲音是背景噪音還是語音,該技術(shù)往往作為在各類語音后續(xù)處理及語音識別技術(shù)的基礎(chǔ)。在移動游戲無處不在的噪聲環(huán)境中,語音信號的準確識別尤為關(guān)鍵。一方面,可以通過對語音信號的識別,去掉沒有語音的部分的聲音,減少語音傳輸文件的大小,也減少了其他語音處理方法的CPU內(nèi)存消耗;另一方面,準確提取語音信號,也可以有效提高語音識別轉(zhuǎn)文字的準確性。
圖2 VAD處理過程
由于語音本身的特性及其相對背景音的區(qū)別:能量高且不連續(xù),因此在聲音的時域分析方法中短時能量結(jié)合短時過零率的分析可以有效辨別聲音是語音還是噪音;在頻域中語音信號也可以通過倒譜及譜熵等特征作為識別參數(shù);隨著機器學習的發(fā)展,隱馬爾科夫模型、決策樹模型乃至最新的深度神經(jīng)網(wǎng)絡也被應用于VAD領(lǐng)域,以提高噪音環(huán)境下VAD的準確率。幾種方式比較而言,時域分析對硬件要求最低,頻域分析速度最快,而模型方式則相對較復雜,但在準確率上更占優(yōu)勢。截止目前,市場上三類VAD分析方法都在不同需求場景中被廣泛應用。
3. 回聲消除
回聲,作為噪音和背景音外的第三類另人頭疼語音問題,在移動游戲場景下也廣泛存在。噪聲的處理過程可簡單的理解為從近端收集的所有音頻中,通過自適應濾波器消除遠端傳來的音頻信號,再輸出到對端,即完成了回聲消除的目的,其中的關(guān)鍵點在于不斷減小濾波器權(quán)值與回聲路徑信道權(quán)值的誤差。
圖3 回聲消除—自適應濾波器
自適應濾波算法一般分為兩類:最小均方算法(LMS)和遞推最小二乘(RLS)算法,RLS優(yōu)勢在于濾波效果更好,但LMS具有結(jié)構(gòu)簡單、計算復雜度低等優(yōu)點,因此更多的研究也集中在LMS上,如歸一化最小均方(NLMS),比例歸一化最小均方(PNLMS)等在濾波性能、收斂速度等多方面對LMS算法進行優(yōu)化和提高。同時,Android中也同樣提供了AcousticEchoCanceler接口可以直接對聲音進行回聲消除,高端智能手機中也會內(nèi)置專業(yè)聲音處理芯片,在硬件層面更好的對回聲進行消除。
4. 多路聲音混疊
游戲中小隊語音會有多個玩家同時說話的情況,并且在玩家收聽語音的同時,游戲的背景音也不可被去除,因此如何使多路語音清晰傳遞并且不會造成爆音是該場景下優(yōu)質(zhì)混音的評判標準。最簡單的混音方式是簡單的時域音頻疊加,強度超過最大值時削峰為最大值來避免爆音,但人為削峰方式會在破壞音頻信號的同時引入額外的噪音;另一種方式是多路聲音線性疊加后取平均,該算法實質(zhì)即把多路音頻音量減小,但聲音路數(shù)時多時少時,該方法會導致每路聲音的音量忽大忽小,影響體驗;因此,在實際使用場景中,更好的方式是根據(jù)每路語音的重要性,在混音時候給予相應的權(quán)重,以保證混音后各路音頻的可識別性。
5. 語音自動增益
自動增益控制技術(shù)在數(shù)據(jù)通信、語音處理等方面應用廣泛,通信信號的信號幅度經(jīng)常會發(fā)生較大波動,通過自動增益技術(shù)可以平滑信號幅度,進而提高通信質(zhì)量。在移動游戲場景中,手機離人嘴部的距離可能依賴于玩家游戲時不同的外部環(huán)境而劇烈變化,因此,平滑每個人的聲音大小及一個人在不同說話時間的聲音大小對語音通話的質(zhì)量關(guān)系重大。在多人實時語音通信的場景中,自動增益可在VAD處理后完成,并且門限值可按照多路聲音混疊中的需求所設定,采用基于能量比較的語音自動增益算法即可實現(xiàn)較好的平滑音量的效果。
圖4 峰值A(chǔ)GC系統(tǒng)結(jié)構(gòu)
6. 流媒體傳輸協(xié)議
常見的流媒體協(xié)議包含RTP,RTMP,HLS,HTTP-FLV等,其中RTMP,HLS,HTTP-FLV由于在國內(nèi)外CDN平臺支持度更高,因此更常見于現(xiàn)今流行的各大直播平臺。RTMP為Adobe專利協(xié)議,協(xié)議延遲較低,國內(nèi)流行度很高,是最常用的推流協(xié)議;HLS為蘋果提出的基于HTTP的流媒體傳輸協(xié)議,支持H5,可多平臺多瀏覽器隨意播放,但延遲較高;HTTP-FLV使用HTTP傳輸FLV格式文件,避免了Adobe協(xié)議綁架,延遲略優(yōu)于RTMP。
在實時性要求較高的視頻監(jiān)控、高清視頻會議領(lǐng)域,RTP為更常用的協(xié)議。其相對于前三種基于TCP的流媒體傳輸協(xié)議相比最大的區(qū)別在于,RTP是基于UDP的協(xié)議的。由于UDP本身是無序的,因此RTP常常與RTCP協(xié)議公用,用于對RTP協(xié)議的包序等內(nèi)容進行控制。同時也可以采用數(shù)據(jù)包擁塞控制協(xié)議(Datagram Congestion Control Protocol,DCCP)來自如的控制擁塞、延遲及數(shù)據(jù)質(zhì)量。如網(wǎng)絡視頻會議領(lǐng)域市場占有率最高的Webex視頻會議系統(tǒng)即采用SRTP(Secure RTP)協(xié)議作為其流媒體傳輸協(xié)議。而目前各大云廠商的互動語音視頻產(chǎn)品也大多采用類RTP協(xié)議——基于UDP協(xié)議優(yōu)化的私有協(xié)議——作為其實時流媒體傳輸協(xié)議,以達到降低延遲、帶寬消耗的目的。
7. 流媒體丟包處理
在移動設備所處的不穩(wěn)定的網(wǎng)絡環(huán)境下,外加游戲全球發(fā)行所帶來的跨地域玩家間的網(wǎng)絡質(zhì)量問題,語音通信需要考慮在網(wǎng)絡抖動丟包的情況下,仍然可以保證玩家間的正常通信。常見的流媒體丟包處理方案有:ARQ、FEC和交叉?zhèn)鬏?。在網(wǎng)絡丟包嚴重的情況下,無法根據(jù)現(xiàn)有報文處理產(chǎn)生明確的語音信息,自動重傳請求(ARQ, Automatic Repeat-reQuest)丟失報文的方式可以將大范圍丟失報文重新傳輸,增加延遲但可以保證數(shù)據(jù)的有效性。前向糾錯(FEC,F(xiàn)orward Error Correction)可以在少量丟包情況下,通過數(shù)據(jù)冗余而非數(shù)據(jù)重傳,來保證數(shù)據(jù)的有效性,降低重傳頻率,減少延遲。算法的核心可類比為二元一次方程,需要兩個方程即可以求出兩個元的解。在FEC中,傳輸三個二元一次方程,因此在丟失一個方程的情況下,我們?nèi)匀豢梢郧蟪鼋?,達到可容忍部分包丟失而不影響信息有效性的目的。
圖5 FEC:在報文3丟失情況下,仍然可以依靠冗余報文恢復原始數(shù)據(jù)
此外,常規(guī)的數(shù)據(jù)包傳輸都是按照嚴格的順序來發(fā)送的,如把一序列數(shù)據(jù)拆分為123,456,789三個報文發(fā)送,一旦一個報文丟失,會產(chǎn)生一整段信息的空白,但在流媒體環(huán)境下,大多數(shù)情況下單幀的丟失內(nèi)容是完全可以通過前后幀的內(nèi)容補償而變得影響很小,因此若采用147、258、369的交叉?zhèn)鬏敺绞椒庋b報文,單個報文的丟失并不會對整體體驗帶來很大的影響。此外,在網(wǎng)絡帶寬允許但丟包不可控的服務期間跨地域傳輸情況下,單幀多包封裝的傳輸方式也可以有效降低丟包導致頻繁重傳帶來的延遲影響。
綜上可知,僅從聲音的處理、協(xié)議的選擇及應對網(wǎng)絡抖動方面,即需要專業(yè)的語音處理研發(fā)人員進行多項優(yōu)化處理措施。然而,這僅僅是從理論層面的論述,在實際的游戲場景中,更重要的是在做到上述所有語音優(yōu)化基礎(chǔ)之上,不能影響游戲的核心玩法,即:1)需要對語音通訊所需的CPU、內(nèi)存及網(wǎng)絡資源進行不斷優(yōu)化降低;2)在面對市面上眾多安卓設備時保持極低的Crash率并隨時適配最新設備;3)支持常用的游戲引擎如Unity, Cocos。 此外,為保證語音全球服務的穩(wěn)定性,架構(gòu)設計的研發(fā)成本、多地域間專線連接成本及后期運維成本等問題都是游戲廠商自建游戲內(nèi)語音服務的眾多阻礙。
原文鏈接:https://cloud.tencent.com/developer/article/1046538
【本文是51CTO專欄作者“云加社區(qū)”的原創(chuàng)稿件,轉(zhuǎn)載請通過51CTO聯(lián)系原作者獲取授權(quán)】