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

2021-09-14 00:42:55 字數 4073 閱讀 9314

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

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

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

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

圖1 語音預處理常規流程

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

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

圖2 vad處理過程

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

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

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

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

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

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

圖4 峰值agc系統結構

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

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

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

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

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

基於深度學習的語音增強-極簡源**

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

早在2015年,艾媒諮詢即有移動遊戲社交相關資料統計 近40 的玩家因為社交因素選擇一款遊戲 15.6 的玩家因為一款遊戲社交性差而選擇離開。因此,如何提高遊戲的社交屬性已成為各大遊戲廠商遊戲策劃的重要組成部分。從小隊戰鬥 團隊副本,到遊戲排名 pvp團隊競技 公會 家族等遊戲玩法,無一不是為了增強...

ajax 實時進度 如何做好專案進度管理?

有效實施專案進度管理,是專案成功的重要保障,專案進度管理是每位專案經理必須非常重視的工作。在專案管理過程中,進度控制意味著監控專案狀態的方法,從而更新和管理專案變更到預定基線,以實現目標。作為專案管理活動,專案中的進度管理可以幫助您了解專案是否提前完成。因此,專案經理可以 重要的行動,並管理基線的變...

APP使用者體驗提公升的辦法 如何做好APP使用者體驗?

那麼使用者體驗提公升有什麼方法呢?一 換位思考 思考 當我們站在使用者的角度去感受應用,那麼僅僅去思考如何通過各個專案 功能和按鈕在頁面上的布局來實現使用者友好度的話是遠遠不夠的。我們還需要想到使用者在現實場景中的真實使用方式,想到當他們使用其他應用的時候會對你的應用產生什麼樣的影響,是會干擾到執行...