HOME

CAEユニバーシティ

体感型セミナー:デジタル信号処理実習の紹介

埼玉大学大学院 理工学研究科 教授 島村 徹也

1 はじめに

信号処理とは、その字のごとく信号を処理する技術です。その内容を詳しく述べた書籍も多くありますが、処理技術の説明は基本的に数学ベースになりますので、物理的なイメージをつかむにしても、三角関数、微分・積分、行列・ベクトルの高等数学の十分な理解は避けられません。そこで、信号処理という技術を体感しながら学ぶ実習セミナーをCAEユニバーシティの中で実施しています。

信号は大きく分けて、アナログ信号とデジタル信号に分けられますが、最近では、ハードウェアの進歩がめざましく、デジタル信号を扱うデジタル信号処理が主流で、アナログ信号処理ではできなかった、信号の予測や圧縮なども容易にできるようになってきています。このような時代背景に鑑みて、デジタル信号を対象とした信号処理実習を行っています。

2 信号処理をマスターするには

図1 MATLABプログラム例

音や画像など、多くの信号は可視化が可能です。その信号に自分で処理を施し、自分で処理結果を確認することができたら、これほど実践的な信号処理はありません。あるプログラミング言語が利用できれば、このような信号処理のシミュレーションは容易です。しかしながら、このプログラミングが一つの壁となってしまいます。C言語などで、ある波形を入力して出力を出すようなプログラミングはよく行われることですが、そのプログラミング技術をマスターするのが大変だからです。そこで、プログラミング自体に労力をかけることなく、すぐに結果が確認できるツールを利用することにしました。それがMATLABです。MATLABプログラムは、こちらですべて準備していますので、受講者の方は、これをただ実行して頂くだけです。より具体的には、予めフォルダ内に保存してあるMファイル(MATLABのスクリプトファイル)のファイル名をMATLABのコマンドウィンドウ内で打って、実行すると、結果が得られるようになっています。これで、ある入力の波形から、目的の処理を行って、出力の波形を得て、処理結果を確認することが容易にできます。

図1は、テキストの中に含まれている、MATLABのスクリプトファイルの一例です。これは、ただ単に信号を足し合わせて波形を合成する簡単なプログラム例ですが、このようなファイルがたくさん準備されていると思って頂けると宜しいかと思います。

ここまでで、信号処理はある意味十分ですが、信号処理実習では、波形を実際にスピーカから音として鳴らして、いろいろな処理を施すことで、その音がどのように変化するかを体感できるようにしています。例えば、信号を取り扱うとき周波数という概念が出てきますが、高い周波数を抑えるような処理を施すと、音がこもったような感じに変換されたり、一方逆に、高い方の周波数を膨らませるような処理を施すと、音の聞こえが良くなった感じに変換されたりと、具体的な処理の物理的なイメージが体でわかるようにしています。波形を目で見る視覚と、音で聞く聴覚と、振動を感じる感覚が相乗的に、信号の処理の過程の意味を理解するのに役立つと考えられます。

3 理論的な押さえ

実習の後、改めて数式を追いかけることにより、各信号処理手法の理解度が深まることでしょう。実習テキストの中には数式的説明を含めていますが、実習の中ではさらっと流す程度にしています。テキストは、諸々の数式的な定義や、どの部分とどの部分がどのように関連し合っているのか等を、わかりやすく説明してあります。また、重要な部分には、なぜその式が導出されてくるのかの、具体的な導出過程なども説明してあります。従って、こちらで準備したMATLABプログラムをお持ち帰り頂けば、改めて、理論的かつ実験的にテキスト内容を復習できます。

4 例

図2 セグメント処理のイメージ図

では、ここで、実習内容に含まれている例をいくつかご紹介しましょう。

