python - Librosa的梅尔逆谱图花费很长时间

标签 python audio spectrogram librosa mfcc

我目前正在尝试将梅尔频谱图转换回音频文件,但是,librosa的mel_to_stft函数需要很长时间(最多15分钟)才能读取以384kHz采样的30秒.wav文件。
以下是我的代码:

# Code for high pass filter
def butter_highpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='high', analog=False)
    return b, a

def butter_highpass_filter(data, cutoff, fs, order=5):
    b, a = butter_highpass(cutoff, fs, order=order)
    y = filtfilt(b, a, data)
    return y

def high_pass_filter(data, sr): 
    # set as a highpass filter for 500 Hz
    filtered_signal = butter_highpass_filter(data, 500, sr, order=5)
    return filtered_signal

example_dir = '/Test/test.wav'
sr, data = wavfile.read(example_dir)
des_sr = 44100
data_resamp = samplerate.resample(data, des_sr/sr, 'sinc_best')
data_hp = high_pass_filter(data_resamp, des_sr)
mel_spect = librosa.feature.melspectrogram(y=data_resamp, sr=des_sr)
S = librosa.feature.inverse.mel_to_stft(mel_spect)
y = librosa.griffinlim(S)

最佳答案

Griffin-Lim是一种迭代方法,用于从仅幅值的频谱图估算所需的相位信息。 librosa实现中的迭代次数可以调整(n_iter)。减少此速度会加快速度,但通常速度较慢。
频谱处理后返回波形可以通过以下方法加快:

  • 使用单次近似方法,例如神经网络。例如Fast Spectrogram Inversion using Multi-head Convolutional Neural Networks
  • 通过使用原始相位信息,而不是从修改后的幅度谱图中进行估算。这要求相位频谱图可用(而不仅仅是幅度),但是在音频文件上进行频谱处理时通常是这种情况。
  • 关于python - Librosa的梅尔逆谱图花费很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63294375/

    相关文章:

    android - 使用 FFmpegFrameRecorder 合并音频文件

    haskell - Sound.Pulse.Simple 不起作用?

    audio - 如何使用上下文窗口来分割整个日志梅尔谱图(确保所有音频的段数相同)?

    Python 字典,其值作为 pandas DataFrame 的元组

    python - ICE 默认 IO 错误处理程序在运行某些 python 代码时执行 exit(), pid = ..., errno = 32

    android - 媒体播放器在一段时间后停止工作

    python - 我正在尝试抓取,但我的命令提示符没有打印任何内容。我究竟做错了什么?

    python - 将面板数据 reshape 为数据框 pandas

    python - Librosa 的 fft 和 Scipy 的 fft 有什么不同?