音メディア処理研究室

 
フーリエ変換理解のための音声分析・合成ツールの製作

フーリエ変換理解のための音声分析・合成ツールの製作

2024年度に行われたデモ大会で発表した内容です。

2258223 木村将太

 

音メディアを処理する上で、「フーリエ変換」というものがよく用いられます。
フーリエ変換とは、難しく言うと、時間領域の信号を「周波数領域」という別の視点から観測するために行う変換です。
時間領域と周波数領域の関係を把握することは非常に重要ですが、フーリエ変換を直感的に理解できない人も多く見られます。私もそのひとりです。

ここで、フーリエ変換とフーリエ逆変換についてです。
フーリエ変換は、簡単に言うと音を正弦波に分解する作業とも言えます。

対してフーリエ逆変換はその逆、正弦波を合成する作業と言えます。
つまりフーリエ変換した結果をフーリエ逆変換すれば元に戻ります。

 

音声の合成を直感的に行える機材として「オーディオミキサー」が存在します。
ミキサーでフーリエ逆変換を再現、つまり正弦波を合成し、フーリエ変換についての直感的な理解を深めることがこのデモの目標です。

まず声の周波数スペクトルを記録します。ここでフーリエ変換が行われ、声を構成する正弦波がわかります。
次にそれらをミキサーに入力し、先ほど記録した周波数スペクトルを参考にミキシングします。
そして、元の声と同じ音色が聴こえることを確認します。上手くいけば、原理上は同じ音色になるはずです。
正弦波を足し合わせただけなのに声が聴こえる、という状態になれば成功です。

実際に使うものはこちらです。
ハードウェア選定理由は、実験室にあったからという理由が大半を占めています。例えばマイクロホンは、本来ならば手に持ちやすく声の収音に適したもの(Shure SM58など)を採用するべきでした。
ソフトウェアは周波数スペクトルを表示するものと正弦波を出力するものを開発しました。

ソフトウェア開発環境はこちらです。
PythonライブラリのSounddeviceという音声入出力の基本的なライブラリを使用したのですが、そのベースとして用いられているPortAudioが、Windows PCとミキサーの間で多チャンネル通信を行うために必要な規格ASIOにデフォルトでは対応していませんでした。
今回は正弦波32chを同時にリアルタイムにミキサーに入力する必要があったためASIOは必須です。これを解決するためにかなり悪戦苦闘しました。
その他にも、スペクトル表示や音声出力をリアルタイムに途切れなく動作させるための実装が大変でした。

では、実際にデモを行います。

マイクに向けて「あー」と声を出し、スペクトルを記録します。

スペクトルは時間変化が激しいため、平均値を記録します。

この図では簡単のため100Hzと記載していますが、任意の値を基音として設定可能です。

ただ、倍音成分は基音の整数倍に固定されます。今回は開発が間に合いませんでしたが、実際のピーク値を生成すればさらに声の再現の質が上がるのではないかと考えられます。

スペクトルとフェーダー(音量調整つまみ)の対応イメージです。スペクトルの概形を参考に自分でフェーダーを動かし声の音色を再現します。

ミキサーには特定のチャンネルのみ聴く機能や、逆に特定のチャンネルを消音する機能が搭載されています。これらを使用し本当に正弦波のみで音が合成されていることを確かめます。正弦波を合成しただけで元の声と同じような音が生成できれば、その参考にした周波数スペクトルは正しい、つまりフーリエ変換が正しく行われたことになります。

このようにフーリエ変換の直感的な理解を手助けすることができればデモは成功です。

« »

コメントを残す

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