メル・MFCC・音色
問いの中には、どの音かではなくどんな音か — 明るいか暗いか、滑らかかノイジーか、フルートか歪んだギターか — を問うものがあります。それが音色(ティンバー)で、ここで扱う特徴量がそれを記述します。これらは スペクトログラムと STFT のスペクトログラムを土台にします。
音色: 音の「色」
音色(ティンバー)は、同じ音・同じ音量でもピアノとギターが違って聞こえる理由です。音の倍音の相対的な強さと、それらが時間とともにどう変化するかから生まれます。ピッチは音を、音色は声色を教えます。
メル尺度: 人の聞こえ方に沿った周波数
人は周波数を線形には聞きません。100 Hz から 200 Hz への跳びは大きく感じますが、5000 Hz から 5100 Hz はほとんど感じません。
メル尺度は、この聞こえ方に合わせた知覚的な周波数尺度です。低域は細かく、高域は粗くなります。
メルスペクトログラムは STFT をその尺度へ写し直します。耳が実際に聞き分ける帯域へ詳細を集中させるため、多くの音声機械学習で既定の前処理として使われます。
言い換えると、メルスペクトログラムは「機械が扱いやすい、人間の耳寄りの音の地図」です。通常のスペクトログラムは周波数を均等な間隔で並べますが、メルでは耳が細かく聞き分ける低域を細かく、差を感じにくい高域をまとめて扱います。
MFCC: コンパクトな音色の指紋
MFCC(メル周波数ケプストラム係数)は、メルスペクトログラムを、相関を除いた少数の数値へ圧縮し、スペクトル包絡 — 細かいピッチの詳細を無視した、スペクトルの全体形状 — を捉えます。メルエネルギーの対数をとり、DCT(情報を最初の数係数へ集める余弦基底の変換)を適用して計算します。結果は音色の小さく安定した「指紋」で、楽器・声・音種の分類に広く使われます。
MFCC は、音そのものを再生するためのデータではなく、分類や比較のための要約です。たとえば「これは声に近いか、打楽器に近いか」「前半と後半で音色が変わったか」を見るには便利ですが、「どの音名が鳴っているか」を知りたいならクロマやピッチ検出を使います。
1 つの数値で明るさ: 重心と平坦度
スペクトル形状をフレームごとに要約する 2 つのスカラーがあります。
| 特徴量 | 測るもの | 高い値の意味 |
|---|---|---|
| スペクトル重心 | スペクトルの「重心」(Hz) | より明るく、高域エネルギーが多い |
| スペクトル平坦度 | ノイズ的か調性的か(0〜1) | 明確なピッチ(0)よりノイズ(1)に近い |
これらは安価な明るさ/ノイズ性の代理指標で、UI メーター、しきい値、MFCC ベクトル全体までは要らない簡易記述子に便利です。
libsonare がこれらをどう計算するか
MelSpectrogram はメルフィルタバンクを STFT パワーに適用してメルスペクトログラムを作り、対数圧縮と DCT 相当の処理で MFCC を導きます。
| 項目 | 内容 |
|---|---|
| メル設定 | n_mels = 128、fmin/fmax(0 は sr/2) |
| 解析窓 | n_fft = 2048/hop_length = 512、Hann 窓 |
| 正規化 | htk = false で Slaney 式 |
| 追加指標 | スペクトル重心と平坦度はフレームごとの振幅スペクトルから直接計算 |
これらはリファレンス比較に足る程度に librosa の規約に従っています。スペクトル指標は TimbreAnalyzer などの上位記述子に再利用されます。メルと MFCC はプレビュー用に近似音声へ逆変換することもできます(逆変換特徴量を参照)。
関連: MIR の全体像, スペクトログラムと STFT, セクションと構成, クロマ特徴量