在使用Librosa进行人声分离的情况下,可以单独绘制声乐和背景音乐,但我想从声乐部分提取音频,声乐部分的频谱位于名为'的变量中。 S_foreground' (请访问以上链接进行演示)。如何获得前景(人声)音频?
答案 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)
说实话,我对这些理论知识并不熟悉(我使用这种方法的较差的输出质量可能是一个证明),但是以上是我对如何导出音频的猜测。事实证明,保真度非常差(至少就我而言),因此,如果您真的在乎音频质量,则可能需要尝试其他软件。