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

2024-04-20 00:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 链接绘制音频频谱foreground人声librosa前景
1条回答
网友
1楼 · 发布于 2024-04-20 00:39:02

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

Separate a complex-valued spectrogram D into its magnitude (S) and phase (P) components, so that D = S * P.

因为magphase中的实际参数

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

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

D_foreground = S_foreground * phase

然后把它扔给逆stft函数(librosa.istft):

y_foreground = librosa.istft(D_foreground)

之后,您可以使用输出函数:

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

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

相关问题 更多 >