4

現在、パラメーターが別のフレームワーク (Kaldi) の stfft プロセスに似ているように、librosa を使用して stfft を実行しようとしています。

オーディオファイルはfash-b-an251です

Kaldi は、16 KHz のサンプル周波数、window_size = 400 (25ms)、hop_length=160 (10ms) を使用してそれを行います。

これから抽出されたスペクトログラムは次のようになります。

ここに画像の説明を入力 次に、librosa を使用して同じことを試みました。

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()

これは基本的にここから取られます:

パラメーターに適合するように stfft 関数を変更しました..問題は、まったく異なるプロットを作成することです..

ここに画像の説明を入力

だから..私はlibrosaで間違っているのですか?..なぜこのプロットはkaldiで作成されたものと大きく異なるのですか?

何か不足していますか?

4

1 に答える 1

1

これは Hz スケールに関係しています。最初の画像は線形で、2 番目の画像は対数です。いずれかの画像の縮尺を変更して、もう一方の画像と一致させることで修正できます。

于 2021-02-01T19:07:35.137 に答える