import matplotlib.pyplot as plt, librosa, librosa.display, urllib
x, fs = librosa.load('wavfile')
mfccs = librosa.feature.mfcc(x, sr=fs)
librosa.display.specshow(mfccs, sr=fs )
これはリンク先と同じ内容ですが
https://qiita.com/martin-d28jp-love/items/34161f2facb80edd999f
ここでプロットした2次元平面の値を
2次元配列で得たいのですが、どうすればそういう事が出来るでしょうか?
回答リクエストが来たのですがこれは私に質問してるのでしょうか・・・?
mfccsがすでに二次元配列になっていますよ。
print(mfccs.shape) => (20, 64) = 20x64の二次元配列
MFCCの次元が20でフレーム数(時間)が64です。
print(mfccs)
で配列の内容が見られます。
とこういうことでいいんでしょうか?
https://qiita.com/martin-d28jp-love/items/34161f2facb80edd999f
その平面って20x64のmfccの値を色で表しただけだと思いますけど・・・specshowの縦の列は20個、横の列は64個の矩形にmfccの値で色を付けてるのだと思ってました。specshow()の内容を詳しく見てないから違うかもしれませんが。
2018/03/27 10:58:15このようなコードを書いてmfccの値とカラーバーの値を照らし合わせてみると同じになっているようです。平面の値ってRGBのピクセルって意味ではないですよね?
import librosa
import librosa.display
fname = 'test.wav'
y, sr = librosa.load(fname, sr=16000)
mfcc = librosa.feature.mfcc(y, sr=sr)
print(mfcc[0]) # 平面の一番下の行の値
print(mfcc[1]) # 平面の一番下から2つめの行の値
print(mfcc[2]) # 平面の一番下から3つめの行の値
librosa.display.specshow(mfcc, sr=sr, x_axis='time')
plt.colorbar()
縦軸の目盛りがマイナスから始まっていたり、
2018/03/27 11:27:54mfccの配列中の値もマイナスを取っていたり
するのはどういう意味なんでしょうか