図2は、時間と共に変化していく信号があったとき、それをどのように処理するかのイメージ図です。統計的な性質が同じ信号が与えられれば、その与えられた信号全体に対し、ある目的の処理を施せば良いでしょう。しかし、図2の信号のように、波形が時間と共に変化して、その統計的性質が少しずつ変化していってしまうような場合は、その全体の信号を一度に処理するようなことはあまりしません。その性質が変化しない程度の、比較的短い時間間隔で区切ってそれを処理し、また元の場所に戻すといったことを行います。これを繰り返し行うイメージ図が図2です。この処理を、専門用語では、フレーム処理あるいはセグメント処理と呼んでおります。これが、デジタル信号処理の基本と考えられます。

図3 パワースペクトルの表示

次に図3ですが、これはある信号のパワースペクトルを算出し、それをプロットした図です。雑音のようなランダム性の性質が含まれる信号(不規則信号)の周波数分析を行う場合は、信号にフーリエ変換を施し(実際には、高速フーリエ変換アルゴリズムを実行します)、その大きさである振幅スペクトルを求めるだけでは不十分です。信号の中のランダム成分が、スペクトルの中でもランダム成分として残ってしまうためです。より正確には、パワースペクトルを求める必要があります。図3はその一例を示しています。

図4 雑音低減の様子(上図:元のクリーンな音声、中央図:雑音が付加した音声、下図:中央図の音声に雑音処理を施した結果)

図4は、ある信号に雑音が混入してしまっているのがわかっているときに、その雑音付加信号のみが与えられたとして、信号成分は保持し、雑音成分のみをどのように取り去るか、の処理例を示しています。このような要求は、現実社会では多く見られます。信号と雑音が通常のフィルタ、例えば、ローパスフィルタやハイパスフィルタ等でうまく分離できない場合、どのように処理したら良いでしょうか。本実習では、信号対象に拘わらず、万能型に使える雑音低減手法を取り上げ、それをいろいろなパラメータを変化させながら、どのように雑音低減効果が変化していくか等、実際に処理された波形を音で聞いて体感していきます。

5 実習項目

現行での実習項目を大まかに述べておくと、下記のようになります。

  • I.準備として… a 窓関数/b セグメント
  • II.基本処理… a 相関関数/b SNR
  • III.スペクトル分析… a FFT法/b 線形予測法
  • IV.ディジタルフィルタリング… a ハイパスフィルタリング/b ローパスフィルタリング
  • V.雑音低減… a スペクトル引き算/b 各種改良

これは基本路線で、受講者のご要望により場合によってはこの枠を超えた実習も行っております。また、関連事項のお話をさせて頂くこともあります。適宜、ご質問を受けながらの進行となりますので、大きくは変わりませんが、毎回違った形の実習になっています。

6 おわりに

このように、本信号処理実習では、まず信号処理を実際にやってみて、何ができるのかを確認して、その処理自体を視覚、聴覚、振動感覚から捉えて、信号処理を理解する手助けをします。信号処理、特にデジタル信号処理は、厳格な数式的裏付けがなされる数学応用分野であり、最近の高水準な学術論文でも、この分野では、多くの数式展開がなされるのが普通です。しかし、エンジニアの方々がまずこれらの論文を読み、理解し、実際に信号処理を行ってみるという順番では、あまりに理論展開が複雑過ぎて、理解が困難になるだけでしょう。まず現象を理解し、追ってそれぞれの処理過程を理解していくという現実に即した方法の方が、より効率的でかつ効果的ではないでしょうか。

 実習ではMATLABを利用しますが、事前にMATLABに精通している必要はありません。利用の仕方は実習内で説明致します。また一方で、MATLABプログラムがテキストに記載してあることから、それぞれの細かい処理工程をお知りになりたいという場合もありますが、講師が作成したMATLABの使い方マニュアルも、別途配布していますので、実習内で綿密に確認することも可能です。

 最後に、本信号処理実習を通して、一人でも多くの方が、信号処理に触れ、今後の研究開発にお役立て頂ければと、心から願っております。ご受講をお待ちしております。

2/2

(9/13)

関連ページ