淺談 MATLAB 語音與聲學應用 附振動力學基礎與MATLAB應用下載

    ◆  

Part 2





混亂中的秩序——淺談聲源分離

首先,有很多初步嘗試過語音指令識別的童鞋,覺得看似黑科技的智能音箱也不過如此云云。

其實關鍵詞喚醒或者指令識別,僅是智能音箱設計工作的一小部分。一個粗略的構成圖如下所示。

淺談 MATLAB 語音與聲學應用 附振動力學基礎與MATLAB應用下載的圖1

    ◆  

聲源分離
實際使用場景中,往往會有多個聲源,比如客廳里的電視、空調、聊天的家人、吵鬧的小朋友,還有聲音在墻壁和玻璃發生反射的回波。
如果希望在這樣典型的使用環境中,正常使用語音喚醒和指令識別,那么就需要從這一些列采集到的聲音中提取出,我們需要的那路聲音。
這里介紹兩種方法: 波束成形和基于掩模的深度學習音頻分離。

    ◆  

1. 波束成形
從麥克風陣列得到的多通道音頻信號,需要依次完成回聲抵消,將音箱自己揚聲器播放出去的聲音抵消掉。
而后進行波束成形,估計說話人的空間方向,再針對說話人的方向進行波束成形,這樣就只有特定方向的語音進入系統;
接下來還要進行去混響、降噪、自動增益控制(AGC), 然后才是您覺得簡單的關鍵詞喚醒等等。
您可以看到關鍵詞識別、語音識別的深度學習僅僅是一小部分。
我們首先來聊聊這個麥克風陣列的波束成形。

淺談 MATLAB 語音與聲學應用 附振動力學基礎與MATLAB應用下載的圖2

因為,我們知道實際使用場景中,往往會有多個聲源。
比如客廳里的電視、空調、聊天的家人、吵鬧的小朋友,還有聲音在墻壁和玻璃發生反射的回波。
如果希望在這樣典型的使用環境中,正常使用語音喚醒和指令識別,就需要借助麥克風陣列進行聲源定位,也就是 DoA 估計(Direction of Arrival Estimate)。
而后對從麥克風陣列得到的多通道音頻,進行特定方向的波束成形,以盡量只對說話人方向的聲音進行拾音,而抑制其他方向聲音的干擾。
這里的麥克風陣列的設計和構成對聲源的分離至關重要。
MATLAB 的相控陣工具箱可以對麥克風陣列進行設計與仿真。
比如下圖,你可以方便的設計和仿真,這些常見的線陣、面陣,甚至于共形陣的麥克風陣列排布,也可以嘗試采用不同的麥克風陣元帶來的影響。

淺談 MATLAB 語音與聲學應用 附振動力學基礎與MATLAB應用下載的圖3

那么設計好麥克風陣列的基本設計后,我們還要涉及與之相對應的聲源定位和波束成形算法,并進行硬件在環的驗證…… 是不是有點麻煩?
MATLAB 提供了一系列 DoA 估計和波束成形的算法模塊,如下視頻所示您可以快速在 MATLAB 內,設計和嘗試不同的 DoA 估計和波束成形的算法。
視頻中演示了有三路聲源, 男聲、女聲以及一群人大笑,混在一起難舍難分。
而后演示了,可以方便的通過波束成形,提取出需要的目標聲源。


還可以直接實時連接麥克風陣列硬件,方便的在 MATLAB 內,直接進行聲源定位和波束成形算法調試與硬件原型測試。


    ◆  

2. 采用深度學習的方式進行語音提取
以上介紹的方法是,采用傳統的波束成形的方式,利用麥克風陣列的空間方向選擇性,只選擇性的接受特定方向上的語音指令。
然而在實際應用場景中,經常有多個說話人相距很近的情況,而麥克風陣列又由于尺寸、成本等多方面原因,只能提供比較有限的空間選擇性(為獲得高的方向選擇性,就要盡量降低麥克風陣列的主瓣寬度,而這通常需要更多陣元,更大更復雜的麥克風陣列)。
于是,就有人想到了深度學習。
那有沒有可能借助深度學習讓算法自主從聲音中提取出想要的那路語音信號呢?
因為,我們自身都有過這樣的經歷,就是即使在很嘈雜的環境中,人是可以輕松做到,只聽一個人交談的聲音的。
而人類的雙耳,根本無法執行波束成形對吧?
這里,為大家介紹一種 基于掩模(mask)的深度學習聲源提取方式 【1】
這里使用的方法,其實就是將每一路的聲音信號轉化為對應的聲譜圖(spectrogram),而后基于深度學習對每一路聲音去估計出其對應的掩模(mask)。
這個掩模其實就是某個人語音的特定音色屬性,而后用這個掩模從混合以后的信號中提取出對用的目標音頻信號。篇幅關系就不展開了,詳細方法,大家可以去看對應的參考論文。
那么在實際應用中的多聲源競爭問題,其實還會更難解決, 尤其是遠場拾音,目標音頻位于遠場,聲音很容易被近處的說話人遮蔽,而這是恰是一個行業內公認的難點
令人興奮的是,一家位于波士頓的音頻初創公司 Yobe,基于 MATLAB 所提供的平臺以及快速原型驗證的方式,對這個問題給出了很不錯的解決方法。

淺談 MATLAB 語音與聲學應用 附振動力學基礎與MATLAB應用下載的圖4

請看下面的視頻,前半段視頻中,是麥克風接收到的遠近兩路聲音來源,聲音很大的來自近處的干擾源,而聲音很小的,才是位于遠處的目標聲源。
后半段視頻,則演示的是經過深度學習的音頻特征提取,從接收到的音頻中提取出,遠處那個目標聲源的效果,明顯把之前被近處干擾掩蓋的聲音,提取得非常清晰完整。


這里 Yobe 綜合采用了三種方法:

淺談 MATLAB 語音與聲學應用 附振動力學基礎與MATLAB應用下載的圖5

Yobe 對于 MATLAB 有下面這樣的評價:
“在我們將其商業化之前,MATLAB 就為我們剛起步的概念,提供了絕佳的演示環境。MATLAB 使我們能夠在研發的每個階段進行演示,從而幫助我們分享我們的進步,并為正在創造的東西增添激情。這對于我們持續獲得風險投資至關重要。”
Ken Sutton,Yobe 總裁、CEO 兼聯合創始人

    ◆  

簡要總結
對于拓展智能語音應用,很重要的一方面就是聲源競爭的問題。
多個方向、多種來源、高噪聲環境下的場景,如何提取目標信號,是進行可靠語音識別的前提。

我們介紹了,基于麥克風陣列波束成形的方法和基于深度學習的掩模估計的方法,下期我們會談談深度學習的語音識別

下載地址:振動力學基礎與MATLAB應用

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

3
2
2