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