当前位置:   article > 正文

Python画音频语谱图_利用librosa路画出语音信号的语谱图

利用librosa路画出语音信号的语谱图

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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2.样例图

注意

本人画图时疑惑过dB为什么有正负值这一问题,特查阅资料(链接


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/134364
推荐阅读
相关标签
  

闽ICP备14008679号