
大学時代、名前だけはよく覚えているのに全く理解できなかった概念である「フーリエ変換」。
ところが後に興味を持った合成音声を調べていると、かなり深く関係していることに気づきました。
今回は足立レイを入り口にフーリエ変換について理解し、実際にどう役立つのかを見ていきます。
導入:足立レイとは
今回、フーリエ変換に興味を持つきっかけになったのがみさいる氏が開発する「足立レイ」でした。
足立レイの名前は「自立歩行(自分の足で立って歩くことができる)を目指した0号機」から。
そして、このプロジェクトの面白いところは、ロボットとしてのハード面だけではありません。
ソフト面では「単純な波をうまく組み合わせて人間っぽい声を作る」試みが行われています。
本物の合成音声
解説を見ると分かますが、人間の声はさまざまな周波数の波が重なったものと考えることができます。
例えば同じ「ア」という音でも、単純な1本の正弦波だけでは人間の声には聞こえません。
基本となる周波数に加え、声帯・喉・口などにより強調されたさまざまな周波数成分が含まれています。
足立レイの音声を理解する上で、「複数の単純な波を組み合わせて複雑な声を作る」考え方は重要です。
これは、フーリエ変換を理解するための非常に良い例でもあります。
フーリエ変換の考え方
色々な波を組み合わせて声を作れるならば、複雑な声にはどの波がどれくらい含まれるかもわかるはず。
これがフーリエ変換の基本的な考え方です。
複雑な波を、周波数Aがこれくらい、周波数Bがこれくらいと、周波数ごとの成分に分解していきます。
そして逆に、その周波数成分をもう一度組み合わせれば、元の複雑な波を再現することができます。
この「分解」と「組み立て」の関係が、フーリエ変換を理解するうえで最も重要なポイントです。
足立レイの音声を作る考え方は、厳密に言えば単純に「逆フーリエ変換そのもの」ではありません。
しかし複数の単純な波を組み合わせて複雑な音を作る点で、逆フーリエ変換と非常によく似ています。
そもそも、なぜ波に分解できるのか?

ここで少し不思議なことがあります。なぜ複雑な音や振動を「単純な正弦波の組み合わせ」として考えてよいのでしょうか。
フーリエ解析では、一定の条件のもとで、複雑な周期信号をさまざまな周波数の正弦波や余弦波の組み合わせとして表現できます。
例えば、以下のような波を考えてみましょう。上二つを足し合わせたのが下のグラフです。
これは「0.5 Hzの波を1つ」と「0.7 Hzの波を半分の大きさで1つ」を重ねたものです。
グラフにすると、2本の単純な波を足しただけなのに、少し複雑な形になります。
逆に、この複雑な波を見て「0.5 Hzの波がどれくらい入っている?」「0.7 Hzの波はどれくらい?」と調べることができれば、元の波の中身が分かります。
フーリエ変換はどうやって調べる?

