本案例中使用Matlab軟件對FastICA算法的聲音分離性能進行了仿真,分別對簡單波形的混合信號、不同類型聲音的混合信號、同一類型的混合信號這三種情況進行仿真,主要從分離信號的波形形狀、串音誤差兩方面對分離性能進行衡量,仿真結果顯示快速ICA算法分離效果還不錯,且算法收斂速度較好。
簡單波形分離仿真
首先是對簡單波形的混合信號進行分離,這里混合信號采用的是方波、三角波和正弦波,這三種波形的頻率分別為300hz、400hz、500hz,信號的采樣頻率為44.1khz,輸入原信號序列長度為1000,混合矩陣利用Matlab隨機生成,以下是輸入的原信號,混合后的信號和分離后信號的波形圖。
圖 5 簡單波形的混合信號的分離仿真圖
?從波形上可以看出,除了幅度和正負由一定的變化外,快速ICA算法對簡單波形的混合信號的分離效果還是可以接受的。
對不同類型的聲音的分離仿真
這里我們對了人聲、音樂聲和電影特效聲音這三種不同類型的聲音的混合信號進行分離,輸入信號長度為10秒,采用頻率為44.1k。其線性瞬時混合模型信道的隨機混合矩陣A為
以下是原信號,混合后信號和分離信號的波形圖
利用快速ICA算法對這三種不同類型的聲音進行分離時,計算所有分量的分離向量的迭代次數為39次,相應的算法分離的串音誤差為-23dB。
同類型聲音的仿真
這里選取的從同一部影視作品中截取的兩段不同人物的語音(無背景音樂部分)進行混合和分離,輸出信號長度為4.5秒,采樣頻率同樣為44.1Khz。其原信號、混合信號和分離后信號的波形如圖
此時,快速ICA算法計算所得的計算所有分量的分離向量的迭代次數為12次,相應的算法分離的串音誤差為-47dB。
圖 7同類型的聲音的分離仿真信號波形圖