在上一篇 “Gating自動混音器(一)“,我們已經(jīng)了解了Gating自動混音器是干什么用的,它主要解決的問題是什么。在有多個麥克風(fēng)的場景下,傳統(tǒng)的做法是將多個麥克風(fēng)混音輸出到音箱。這樣的做法不可取,它可能導(dǎo)致的問題是,一、及其容易產(chǎn)生嘯叫,因?yàn)?路信號混音,總輸出增加3dB,更何況多支呢。二、即使可以通過增益比例去控制每只麥克風(fēng)在總輸出中占的比例,以達(dá)到總輸出不增加的目的,也非常容易導(dǎo)致說話人說話的聲音太小,聽不清楚。基于以上原因,才會有自動混音的出現(xiàn),自動混音徹徹底底地解決了根本問題。自動混音分為Gain-Sharing(增益共享)和Gating(門限)兩種類型,現(xiàn)在所講的是Gating類型自動混音。
上一期已經(jīng)講了Gating自動混音所應(yīng)具備的一些基本參數(shù)及含義,留下了一個關(guān)鍵點(diǎn),自適應(yīng)噪聲閾值如何獲取?在開始之前,先來看看為什么門限自動混音可以解決上邊提到的問題。
從圖中可以看出,每只麥克風(fēng)都有個Gate(門),當(dāng)麥克風(fēng)信號超過這個門限以后,才會導(dǎo)通信號。通過的信號和普通混音無異,混音之后通過一個由NOM(打開的麥克風(fēng)數(shù)量)控制的衰減因子,達(dá)到總輸出不變的目的。 在多只麥克風(fēng)的情況下,不會存在每個人都會在同時(shí)說話,正在同時(shí)說話的麥克風(fēng)只有那么1-3只而已。其他未說話的麥克風(fēng)將被關(guān)閉,不會被導(dǎo)通。這樣既可以保證總輸出不產(chǎn)生反饋,每只麥克風(fēng)說話的聲音又可以聽得清楚。
NOM:Number Of Open Mics. 算法實(shí)時(shí)計(jì)算打開的麥克風(fēng)數(shù)量,如果大于NOM Limits 設(shè)定的數(shù)量,新打開的麥克風(fēng)將從已經(jīng)打開的麥克風(fēng)中搶占優(yōu)先級最低的一個, 如果沒有找到,該麥克風(fēng)不會被導(dǎo)通, NOM Limits起到一個限制作用。
在這里面,Gate是關(guān)鍵,如何保證麥克風(fēng)有信號的時(shí)候被打開,沒有人說話就不會被打開。簡單一點(diǎn),可以采用對每一只麥克風(fēng)設(shè)置一個開關(guān)閾值,信號超過閾值的時(shí)候就導(dǎo)通,小于閾值就關(guān)閉。 在很久以前,就是這么做的,并且使用了很長的一段時(shí)間。此方法不是特別的方便,環(huán)境噪音提高了,必須得手動去調(diào)整閾值。
在嘗試中,我考慮了2種方法:
1. 人聲檢測 , 只有說話的時(shí)候才被打開,不說話關(guān)閉 。
2. RMS電平檢測。
在DSP系統(tǒng)中,除了能實(shí)現(xiàn)模塊功能,另一個最重要的就是資源了。這個算法占用的CPU資源類不應(yīng)超過5%, 人聲檢測不能采用太過復(fù)雜的基于統(tǒng)計(jì)模型的算法,一個麥克風(fēng)需要檢測一次,共有32個麥克風(fēng),這將勢必不可取。后來嘗試了短時(shí)過零率和短時(shí)能量等方法。結(jié)果不太理想,應(yīng)該來說檢測結(jié)果不太理想,有時(shí)說話了確不出聲,一句話的前面幾個字像被吃掉了一樣。 總結(jié)來說,短時(shí)過零率等方法并不能準(zhǔn)確判斷語音,第二個這類檢測方法都需要延時(shí)緩沖,大概10ms檢測數(shù)據(jù),吃字也是正常的。 被拋棄的想法就不細(xì)說了,有興趣的可以看看相關(guān)資料。
采用RMS檢測方法, RMS我們都知道,就是均方根嘛。相對來說算法簡單易實(shí)現(xiàn), 根據(jù)過去一段時(shí)間的RMS值作為該麥克風(fēng)的參考噪聲閾值。這里面最重要的就是時(shí)間的選取,要反應(yīng)的是過去的噪聲水平,而不是有信號的狀態(tài)。語音信號屬于非平穩(wěn)信號,利用這一特點(diǎn)應(yīng)取最小值。記為瞬態(tài)RMS, N取值30ms對應(yīng)的采樣值。 T為噪聲閾值,等于過去的K幀RMS最小值, K值根據(jù)實(shí)際情況調(diào)節(jié)。
K 取值依據(jù),應(yīng)大于說話尾音所能持續(xù)的時(shí)間,正常說話一個字也就100多ms,字與字之間會出現(xiàn)停頓,噪聲閾值的依據(jù)也就是停頓期間的噪聲水平。說一個情況,同事在測試期間,一個字不停的拖尾音,喂……….,持續(xù)10幾秒。這種情況導(dǎo)致算法提高了噪聲閾值,剛開始可以導(dǎo)通,之后的喂出不了聲。 那么這個K值應(yīng)取得更大,K*30ms 需要大于最大能持續(xù)的時(shí)間才能檢測到空隙。
根據(jù)測試情況,RMS方法可以作為自適應(yīng)噪聲閾值判斷的方法。在測試中,會存在另外一種情況,一只麥克風(fēng)說話時(shí),另一只麥克風(fēng)采集到了音箱擴(kuò)聲的信號被打開。如果NOM Limit設(shè)置成1,只允許一個麥克風(fēng)打開。采集信號的麥克風(fēng)就會搶占說話的麥克風(fēng),引起兩個麥克風(fēng)互相切換。此時(shí),應(yīng)調(diào)節(jié)2個參數(shù),一是保持時(shí)間,第二個靈敏度。
保持時(shí)間,停止說話后,該麥克風(fēng)保持多久才關(guān)閉,改時(shí)間要設(shè)置得比混響傳遞時(shí)間大一點(diǎn)。
靈敏度,實(shí)際上信號超過自適應(yīng)噪聲閾值+靈敏度才能判定為可以打開麥克風(fēng)。靈敏度需要設(shè)置高一點(diǎn),即使有反饋也不會輕易打開話筒。
以上就是Gating自動混音的全部內(nèi)容,代碼就不貼了,也沒什么意義,關(guān)鍵還是思路吧。
-
麥克風(fēng)
+關(guān)注
關(guān)注
15文章
637瀏覽量
54826 -
混音
+關(guān)注
關(guān)注
0文章
6瀏覽量
7701 -
混音器
+關(guān)注
關(guān)注
2文章
27瀏覽量
13069
原文標(biāo)題:Gating 自動混音(二)
文章出處:【微信號:ddongcloud,微信公眾號:嵌入式DSP】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論