歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐干貨哦~
經常逛游戲論壇的朋友會深有感觸,很多玩家經常會在論壇里吐槽在網吧開黑的體驗很差,噪音太多。在游戲語音開黑的過程中,如果其中一個隊友身處網吧,則其他人的耳機總是難免會被各種嘈雜的噪音所充斥,這是十分糟糕的體驗,甚至會影響整個團隊的發揮,那么在這樣的場景下,降噪就成為了提升游戲體驗的基本操作。
網吧場景下的降噪難度往往大於普通噪音環境下的降噪難度,其源於網吧的噪音環境和普通的噪聲環境差別很大,網吧的噪音來源比較廣泛,包括有眾多人的聊天、呼喊聲,大幅度的鼠標鍵盤敲擊聲,桌椅挪動人員走動等等,有些網吧還像理發店那樣廣播背景音樂及一些語音廣播。並且網吧座位離得較近,幾乎每個人左右都有很近的鄰居,這些近距離的聲音互相干擾更加惱人。
消除這些復雜的噪音卻不是一件簡單的事情,網吧環境下的噪聲幾乎都是非平穩的,所以傳統噪聲消除方法難以很好的應用在網吧場景下。騰訊雲游戲多媒體引擎GME(Gaming Multimedia Engine,以下簡稱 GME)針對網吧場景提出了一套降噪技術解決方案,能在復雜的環境下將噪音對語音的影響降到最低。
如何在復雜的網吧環境下實現降噪?
在網吧嘈雜環境下的降噪訴求是:隊友不講話時,聽不到任何其他聲音,當隊友講話的時候,希望聽到的是隊友清晰的聲音,當隊友話畢其他聲音隨即靜默。
以上要解決的問題可以抽象成嘈雜環境里單一主講人的通話處理。針對可容忍的體驗訴求,需要一個排除主講人以外聲音的語音活性檢測算法(VAD)。而這個VAD算法和常規意義的語音檢測有所不同,因為它不但要排除掉非語音,還要排除掉主講人以外的語音,否則隊友附近的人的話音甚至環境較遠處的嘈雜語音仍會被發送給耳機這頭的你。
針對這樣的情況,GME朝着滿足訴求的方向,給出了這個“VAD”算法,流程如下:

在判斷聲音性質時,一個要進行的過程是,計算語音的相關性,相關性測度定義如下:
E(τ)=N−1∑n=0[s(n)−βs(n−τ)]2
其中 β 為增益因子,N 為分析幀長。令∂E(τ)∂β=0 ,求得:
β=N−1∑n=0s(n)−βs(n−τ)N−1∑n=0s2(n−τ)
從而,有
E(τ)=N−1∑n=0s2(n)−[N−1∑n=0s(n)s(n−τ)]2N−1∑n=0s2(n−τ)
相對誤差能量為
R[E(τ)]=E(τ)N−1∑n=0s2(n)=1−ρ2(τ)
其中
ρ(τ)=N−1∑n=0s(n)s(n−τ)√N−1∑n=0s2(n)N−1∑n=0s2(n−τ)
為了得到這個結果,還需要做一些預處理:
1,去均值:分析窗口內非零均值或非常低的低頻噪聲出現時,ρ(τ) 會在所有τ 上都很大,這對依賴ρ(τ) 進行清濁分類時的安靜段語音尤其麻煩。解決辦法是去掉均值:
s′(n)=s(n)−1NN−1∑n=0s(n)
2,低通濾波:為減小高頻共振峰和高頻噪聲的影響,要進行一個800赫茲的低通濾波,去掉大部分共振峰影響,並可以再基音頻率最高500赫茲時仍能保留其一次,二次諧波,其技術指標要求為:
1T=8000Hz ,ωc2π=800Hz,ωr2π=1200Hz,1−δ1=−0.25dB,δ2=−50dB
據此,由雙線性變換法設計一個五階的濾波器,幅頻響應如圖:

3,數值濾波:
上述低通濾波可以較為有效的去掉第三個第四個共振峰的影響,但前兩個共振峰的影響仍然存在,濁音語音周期性會模糊,為了去掉這一影響,進行數值濾波。數值濾波能正確顯現信號的趨勢,如上升沿:
y(n)=12K+1K∑i=−Kx(n+i)
但這個是個非因果的數字系統,為了因果性改寫如下:
y(n)=1NN∑i=0x(n−i)
注意,這個過程引入了算法延時。在一些參數編碼原理的語音編碼器中,會用LPC過程的殘差來估計基音周期,就是因為殘差經過“白化”排出了共振峰影響。因為lpc分析主要產出並非為計算基音,而其又涉及加重疊窗又需要求解尤利沃克方程或burg迭代所以本文並未使用。
我們最終關心的是,周期性水平的度量,我們定義如下
Zperiod=ρmax1+ρmax2+ρmax33+ρmax
當這個周期性水平滿足條件后,還要看周期是否滿足語音信號基音周期范圍:語音信號的基音頻率范圍是60Hz到500Hz;對於8k采樣,用采樣周期表示的區間為[80,147],[40,79],[20,39],同時滿足周期性和周期范圍,我們認為該聲音性質具備語音特性。
其他環節,諸如底噪包絡跟蹤,主講聲強跟蹤這里不再詳述。
在此方案下,我們將大部分嘈雜的聲音從時間段上全部排除掉了,如圖:
上側:原始聲音,下方:排除掉嘈雜后的聲音
通過效果圖可以明顯看到,噪聲被大大的抑制了,但沒有影響玩家正常的語音對話,網吧嘈雜環境的訴求得到了滿足。
通過自研技術,GME已經能在復雜的網吧環境下也准確的檢測到特定的人聲並有效的去掉環境音或其他玩家帶來的噪聲,給玩家帶來了極致的開黑體驗,讓好友之間的語音互動不再有噪點,目前游戲多媒體引擎GME 已正式登陸騰訊雲,為廣大游戲廠商開發者提供服務,詳細信息可點擊這里瀏覽。
問答
策略游戲服務器概念是什么?
相關閱讀
3行代碼,為QQ輕游戲加上語音互動能力
實時語音趣味變聲,大叔變聲“妙音娘子”Get一下
內行看門道:看似“佛系”的《QQ炫舞手游》,背后的音頻技術一點都不簡單
雲學院 · 課程推薦 | 騰訊專項技術測試組長,結合8年經驗為你細說冷熱分離法則
此文已由作者授權騰訊雲+社區發布,更多原文請點擊
搜索關注公眾號「雲加社區」,第一時間獲取技術干貨,關注后回復1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社區!
