7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

音声分析におけるフーリエ変換後の声の高さ(ヘルツ)を理解する

Posted at

はじめに

音声分析において、フーリエ変換後の周波数領域で、声の高さ(ヘルツ)がどのように得られるのかをまとめた。

この記事は、私が前に書いた記事を読んでからの方が理解しやすいように思う。
音声分析におけるフーリエ変換とスペクトログラムを理解する

周波数とヘルツ(Hz)

  • 周波数:単位時間あたりの振動数のこと。単位時間とは1秒ではなく任意。
  • ヘルツ(Hz):周波数の単位。周波数の単位がヘルツの場合は1秒あたりの振動数

人間は音の高さ1秒あたりの振動数で認識する。そのため、周波数の単位がヘルツ(Hz)でないと、音の高さを知ることができない。しかし、python等のライブラリでフーリエ変換を行う場合は、周波数領域の単位が得られないことが多い。では、どのように周波数領域の単位をヘルツに変換するのかを考える。

スクリーンショット 2020-09-26 14.44.14.png

wavファイルの1秒とは

wavファイルの時間軸の何点が1秒間であるかは単位付きのサンプリング周波数で示される。「単位付きの」と表現しているのは、上記で説明した通り、サンプリング周波数に単位がない場合は1秒あたりでない可能性があるからだ。サンプリング周波数の単位がヘルツの場合はwavファイルの1秒間の点数を示す。サンプリング周波数(Hz)は1秒を何点で表すかであり、音の高さを示す周波数ではないので注意が必要。

スクリーンショット 2020-09-26 14.44.19.png

ちなみに、点で波の1周期を描画するためには最低でも2点必要である。そのため、サンプリング周波数20kHzで描画できる最大の波の振動数は10000周期。すなわち、サンプリング周波数20kHzのwavファイルで表現できる音の最大周波数は10kHzまでである。

サンプリング周波数 wavを音にしたときに表現できる最大の周波数
20kHz 10kHz
30kHz 15kHz
40kHz 20kHz

人は約20kHzまでの音しか聞こえないと言われている。そのため、サンプリング周波数はだいたい40kHzあれば良いと言われている。

フーリエ変換後の周波数領域でのヘルツ(Hz)

では、音声ファイルをフーリエ変換した場合、周波数領域の単位がどのようになるか考える。まずは、wavファイルの条件を明確にする。今回はサンプリング周波数20kHzで時間軸の点数40000点(2秒)のwavファイルで考える。

サンプリング周波数 音の最大の周波数 1秒あたりの点数 時間軸の点数
20kHz 10kHz 20000点 40000点(2秒)

このwavファイルをフーリエ変換する。フーリエ変換は時間領域全体に対して適用される。そのため、フーリエ変換後の周波数は40000点(2秒)を単位時間とした値となる。ここで、1秒を単位時間とするには20000(サンプリング周波数)/40000(横軸の点数)をかければ良い。すなわち、今回の場合は周波数領域の周波数軸を1/2することで、単位をヘルツ(Hz)に変換することができる。これで、周波数領域でも音の高さを知ることができる。

スクリーンショット 2020-09-26 14.41.37.png

短時間フーリエ変換後の周波数領域でのヘルツ(Hz)

では、音声ファイルを短時間フーリエ変換した場合、周波数領域の単位がどのようになるか考える。wavファイルと短時間フーリエ変換の条件は以下のようにする。

サンプリング周波数 音の最大の周波数 1秒あたりの点数 時間軸の点数 短時間フーリエ変換の窓幅の点数
20kHz 10kHz 20000点 40000点(2秒) 2000点(0.1秒)

このwavファイルを短時間フーリエ変換する。短時間フーリエ変換は時間軸に対して窓幅ごとに適用される。そのため、フーリエ変換後の周波数は2000点(0.1秒)を単位時間とした値となる。ここで、1秒を単位時間とするには20000(サンプリング周波数)/2000(窓幅の点数)をかければ良い。すなわち、今回の場合は周波数領域の周波数軸を10倍することで、単位をヘルツ(Hz)に変換することができる。これで、周波数領域でも音の高さを知ることができる。

スクリーンショット 2020-09-26 14.42.50.png

ヘルツ(Hz)でスペクトログラムを見る

縦軸を周波数(Hz)、横軸を時間(秒)でスペクトログラムを作成した。どちらの声が高いか、スペクトログラムからも読み取れる。

スクリーンショット 2020-09-26 15.05.55.png

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?