声紋(sonogram, spectrogram)は野鳥の声の分析に不可欠なツールです。横軸に時間、縦軸に周波数を取って、音の強さを色で表示します。
ここで用いられている処理は、音声である波形を周波数の信号に変換する時間−周波数変換(フーリエ変換)です。フーリエ変換するときに幾つかの調整できるパラメータがありそれぞれがどう関係しているのかをまとめてみました。案外、まとめて書かれているものがありません。そのため自分で調べました。厳密に定義しているのではなく備忘録です。初心者向けにコーネル大学の作成したCanary/Ravenのマニュアルの付録に鳥の声のスペクトル解析の章がありこれを参考にしています[1]。
ここで用いられている処理は、音声である波形を周波数の信号に変換する時間−周波数変換(フーリエ変換)です。フーリエ変換するときに幾つかの調整できるパラメータがありそれぞれがどう関係しているのかをまとめてみました。案外、まとめて書かれているものがありません。そのため自分で調べました。厳密に定義しているのではなく備忘録です。初心者向けにコーネル大学の作成したCanary/Ravenのマニュアルの付録に鳥の声のスペクトル解析の章がありこれを参考にしています[1]。
音声データのパラメータ
波形とは時間に対する強度が連続的に変化する信号を表します。音声は波形であり、ICレコーダは連続の波形を離散化(デジタル化)されて記録されます。離散化された信号も波形と呼びまし、今はディジタル信号を意味する事が多いです。
連続な信号をとびとびの信号で表すので失われる情報があります。しかし、必要とする周波数帯域の2倍以上でサンプリングレート(サンプリング周波数)で離散化すれば完全に復元できるとシャノンさんが証明しました。
この関係は、次の表のようになります。
サンプリングレート(SR) | 標本点の周期(ΔT) |
---|---|
192KHz | 5.2μs |
96KHz | 10.42μs |
48KHz | 20.83μs |
44.1KHz | 22.67μs |
音を声紋(スペクトログラム)にするには短い一定期間の波形データを切り出して(スライス)これを周波数変換し並べます。この短時間の周波数変換を短時間フーリエ変換:STFT(Short Time Fourier Transform)と呼びます。問題はこの時間の選び方です。時間と言っても離散化されているのでその切り出す波形の個数です。切り出された波形をフレームと呼んだりチャンクと呼んだりします。ここではフレームと呼びます。1フレームの波形の個数をフレーム長(Flame Length)と呼びます。各アプリではもっとわかりやすい言葉を使っていますが同じ意味です。
Amadeus Pro : FFT Size
Audacity : ウィンドウサイズ
鳥の声の解析はSRは44.1Kか48KHzのPCM録音が多いのでこれをベースに考えます。
サンプリングレート(SR) | FFTサイズ(128) | FFTサイズ(256) | FFTサイズ(512) | FFTサイズ(1024) | FFTサイズ(2048) |
---|---|---|---|---|---|
44.1KHz | 2.9ms | 5.8ms | 11.61ms | 23.2ms | 46.44ms |
周波数分解能 | 344Hz | 172Hz | 86Hz | 43Hz | 22Hz |
48KHz | 2.6ms | 5.3ms | 10.7ms | 21.3ms | 42.7ms |
周波数分解能 | 375Hz | 188Hz | 94Hz | 47Hz | 23Hz |
フレーム長(FFTサイズ)が1024の場合、20msを越えます。これはフーリエ変換の特性としてフレームの中の周波数成分を抽出するためにフレームの中で平均化していることになります。
アオジの場合、地鳴きは30ms程度です。フレーム長が20msで切り出すと地鳴きの長さの2/3を持つ事になり、フーリエ変換はその長さで平均化する事になるので時間と強度の情報が曖昧になってしまいます。
他方、FFTサイズと周波数分解能は積が一定と言う関係があって、次式で表されます。
周波数分解能 = 1/ FFT size
なので表の通りになって、アオジの地鳴きの下限周波数が7KHzだとすると、FFT size=128では350Hz程度で5%の誤差を持つ事になります。ちょっと大きいね。本当は後で述べるフィルタを掛けるとフィルタ周波数帯域の議論も必要です[1]。
そう思うと地鳴きの解析、あるいは短い時間に音程が極端に変化する(トリル)声の解析では、フレーム長(FFTサイズ)の選定は大切な事が分かります。
地鳴きの解析ではFFT Size=256か512かが適当で、時間や強度分布を議論したい場合は256を、周波数を議論したい場合は512を選ぶ事にしたい。そして、時間と周波数の両方を一つのFFT Sizeで解析する場合は、小さいサイズと大きいサイズの2つ声紋を作り比べなさいと先の文献に書いてあります。
短いFFT Sizeの場合はもう一つ大切なパラメータがあります。フィルタです。幾つも種類がありますが、色々比べた結果Hammingで良いと思います。
参考文献:
[1] "A Biologist’s Introduction to Spectrum Analysis, " Canary 1.2 User’s Manual, Appendix B, 1995, Cornell Laboratory of Ornithology.
なので表の通りになって、アオジの地鳴きの下限周波数が7KHzだとすると、FFT size=128では350Hz程度で5%の誤差を持つ事になります。ちょっと大きいね。本当は後で述べるフィルタを掛けるとフィルタ周波数帯域の議論も必要です[1]。
そう思うと地鳴きの解析、あるいは短い時間に音程が極端に変化する(トリル)声の解析では、フレーム長(FFTサイズ)の選定は大切な事が分かります。
地鳴きの解析ではFFT Size=256か512かが適当で、時間や強度分布を議論したい場合は256を、周波数を議論したい場合は512を選ぶ事にしたい。そして、時間と周波数の両方を一つのFFT Sizeで解析する場合は、小さいサイズと大きいサイズの2つ声紋を作り比べなさいと先の文献に書いてあります。
短いFFT Sizeの場合はもう一つ大切なパラメータがあります。フィルタです。幾つも種類がありますが、色々比べた結果Hammingで良いと思います。
結論:
そこで、地鳴きの解析にはモノラル、44.1KHzサンプリング(必要に応じてダウンコンバート)、フレーム長(FFTSize=512点)、Hammingフィルタをデフォルトにしてみたい。参考文献:
[1] "A Biologist’s Introduction to Spectrum Analysis, " Canary 1.2 User’s Manual, Appendix B, 1995, Cornell Laboratory of Ornithology.
コメント