- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在人声分离的情况下使用 Librosa ,人声和背景音乐可以单独绘制,但我想从人声部分提取音频,人声部分的频谱位于名为“S_foreground”的变量中(请访问上面的链接进行演示)。如何获取前景(人声)音频?
最佳答案
您可能已经注意到 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 * 相位
并将其丢给 Inverse stft 函数 (librosa.istft
):
y_foreground = librosa.istft(D_foreground)
之后就可以使用输出函数了:
librosa.output.write_wav(output_file_path, y_foreground, sr)
老实说,我对这些理论上的东西并不熟悉(我使用这种方法输出的质量很差可能就是一个证明),但以上是我对如何导出音频的猜测。事实证明保真度很差(至少在我的情况下),所以如果你真的关心音频质量,你可能想尝试一些其他软件。
关于python librosa 包 - 如何从频谱中提取音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48730097/
我对复值频谱执行 iFFT 并通过让第一个样本归零来更改相应的时域信号。最后,我通过 FFT 将其转换回频域。 我想知道这里使用两侧(对称)频谱或仅使用一侧频谱(仅正频率)之间的(物理)差异在哪里,因
我正在尝试提高使用 cython 计算 Jonswap 频谱的性能。但它似乎比原始代码慢得多。我该如何改进? 赛通代码: from libc.math cimport exp from libc.st
我目前可以使用 JavaScript Web Audio API 播放音轨。在播放此轨道时,我可以提取 FFT 频谱数据、峰值、RMS 值等。 但是,出于我的应用程序的目的,我需要能够在开始播放轨道之
我正在尝试将频谱保存在我的 FMOD_DSP_PARAMETER_FFT 中,但我只收到充满零的频谱,如果你能看到我的错误我会同意,我认为我没有很好地将 DSP 连接到 channel 或类似的东西,
我有一个复杂的信号,我想对其进行 FFT。使用 Mathematica 我得到以下结果: (* Some acquisition params *) fS = 100. 10^6; time = 10
我是一名优秀的程序员,十分优秀!