跳转到内容

音乐人声分离

维基百科,自由的百科全书

音乐人声分离除了可以运用在普罗大众的卡拉OK系统,对于学术方面也有相当重要的价值。将人声独立出来,可以做为歌词辨识、歌手辨识、音乐情绪辨识等相关研究的基础。 目前市面上的消除人声软体仍然无法达到完全去除人声。 音乐人声分离主要有两个步骤:

  1. 人声侦测
  2. 人声分离

人声侦测原理

在确实进行音乐人声分离之前,必须先找出音乐中具有人声的片段。 就单声道的音乐来说,一个声道只具有配乐,此处将配乐资讯假定为,而另一个声道混合了人声与配乐,将人声设为而配乐设为,另一声道为。由于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,方能真正得到结果。

参考文献

  1. 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.
  2. 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
  3. 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