音乐人声分离
音乐人声分离除了可以运用在普罗大众的卡拉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