赞
踩
语谱图指将一维的时间域音频信号 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')
本人画图时疑惑过dB为什么有正负值这一问题,特查阅资料(链接)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。