【发布时间】:2021-02-17 04:50:50
【问题描述】:
我正在尝试从 16000Hz 16 位 .wav 语音音频中绘制波形图和频谱图。我已成功获得以下地块:
但是,频谱图上的时间值不正确。我确定我的采样率在整个程序中是一致的(16000Hz),但我仍然无法获得频谱图的正确时间值。
下面是我的python脚本:
import matplotlib.pyplot as plt
import librosa
import librosa.display
import numpy as np
y, sr = librosa.load('about_TTS_0792.wav', sr=16000)
print("Current audio sampling rate: ", sr)
print("Audio Duration:", librosa.get_duration(y=y, sr=sr))
D = librosa.stft(y, hop_length=64, win_length=256) # STFT of y
S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max)
fig, ax = plt.subplots(nrows=2)
librosa.display.waveplot(y, sr=sr, ax=ax[0])
img = librosa.display.specshow(S_db, sr=sr, x_axis='s', y_axis='linear',ax=ax[1])
ax[1].set(title='Linear spectrogram')
fig.colorbar(img, ax=ax[1], format="%+2.f dB")
fig.tight_layout()
plt.show()
此代码的输出:
Current audio sampling rate: 16000
Audio Duration: 0.792
我不知道我错过了什么会导致 x 轴上的时间值不一致。请帮忙。
【问题讨论】:
标签: python audio signal-processing librosa spectrogram