デジタルフィルタ — 畳み込みで音を彫刻する
「高い音だけ削る」「ノイズをならす」— 音の加工の中心にいるのがデジタルフィルタ。その正体は、係数と信号を掛けて足すだけの畳み込みです。係数(インパルス応答)が波形と周波数をどう変えるのかを、動かしながら見ていきます。
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 は赤いフィードバック経路で出力が戻るため、インパルス応答が無限に続き、係数しだいでは暴走もする。
| 観点 | FIR | IIR |
|---|---|---|
| 構造 | 入力の遅延のみ(非再帰) | 出力を再利用(再帰・フィードバック) |
| 安定性 | 常に安定 | 係数しだいで発振の危険 |
| 位相 | 線形位相にできる(波形が歪まない) | 位相が歪む(周波数で遅延が変わる) |
| 必要な係数の数 | 多い(急峻な特性ほど長い) | 少ない(低次で急峻にできる) |
| 代表例 | 移動平均、窓関数法で設計した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. まとめ
- デジタルフィルタの正体=係数列との畳み込み。係数=インパルス応答が全性格を決める。
- FIR:一方通行で常に安定、線形位相にできる。係数は多めに必要。
- IIR:フィードバックで少ない係数でも急峻。ただし安定性と位相歪みに注意。
- 周波数応答:|H(f)| のカーブに入力の各成分を「乗せて」読めば出力が予想できる。
一歩先へ — 身の回りはフィルタだらけ
音楽プレーヤーのイコライザは biquad IIR の束、サンプリング前のアンチエイリアシングフィルタ、ノイズキャンセリング、そして CNN の畳み込み層も「学習で係数が決まる FIR フィルタの2次元版」。ここで見た「係数×畳み込み×周波数応答」の三点セットは信号処理と深層学習をつなぐ共通言語になる。