python librosa包 - 如何从频谱中提取音频

Sah*_*eno 4 python librosa

如果使用Librosa进行人声分离,可以单独绘制声乐和背景音乐,但我想从声乐部分提取音频,声乐部分的频谱位于名为"S_foreground"的变量中(请访问上面的链接进行演示) ).如何获得前景(人声)音频?

小智 11

您可能已经注意到,S_foreground来自S_full它来自一个调用的函数magphase.根据有关此功能的文件,它可以

将复值谱图D分离为其幅度(S)和相位(P)分量,使得D = S*P.

由于实际参数magphase在中

S_full, phase = librosa.magphase(librosa.stft(y))

stft(y),这是y最初的短时傅里叶变换ndarray,我估计你需要做的是计算一个新的D:

D_foreground = S_foreground * phase

并将其抛给Inverse stft函数(librosa.istft):

y_foreground = librosa.istft(D_foreground)

之后,您可以使用输出功能:

librosa.output.write_wav(output_file_path, y_foreground, sr)

说实话,我不熟悉这些理论上的东西(使用这种方法的输出质量差可能是一个证明),但上面我猜测你应该如何导出你的音频.事实证明,保真度非常差(至少在我的情况下),所以如果你真的关心音频质量,你可能想尝试其他一些软件.