ハニング窓(ハン窓)は、信号処理や音声認識の分野で、無限に続く信号を一定時間で切り出す際に用いられる窓関数の一種です。切り出した波形の両端を滑らかに0に減少させることで、フーリエ変換時に発生するスペクトルリーケージ(周波数のにじみ)を抑制し、周波数成分の正確な解析を支援する役割を持ちます。
ハニング窓とは
ハニング窓とは、音響信号や時系列データの解析において、連続する信号から一定区間のデータを切り出す際、切り出し口の端部を滑らかに減衰させて0に近づける関数です。これにより、不連続な端点によって生じるスペクトルの歪みを防ぎます。
詳しく解説
デジタル信号処理やAI音声認識のデータ前処理では、連続的な音声波形を短い時間区間(フレーム)に分割して高速フーリエ変換(FFT)を行います。しかし、単純に方形波(矩形窓)で切り出すと、切り出しの始点と終点が不連続になり、本来存在しない高周波成分がノイズとして現れる「スペクトルリーケージ」という現象が発生します。ハニング窓は、コサイン関数を用いて中央値が最大になり、両端に向かって滑らかに0へと減少する形状をしています。このハニング窓を信号に掛け合わせることで、切り出し境界の不連続性を解消し、スペクトル解析の精度を向上させます。特に、音声認識モデルに入力する特徴量(メル周波数ケプストラム係数(MFCC)など)を算出する前処理として極めて重要です。
具体例・使われ方
音声アシスタントなどのAI音声認識システムにおいて、ユーザーが発話した「こんにちは」という音声データを微小なフレームに分割し、それぞれのフレームにハニング窓を適用します。これにより、ノイズの少ない綺麗な周波数成分が抽出され、機械学習モデルが正しく音素を識別できるようになります。
似た用語との違い
混同されやすい概念として「ハミング窓」があります。ハニング窓は両端が完全に0になるのに対し、ハミング窓は両端にわずかな値を残す(約0.08)ように設計されています。ハニング窓はメインローブが比較的広く、サイドローブの減衰速度がハミング窓より速いという特徴があります。また、何も窓関数を適用しない「矩形窓」は両端の処理を行わないため、最もスペクトルリーケージが発生しやすくなります。
注意点
ハニング窓を適用すると、フレームの両端付近の信号強度が極端に小さくなるため、その部分の情報が失われる恐れがあります。この情報の欠損を防ぐために、一般的には隣り合うフレーム同士を50%など一定の割合で重複(オーバーラップ)させて切り出す処理が必要です。