メル尺度とは?
メル尺度とは、一言で言うと「人間が感じる音の高さ」を数値で表した尺度です。 1937年に心理学者のStanley Smith Stevens、John Volkman、Edwin Newmanによって提案されました。
物理的な音の高さは「周波数(Hz)」で表されますが、人間の耳は周波数の変化をそのままの比率で感じ取っているわけではありません。 具体的には、低い周波数の音の違いには敏感で、高い周波数の音の違いには鈍感になるという特性があります。
例えば、ピアノの低い「ド」と「レ」の音の違いははっきりとわかりますが、非常に高い音域での同じ音程の差は、低い音域ほど明確には聞き分けられない、といった経験はないでしょうか。
メル尺度は、このような人間の聴覚特性を反映した「ものさし」なのです。 メル尺度上での差が同じであれば、人間が感じる音の高さの差も同じになるように設計されています。
メル尺度とヘルツ(Hz)の関係
物理的な周波数であるヘルツ(Hz)と、知覚的な尺度であるメルは、非線形の関係にあります。 基準として、1000Hzの音が1000メルと定義されています。
下の表は、周波数(Hz)とメル尺度の関係を示したものです。周波数が低い領域ではヘルツの少しの変化がメルの大きな変化に対応し、周波数が高くなるにつれてその変化が緩やかになっていることがわかります。
周波数 (Hz) | メル尺度 (mel) | 説明 |
---|---|---|
200 Hz | 約 299 mel | 低い周波数帯。Hzの変化に対してmelの変化が大きい。 |
500 Hz | 約 603 mel | 人間の声の基本周波数などが含まれる重要な帯域。 |
1000 Hz | 1000 mel | メル尺度の基準点。 |
2000 Hz | 約 1519 mel | Hzが1000増加しても、melの増加は500程度に留まる。 |
5000 Hz | 約 2390 mel | 高い周波数帯。Hzの変化に対するmelの変化がさらに小さくなる。 |
メル尺度の計算方法
ヘルツからメルへ、またその逆に変換するための計算式がいくつか提案されています。最も一般的に使用される式の一つは以下の通りです。
ヘルツ (f) から メル (m) への変換
周波数 `f` (Hz) をメル尺度 `m` に変換する式です。
import numpy as np
def hertz_to_mel(f):
"""ヘルツをメルに変換する"""
return 1127.0 * np.log(1.0 + f / 700.0)
# 例: 1000Hzをメルに変換
frequency_hz = 1000
mel_value = hertz_to_mel(frequency_hz)
print(f'{frequency_hz} Hz is approximately {mel_value:.2f} mel')
# 出力: 1000 Hz is approximately 1000.00 mel
メル (m) から ヘルツ (f) への変換
メル尺度 `m` を周波数 `f` (Hz) に逆変換する式です。
import numpy as np
def mel_to_hertz(m):
"""メルをヘルツに変換する"""
return 700.0 * (np.exp(m / 1127.0) - 1.0)
# 例: 1000メルをヘルツに変換
mel_value = 1000
frequency_hz = mel_to_hertz(mel_value)
print(f'{mel_value} mel is approximately {frequency_hz:.2f} Hz')
# 出力: 1000 mel is approximately 1000.00 Hz
メル尺度の応用例
メル尺度は、その人間の聴覚特性を模倣できる性質から、特に音声認識や音楽情報検索といった音響信号処理の分野で広く応用されています。 その中でも最も代表的な応用例がメル周波数ケプストラム係数(MFCC)です。
メル周波数ケプストラム係数 (MFCC)
MFCCは、音声信号から人間の聴覚特性に基づいた特徴を抽出する手法です。 コンピュータが音声の「中身」を理解しやすくするための、いわば「音声の指紋」のようなものです。音声認識システムでは、入力された音声からMFCCを計算し、その特徴量を使ってどの単語が発声されたのかを識別します。
MFCCの計算プロセスでメル尺度が重要な役割を果たします。
- フーリエ変換: 音声信号を周波数ごとの成分に分解します。
- メルフィルタバンクの適用: 周波数軸をメル尺度に変換し、複数のフィルタ(メルフィルタバンク)を適用します。これにより、低周波領域は細かく、高周波領域は大まかに情報を抽出します。
- 対数変換: 人間の耳が音の強さを対数的に知覚すること(ラウドネス)を模倣するため、各フィルタの出力を対数変換します。
- 離散コサイン変換 (DCT): 最後にDCTを行うことで、相関の低い特徴量であるMFCCが得られます。
このようにして得られたMFCCは、話者の違いやノイズに対して比較的頑健であるため、長年にわたり音声認識の標準的な特徴量として利用されてきました。
まとめ
メル尺度は、物理的な周波数(Hz)を人間が実際に感じる音の高さに変換するための重要な尺度です。 低い音に敏感で高い音に鈍感という人間の聴覚特性をうまくモデル化しており、音声認識をはじめとする多くの音響処理技術の根幹を支えています。
メル尺度を理解することは、コンピュータがどのようにして音声を「聞き」、そして「理解」するのかを知るための第一歩と言えるでしょう。