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