如何使用命令行软件从音乐中提取人声?

如何使用命令行软件从音乐中提取人声?

我知道如何使用 SoX 去除人声。命令是

sox 源.wav mono.wav oops

这意味着将立体声混合成双单声道,其中每个单声道包含左右立体声声道之间的差异。这相当于

sox 源.wav mono.wav 混音 1,2i 1,2i

但是我怎样才能提取人声呢?

我尝试将源文件与单声道文件重新混合

sox -M 源.wav 单声道.wav 人声.wav 混音 1,2i 1,2i

但它不起作用。

如果 SoX 无法实现,我们也欢迎任何其他命令行解决方案。

答案1

如果不进行大量处理,您无法完全提取声音文件中的人声。
问题是,从数学上讲,软件没有足够的信息来分离它。

让我简单解释一下,你可以将立体声文件分解为三个数据。纯左声道的声音 ( L)、纯右声道的声音 ( R) 和纯中声道的声音 ( M)。

如果我们将两个立体声通道命名为XY,那么我们只需:

X = R + M/2
Y = L + M/2

我们知道的是XY,另外三个是我们想要分离的未知数。

你去除人声的方法的理念是,人声是几乎总是在中间部分。所以你可以计算

X - Y = R - L

由于左右数据完全不同,因此不会产生干扰,听起来也不错。但是,它也会删除所有中间乐器,如果人声不是完全居中,效果就不太好。

您想要的是隔离M,并且给定数据,从数学上讲,通过简单地组合2个通道是不可能的:它是一个具有3个未知数的2方程线性系统,没有足够的数据来求解它,并且提取M意味着要求解它。

你也可以尝试用更复杂的方法提取人声,但会花费你很多时间,而且效果也不太好。分离人声和乐器非常困难,因为它们主要处于相同的频率范围内。

相关内容