我目前正在尝试使用librosa来执行stfft,这样参数类似于来自不同框架(Kaldi)的stfft进程。
音频文件为fash-b-an251
Kaldi使用16 KHz的采样频率,window_size = 400(25ms),hop_length = 160(10ms)。
从中提取的光谱图如下所示:
import numpy as np
import sys
import librosa
import os
import scipy
import matplotlib.pyplot as plt
from matplotlib import cm
# Input parameter
# relative_path_to_file
if len(sys.argv) < 1:
print "Missing Arguments!"
print "python spectogram_librosa.py path_to_audio_file"
sys.exit()
path = sys.argv[1]
abs_path = os.path.abspath(path)
spectogram_dnn = "/home/user/dnn/spectogram"
if not os.path.exists(spectogram_dnn):
print "spectogram_dnn folder didn't exist!"
os.makedirs(spectogram_dnn)
print "Created!"
y,sr = librosa.load(abs_path,sr=16000)
D = librosa.logamplitude(np.abs(librosa.core.stft(y, win_length=400, hop_length=160, window=scipy.signal.hanning,center=False)), ref_power=np.max)
librosa.display.specshow(D,sr=16000,hop_length=160, x_axis='time', y_axis='log', cmap=cm.jet)
plt.colorbar(format='%+2.0f dB')
plt.title('Log power spectrogram')
plt.show()
raw_input()
sys.exit()
基本上取自here:
我已经修改了stfft功能,使其适合我的参数.. 问题在于创造了一个完全不同的情节。
那么..我在librosa中做错了什么?..为什么这个情节与kaldi创建的情节有很大的不同。
我错过了什么吗?
答案 0 :(得分:0)
它与赫兹刻度有关。第一个图像中的一个是线性的,而第二个图像中的一个是对数的。您可以通过更改任一图像中的比例以匹配另一个来修复它。