スペクトログラムを使って音分析をする場合には、グラフのスケールを統一する必要がある。つまり、比較するグラフ間の縦軸と横軸を一致させないといけない。今回はスペクトログラムの時間軸と周波数軸をGoogle Colaboratry上でコードにより設定する。
前回作成したスペクトログラムのコードを利用する。
まずGoogle Colaboratryサイトへ移動して”sound02.jpynb”を開く。
ノートブックの複製
前回のコードを改訂して利用するため、ノートブックごと複製する。
メニューの[ファイル]→[ドライブにコピーを保存]クリック。読み込み開始。
待っていると、”sound02.jpynbのコピー”という名前のノートブックが新たに開いた。
ノートブックの複製完了。
Googleドライブをマウント
ノートブックの名前を変更後、忘れないうちに、ドライブをマウントした。
スケールつきスペクトログラムのコード実行
コードの一部を変更して実行(右向き矢印マークをクリック)。実行結果が表示された。
メニューの[ファイル]→[保存]クリック。
Google Colaboratoryリストに”sound03.jpynb”が追加された。
スケール設定コード部分の詳細説明
以下、コードの変更箇所を記述する。
”x_lim”、”y_lim”がmatplotlib.pyplotモジュールのx軸・y軸の表示範囲を設定する関数。
ネコが聞き取れる周波数が65kHzまでらしいので、周波数の上限を65000にした。
①実行結果として表示するグラフのサイズを設定(単位はインチ)
②グラフのタイトルを設定
③グラフのx軸のラベル設定
④グラフのy軸のラベル設定
⑤グラフのx軸の表示範囲を設定。音の開始から4秒(後)から9秒(後)までと設定。
⑥グラフのy軸の表示範囲を設定。0Hzから65000Hzに設定。
⑦カラーマップを作成して表示させる。
⑧パス”out_put”にグラフを保存する。
実行結果
実行結果。
x軸の設定はうまくいった。前回(sound02.jpynb)のスペクトログラムの4から9秒の範囲がちゃんと選択されている。
y軸の設定もできてはいるが、20000Hz以上が表示されていない!!!このWAVデータにはこの周波数域が記録されていないということ?初回(sound01.jpynb)の実行結果ではサンプリング周波数が44100Hzと出ていたのだが、どういうこと?サンプリング周波数の半分になる?人が聞き取れる周波数帯だけが記録されているということ?この辺りの勉強しないといけないな・・と思いながら、今回は終了。
参考書籍