【发布时间】:2020-08-31 02:06:26
【问题描述】:
我使用以下代码在 librosa 中生成了一个 melspectrogram
import os
from matplotlib import pyplot as plt
import librosa
import librosa.display
import pylab
import numpy as np
x, sr = librosa.load('audio/example.wav')
mel = librosa.feature.melspectrogram(x,sr)
P = librosa.power_to_db(mel, ref=np.max)
librosa.display.specshow(P)
pylab.savefig("example.png", bbox_inches=None, pad_inches=0)
据我了解,频谱图只是音频信号的 STFT 矩阵的直观表示。我正在尝试重建用于生成频谱图的 STFT 矩阵,以便将其传递给 griffin lim 函数。我该怎么做?
使用 STFT 数据生成频谱图
def generate_spectrogram(x, sr):
X = librosa.stft(x)
Xdb = librosa.amplitude_to_db(abs(X))
fig = plt.figure(figsize=(10, 10), dpi=100, frameon=False)
ax = fig.add_axes([0, 0, 1, 1], frameon=False)
ax.axis('off')
librosa.display.specshow(Xdb, sr=sr, cmap='gray', x_axis='time', y_axis='hz')
plt.savefig('example.png', quality=100, bbox_inches=0, pad_inches=0)
librosa.cache.clear()
【问题讨论】:
标签: python audio signal-processing spectrogram librosa