上:0.5Hzと0.7Hzの足し合わせの波。中:0.5Hzの波をかけたとき。下:0.6Hzの波をかけたとき。
では、どうやって「どの周波数が含まれているか」を調べるのでしょうか。
直感的には、調べたい周波数の波と測定した波を「重ね合わせて相性を見る」と考えると分かりやすい。
例えば、先ほどの波の中に0.5 Hzの波がどれくらい含まれているか知りたいならsin(2π・0.5x)をかけます。
すると、同じ周波数の波を掛け合わせた部分と、異なる周波数同士を掛け合わせた部分ができます。
ここで重要なのは、掛け算しただけで終わらず、それを一定の時間について全部足し合わせることです。
すると、同周波数の成分は積み上がる一方、異なる周波数の成分は正負が打ち消し合いやすくなります。
つまり、「この波と似た成分が、どれくらい入っているのか」を調べられるわけです。
これを様々な周波数で繰り返すことで、元の複雑な波を周波数ごとに調べることができます。
これがフーリエ変換のイメージです。
フーリエ変換の具体的な式
実際のフーリエ変換は、以下の式で表されます。いきなり難しくなりました。x(t)が調べたい複合波。
特にeで始まる特殊な形が出てきますが、これは複素数を使ってsinとcosをまとめて扱うための表現だと考えると、ひとまず十分です。
オイラーの公式によってe^iθ=cosθ+i sinθと書けるため、正弦波と余弦波を一つの式で扱えるというメリットがあります。
もちろん、途中で「i」という虚数が登場するので、大学の数学ではここが一気に難しく感じるポイントでもあります。
ただ、ここで重要なのは式そのものよりも、「元の波に、調べたい周波数の波を掛けて、時間方向に全部足し合わせる」という考え方です。
積分記号は、この「ものすごく細かく分けて、全部足し合わせる」という操作を表しています。
なので、x(t)という波のすべてのt(-∞から∞まで)でfの周波数での強さX(f)(定数)を求めます。
コンピューターではどうする?
ここで問題があります。実際のコンピューターで扱う音声は、完全な連続データではありません。
例えばCD音質の音声なら、1秒間に44,100回の割合で音の大きさを記録しています。
つまり、0.000秒、0.0000227秒、0.0000454秒……というように、非常に細かい間隔で数値を並べているわけです。
このようなデジタルデータに対して使うのが「離散フーリエ変換(DFT)」です。
DFTは、ざっくり言えば「連続した波を、たくさんの点に区切った状態でフーリエ変換する」方法です。
ここでは積分ではなくΣ(シグマ)になっていますが、これは「記録されたデータを一つずつ足し合わせていく」と考えると分かりやすいでしょう。
DFTはものすごく計算量が多い
ところが、この方法には問題があります。データが増えると、計算量が急激に増えてしまうのです。
例えば1秒の音声を44,100 Hzで記録したとすると、データは44,100個あります。
DFTをそのまま計算すると、計算量はおおよそ44,100²≒19.4億回です。
10秒なら441,000個のデータになるので、441,000²≒1,945億回になります。もちろん実際のコンピューターで行う処理はこれほど単純ではありませんが、データ数Nに対して計算量がおおむねN²に比例する、というのがDFTの大きな特徴です。
しかも音声解析では、音声全体を一回だけ変換するのではなく、短い区間に分けて何度も周波数分析することがあります。
これが「短時間フーリエ変換(STFT)」です。
さすがに毎回、全部の組み合わせを正直に計算していたら大変です。そこで登場するのが「FFT」です。
FFTは何をしているのか?
FFTは「高速フーリエ変換(Fast Fourier Transform)」の略です。
ここで少し注意が必要なのですが、FFTはDFTとは別の「変換方式」ではありません。
DFTを計算するための、効率のよいアルゴリズムです。DFTでは大量の計算を一つずつ行っていますが、FFTでは計算の中にある規則性や対称性を利用して、「同じような計算を何度も繰り返さなくて済むようにする」ことで計算量を大きく減らします。
代表的な方法では、問題を小さく分割しながら計算していきます。
イメージとしては、「まず小さな問題に分ける」→「それぞれを計算する」→「結果を組み合わせる」という流れです。
その結果、DFTの計算量がおおよそN²なのに対し、FFTではN log₂N程度まで減らすことができます。
特にデータ数が2のべき乗の場合、この分割が行いやすくなります。
例えば1,024個のデータなら、DFTでは約1,024²回の計算が必要なのに対し、FFTならおおよそ1,024×10回で済みます。
この差はデータ数が増えるほど大きくなり、音声処理や画像処理、振動解析など、大量のデータを周波数分析する場面でFFTが非常によく使われています。
逆フーリエ変換
ここまでの話を逆にすると、今度は「逆フーリエ変換」になります。
フーリエ変換では「この複雑な波には、どの周波数がどれくらい含まれているのか?」を調べました。
逆フーリエ変換では、「それぞれの周波数成分を使って、元の波を作り直す」ことをします。
式はxn=(1/N)Σk=0N−1Xke^i2πkn/Nです。
イメージとしては、フーリエ変換が「この音の中には何Hzがどれくらい入っている?」なのに対して、逆フーリエ変換は「では、その周波数成分を全部足して元の音を作ろう」という関係です。
最初に登場した足立レイの音声も、「複数の単純な波を組み合わせて、複雑な音を作る」という意味では、まさにこの考え方をイメージするのに向いています。
実際の測定装置では何に使われている?
ここまでが数学の話でした。しかし、私が大学時代に本当に知りたかったのは
「で、これが測定装置で何の役に立つの?」という部分です。
実際、フーリエ変換はさまざまな測定装置で使われています。
FTIR(フーリエ変換赤外分光計)

