「ハーツ」とは実際には何なのか、そしてなぜ2つの見解が食い違うのか
ヘルツとは、1秒あたりの周期数を指します。Pythonで528 Hzの音波を生成し、それを2つの異なる方法で数えてみましょう。答えの末尾の桁が異なりますが、その理由を知っておく価値があります。
周波数の数値は絶えず売り出されているものの、実際に測定されることはほとんどありません。特定の周波数が何らかの効果をもたらすかどうかについて議論する前に、その数値がそもそも何であるかを正確に把握しておく価値があります。というのも、後段で生じる混乱の驚くほど多くの部分が、人々が「528 Hz」を量ではなく単なる名称として扱っていることに起因しているからです。
ヘルツとは、1秒あたりのサイクル数です。これがその定義のすべてです。このSI単位はハインリヒ・ヘルツにちなんで名付けられており、その意味はまさに「ある現象が1秒間にこの回数だけ完全に繰り返されること」です。528 Hzの音とは、空気圧が1秒間に528回、上昇してから元の位置に戻ることを指します。
測定対象となるものを作るため、一つ作ってみる
これを行うのにシンセサイザーは必要ありません。純音とは正弦波のことで、正弦波は次の3本の線で表されます:
import numpy as np
sr = 44100 # samples per second
t = np.arange(int(4 * sr)) / sr # four seconds of time stamps
y = np.sin(2 * np.pi * 528 * t) # 528 cycles per second
2 * np.pi がここにあるのは、正弦波の1周期が2πラジアンだからです。これに528を掛けると、tの1秒間にその周期が528回収まることになります。音声合成におけるその他のすべては、この考え方を基に展開されたものです。
第1の項目:ゼロクロス
ある波が1秒間に528サイクルを完了する場合、その波は1秒間に528回、上昇しながらゼロを通過します。では、数えてみましょう:
ups = np.sum((y[:-1] < 0) & (y[1:] >= 0)) # upward zero crossings
print(ups / 4) # per second
4秒以上で、これは527.88サイクル/秒となり、528ではありません。
第2の項目:FFT
もう一つのアプローチは、信号全体を一度に読み取り、それがどのような周波数で構成されているかを調べるものです。フーリエ変換によって波形を構成要素に分解し、最も強い成分が答えとなります:
spec = np.abs(np.fft.rfft(y))
freqs = np.fft.rfftfreq(len(y), 1 / sr)
print(freqs[np.argmax(spec)]) # 528.00
これにより、528.00 Hz が返されます。
なぜ意見が分かれるのか
2つの正当な手法で、同じ信号から得られた結果の末尾の桁だけが異なる。つい、どちらかが故障していると決めつけたくなるが、どちらも故障していない。
ゼロクロス回数が少ないのは、4秒のウィンドウに整数個の周期が含まれていないためです。528 Hzの場合、4秒間には2112個の完全な周期と、その後に断片が含まれます。 カウンタは断片をカウントできないため、それを切り捨ててしまうため、平均値がわずかに低くなってしまいます。これは528 Hzに限ったことではなく、周期長がウィンドウに均等に割り切れない周波数であれば、どの周波数でも発生します。ウィンドウを長くすれば、切り捨てられる断片が全体の割合として小さくなるため、誤差は縮小します。
ここでのFFTは正確に見えるが、その点については疑ってかかる価値がある。その分解能もウィンドウによって決まる。4秒間の音声では、周波数ビンの間隔は0.25 Hzとなる。528はちょうど1つのビンに収まっている。 528.1 Hzのトーンは、最も近いビンに割り当てられ、FFTは間違った答えであっても、あたかも正しい答えであるかのように確信を持って表示されるでしょう。
ここから得られる有益な結論は、ある特定の方法が優れているということではありません。あらゆる測定値には、それが導き出された枠組みの形が反映されているということであり、その測定方法が明記されていない数値は、その本質の半分を失っているのです。だからこそ、このチャンネルのセッションでは、数値そのものと併せて、その数値がどのように導き出されたかも公開しているのです。
それに続く2つのこと
聞こえない周波数でも、音は鳴り続けている。 528の代わりに1を使って同じ3行のコードを書くと、ファイルは静寂ではなくなります。そこには、1秒間に1周期を完了する全振幅の波が含まれているのです。人間の可聴範囲はおよそ20 Hzから20 kHzであるため、1 Hzでは音高はまったく感じられません。 「聞こえない」と「存在しない」は異なる主張であり、その違いこそが、4 Hzというバイノーラル差がファイル内に存在しても、あなたが4 Hzを一切聞き取れない理由です。それは、音そのものとしてではなく、2つの可聴音の差として存在しているからです。
倍音は、2段階ではなく1段階のように聞こえます。 528 Hzと1056 Hzは1オクターブ離れており、1056 Hzから2112 Hzもまた1オクターブ離れています。たとえ2回目の跳躍でヘルツ数が2倍になっても、です。 音の高さの知覚は概ね対数関数的に行われるため、音楽的な音程は差ではなく比率として扱われる。また、これが、590 Hzと438 Hzのスペクトル重心間の距離が、単純な引き算の結果が示唆するよりも離れている理由でもある。
周波数に関する主張において重要な部分
A440は、「X Hzに調律されている」という主張のすべてが比較される基準であり、これは自然の定数というよりは、合意に基づいたものです。 1939年にロンドンで開催された国際会議で、440 Hzが採用されました。それ以前、フランスでは1859年に435 Hzが法制化されており、コンサートピッチは都市や時代によって変動していました。現在、ベルリンやウィーンでは443 Hz付近、ニューヨークでは442 Hz付近で演奏されていますが、これは演奏者たちがより明るい音色を好むためです。
それは、特定の周波数が何らかの影響を及ぼすかどうかについては何も立証するものではありません。それは、物語の別の側面――ある特定の調律だけが自然のものであり、他のものはそこから逸脱しているという主張――を覆すものです。それらはすべて合意に過ぎないのです。 残された問題は、特定の周波数が特定の作用をもたらすかどうかという点であり、これは経験的な問いであり、研究ごとに答えが導き出されるもので、本誌の他の記事でも率直に論じられている。
ある音高を2通りの方法で数えることの要点は、0.12 Hzという数値そのものではありません。重要なのは、測定されていない数値は単なるラベルに過ぎず、測定には3行分の記述が必要だということです。
参考文献
ここで取り上げる内容は、臨床的エビデンスというよりは、信号処理の基礎的な定義に関するものです。具体的には、SI単位系におけるヘルツの定義、およびnumpyを用いて実装された離散フーリエ変換とウィンドウ処理の標準的な挙動についてです。 コンサートピッチの変遷:1859年のフランスの「ディアパソン・ノルマル」(435 Hz)と、1939年のロンドン会議で定められた基準(440 Hz)。
音声信号処理に関する教育コンテンツです。医学的なアドバイスではありません。
Listen · FFT-verified session 「ハーツ」とは実際には何なのか、そしてなぜ2つの見解が食い違うのか Watch on YouTube →