人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

pythonでmfccを計算するコードで

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次元配列で得たいのですが、どうすればそういう事が出来るでしょうか?

●質問者: tak
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● aidiary
●200ポイント ベストアンサー

回答リクエストが来たのですがこれは私に質問してるのでしょうか・・・?

mfccsがすでに二次元配列になっていますよ。

print(mfccs.shape) => (20, 64) = 20x64の二次元配列
MFCCの次元が20でフレーム数(時間)が64です。

print(mfccs)
で配列の内容が見られます。

とこういうことでいいんでしょうか?

https://qiita.com/martin-d28jp-love/items/34161f2facb80edd999f


takさんのコメント
画像としてプロットした平面を2次元配列で得たいのです。 https://camo.qiitausercontent.com/4c73585f44a84c958ad1438ef37d55f26d9b3149/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f34373432372f36626539653738622d313730362d633162312d386538662d3331333066373632346638322e706e67 変数mfccsの内容はこれそのものとは違いますよね?

aidiaryさんのコメント
その平面って20x64のmfccの値を色で表しただけだと思いますけど・・・specshowの縦の列は20個、横の列は64個の矩形にmfccの値で色を付けてるのだと思ってました。specshow()の内容を詳しく見てないから違うかもしれませんが。 このようなコードを書いて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()

takさんのコメント
縦軸の目盛りがマイナスから始まっていたり、 mfccの配列中の値もマイナスを取っていたり するのはどういう意味なんでしょうか
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