デジタルフィルタ — 畳み込みで音を彫刻する

「高い音だけ削る」「ノイズをならす」— 音の加工の中心にいるのがデジタルフィルタ。その正体は、係数と信号を掛けて足すだけの畳み込みです。係数(インパルス応答)が波形と周波数をどう変えるのかを、動かしながら見ていきます。

1. いちばん身近なフィルタ — 移動平均

ギザギザのデータを「直近 M 点の平均」でならす移動平均は、実は立派なデジタルフィルタ(ローパスフィルタ)です。窓 M を大きくするほど出力はなめらかになりますが、平均を取るぶん出力が (M−1)/2 サンプルだけ遅れることにも注目してください。フィルタリングと遅延は常にセットです。

移動平均で平滑化 — なめらかさと遅延のトレードオフ
灰=ノイズ付き入力、緑=移動平均の出力。M を大きくするとノイズは消えますが、角が丸まり(高い周波数まで削れる)、波形全体が右へ遅れていきます。M=1 はフィルタなしと同じ。
POINT — 移動平均は FIR ローパスフィルタ 移動平均は「係数がぜんぶ 1/M の FIR フィルタ」。つまりフィルタとは係数の並び(インパルス応答)そのものであり、係数の選び方しだいで平滑化・強調・帯域選択が自在にできる。

2. FIR畳み込みマシン — 係数が信号の上を滑る

FIR(有限インパルス応答)フィルタの計算はこれだけです:係数列(カーネル)を信号の上に重ね、位置ごとに「掛けて足す」。この操作を畳み込みと呼びます。1ステップずつ動かして、出力が1点ずつ生まれる様子を確かめてください。

y[n] = h[0]·x[n] + h[1]·x[n−1] + … + h[M−1]·x[n−M+1] = Σk h[k]·x[n−k] h[k] がフィルタ係数=インパルス応答。入力に単発パルス(インパルス)を入れると h がそのまま出てくる
FIR畳み込みマシン — 掛けて、足して、1点出力
紫=カーネル(左右反転して重ねるのが畳み込みの定義)、琥珀=位置ごとの積、緑=積の合計=出力。平滑化カーネルは山をならし、微分カーネルは「変化した場所」(スパイクや立ち上がり)だけを浮かび上がらせます。
POINT — インパルス応答がすべてを語る FIR フィルタに単発パルス x = [1, 0, 0, …] を入れると、出力は係数列 h そのもの。だから h をインパルス応答と呼ぶ。線形時不変システムはインパルス応答で完全に特徴づけられ、その DFT が次章の周波数応答になる。

3. FIRとIIR — 構造の違いが性格を決める

フィルタには2つの流儀があります。FIR は入力を遅らせて足すだけの一方通行。IIR(無限インパルス応答)は自分の出力を入力側へ戻して再利用します。フィードバックのおかげで少ない係数で急峻な特性が作れますが、設計を誤ると発振する(不安定になる)リスクを抱えます。

構造図 — FIR(一方通行) vs IIR(フィードバック)
z−1 は「1サンプル遅らせる」箱。FIR は入力側の遅延だけで出来ているので必ず安定。IIR は赤いフィードバック経路で出力が戻るため、インパルス応答が無限に続き、係数しだいでは暴走もする。
観点FIRIIR
構造入力の遅延のみ(非再帰)出力を再利用(再帰・フィードバック)
安定性常に安定係数しだいで発振の危険
位相線形位相にできる(波形が歪まない)位相が歪む(周波数で遅延が変わる)
必要な係数の数多い(急峻な特性ほど長い)少ない(低次で急峻にできる)
代表例移動平均、窓関数法で設計したLPFバターワース、biquad EQ
注意 — IIR は「極」の置き場所に命がけ IIR のフィードバック係数は z 平面の「極」の位置を決める。極が単位円の外に出ると出力は指数的に発散する。さらに係数の量子化誤差にも敏感。実装では安定性が保証しやすい 2次セクション(biquad)の直列につなぐのが定石。

4. 周波数応答プレイグラウンド — 通す帯域を designする

フィルタの効き方は周波数応答 |H(f)|(各周波数を何倍にするか)で読みます。ここでは窓関数法(sinc × ハミング窓)で設計した 63 タップの FIR フィルタを使い、低い音(40 Hz)+高い音(330 Hz)+ノイズの混合信号を通してみます。カットオフを動かして、応答カーブと出力波形が連動する様子を確かめてください。

周波数応答プレイグラウンド — LPF / HPF / BPF
上段=周波数応答(0 dB=そのまま通す、下がるほど削る)。緑の点=低音 40 Hz、ピンクの点=高音 330 Hz が「カーブのどの高さに乗っているか」で出力が決まります。LPF で fc を 330 Hz の下に下げると高音のシャリシャリが消え、HPF にするとうねりが消えて高音だけ残ります。BPF はスライダーが中心周波数(帯域幅 120 Hz)。

5. まとめ

一歩先へ — 身の回りはフィルタだらけ 音楽プレーヤーのイコライザは biquad IIR の束、サンプリング前のアンチエイリアシングフィルタ、ノイズキャンセリング、そして CNN の畳み込み層も「学習で係数が決まる FIR フィルタの2次元版」。ここで見た「係数×畳み込み×周波数応答」の三点セットは信号処理と深層学習をつなぐ共通言語になる。