使用 Librosa 绘制梅尔频谱图
Using Librosa to plot a mel-spectrogram
我在使用声音的自定义文件路径在 librosa 中创建梅尔频谱图时遇到问题。
我正在关注此文档:
https://librosa.github.io/librosa/generated/librosa.feature.melspectrogram.html
并且我查看了这个堆栈溢出 post:
但是 none 这帮助我解决了我的问题。
import librosa
y, sr = librosa.load("path_to_my_wav_file")
librosa.feature.melspectrogram(y=y, sr=sr)
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
librosa.display.specshow(librosa.power_to_db(y,
ref=np.max), y_axis='mel', fmax=8000, x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('Mel spectrogram')
plt.tight_layout()
有人能告诉我如何修复这段代码,以便它正确显示梅尔频谱图并将其保存为 jpg 文件吗?谢谢!
哦,你的问题主要是关于如何保存为jpg?
如果只是想显示图片,只需要添加一行代码:
plt.show()
如果你想保存一个jpg,无轴,无白边:
import os
import matplotlib
matplotlib.use('Agg') # No pictures displayed
import pylab
import librosa
import librosa.display
import numpy as np
sig, fs = librosa.load('path_to_my_wav_file')
# make pictures name
save_path = 'test.jpg'
pylab.axis('off') # no axis
pylab.axes([0., 0., 1., 1.], frameon=False, xticks=[], yticks=[]) # Remove the white edge
S = librosa.feature.melspectrogram(y=sig, sr=fs)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max))
pylab.savefig(save_path, bbox_inches=None, pad_inches=0)
pylab.close()
我在使用声音的自定义文件路径在 librosa 中创建梅尔频谱图时遇到问题。
我正在关注此文档: https://librosa.github.io/librosa/generated/librosa.feature.melspectrogram.html
并且我查看了这个堆栈溢出 post:
但是 none 这帮助我解决了我的问题。
import librosa
y, sr = librosa.load("path_to_my_wav_file")
librosa.feature.melspectrogram(y=y, sr=sr)
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
librosa.display.specshow(librosa.power_to_db(y,
ref=np.max), y_axis='mel', fmax=8000, x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('Mel spectrogram')
plt.tight_layout()
有人能告诉我如何修复这段代码,以便它正确显示梅尔频谱图并将其保存为 jpg 文件吗?谢谢!
哦,你的问题主要是关于如何保存为jpg?
如果只是想显示图片,只需要添加一行代码:
plt.show()
如果你想保存一个jpg,无轴,无白边:
import os
import matplotlib
matplotlib.use('Agg') # No pictures displayed
import pylab
import librosa
import librosa.display
import numpy as np
sig, fs = librosa.load('path_to_my_wav_file')
# make pictures name
save_path = 'test.jpg'
pylab.axis('off') # no axis
pylab.axes([0., 0., 1., 1.], frameon=False, xticks=[], yticks=[]) # Remove the white edge
S = librosa.feature.melspectrogram(y=sig, sr=fs)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max))
pylab.savefig(save_path, bbox_inches=None, pad_inches=0)
pylab.close()