なぜ自作しようと思ったか

SONYのWH-1000XMシリーズを使っていて、ふと「これどういう仕組みで音を消してるんだろう」と気になった。 調べ始めると想像より面白くて、気がついたら部品を注文していた。

完全に再現することは最初から目指していない。原理を手を動かして理解したかっただけ。 結果として、ちゃんと「ノイズが小さくなる」ものは作れた。市販品の足元にも及ばないけど。

ノイズキャンセリングの原理

ノイズキャンセリング(ANC: Active Noise Cancellation)は、入ってくる騒音と逆位相の音を生成して打ち消す技術だ。 音は波なので、同じ振幅で位相が 180° ずれた波を重ねると理論上は消える。

音波の重ね合わせの原理。山と谷がぴったり合うと振幅がゼロになる。

問題は「リアルタイムで逆位相を生成する」こと。音速はおよそ 343 m/s。 処理遅延が数ミリ秒あるだけで位相がズレて、むしろ音が大きくなることもある。 ここが難しいところで、市販品の DSP がいかに優秀かを実感することになった。

フィードフォワード型とフィードバック型

ANC の実装には大きく 2 種類ある。

フィードフォワード型(FF型)

マイクをイヤホンの外側に置き、騒音が耳に届く前に検出して逆位相を生成する方式。 外部騒音を先読みできるので、低遅延で処理しやすい。ただし、マイク位置がズレると効果が落ちる。

フィードバック型(FB型)

マイクをドライバーに近い内側(耳の近く)に置く方式。実際に耳元に届いた音を見て補正するので、 装着のズレに強い。ただし、制御ループの安定化が難しく、発振するリスクがある。

最近の高級機は両方を組み合わせたハイブリッド型が多い。今回は扱いやすいFF型から試した。

実際に回路を組んでみた

使ったもの:

基本構成は「マイクで音を拾う → オペアンプで反転・増幅 → イヤホンで出力」。 マイクとイヤホンを物理的に近づけて、逆位相の音が重なるようにする。

マイク → マイクアンプ → 反転アンプ(×10) → イヤホン
                              ↑
                      位相を 180° 反転

最初は盛大に発振した。マイクとイヤホンが近すぎてハウリングを起こしていた。 物理的に距離を取って、ゲインを下げたら落ち着いた。

結果と感想

低周波(エアコンのブーン音、電車の走行音)には効果があった。 高周波(人の声、キーボードの音)はほとんど消えない。 これは仕様で、FF型は高周波の打ち消しが難しいことが知られている。

市販品との差は歴然としているけど、「原理は理解した」という満足感がある。 SONYの WH-1000XM5 が2万円台で買えることの凄さが身に染みてわかった。

次にやること

部品代は全部で 1,500 円くらい。失敗しても惜しくない金額で原理が理解できるのは楽しい。 次は DSP を使ってもう少しちゃんとした実装を試したい。