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

时间:2018-02-11 09:29:58

标签: python librosa

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

1 个答案:

答案 0 :(得分:8)

您可能已经注意到S_foreground来自S_full,而magphase来自名为magphase的函数。根据有关此功能的文档,

  

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

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

中采用了实际参数

stft(y)

y,它是ndarray的短时傅立叶变换,是初始的D,我认为您需要做的是计算一个新的D_foreground = S_foreground * phase

librosa.istft

并将其扔给逆stft函数(y_foreground = librosa.istft(D_foreground)):

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

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

for k in range(13,ag19): pyautogui.typewrite('f-'k)

说实话,我对这些理论知识并不熟悉(我使用这种方法的较差的输出质量可能是一个证明),但是以上是我对如何导出音频的猜测。事实证明,保真度非常差(至少就我而言),因此,如果您真的在乎音频质量,则可能需要尝试其他软件。