ホーム » 機械学習 » 音声解析のための準備をPythonでやる

音声解析のための準備をPythonでやる

こんにちは。 この記事はメモみたいになってます。次の記事へ移るようおねがいします。 本日は音声解析の準備段階としてスペクトログラムの可視化まで行いたいと思います。音声解析のライブラリは色々あるようですがlibrosaがおそらく一番だそうです。今回、スペクトログラムまで進めるにあたって専門用語がかなり多く、それぞれ非常に難しいものでした。特にメルあたりを理解するには少し時間がかかりそうです。。まぁ、始めましょう。
上の図を見てほしいんですが、音声解析で扱うデータは音です。しかし、この音が単純ではなかったわけです、何かと言うと、音源特性と声道特性という2つの要素から音が構成させているのです。ちなみにこことても重要だと思います。(後々のメルに絡んでいる模様)そしてこの音のデータを用いて音声解析のイメージ図は次のようになります。
キーワードとしては
  • デシベル・ピッチ・メル
  • フーリエ変換(FFT)
  • スペクトル
  • スペクトログラム
  • メルスペクトログラム
  • ケプストラム
  • メル尺度
  • メルケプストラム
  • メル周波数ケプストラム係数(MFCC)
  • ヴェーバー‐フェヒナーの法則
  • 等ラウドネス曲線
見ての通り非常にやることが多いです、、ひとまず詳しいことは今回は置いておいてスペクトログラムをPythonで表示してみます。

フーリエ変換

厳密な定義はひとまず無視して、信号f(t)に対するフーリエ変換は
となります。フーリエ変換によって、複合音を構成する各純音(スペクトラム)の周波数、振幅(パワー)の値を調べます。スペクトルF(omega)は、周波数成分と振幅成分を抽出したものです。

F(omega)は複素数で、その絶対値|F(omega)|と偏角arg F(omega)はそれぞれ、周波数omegaの正弦波の大きさと 位相を表し、それぞれ、振幅スペクトル、位相スペクトルと呼ばれます。
  • 振幅スペクトル
    • 絶対値|F(omega)|は周波数omegaの正弦波の大きさを表す
  • 位相スペクトル
    • 偏角arg F(omega)は周波数omegaの正弦波の位相を表す
また、|F(omega)|^2はパワースペクトル または エネルギースペクトル などと呼ばれます。

一般には周波数成分の「大きさ」が重要なので、F(omega)を図で表す場合、特にことわらなければ 横軸に(角)周波数、縦軸に周波数成分の大きさ を描きます。

大きさは dB で表すことがもっとも一般的です。
  • 振幅スペクトルを用いる場合、

        \[20 log _{10}(|F(omega)|)\]

  • パワースペクトルを用いる場合、

        \[20 log _{10}(|F(omega)|^2 )\]

みての通り、dB自体は変わりません。

また、omegaが負の部分を描くこともありますが、+omega-omegaは同じ周波数を表し、 |F(omega)|の値は同じ。 よって、|F(omega)|omega=0を中心に左右対称となります。

スペクトログラム

スペクトログラムとは音声を短時間ごとに区切り、各フレームのスペクトラムを時間軸に沿って並べたものです。

サンプリングレート

1秒間の音の信号をいくつに分割するかを表す数値です。音楽用CDでのサンプリング周波数である44.1kHzは、1秒間の音の信号を4万4100に分割して4万4100のデータに変換します。






コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です