
帶有SpeechSense算法的AGC在音頻系統中的應用
發布日期:2019-07-17 瀏覽量:1820次
自動增益控制(簡稱為“AGC”)可以在信號的輸出端提供穩定增益,而不受輸入端增益不同的影響。本文主要闡述了AGC的工作原理以及在音頻系統中的具體應用。
一直以來,傳統的AGC在應用中存在一個嚴重的技術缺陷,即:當環境噪聲大于所設定的閾值 并且講話者停止講話時,AGC會自動將環境噪聲放大至所需電平。此時在系統中會出現極大的噪聲。 如果我們將閾值提高又會出現講話聲音小的人無法正常啟動AGC。Biamp開發了一種叫做“SpeechSense (人聲辨識)算法”可以智能化地創建閾值和提供可選的“語言模式”,此功能限制了AGC只有在識別到人聲的時候才對信號進行AGC處理, 從而徹底消除AGC誤啟動的問題。在本文中,將會詳細的介紹SpeechSense算法的工作原理以及在音頻系統中的具體應用和系統調試中的注意事項。
1)什么是AGC?
AGC 是英文“Automatic Gain Control”(自動增益控制)的縮寫。AGC在各個行業中的應用非常廣泛。在模擬電路時代, AGC的控制精度和速率是由模擬電路的設計和電子元件的精度所決定的,我們稱之為AGC的工作特性。
大家都知道,現在的音頻處理核心產品大都采用DSP芯片進行設計,因此我們將之統稱為音頻DSP處理器。實際上,與以往的模擬AGC電路不同,DSP處理器的電路設計大同小異,所采用的芯片也大都雷同。而所有的DSP處理器所支持的功能,如:濾波器,分頻器,路由器,混音器,AGC等等都是由“算法”來實現的。因此,AGC的工作特性完全能取決于AGC算法。
2)為什么音頻系統需要AGC?
在實際的音頻會議系統應用中,經常會出現以下這些情況:
由于性別的原因或講話者的各自習慣不同,有的人聲音大些,有的人聲音小些,有的人喜歡離話筒遠些,有的人喜歡離話筒近些,這些情況會導致在音頻系統的輸出端的音量幅度產生巨大的差別。
AGC可以針對上述這些情況自動給與“增益補償”。通俗一點的講,當講話者的聲音太大的時候, AGC會自動降低增益,從而使會議的擴聲維持在一個恒定的音量上;反之,講話者的聲音太小,AGC會自動提高增益,以確保系統仍然維持在恒定的音量。在音頻系統中,AGC可以根據“要求”對聲音信號自動給予“增益補償”。因此通常用于調節各種會議系統的不同講話者的聲音音量平衡。
3)傳統AGC是如何解決這些問題的呢?
首先,我們先來學習幾個技術名詞:
· Level源信號電平:講話者的聲音經話筒拾音,進入音頻處理器的原始電平;
· Min Threshold 最小電平閾值:啟動AGC的最小電平值;
· Target Level 目標電平:我們所需要的,經過AGC自動調整的電平。 當輸入電平大于所設定的Min Threshold, AGC會啟動并自動根據所設定的Target Level對源信號進行增益補償,并保持輸入信號為恒定的Target Level.
當源信號電平大于最小電平閾值(Min Threshold)但小于目標電平(Target Level)時, AGC啟動并對源信號自動提高增益至目標電平 (Target Level)。如圖一所示:
(圖一)源信號電平大于最小電平閾值
紅色代表經AGC調整后的 電平曲線,藍色代表未經AGC調整的源信號電平曲線。當源信號電平小于最小電平閾值(Min Threshold), AGC關閉,從而防止AGC將噪聲電平放大輸出。
源信號電平小于最小電平閾值
當源信號電平大于最小電平閾值(Min Threshold),并大于目標電平(Target Level)時, AGC啟動并自動衰減輸入信號增益至目標電平(Target Level)。從而實現對輸入信號的自動增益控制,并且在輸出端維持一個相對恒定的 音量。見圖三:
源信號電平大于目標電平
4)傳統AGC在實際應用中的問題
上文中我們提到,當源信號大于所設定的Min Threshold,AGC不工作。 其目的是避免AGC電路錯誤地提升系統的噪聲信號。只有在源信號大于某一設定值時,我們才認為此信號為有用信號并對此信號進行AGC平衡電平。
這種設計方案看似非常合理,但在實際工作中卻屢屢出錯。比如:我們所用的所有的語音通信軟件(如:QQ, Skype, Lync等等)都支持AGC, 但在實際使用中經常出現的問題是,當兩端的人都不講話的時候,可以非常明顯地感覺到對方的噪聲的提升。
究其原因, 在實際工作環境中,噪聲的值實際上很難預測,它與有用信號之間有很大的重疊區域,但我們給定一個Min Threshold的時候,不是當有用信號非常低時AGC沒有啟動,就是噪聲信號高于Min Threshold, AGC錯誤的啟動。
因此,在很長的一段時間,業內都沒有一個徹底地解決方案。
5)帶有SpeechSense (人聲辨識)算法的AGC的工作原理
下面我們來看一下BIAMP的AGC是如何解決這個問題的。
綜上所述,其實只有一種辦法能夠徹底地解決AGC不能正確啟動的難題。那就是,真正判斷源信號是否為有用信號。通常在絕大多數情況下,AGC是用在傳聲話筒的鏈路里,因此,只要我們能夠判斷源信號是否為人聲就可以了。
其實,人聲辨識已經不是一個新課題了。經研究,人們發現所有人類的語言有兩種元素是與動物和環境聲截然不同的。即Plosive 爆破音和Fricative摩擦音。比如:中文的“破”和“刺”, 或英文中的“Bob”和“Fish”。因此,只要我們對源信號進行采樣并辨識是否有爆破音和摩擦音的存在,就可以判定此信號是否為人聲。
從原理上講,似乎并不困難。但如前文所提到的,AGC的性能完全取決于算法。在極短的時間內(通常只有十幾毫秒),SpeechSense AGC算法要完成對源信號的采樣、分析、 運算,因此對算法的效率要求極高,并且對信號的人聲片斷分析的準確性要求極為嚴格,要在最大限度內保證AGC啟動的準確性。BIAMP的AGC不僅可以快速準確的完成增益自動補償,更重要的是它可以非常準確地辨識出源信號是否為人聲,從而確保AGC只有在講話者使用時啟動,有效的避免了AGC誤啟動所造成的噪聲過大的問題。
6)SpeechSense (人聲辨識)算法的AGC的參數設定
下面我們來具體看一下有關SpeechSense AGC的一些參數是如何配置的。
輸入源電平:通常,我們調試話筒的時候, 要確保講話者與話筒的距離比較合理,且用正常的聲調對著話筒講話,此時在輸入源電平的讀數應在“0dB”左右。 由于傳聲話筒的靈敏度和指向性以及所在環境的空間噪聲不同,在無人講話的時候,輸入源的最低電平應該在-40dB到-20dB之間(如電平顯示過高,則表明現場環境噪聲過大)。此時,最小電平閾值(Min Threshold)應該調整為略高于無人講話時的輸入源的最低電平。(有關增益結構的詳細內容可到http://cn.Biamp.com/ , 點擊進入audia, 參考“增益結構”的視頻)。
輸出增益調節指示:是指在AGC自動增益調節之后的音頻輸出補償的數值。補償是根據目標電平和輸入電平之差所決定的。例如:當源信號的電平為-10dB, 目標電平為0dB,那么輸出補償為+10dB.
AGC增益保持時間:當AGC不滿足啟動條件時(比如:源信號電平低于Min Threshold或源信號為非語音信號), 輸出增益調節所保持的時間。例如:如圖當系統檢測到AGC在60秒后仍然沒有啟動,輸出增益調節會自動歸零。
最大AGC提升增益:可以設定AGC自動增益的提升范圍。最大值為30dB,在實際使用中, 我們建議的范圍是0~12dB。因為,如以正常情況來調試系統,一般會議系統的本地擴聲的凈空為6~14dB。也就是說,如果AGC將話筒的音量提升高過凈空值時,系統會產生嘯叫。因此,最大AGC提升增益永遠略低于系統的凈空值。
最大AGC衰減增益:可以設定AGC自動增益的衰減范圍。最大值為30dB。
增益變化速率:設定AGC的增益變化速率。例如:如圖Max Adjustment Rate為5.0,當AGC啟動時,會以每秒5dB的速率進行提升或衰減從而最終達到輸出補償的要求。 在實際應用中,如果我們不希望與會者覺察到明顯的聲音增益變化,可以保持默認設置或適當降低速率。如在演示環節,可以適當提升速率,從而使受眾明顯感覺到AGC的工作。
SpeechSense聲音辨識:當此按鈕關閉時,AGC恢復傳統AGC的工作模式。當此按鈕開其實, AGC只在檢測到人聲時才會啟動,而任何其它噪聲不會誤觸發AGC。
Limiter On壓限器:當此功能激活時, 系統會自動監測AGC之后的電平值并在電平值高于+24dBu時進行壓限,從而確保電平在峰值范圍之內。同時壓限器指示會點亮。
AGC Active:當AGC啟動時,此指示燈會點亮。
Advanced:高級設定。點擊進入,可以看到輸入電平,噪聲電平以及SNR信噪比電平。
因為無法識別人聲與噪聲,所以所有的傳統的AGC都沒有這一選項。而Biamp AGC 的SpeechSense的算法不僅能夠準確的識別出人聲,還可以進而精確的計算出人聲與環境噪聲之間的比值,即信噪比。
一直以來,傳統的AGC在應用中存在一個嚴重的技術缺陷,即:當環境噪聲大于所設定的閾值 并且講話者停止講話時,AGC會自動將環境噪聲放大至所需電平。此時在系統中會出現極大的噪聲。 如果我們將閾值提高又會出現講話聲音小的人無法正常啟動AGC。Biamp開發了一種叫做“SpeechSense (人聲辨識)算法”可以智能化地創建閾值和提供可選的“語言模式”,此功能限制了AGC只有在識別到人聲的時候才對信號進行AGC處理, 從而徹底消除AGC誤啟動的問題。在本文中,將會詳細的介紹SpeechSense算法的工作原理以及在音頻系統中的具體應用和系統調試中的注意事項。
1)什么是AGC?
AGC 是英文“Automatic Gain Control”(自動增益控制)的縮寫。AGC在各個行業中的應用非常廣泛。在模擬電路時代, AGC的控制精度和速率是由模擬電路的設計和電子元件的精度所決定的,我們稱之為AGC的工作特性。
大家都知道,現在的音頻處理核心產品大都采用DSP芯片進行設計,因此我們將之統稱為音頻DSP處理器。實際上,與以往的模擬AGC電路不同,DSP處理器的電路設計大同小異,所采用的芯片也大都雷同。而所有的DSP處理器所支持的功能,如:濾波器,分頻器,路由器,混音器,AGC等等都是由“算法”來實現的。因此,AGC的工作特性完全能取決于AGC算法。
2)為什么音頻系統需要AGC?
在實際的音頻會議系統應用中,經常會出現以下這些情況:
由于性別的原因或講話者的各自習慣不同,有的人聲音大些,有的人聲音小些,有的人喜歡離話筒遠些,有的人喜歡離話筒近些,這些情況會導致在音頻系統的輸出端的音量幅度產生巨大的差別。
AGC可以針對上述這些情況自動給與“增益補償”。通俗一點的講,當講話者的聲音太大的時候, AGC會自動降低增益,從而使會議的擴聲維持在一個恒定的音量上;反之,講話者的聲音太小,AGC會自動提高增益,以確保系統仍然維持在恒定的音量。在音頻系統中,AGC可以根據“要求”對聲音信號自動給予“增益補償”。因此通常用于調節各種會議系統的不同講話者的聲音音量平衡。
3)傳統AGC是如何解決這些問題的呢?
首先,我們先來學習幾個技術名詞:
· Level源信號電平:講話者的聲音經話筒拾音,進入音頻處理器的原始電平;
· Min Threshold 最小電平閾值:啟動AGC的最小電平值;
· Target Level 目標電平:我們所需要的,經過AGC自動調整的電平。 當輸入電平大于所設定的Min Threshold, AGC會啟動并自動根據所設定的Target Level對源信號進行增益補償,并保持輸入信號為恒定的Target Level.
當源信號電平大于最小電平閾值(Min Threshold)但小于目標電平(Target Level)時, AGC啟動并對源信號自動提高增益至目標電平 (Target Level)。如圖一所示:
(圖一)源信號電平大于最小電平閾值
紅色代表經AGC調整后的 電平曲線,藍色代表未經AGC調整的源信號電平曲線。當源信號電平小于最小電平閾值(Min Threshold), AGC關閉,從而防止AGC將噪聲電平放大輸出。
源信號電平小于最小電平閾值
當源信號電平大于最小電平閾值(Min Threshold),并大于目標電平(Target Level)時, AGC啟動并自動衰減輸入信號增益至目標電平(Target Level)。從而實現對輸入信號的自動增益控制,并且在輸出端維持一個相對恒定的 音量。見圖三:
源信號電平大于目標電平
4)傳統AGC在實際應用中的問題
上文中我們提到,當源信號大于所設定的Min Threshold,AGC不工作。 其目的是避免AGC電路錯誤地提升系統的噪聲信號。只有在源信號大于某一設定值時,我們才認為此信號為有用信號并對此信號進行AGC平衡電平。
這種設計方案看似非常合理,但在實際工作中卻屢屢出錯。比如:我們所用的所有的語音通信軟件(如:QQ, Skype, Lync等等)都支持AGC, 但在實際使用中經常出現的問題是,當兩端的人都不講話的時候,可以非常明顯地感覺到對方的噪聲的提升。
究其原因, 在實際工作環境中,噪聲的值實際上很難預測,它與有用信號之間有很大的重疊區域,但我們給定一個Min Threshold的時候,不是當有用信號非常低時AGC沒有啟動,就是噪聲信號高于Min Threshold, AGC錯誤的啟動。
因此,在很長的一段時間,業內都沒有一個徹底地解決方案。
5)帶有SpeechSense (人聲辨識)算法的AGC的工作原理
下面我們來看一下BIAMP的AGC是如何解決這個問題的。
綜上所述,其實只有一種辦法能夠徹底地解決AGC不能正確啟動的難題。那就是,真正判斷源信號是否為有用信號。通常在絕大多數情況下,AGC是用在傳聲話筒的鏈路里,因此,只要我們能夠判斷源信號是否為人聲就可以了。
其實,人聲辨識已經不是一個新課題了。經研究,人們發現所有人類的語言有兩種元素是與動物和環境聲截然不同的。即Plosive 爆破音和Fricative摩擦音。比如:中文的“破”和“刺”, 或英文中的“Bob”和“Fish”。因此,只要我們對源信號進行采樣并辨識是否有爆破音和摩擦音的存在,就可以判定此信號是否為人聲。
從原理上講,似乎并不困難。但如前文所提到的,AGC的性能完全取決于算法。在極短的時間內(通常只有十幾毫秒),SpeechSense AGC算法要完成對源信號的采樣、分析、 運算,因此對算法的效率要求極高,并且對信號的人聲片斷分析的準確性要求極為嚴格,要在最大限度內保證AGC啟動的準確性。BIAMP的AGC不僅可以快速準確的完成增益自動補償,更重要的是它可以非常準確地辨識出源信號是否為人聲,從而確保AGC只有在講話者使用時啟動,有效的避免了AGC誤啟動所造成的噪聲過大的問題。
6)SpeechSense (人聲辨識)算法的AGC的參數設定
下面我們來具體看一下有關SpeechSense AGC的一些參數是如何配置的。
輸入源電平:通常,我們調試話筒的時候, 要確保講話者與話筒的距離比較合理,且用正常的聲調對著話筒講話,此時在輸入源電平的讀數應在“0dB”左右。 由于傳聲話筒的靈敏度和指向性以及所在環境的空間噪聲不同,在無人講話的時候,輸入源的最低電平應該在-40dB到-20dB之間(如電平顯示過高,則表明現場環境噪聲過大)。此時,最小電平閾值(Min Threshold)應該調整為略高于無人講話時的輸入源的最低電平。(有關增益結構的詳細內容可到http://cn.Biamp.com/ , 點擊進入audia, 參考“增益結構”的視頻)。
輸出增益調節指示:是指在AGC自動增益調節之后的音頻輸出補償的數值。補償是根據目標電平和輸入電平之差所決定的。例如:當源信號的電平為-10dB, 目標電平為0dB,那么輸出補償為+10dB.
AGC增益保持時間:當AGC不滿足啟動條件時(比如:源信號電平低于Min Threshold或源信號為非語音信號), 輸出增益調節所保持的時間。例如:如圖當系統檢測到AGC在60秒后仍然沒有啟動,輸出增益調節會自動歸零。
最大AGC提升增益:可以設定AGC自動增益的提升范圍。最大值為30dB,在實際使用中, 我們建議的范圍是0~12dB。因為,如以正常情況來調試系統,一般會議系統的本地擴聲的凈空為6~14dB。也就是說,如果AGC將話筒的音量提升高過凈空值時,系統會產生嘯叫。因此,最大AGC提升增益永遠略低于系統的凈空值。
最大AGC衰減增益:可以設定AGC自動增益的衰減范圍。最大值為30dB。
增益變化速率:設定AGC的增益變化速率。例如:如圖Max Adjustment Rate為5.0,當AGC啟動時,會以每秒5dB的速率進行提升或衰減從而最終達到輸出補償的要求。 在實際應用中,如果我們不希望與會者覺察到明顯的聲音增益變化,可以保持默認設置或適當降低速率。如在演示環節,可以適當提升速率,從而使受眾明顯感覺到AGC的工作。
SpeechSense聲音辨識:當此按鈕關閉時,AGC恢復傳統AGC的工作模式。當此按鈕開其實, AGC只在檢測到人聲時才會啟動,而任何其它噪聲不會誤觸發AGC。
Limiter On壓限器:當此功能激活時, 系統會自動監測AGC之后的電平值并在電平值高于+24dBu時進行壓限,從而確保電平在峰值范圍之內。同時壓限器指示會點亮。
AGC Active:當AGC啟動時,此指示燈會點亮。
Advanced:高級設定。點擊進入,可以看到輸入電平,噪聲電平以及SNR信噪比電平。
因為無法識別人聲與噪聲,所以所有的傳統的AGC都沒有這一選項。而Biamp AGC 的SpeechSense的算法不僅能夠準確的識別出人聲,還可以進而精確的計算出人聲與環境噪聲之間的比值,即信噪比。
掃描二維碼分享到微信
下載二維碼