材料系でよく登場するのがFTIRです。
FTIRは、赤外線を試料に当てて、「どの波長の赤外線がどれくらい吸収されたのか」を調べる装置です。
FTIRでは、赤外線を試料に照射し、干渉計によって得られた複雑な信号を測定したあと、フーリエ変換することで波長ごとのスペクトルを得ます。
ざっくり言えば、「赤外線を当てる」→「試料を通った後の複雑な信号を測る」→「フーリエ変換する」→「どの波長が吸収されたかを見る」という流れです。
その結果から、材料にどのような化学結合や官能基が存在するのかを推測できます。
つまりFTIRは、「この材料にはどんな化学結合がありそう?」を調べるための装置、と考えると分かりやすいでしょう。
NMR(核磁気共鳴装置)

NMRでもフーリエ変換が重要な役割を果たします。
NMRでは、試料に高周波の電磁波を与えた後、原子核から返ってくる信号を時間の変化として記録します。
最初に得られるのは「ピークが何Hzにある」というスペクトルではなく、「時間が経つにつれて信号がどう変化していくか」というデータです。
これをFID(自由誘導減衰)と呼びます。そして、この時間変化する信号をフーリエ変換すると、「どの周波数に、どれくらいの信号があるのか」というNMRスペクトルになります。
つまりNMRは、「時間方向のデータ」→「フーリエ変換」→「周波数方向のデータ」という流れの、かなり分かりやすい例です。
振動測定・FFTアナライザ

材料や機械の振動を調べる場合も、FFTは非常に分かりやすい存在です。
例えば、加速度センサーを機械に取り付けると、「時間とともに、どのくらい振動しているか」を測定できます。
しかし、実際の振動は単純な1本の波ではなく、「10 Hzの振動」「50 Hzの振動」「100 Hzの振動」など、さまざまな振動が重なっているかもしれません。
そこでFFTを使うと、その複雑な振動を周波数ごとに分解できます。すると、「この機械は50 Hz付近で特に強く振動している」「この周波数だけ異常に大きい」といったことが分かります。
例えば共振の原因を調べたり、回転機械の異常を見つけたりするのに役立ちます。
ここでは、「複雑な振動=いろいろな周波数の振動が重なったもの」と考えると、フーリエ変換の意味がかなり直感的になります。
「絵も波で表せる?」という疑問
ここまで勉強して、最初に抱いていた「絵も波で表せるの?」という疑問についても少し見えてきました。
実は、フーリエ変換は音だけのためのものではありません。
画像にも「明るさや色の変化」という形で周期的なパターンを見つけることができ、2次元フーリエ変換を使えば、画像をさまざまな空間周波数の成分に分解できます。
例えば、細かい縞模様が多い画像なら「高い空間周波数」の成分が多く、なだらかな明るさの変化が中心なら「低い空間周波数」の成分が多くなります。
つまり、音なら「時間方向の変化」、画像なら「空間方向の変化」を波として捉えて分析できるわけです。
ここまで来ると、「なぜフーリエ変換が音声だけでなく、画像・振動・光・NMRなど、いろいろな分野に登場するのか」も少し分かってきます。
まとめ
最初は「謎の数学」としか思えなかったフーリエ変換ですが、考え方だけを見ると意外とシンプルです。
世の中の信号はとても複雑に見えますが、それを「いろいろな周波数の単純な波が重なっている」と考えることができます。
すると、「この中には何Hzの波がどれくらい含まれているのか?」を調べたくなります。
そのために、調べたい周波数の波との「似ている度合い」を計算し、それをすべての周波数について行います。
それがフーリエ変換です。
そして逆に、その周波数成分を全部足し合わせれば、元の複雑な波を再現できます。
コンピューターでは、この計算をDFTとして扱い、FFTという効率的なアルゴリズムを使うことで高速に処理しています。
こう考えてみると、「フーリエ変換=難しい数式」ではなく、「複雑なものを、どんな単純な波の組み合わせなのか調べる方法」と捉えることができます。
大学時代に「何のためにこんな計算をするんだ」と思っていた自分に説明するなら、まずはこれくらいの理解で十分だったのかもしれません。
勉強の記事



