matplotlib结合librosa绘制音频语谱图
一、语谱图是什么?
语谱图指将一维的时间域音频信号 x∈R(1×n) 通过短时傅里叶变换(STFT)后得到的二维信号X∈R(t×f),其中t和f分别表示时间帧数和频率段数,且语谱图的值为复数。
二、绘制语谱图
代码如下:
import librosa
import librosa.display
import matplotlib
import matplotlib.pyplot as plt
audio_file = 'test.wav'
audio, sr = librosa.load(audio_file, sr=16000)
plt.rcParams.update({"font.size": 40}) #设置图中字体大小
fig, axes = plt.subplots(
nrows=1, ncols=1, figsize=(40, 10), dpi=80, facecolor="w", edgecolor="k"
)
audio_spectrogram = librosa.amplitude_to_db(librosa.stft(audio)) #得到语谱图
librosa.display.specshow(audio_spectrogram , y_axis='log', cmap='coolwarm') #绘制语谱图
plt.colorbar(format='%+2.0f dB') #转换至dB标度
plt.title('spectrogram')
plt.xlabel('time(s)')
plt.ylabel('freq(Hz)')
plt.show()
plt.savefig('image.png')
2.样例图
文章来源:https://www.toymoban.com/news/detail-603979.html
注意
本人画图时疑惑过dB为什么有正负值这一问题,特查阅资料(链接)文章来源地址https://www.toymoban.com/news/detail-603979.html
到了这里,关于Python画音频语谱图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!