音樂人聲分離除了可以運用在普羅大眾的卡拉OK系統,對於學術方面也有相當重要的價值。將人聲獨立出來,可以做為歌詞辨識、歌手辨識、音樂情緒辨識等相關研究的基礎。
目前市面上的消除人聲軟體仍然無法達到完全去除人聲。
音樂人聲分離主要有兩個步驟:
人聲偵測
人聲分離
人聲偵測原理
在確實進行音樂與人聲分離之前,必須先找出音樂中具有人聲的片段。
就單聲道的音樂來說,一個聲道只具有配樂,此處將配樂資訊假定為,而另一個聲道混合了人聲與配樂,將人聲設為而配樂設為,另一聲道為。由於m與通常極為相似,利用最小均方演算法(least mean square algorithm),將聲音從中分離出來,此處將分離出的人聲定為。假設{{Smallmath|f= m^\prime_t= a_t + m_{t+bt} }}
解下列方程式:
min_{ a_t , b_t } E \left\{ \mid m^\prime_t - a_t m_{t+bt} \mid ^2 \right\} = min_{ a_t, b_t } E \left\{ \mid s_t + m^\prime_t - a_t m_{t+bt} \mid ^2 \right\}
除此之外,亦可以將歌曲切割成許多重疊的小片段,對每個小片段抽取音樂特徵,此處只需要關注梅爾倒頻譜(MFCC)。梅爾倒頻譜廣泛被應用在語音辨識領域之中,由於梅爾倒頻譜的頻帶分析是根據人耳聽覺特性設計。因為人耳對頻率的分辨是由頻率的比值決定,不同於倒頻譜對訊號在頻譜上的值取對數,梅爾倒頻譜是對訊號的能量取對數,因此比倒頻譜更接近人耳對聲音的分析特性。
接著,利用偵測的結果,可以利用機器學習,如Support Vector Machine,訓練出一個能夠預測出某一個音樂片段是否包含人聲的模型。是真的吗?
人聲分離原理
藉由利用人聲偵測的結果,找出音樂中具有人聲的部分,使用Robust principle component analysis(RPCA)將人聲與配樂加以分離。
分離的步驟為:
- 計算歌曲的N-point short-time Fourier Transform(STFT),得到光譜圖(spectrogram){{Smallmath|f= X = Me^{jp} }}。此處{{Smallmath|f= M \in R^{ft} }}為強度,而{{Smallmath|f= P \in R^{f*t} }}為相位。
- 根據RPCA,將矩陣M分解成低階(low-rank)的矩陣L,以及一個稀疏(sparse)的矩陣S。其原因是,樂器的聲音叫人聲固定,且伴奏通常具有重複的音樂架構,因此將其視為低階的訊號。而人聲的變化較大,相較於伴奏為高階訊號,不論是在時域(time domain)及頻域(frequency domain)皆具有較大的稀疏性。因此所得的矩陣S將大部分由人聲所組成,矩陣L大都由背景音樂組成。
分解方法是解下列方程式:
min_{M=L+S} \mid\mid L \mid\mid_{*} + \lambda\mid\mid L \mid\mid_{1}
其中
{{Smallmath|f= \mid\mid . \mid\mid_{*} :nuclear norm}}
{{Smallmath|f= \mid\mid L \mid\mid_{1} :l_1 norm}}
- inverse-STFT(ISTFT)
由於得到的矩陣L與S是在頻域(frequency domain)之上,最後需要對矩陣做inverse-STFT,方能真正得到結果。
參考文獻
评论 (0)