ノック77 :周波数スペクトルを表示してみよう
一般的に高い音は周波数が大きく周期が短く、低い音は周波数が小さく周期が長くなります。
波形は様々な周波数のあつまりで、複数の周波数を分解する方法として
フール絵変換があります。
audo1をフーリエ変換します。
fftの値には複素数も含まれています。振幅スペクトルを表示するためには、np.abs(fft)で複素数の値を絶対値に変換します。
横軸は周波数となります。np.fft.fftfreqで取得します。
実行結果
(44100,)
(44100,)
479.5421053865585
2.649061305061189e-05
22049.0
-22050.0
matplotlibを使用して表示します。
//2で2で割ることを表しています。(少数は切り捨て)
振幅の半分は符号が異なるだけで同じデータなので2で割っています。
実行結果
1000Hz以下のデータが大半であることがわかります。
2で割らなかったらどうなるかというと、
ノック78 :スペクトログラムを可視化してみよう
スペクトログラムデータの作成を行います。
2048標本点をフレーム長とし,フレーム長の4分の1に相当する512標本点をフレーム周期とし,フレーム処理を行います。
実行結果
(1025, 87)
(1025, 87)
(1025, 87)
どの値も以下のように算出した値となります。
2048÷2=1024+1=1025
44100Hz÷512(サンプリング幅)=86+1=87
スペクトログラムを可視化してみます。
実行結果
縦軸がHzです。1000Hz以下がとくに音のデータが多いことがわかります。
色はdb(デシベル)表記です。dbは音の大きさを表す単位です。