音樂人聲分離
音樂人聲分離除了可以運用在普羅大眾的卡拉OK系統,對於學術方面也有相當重要的價值。將人聲獨立出來,可以做為歌詞辨識、歌手辨識、音樂情緒辨識等相關研究的基礎。 目前市面上的消除人聲軟件仍然無法達到完全去除人聲。 音樂人聲分離主要有兩個步驟:
- 人聲偵測
- 人聲分離
人聲偵測原理
編輯在確實進行音樂與人聲分離之前,必須先找出音樂中具有人聲的片段。
就單聲道的音樂來說,一個聲道只具有配樂,此處將配樂資訊假定為 ,而另一個聲道混合了人聲與配樂,將人聲設為 而配樂設為 ,另一聲道為 。由於m與 通常極為相似,利用最小均方演算法(least mean square algorithm),將聲音從 中分離出來,此處將分離出的人聲定為 。假設
解下列方程式:
除此之外,亦可以將歌曲切割成許多重疊的小片段,對每個小片段抽取音樂特徵,此處只需要關注梅爾倒頻譜(MFCC)。梅爾倒頻譜廣泛被應用在語音辨識領域之中,由於梅爾倒頻譜的頻帶分析是根據人耳聽覺特性設計。因為人耳對頻率的分辨是由頻率的比值決定,不同於倒頻譜對訊號在頻譜上的值取對數,梅爾倒頻譜是對訊號的能量取對數,因此比倒頻譜更接近人耳對聲音的分析特性。
接着,利用偵測的結果,可以利用機器學習,如Support Vector Machine,訓練出一個能夠預測出某一個音樂片段是否包含人聲的模型。是真的嗎?
人聲分離原理
編輯藉由利用人聲偵測的結果,找出音樂中具有人聲的部分,使用Robust principle component analysis(RPCA)將人聲與配樂加以分離。 分離的步驟為:
- 計算歌曲的N-point short-time Fourier Transform(STFT),得到光譜圖(spectrogram) 。此處 為強度,而 為相位。
- 根據RPCA,將矩陣M分解成低階(low-rank)的矩陣L,以及一個稀疏(sparse)的矩陣S。其原因是,樂器的聲音叫人聲固定,且伴奏通常具有重複的音樂架構,因此將其視為低階的訊號。而人聲的變化較大,相較於伴奏為高階訊號,不論是在時域(time domain)及頻域(frequency domain)皆具有較大的稀疏性。因此所得的矩陣S將大部分由人聲所組成,矩陣L大都由背景音樂組成。
分解方法是解下列方程式:
其中
- inverse-STFT(ISTFT)
由於得到的矩陣L與S是在頻域(frequency domain)之上,最後需要對矩陣做inverse-STFT,方能真正得到結果。
參考文獻
編輯- P. S. Huang, S. D. Chen, P. Smaragdis, and M. Hasegawa-Johnson, "Singing-voice separation from monaural recordings using robust principal component analysis," in Proc. IEEE Int. Conf. Acoustics, Speech, & Signal Proc., pp. 57-60, 2012.
- H. M. Yu, W. H. Tsai, and H. M. Wang, "A query-by-singing system for retrieving karaoke music," IEEE Trans. Multimedia, vol. 10, pp. 1626–1637, 2008
- M. Rocamora and P. Herrera, "Comparing audio descriptors for singing voice detection in music audio files," in Brazilian Symposium on Computer Music, 11th. San Pablo, Brazil, 2007