隨著(zhù)手機性能的提高,手游開(kāi)始向復雜化發(fā)展。不再是以消消樂(lè )這種簡(jiǎn)單的小游戲為主,RPG、實(shí)時(shí)對戰類(lèi)游戲開(kāi)始變火。
這種游戲,由于有玩家間的交互,有團隊作戰、配合,保證玩家能夠進(jìn)行實(shí)時(shí)語(yǔ)音通話(huà),成為極大的需求。
本文將說(shuō)明游戲語(yǔ)音通話(huà)的難點(diǎn)在哪?
現在的游戲語(yǔ)音通話(huà)解決方案存在什么問(wèn)題?
目前有兩種解決方案:
1、第三方通話(huà)APP
這種方案,第三方的APP獨立在后臺運行,比如YY語(yǔ)音手機版。這種方案存在兩個(gè)問(wèn)題:
- 音效和語(yǔ)音的音量無(wú)法控制在一個(gè)合理比例,無(wú)法統一調節;
- APP在后臺運行,會(huì )自己關(guān)閉,或者掉線(xiàn)。
- 對手機性能要求很高,容易增加耗電量,造成手機發(fā)燙。
2、集成在游戲APP里的語(yǔ)音功能。
這種方案存在的問(wèn)題是:
由于適配問(wèn)題,安卓機型上游戲音效會(huì )被對方聽(tīng)到,或者說(shuō)話(huà)會(huì )有回聲。
游戲語(yǔ)音通話(huà)方案最注重什么?
1、游戲玩家最關(guān)心游戲語(yǔ)音的實(shí)時(shí)性。
高對戰游戲處處要求快,要求低延時(shí)。網(wǎng)游中,團隊下副本,最影響團隊成功率的就是加血的角色。一旦這個(gè)人加血加慢了,導致一個(gè)人犧牲。在激烈的時(shí)候,損失一個(gè)人的代價(jià)基本就宣判團隊的死刑。
從技術(shù)的角度而言,要求的不是加血快,是加血的流程快。我們之前和強大的競爭對手競爭PC上游戲通信軟件地位的時(shí)候,是什么案例讓我們活下來(lái),就是一個(gè)加血的案例。我們用對手的軟件,隊友說(shuō),加血,加血。結果等了1s~2s才傳到保姆那里。可想而知,血還沒(méi)加,就掛了。而用我們的軟件,加血成功的概率提高了幾倍幾十倍。就算跨國玩游戲,我們延時(shí)也不過(guò)百毫秒。所以當時(shí),玩家像愛(ài)惜槍一樣愛(ài)惜、使用我們的軟件。
2、游戲廠(chǎng)商最關(guān)心的是占用系統資源量和耗電量
游戲廠(chǎng)商如果選擇語(yǔ)音通話(huà)SDK集成方案,那么SDK占用系統資源量和耗電量會(huì )起到很大的影響因素。SDK編解碼器、前后端處理性能差,造成手機CPU、內存吃緊,會(huì )影響游戲體驗,游戲卡,讓手機發(fā)燙,導致手機耗電量增加。這對一個(gè)游戲來(lái)說(shuō),是致命的硬傷。
這些恰恰是聲網(wǎng)Agora音視頻引擎通過(guò)多年研發(fā)和技術(shù)積累能給大家提供的技術(shù)特性和產(chǎn)品特性。聲網(wǎng)Agora。io實(shí)時(shí)云技術(shù)團隊,曾經(jīng)提供10億分鐘每天的運營(yíng)支撐,最多180w人同時(shí)在一個(gè)頻道內實(shí)時(shí)視頻直播服務(wù)。并且可以提供多聲道甚至帶有垂直聲道的音頻音效系統。并提供“軍用”級的低延時(shí)傳輸系統。通過(guò)這些來(lái)助力VR游戲實(shí)現通信和直播的業(yè)務(wù)需求。
接下來(lái),就以聲網(wǎng)Agora.io的語(yǔ)音通話(huà)SDK為例,說(shuō)明SDK解決方案如何解決這些問(wèn)題。
聲網(wǎng)Agora.io是如何做的
通常整套的實(shí)時(shí)云通信系統概述下來(lái)包括后臺技術(shù)、客戶(hù)端技術(shù)和運維技術(shù)等等。
全高清音頻通信系統,首先要怎么搭建這樣一個(gè)系統,通常搭建一個(gè)最小音頻子系統分成下面幾個(gè)步驟:
1、采集播放。如果把采集的數據存成文件,或是交給播放,就形成一個(gè)閉環(huán),我稱(chēng)他為第一閉環(huán),也可以稱(chēng)為ADM(audio device module)。
2、編碼解碼。只有采集播放還不夠,數據量太大,還要加上編碼解碼,進(jìn)行數據壓縮,采集壓縮后的數據再解壓縮播放,我稱(chēng)他為第二閉環(huán),加上的這個(gè)編解碼模塊叫作ACM(audio coding module)。
3、網(wǎng)絡(luò )模塊。實(shí)現網(wǎng)絡(luò )發(fā)送接收,ANM(audio network module),我叫他第三閉環(huán)。
4、前后處理模塊。也就是第四閉環(huán),Audio Processing module。這個(gè)模塊主要實(shí)現3A引擎:回聲消除AEC,增益控制AGC,噪聲抑制ANS。
1.回聲消除
AEC是3A引擎的一部分,是很重要的一部分,為什么第一個(gè)問(wèn)題就是它。因為拿起電話(huà),除非你打不通,打通了,不管質(zhì)量怎么樣,聲音一出來(lái)就是回聲,我在音頻行業(yè)做了11年,說(shuō)長(cháng)不長(cháng)說(shuō)短不短,深知國內公司做音頻通常有個(gè)一很好的標準,“出聲就行”。但是沒(méi)有回聲消除,你出聲就是噪聲,最基本的底線(xiàn)都滿(mǎn)足不了。
那么,是什么問(wèn)題困擾我們這么久,它就是回聲,準確說(shuō)是聲學(xué)回聲。自己的聲音傳到遠端再通過(guò)遠端的麥克風(fēng)錄音傳回來(lái),就是回聲。回聲從信號特性上看,有線(xiàn)性部分和非線(xiàn)性部分。回聲消除就是要通過(guò)信號處理算法消除這些回聲,消除回聲的線(xiàn)性部分和非線(xiàn)性部分。有電話(huà)的年頭就有回聲,早期是線(xiàn)路回聲,都是線(xiàn)性的,很好處理,一個(gè)自適應濾波器,搞定了。
回聲消除的算法算算也有幾十年了,為什么今天還要研究?不是搞定了嗎,一個(gè)自適應濾波就搞定了。不是的,回聲問(wèn)題和設備緊密相關(guān)。一個(gè)回聲消除算法的設計實(shí)現和其他算法設計實(shí)現有很大的區別,因為它和設備緊密相關(guān),和系統狀態(tài)緊密相關(guān)。早期,GIPS和某些AEC算法提供公司,通常設計AEC模塊的時(shí)候,都是給固定電話(huà)和移動(dòng)電話(huà)設備設計,是給定的一款設備,也就是說(shuō),芯片廠(chǎng)商設計公版硬件,找合作伙伴或是自己設計AEC模塊,然后針對該款設備調試AEC參數,調好之后就不變了,以后所有該款設備的出貨都用這組參數,一旦換了設備,軟件要重新調。當初GIPS,SpritDSP就是做這些事情的公司。如果有人參與過(guò)手機出廠(chǎng)的回聲消除設計,你就知道每款手機的回聲消除參數都不同。
那么為什么回聲消除為什么和手機設備關(guān)系這么大呢?是信號特性決定的,回聲是聲音經(jīng)過(guò)揚聲器傳導到mic,經(jīng)過(guò)了多少路徑就被處理多少次。通常手機由于聲腔的原因,沒(méi)辦法設計的音量很大所以當你放大音量的時(shí)候,如果是10格調整的音量放大器,前5格還是線(xiàn)性放大,5格以上就是非線(xiàn)性放大,這是揚聲器第一級處理。
聲音從外部傳給mic,經(jīng)過(guò)空氣和手機殼,設備殼的特性的傳導作用產(chǎn)生第二級的非線(xiàn)性影響。不同的手機殼,鐵殼,塑料殼,甚至手機殼發(fā)熱導致聲傳導特性不一樣,都會(huì )影響聲音傳導的處理,導致回聲消除算法不一樣。我曾經(jīng)遇到過(guò),一套收回聲消除算法,換不換殼,就能決定算法工不工作。這是手機。
還有pc,如果pc外接音箱,音箱一般多少都會(huì )自帶功放,又是非線(xiàn)性放大。設備mic的位置也緊密相關(guān),早期有一款thinkpad,mic和speaker離的非常近,極其難處理。談來(lái)談去,好像都是非線(xiàn)性放大的問(wèn)題嘛,是的,線(xiàn)性的東西是科學(xué),非線(xiàn)性的東西是藝術(shù)。可以說(shuō),設備的差異性導致非線(xiàn)性問(wèn)題,非線(xiàn)性信號的處理是回聲消除技術(shù)的第一個(gè)攔路虎。
非線(xiàn)性回聲問(wèn)題是不是全部呢?不是的。回聲消除除了和設備有關(guān),還和系統有關(guān)和系統有什么關(guān)系,回聲消除兩大模塊,自適應濾波和非線(xiàn)性處理,一個(gè)是線(xiàn)性處理,一個(gè)是非線(xiàn)性處理。上一段說(shuō)了非線(xiàn)性處理,線(xiàn)性處理部分還有問(wèn)題,自適應濾波前置第一個(gè)模塊就是延時(shí)搜索,其實(shí)WebRtc本身的延時(shí)搜索技術(shù)是非常先進(jìn)的,是由這個(gè)領(lǐng)域的大牛Keilgn大師設計的專(zhuān)利技術(shù)。但是大師東西雖好,但是有個(gè)依賴(lài),延時(shí)估計要在一定范圍內估計,就是要有一個(gè)預先設計的值,如果在一個(gè)很大的范圍內搜索,會(huì )極大消耗CPU資源。而這個(gè)預設的delay值通常不準,為什么不準呢?因為安卓系統線(xiàn)程調度設計不是很實(shí)時(shí)導致。一旦資源搶占,會(huì )在安卓底層buffer產(chǎn)生莫名的延時(shí)導致delay不準。還是那個(gè)問(wèn)題,每款手機甚至每個(gè)手機都不一樣。我遇到過(guò)一種情況,某國內手機品牌,不同款手機delay不準,同款手機不同子款比如(帶不帶s)。同款手機不同批次,delay不同,同款手機同一批次不同時(shí)間測試delay都不同。如何拿到穩定的低延時(shí)的聲音信號,為此,谷歌專(zhuān)門(mén)有個(gè)一視頻教程。無(wú)奈,安卓手機的碎片化和私人裁剪導致這個(gè)問(wèn)題無(wú)法一致性解決。
那么Agora怎么做的呢,Agora的回聲消除技術(shù),發(fā)展到今天,已經(jīng)是第四代回聲消除技術(shù)。
聲網(wǎng)Agora的第三代回聲消除技術(shù),通過(guò)逐個(gè)機型的適配。累計適配了幾百款機型,而我們的第四代“免”適配技術(shù)保證我們實(shí)現4000款機型的適配。
聲網(wǎng)Agora的“免”適配,免帶一個(gè)小引號。聲網(wǎng)Agora的免適配和適配相互配合,適配的機型,效果更好。不適配的機型是公版算法,基本也沒(méi)有大問(wèn)題,一般不會(huì )出現整句回聲。只會(huì )間或的出現小回聲,比如2分鐘1次,或是10分鐘1次的殘留回聲。很小的回聲也會(huì )有,不想適配過(guò)的手機,你完全聽(tīng)不到回聲。適配的機型,聲網(wǎng)Agora有整套測試方法驗證;免適配的機型,聲網(wǎng)Agora依靠線(xiàn)上數據的反饋,判斷“免”的效果。也正是依賴(lài)聲網(wǎng)Agora線(xiàn)上數據的反饋,才能做到“免”適配。
如果線(xiàn)上數據反映效果不好,聲網(wǎng)Agora會(huì )嘗試聯(lián)系用戶(hù)和采購機型進(jìn)行適配。正是因為聲網(wǎng)Agora充分適配了足夠多的機型,接觸過(guò)各式各樣的回聲消除技術(shù)和歷史才有這個(gè)把握掌握開(kāi)發(fā)進(jìn)階技術(shù)。如果“免”適配技術(shù)無(wú)法滿(mǎn)足,立刻有適配技術(shù)補上。結合聲網(wǎng)Agora網(wǎng)絡(luò )傳輸的優(yōu)勢,“免”適配和適配互相配合,助力聲網(wǎng)Agora實(shí)現很好的回聲消除效果。當然回聲消除只是我們APM引擎的一部分。在A(yíng)PM里,還有降噪技術(shù),單麥克降噪雙麥克降噪,聲網(wǎng)Agora在個(gè)別機型上開(kāi)啟了雙mic降噪功能。
2.測試評估
聲網(wǎng)Agora的評估體系有三個(gè)層次:
第一層次,客觀(guān)測試。我們把手機出廠(chǎng)測試和VOIP測試相結合,提出了我們的測試方法、這個(gè)測試方法是ITU、3GPP、ETSI或是電信運營(yíng)商要求測試的標準通信測試的交集。按照這套方法,我們經(jīng)常會(huì )去泰爾實(shí)驗室做客觀(guān)測試。國內我們是第一個(gè)互聯(lián)網(wǎng)廠(chǎng)家把這套測試用在云服務(wù)標準上的。
第二個(gè)層次,主觀(guān)測試。因為客觀(guān)測試只是一個(gè)基本測試,很多手機出廠(chǎng)都做,但是出廠(chǎng)之后還是有很多很多問(wèn)題,尤其對我們這樣的全平臺多機型通信引擎,只做客觀(guān)測試是不夠的,所以我們定義出很多細的標準,比如,聲音質(zhì)量、卡、失真、回聲情況、雙講情況、是否有切音、延時(shí)等等。安排測試人員,對海量機型,逐個(gè)機器逐個(gè)機型的去聽(tīng),去感受我們音頻的效果。
第三個(gè)層次,線(xiàn)上測試。也就是線(xiàn)上用戶(hù)的使用反饋,我們兩個(gè)DemoAPP,一個(gè)就是我們的Beckon,可以在A(yíng)ppStore搜索到,這個(gè)APP是我們用來(lái)做實(shí)驗和演示的。用戶(hù)可以體驗Beckon的效果,我們收集用戶(hù)的反饋,判斷我們音頻系統的質(zhì)量。
通過(guò)這三個(gè)層次的測試,我們能保證提供最好的音頻通信引擎。高清音頻通信引擎,整個(gè)通信系統都是32khz音頻采樣頻率,對系統的ADM,APM,ACM,ANM要求的處理算法都針對32Khz。我們比通信標準更早的把32Khz代入實(shí)際應用,今天VoLTE還沒(méi)有普及全高清音頻傳輸系統,而我們做到了。
本文作者:
高澤華,11年音樂(lè )語(yǔ)音編解碼學(xué)習經(jīng)驗。理解幾十種音頻編解碼標準。先后在中磊電子、士蘭微電子、虹軟科技主導音頻項目。任職YY期間負責語(yǔ)音音頻技術(shù)工作。對音頻算法在芯片設計、嵌入式系統、桌面軟件。在互聯(lián)網(wǎng)應用和專(zhuān)利分析方面有多年研發(fā)經(jīng)驗和積累。目前負責聲網(wǎng)Agora。io的音頻開(kāi)發(fā)工作。