【发布时间】:2021-06-04 02:16:57
【问题描述】:
我已经阅读了几天,但一直没有找到解决方案...我能够使用以下方法构建 Librosa 频谱图并提取幅度/频率数据:
audio, sr = librosa.load('short_piano melody_keyCmin_110bpm.wav', sr = 22500)
spectrum = librosa.stft(audio, n_fft=2048, window=scipy.signal.windows.hamming)
D = librosa.amplitude_to_db(np.abs(spectrum), ref=np.max)
n = D.shape[0]
Nfft = 1+2*(n-1)
freq_bins = librosa.fft_frequencies(sr=sr, n_fft=Nfft)
但是,我无法将 D 和 freq_bins 中的数据转换回频谱。一旦我能够做到这一点,我可以将新频谱转换为 .wav 文件并收听我重建的音频......任何建议将不胜感激!谢谢。
【问题讨论】:
-
@Hendrik 感谢您的回复!我知道这些方法,但不知道如何将幅度转换为频谱......不确定它是否可能,但它似乎应该是其他类型的逆?
-
使用
stft将幅度转换为频谱。它为您提供了一个复值频谱。保留相位并操纵这些值的大小。然后使用istft转换回来。转换回依赖于Griffin/Lim-paper。这是一个经典,所以网上有很多容易理解的解释。祝你好运! -
这里有一个更好的论文链接:citeseerx.ist.psu.edu/viewdoc/…
标签: python audio librosa spectrogram