Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Audacityで周波数分析

Audacityを使ってみました - Smile Engineering Blogで、「Audacity」を紹介しました。
今回は「Audacity」で周波数の波形表示を使ってみます。

スペクトログラムとスペクトラム

Audacityの周波数の波形表示には2つの方法があります。

f:id:jspnet:20191129001147j:plain
Audacityの周波数分析

【ファイル名】メニューから【 スペクトログラム】、もう一つは、【解析】➞【 スペクトラム表示】です。

時間軸の波形

デフォルトでは時間軸の波形です。

f:id:jspnet:20191129001150j:plain
時間軸の波形

スペクトログラム

【ファイル名】➞【 スペクトログラム】
表示波形のファイル名のところを、プルダウンするとメニューが出てきます。スペクトログラムを選択すると、縦軸が周波数、横軸が時間で、周波数成分のレベルは色で表されます。「Audacity」では、青→赤→白の順にレベルが上がっています。時間軸の波形(上の図の波形)で4.5秒~6.5秒くらいで振幅が大きい(信号のレベルが大きい)部分があります。次の波形で見ると、約1kHzまでの低域が白く表示されています。この区間の信号の周波数成分は1kHz以下に集中していることが分かります。

f:id:jspnet:20191129001154j:plain
スペクトログラム

スペクトラム

【解析】➞【 スペクトラム表示】
次の波形は、信号の大きい4.5秒~6.5秒くらいの範囲を選択したものです。

対数周波数軸

前の図の波形のスペクトログラムで白くなっている0Hz~1kHz位のレベルが高く、特に600Hz, 880Hz付近が大きいことが分かります。また、スペクトログラムで赤くなっている3kHz付近も少しレベルがあることが分かります。

f:id:jspnet:20191129001156j:plain
スペクトラム

リニア周波数軸

こちらでも、0Hz~1kHz(特に600Hz, 880Hz), そのあとの3kHz付近のレベル高い特性が分かります。

f:id:jspnet:20191129001159j:plain
リニア周波数軸

「サイズ」とは周波数解析するフレームサイズで、FFT高速フーリエ変換)のサイズ(サンプル数)です。一般的には2のべき乗だと都合が良いのでAudacityでも、256, 512, 1024, ... になっています。大きい方が品質が良くなりますが、PCのスペックが低く時間がかかる場合は小さくすると品質は下がりますが、とりあえず早くはなります。 例えば、48kHzの場合、サイズ=1024サンプルとは約21.33msになります。

1/48000(Hz) × 1024 = 21.33(ms)

「軸」は、横軸のサンプリング周波数です。例えば48kHzの場合0~24kHzになり、表現できる周波数はサンプリング周波数の半分です(サンプリング定理: サンプリング周波数とビットレート・前編 - Smile Engineering Blog)。対数とリニアは表示方法なのでどちらでも。

スペクトラム表示 設定 説明
アルゴリズム スペクトラム表示 周波数成分の表示
関数: Hanningウィンドウ 窓関数
サイズ: 128~65,536(※) FFTのサイズ
軸: 対数周波数軸 or リニア周波数軸 表示方法なのでどちらでも

(※)「Audacity」では、最大65,553まであり、大きい方が精度が高いです。

トーン信号の生成

【ジェネレーター】➞【 トーン】
信号を生成する場合は、ジェネレーターです。今回はトーン信号を生成してみました。 サイン波で周波数は適当に1000(Hz)です。

トーン 設定 説明
波形: サイン波 波形の種類
周波数(Hz): 1000 とりあえず1kHz
振幅(0-1): 0.8 0~1.0の値で、今回はデフォルトのままです。

カーソルを波形の上に置き、Ctrl+スクロールで波形が拡大されます。

f:id:jspnet:20191129001202j:plain
正弦波

これを、スペクトラム表示すると、1000Hzのところのとんがっているのが分かります。

f:id:jspnet:20191129001206j:plain