音声認識の学習中(フーリエ変換②)

おはようございます。
一から音声認識について学ぶために、その基本となるフーリエ変換について学習中です。
前回の記事はこちらです。(前回の記事を公開したときから、日にちが空いていてすみません。)

音とは空気中の圧力の変化(振動)であり、その空気の振動の瞬間瞬間の数値は音圧で表すことができます。
その音圧を時系列で描いてみると、複雑な波のような形になります。前回の記事では、フーリエ変換とは、その一つの複雑な波の形を何百、何千、何万通りもの複数の周波数の波に分解することとして説明いたしました。

では、具体的にはどのように分解するのでしょうか。その方法について、数式を使わずになるべく説明できれば…と思います。

音とは【周期を持つ】複雑な波と仮定するところから始める。

まず、音圧を時系列で表した一つの複雑な波は【周期を持つ】と仮定するところから始めます。そうすれば、一つの複雑な波に対して、数学的に処理して、複数の単純な波に分解できるようになります。

ここで重要なのは、実際にその複雑な波が【周期を持つ】かどうかはどちらでもよい、ということです。分解さえできてしまえばよいのです。
人間の目からも、コンピュータの世界からも、わかりやすく処理できるようにすることのほうが重要ということです。

ここで、【周期】とは波の形が山のようになる部分と谷のようになる部分が1まとまりになったものをいい、1まとまりが何度も繰り返されているものを【周期を持つ】として表現します。

【周期】の例

つまり、以下のような音があり、どんなに複雑な波になっていたとしても、【周期を持つ】と強引に仮定してしまいます。一目見て、【周期】があるように見えなくとも。

複雑な波の例

どんなに複雑な波でも【周期を持つ】と仮定するならば、実は以下の論理を用いて、数学的に処理することができます。(その際には三角関数を使います。)
「一つの【周期を持つ】複雑な波は、複数の【周期を持つ】単純な波に分解することができる」

どんな【周期を持つ】複雑な波であったとしても、【周期を持つ】単純な波をいくつか合成すれば表現できる。

ここで、【周期を持つ】複雑な波から、複数の【周期を持つ】単純な波に分解するというのが、ピンとこない人もいるかもしれないので、逆に、複数の【周期を持つ】単純な波から、【周期を持つ】複雑な波を形成できるという例を先に示してしまいます。
以下に単純な波から、複雑な波を形成する例を示します。

単純な波(sin、cos等)を合成して複雑な波を形成する例

みなさま、高校で三角関数、例えばsin、cos、tan(サイン、コサイン、タンジェント)等学んだかと思いますが、実はそれらのsin、cos、tan等には全て【周期】があります。

そして、その三角関数の式で表した【周期を持つ】波同士で、いくつか重ね合わせる(合成する)と、重ね合わせた後の波も形は複雑になっているものの【周期】があり、重ね合わせた後の式も三角関数の式で表すことができます。

逆に、三角関数の式で表した【周期を持つ】複雑な波は、いくつかの【周期を持つ】単純な波に分解することもできて、それらの単純な波はすべて三角関数の式で表すことができます。

【周期を持つ】ならば、一つの波から複数の波に分解したとしても、逆に、複数の波から一つの波に合成したとしても、それらの波は全部【周期】があり、また、三角関数の式で表すことができる、ということです。

だからこそ、音に対して【周期を持つ】複雑な波と仮定することにはとても意味があります。

【周期を持った単純な波】は三角関数のcosとsinの2種類のみ使う。

数式を一度使ってしまいますが…イメージを掴めるように以下の図を張り付けますね。

三角関数の式(cos、sin)の意味

今回、フーリエ変換を学ぶときは、上記のようにcosとsinの2種類を用いて理解していきます。これらのcosとsinは、波(山と谷の1セット)を何度も繰り返す、つまり【周期を持つ】と考えることができるので、【周期を持つ】単純な波を描く際には、このcosとsinを用います。

