スペクトログラム
スペクトログラム(英: Spectrogram)とは、複合信号を窓関数に通して、周波数スペクトルを計算した結果を指す。3次元のグラフ(時間、周波数、信号成分の強さ)で表される。
スペクトログラムは声紋の鑑定、動物の鳴き声の分析、音楽、ソナー/レーダー、音声処理などに使われている。スペクトログラムを声紋と呼ぶこともある。スペクトログラムを生成する機器をソノグラフ(sonograph)という。
形式
[編集]最も一般的な形式では、横軸が時間を表し、縦軸が周波数を表す。そして、各点の明るさや色である時点のある周波数での強度を表す。
形式には様々なバリエーションがある。横軸と縦軸を入れ替えて、時間が上下に流れる形式にすることもある。また、強さをZ軸とした3次元のグラフで描画することもある。周波数は線型目盛でも対数目盛でもよく、用途によって使い分ける。例えば音声信号で倍音の関係を示す場合は周波数を線型目盛で表し、音楽的または音色的関係を表す場合は周波数を対数目盛で表す。
強度
[編集]振幅の大きさをもって強度とするものを振幅スペクトログラム(英: amplitude spectrogram)[1]、振幅の2乗をもって強度とするものをパワースペクトログラム(英: power spectrogram)という[2]。
強度はしばしばレベル表現(対数スケール)で表される。基準量は用途によって異なり、純粋に対数表現するならば 、スペクトログラム内の相対関係をみるならばピーク値 [3]や中央値 [4]が用いられる。数値はdB単位を採用する場合が多い。
生成
[編集]スペクトログラムを作成する方法は主に2種類存在する。1つはバンドパスフィルタ群を使う方法、もう1つは短時間フーリエ変換(STFT)で計算する方法である。
フィルタを使った手法は主にアナログの連続信号で使われる。信号の周波数範囲(音声信号の場合、20Hz から 20kHz)を等間隔に分ける。ただし、線型に等間隔な場合(例えば 0-100、100-200、200-300、…)と対数的に等間隔の場合(例えば 10-100、100-1000、1000-10000、…)がある。信号が各フィルタに入力されると、その周波数帯域以外の周波数成分は除去される(ただし、実際のフィルタは窓関数としては不完全なので、周囲の周波数帯域の成分が若干残る)。各フィルタの出力を時間と共に記録する。その記録を水平にしたものを周波数帯域の順番に積み重ねるように置くと、横軸を時間とし縦軸を周波数としたスペクトログラムが完成する。
デジタル信号では、STFTを使ってスペクトログラムを作成する。時間領域で標本化されたデータはチャンクに分けられ(チャンクは一般にオーバーラップさせる)、チャンク毎にフーリエ変換を施す。各チャンクの変換結果がスペクトログラムのある時間の全周波数成分のグラフ(スペクトル)となるので、これを垂直において時系列に並べるとスペクトログラムが完成する。
スペクトログラムからの音響生成
[編集]上述の変換処理を逆に行うこともできる。以下のプログラムはデジタル画像をスペクトログラムと解釈して音に変換できる。
- MetaSynth (Macintosh)
- Coagula (Windows)
- Enscribe (Linux)
- The Analysis & Resynthesis Sound Spectrograph (クロスプラットフォーム)
- JavOICe (Javaアプレット)
- FL Studio の "BeepMap"
この技法を電子音楽のアーティストが利用して、音楽にスペクトログラムの画像を潜ませることがある。以下に例を挙げる。
- エイフェックス・ツインは自身の画像をスペクトログラムとして潜ませた。Windowlicker のトラック2の最後の9秒間がそれである。MP3でも認識可能だが、CDから直接スペクトログラム化したときほど鮮明ではない。同じシングルのトラック1にも螺旋の画像が潜ませてある[1] 。
- ナイン・インチ・ネイルズは2007年のアルバム「イヤー・ゼロ」でこの技法を使っている。イヤー・ゼロのリリース前にリークされた "My Violent Heart" には最後に無音の部分がある。ここをスペクトログラム化すると、空から手が伸びてきている画像が出てくる。正式リリース版では、"The Warning" という曲の最後に同じ画像がある。イヤー・ゼロには他にもいくつかの画像が潜ませてある。
現代音楽では、製作途中にスペクトログラムを使う場合がある。スペクトログラム化した状態で直接周波数や時点を指定して音の強さを変更し、再度もとの音に戻す。
派生
[編集]メルスペクトログラム
[編集]メルスペクトログラム(英: mel spectrogram)は周波数軸がメル尺度のスペクトログラムである。
メルスペクトログラムは(リニア)スペクトログラムにメルフィルターバンクを適用して生成されることが多く、その場合は周波数軸の次元数が小さくなる。すなわち聴覚特性に基づいた次元圧縮としても機能するため、信号処理、特にディープラーニングの前処理でしばしば用いられる[5]。
メルスペクトログラムは振幅スペクトログラムを非可逆的に変換したものであるため[6]、メルスペクトログラムから振幅スペクトログラムを厳密に再生することは出来ない。振幅スペクトログラムの推定には非負最小二乗法や最小二乗法+クリッピングが用いられる[7][8]。
脚注
[編集]- ^ "A(m, k) は振幅スペクトログラム(小野順貴(2016))
- ^ " はパワースペクトログラムと呼ばれる。(小野順貴(2016))
- ^ "Compute dB relative to peak power ... librosa.power_to_db(S**2, ref=np.max)" librosa 0.9.1.
- ^ "compare to median power >>> librosa.power_to_db(S**2, ref=np.median)" librosa 0.9.1.
- ^ "ニューラルボコーダはメルスペクトログラムなどの音響特徴量から音声を復元するボコーダに深層学習を適用したもの" 松原. (2021). HiFi-GAN ボコーダにおける LPCNet 特徴量の検討. 日本音響学会.
- ^ "メルフィルタバンクも不可逆な変換である." 以下より引用。田口. (2020). 深層学習を用いたデータ駆動型調音・音声間変換に関する研究. 九州大学.
- ^ "メルスペクトログラムから振幅スペクトルへの復元は非負拘束最小二乗法 ... によって得られる." 以下より引用。田口. (2020). 深層学習を用いたデータ駆動型調音・音声間変換に関する研究. 九州大学.
- ^ "specgram = torch.relu(torch.linalg.lstsq" 以下より引用。PyTorch. torchaudio.transforms._transforms. 公式HP. 2024-06-13 閲覧.
参考文献
[編集]- 小野順貴「短時間フーリエ変換の基礎と応用」『日本音響学会誌』第72巻第12号、日本音響学会、2016年、764-769頁、doi:10.20697/jasj.72.12_764。
関連項目
[編集]外部リンク
[編集]- Sonogram Visible Speech Javaで書かれたスペクトログラム生成ソフト。Java WebStart により直接ウェブページから起動できる。
- エイフェックス・ツインのスペクトログラム画像
- DiscreteTFDs - スペクトログラムなどを計算するソフトウェア(MATLAB用)
- Praat - 音声学用ソフトウェア
- KTH WaveSurfer - 音声視覚化ソフトウェア
- baudline signal analyzer - FFTスペクトログラムソフトウェア
- xeno-canto 3100以上の鳥の鳴き声のスペクトログラム