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

wha*_*ant 7 audio sox

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

sox source.wav mono.wav 哎呀

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

sox source.wav mono.wav remix 1,2i 1,2i

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

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

sox -M source.wav mono.wav voice.wav remix 1,2i 1,2i

但它不起作用。

如果使用 SoX 无法实现,则欢迎使用任何其他命令行解决方案。

Lev*_*ans 4

如果不进行大量操作,您就无法完全提取声音文件的人声。
问题在于,从数学上讲,软件没有足够的信息来隔离它。

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

如果我们将两个立体声通道命名为XY,那么我们就可以得到:

X = R + M/2
Y = L + M/2
Run Code Online (Sandbox Code Playgroud)

我们所知道的是XY,其他三个是我们想要隔离的未知数。

你消除人声的方法的想法是人声几乎总是在中间部分。所以你可以计算

X - Y = R - L
Run Code Online (Sandbox Code Playgroud)

由于左右数据完全不同,所以没有干扰,听起来也不错。然而,它也删除了所有中间乐器,如果人声没有完全居中,它就不能完美工作。

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

你可以尝试用更重的手段来提取人声,但这会花费你很多时间,而且结果也很难好。分离人声和乐器非常困难,因为它们主要处于相同的频率范围。