広告 オーディオショー関連

FFmpegのshowspectrumpicでスペクトログラム表示ツールを作成|各種音源をスペクトログラム表示

ストラヴィンスキー”春の祭典”の「いけにえの踊り」 (カラヤン指揮 BPO 1964年録音:ハイレコ)

当ブログでは、これまでCD、ハイレゾ、レコードなどの音源をAudacityやWaveSpectraを用いたスペクトル分析で、横軸に周波数、縦軸に音圧レベルで表示する平面的な解析を行ってきました。 一方、今回フォーカスするスペクトログラムは、横軸に時間、縦軸に周波数、音圧レベルをカラーで3次元的にビジュアル表示するものです。 つまり、「いつ、どの周波数(倍音など)が、どれくらい強かったか」が分かります。 例えばCD音源と比較した、カートリッジ系の倍音に依るレコード音源の音質差がビジュアル的に掴めるかもしれません。

ところで、スペクトログラムを表示するアプリとして、Sonic Visualiser (公式サイト:ここをクリックがあります。 このアプリは多機能かつ優秀ですが、個人的な感想として、操作にはスキルが必要で、スペクトログラムの表示も若干明瞭感にかける気がします。

そこで、今回はシンプル操作で表示画質の良いスペクトログラムが表示出来る、FFmpegフィルタのshowspectrumpicを使った、Spectrogram Viewer ショートカットを作成しましたので、この作成手順を紹介します。

 

スペクトログラムを画像化するFFmpegフィルタのshowspectrumpicのコマンド

以下のコマンドを、ターミナルから実行すると、スペクトログラムを画像化することができます。

 command bash
ffmpeg  -ss 0 -t 30 -i "input" -filter_complex\
showspectrumpic=s=1280x720:mode=0:\
color=intensity:scale=log:saturation=1:\
win_func=hann:orientation=vertical:gain=1:\
legend=1:start=0:stop=0 \
-y "out.png"
========
以下のコマンドでオプション詳細を調べることができます。
ffmpeg -h filter=showspectrumpic
なお、FFTサイズは内部で自動決定され、FFTサイズを指定するオプションはありません。

コマンド概要

  1. -ss 0 -t 30: 0sから30s間を切り出し、分析時間を指定する。(横軸ズーム) 通常は無指定で全再生時間になる。
  2. input:メディアファイルのパスを指定(動画は、音声部のスペクトログラムを表示します)
  3. s=1280x720:出力するスペクトログラム画像の解像度を指定(解像度を上げると拡大時のノイズが減少します。 ただし、軸名サイズが小さくなります)
  4. color=intensity:テーマ色で、15色の中から指定
  5. win_func=hann:関数窓(22種類)を指定
  6. mode=0:0で、LchとRchの画像を重ねる。 1 で、Lchを上段、Rchを下段で表示
  7. start=0:stop=0:DCからナイキスト周波数を表示 start=1000:stop=20000にすると、1khz〜20khzを表示(縦軸ズーム)
  8. out.png:スペクトログラム画像をpngで、パス指定した場所に出力(拡張子をmp4にすれば動画保存も可能) -y で上書き保存
FFmpegのインストール:
showspectrumpicフィルタを利用するには、FFmpegのインストールが必要です。 インストール方法は、以下の記事が参考になります。 クリックして参照してください。
「HomebrewでMacにFFmpegをインストールする方法と使い方」

 

オペレータ
オペレータ
以上のコマンドで、スペクトログラムを画像化できますが、操作が煩雑で非効率ですので、次節の、macOSショートカット Spectrogram Viewer を作成することをオススメします。

 

スペクトログラム表示ツール: Spectrogram Viewer|macOSショートカットの作成

ショートカット処理ステップ


  • START

    1. Finder表示 ファイル選択
    2. メディアファイルか否かの判定
    3. 入力ダイアログが表示され、オプションの値を変えることが可能

    4. bashシェルスクリプトでshowspectrumpicコマンドの実行とスペクトログラム画像化
    5. Quick Lookでスペクトログラムを表示

  • END


 

ショートカットの作成手順

macOSショートカット・アプリを起動して「ファイル」>「新規ショートカット」をクリックすると、まっさらなショートカット編集画面が現れます。 ここに前記の「ショートカット処理ステップ」に対応する必要なアクションを配置して行きます。 各アクションは、下に示す内容で設定します。 マジック変数の扱いは、「これで分かったマジック変数」を参照してください。

 

シェルスクリプトを実行

【シェルスクリプトを実行】アクションは、以下のコードをペーストします。

28行〜51行は、ImageMagick(公式サイトはここをクリック) でスペクトログラムにタイトル(ファイル名)を付けるルーチンです。 ターミナルより、以下のコマンドで、Homebrewを経由してインストールが可能です。 
 brew install imagemagick
ーーーー
スペクトログラム画像のタイトルが不要なら、この28行〜51行 は必要ありません。 この場合、53行は、 cat "$tmp"  に変更します。

 

評価用ピュアー音源を使って、スペクトログラムを表示させてみます。

評価用ピュアー音源は、WaveGeneで生成しました。(参照ページ:ここをクリック

スイープ音源:
-20db sin波 100hzから20khzまでリニアで60秒間スイープ (16bit 44.1khz wav)

100hz〜20khzまで直線で描画されています。
ノコギリ波:
-20db 2.5khzノコギリ波 10秒間 (16bit 44.1khz wav)

2.5khz毎に20khzまでストライプ状に描画されています。
ピンクノイズ:
-20db pinkノイズ 5秒間 (16bit 44.1khz wav)

DC〜ナイキスト周波数(22.05khz)までノイズ成分が画面一杯に描画されています。 pinkノイズは高域に向かってレベルが僅かに低下しますので、縦方向にグラディエーションが確認されます。

 

リアル音源を使って、スペクトログラムを表示させてみます。

バイオリンのビブラートに着目:
1966年録音・ヘンデル バイオリン・ソナタ 第4番 第1楽章 Vn:グリュミオー(wav-CD format)

バイオリンの巨匠:グリュミオーのビブラート

バイオリンの巨匠:グリュミオーのビブラート
バイオリンはノコギリ波に近く多数の倍音が含まれます。 高次の倍音ほどビブラートの揺れ幅(見た目の上下幅)が大きくなっています。 これはビブラート(△f)がFM変調故に、倍音番号に比例してビブラートの△fが大きくなるためです。[分析時間:40秒から5秒間]

 

 

以上、音声ファイルのスペクトログラムを表示するツールの紹介でした。 今回作成した、Spectrogram Viewer を使って、過去に試聴評価した CD、ハイレゾ、レコードから収録音源に対して、再評価を行う予定です。

おすすめ

 

スポンサーリンク