上の『三角関数の式の意味』というタイトルの図の中にある数式を見ていただいた時に、色々と文字とその意味が書いてあるかと思いますが、その中で重要なもののみ説明いたしますね。それは振幅(aまたはb)と、角速度ωです。
振幅(aまたはb)と角速度ωが決まれば、波がどのような形を描くのか、ほぼ決まります。

例えば、振幅(波の大きさ)を1(aとbどちらも1)とし、角速度ω(振動する速度)を1(1秒間に1回振動する)とすると、それぞれのcos、sinは以下のような波の形を描きます。

単純な波の例1(上:cosωt、下:sinωt)

上記のcos、sinのグラフを見ていただくと、どちらも【周期】があって、単純な波の形になっていることが伝わっているでしょうか。
上のcosωtは、元々の式(acosωt)からaを1としたもの、
下のsinωtは、元々の式(bsinωt)からbを1としたもの、
です。aとbが同じ大きさ(どちらも1)であれば、どちらも同じ振幅(波の大きさ)になります。大きさが1でも、2でも、3であっても、aとbが同じならば、cos、sinのどちらも同じ振幅(波の大きさ)になります。

また、ωが1ならば1秒間に1回振動する、すなわち1秒間で山と谷を1セットで描く、ということになります。

なお、cos、sinはどちらも、それぞれ波を描く位置がずれている、という違いしかなく、波の形そのものは同じです。(この位置のずれは、位相の差ともいいますが、位相についての説明はいったん置いておきます。)

では、振幅と角速度(振動する速度)を少し変えてみると、どのような形を描くのでしょうか。以下にもう一つ例を載せます。

単純な波の例2(上:2cos4ωt、下:3sin2ωt)

上記を見ていただけるとわかるように、今度は波が大きくなったり、振動する回数が多くなりました。ただ、それでも、上下どちらの波も、【周期を持つ】単純な波であることは伝わるかな、と思います。

例えば、上(y = 2cos 4ωt)のグラフの場合、波の大きさは先ほどの単純な波の例1(上:cosωt、下:sinωt)』のタイトルの図の上(y = cos ωt)のグラフと比べて、2倍の大きさになっております。これは、元々の式(acosωt)からaを2としたからです。

また、1秒間に4回、つまり0.25秒に1回振動するので、1秒に4回の波を描くことになります。これも元々の式(acosωt)からωを4ω(1秒間に4回振動する)としたからです。

一方、下(y = 3sin 2ωt)のグラフの場合も見てみると、こちらもやはり先ほどの単純な波の例1(上:cosωt、下:sinωt)』のタイトルの図の下(y = sin ωt)のグラフと比べて波の大きさが3倍の大きさになっております。これは、元々の式(bsinωt)からbを3としたからです。

また、1秒間に2回、つまり0.5秒に1回振動するので、1秒に2回の波を描くことになります。これも元々の式(bsinωt)からωを2ω(1秒間に2回振動する)としたからです。

このように、【周期を持つ】単純な波の形を決めるのに最も重要なのは、振幅(波の大きさ)と角速度(振動する速度)です。この2つが決まれば、波の形が定まります。

ここまで読んでくださって、ありがとうございます。
記事を書くペースがゆっくりで、申し訳ありませんが、なるべく次回までに間隔を空けすぎず、無理もしないように、自分のペースと上手く付き合いながら書ければと思います。
次回も少しずつ書いていきますので、興味がありましたらよろしくお願いいたします。

(↓2022年2月9日 10:01頃追記)
すみません。公開時に以下の参考URLを記載するのを失念しておりましたので、追記いたします。

参考

・どんな構造?どんな原理?ダイナミックマイクロフォン概要
https://www.shimamura.co.jp/shop/nagoya/pa-rec/20210804/8263
・ぷち マンガでわかるフーリエ解析
https://www.ohmsha.co.jp/book/9784274219054/
・【画像45枚あり】フーリエ変換を宇宙一わかりやすく解説してみる
https://www.yukisako.xyz/entry/fourier-transform
・【イラストで解説】耳の仕組みと聞こえの仕組みって?わかりやすく解説します
https://ohmiminavi.co.jp/how-to-ear/


この記事が気に入ったらサポートをしてみませんか?