盲源分離算法學習筆記
麥克風陣列算法有兩大類,一類是波束形成算法,另一類是盲源分離算法,兩者互有優劣。本篇博客先通過比較盲源分離和波束形成來說明盲源分離的優缺點,盲源分離的基礎知識,然後分別介紹盲源分離的常見實現方式。本篇盲源分離算法主要是記錄ICA算法,若無指明,BSS和ICA在本篇博客中是等價的。
優缺點(Pros & Cons)
優點
- 盲源分離不需要目標語音VAD的先驗信息。
這個先驗信息對於波束形成算法是很關鍵的,其準確程度直接影響性能。而盲源分離不需要做自適應濾 - 盲源分離不需要目標語音的DOA信息。
缺點
- 盲源分離的結果是混淆的。
比如兩個聲源,分離出來的順序可以是,也可能是。 - 盲源分離要求輸入的信號最多一個是高斯分佈。
ICA算法的假設是兩個聲源是相互獨立的,那麼分離出來的也是相互獨立的。如果和都是高斯分佈,且相互獨立。那麼通過任意的正交矩陣混合後,仍然相互獨立。對於ICA算法來說就有無窮多解,導致無法分開。 - 盲源分離無法應對長混響場景。
- 長混響場景,信號的幅度都是高斯分佈。
- 長混響場景,解卷積的長度不好設定。長度太短無法包含長混響的衝激響應。長度太長不滿足相互獨立的假設。
- 長混響場景,麥克風陣列得到的信號從各個方向過來。盲源分離本質上相當於多組ABF,波束形成也無法應對這種場景。
- 盲源分離需要多次迭代,運算量大,收斂速度慢。