Skip to content

メル・MFCC・音色

問いの中には、どの音かではなくどんな音か — 明るいか暗いか、滑らかかノイジーか、フルートか歪んだギターか — を問うものがあります。それが音色(ティンバー)で、ここで扱う特徴量がそれを記述します。これらは スペクトログラムと STFT のスペクトログラムを土台にします。

音色: 音の「色」

音色(ティンバー)は、同じ音・同じ音量でもピアノとギターが違って聞こえる理由です。音の倍音の相対的な強さと、それらが時間とともにどう変化するかから生まれます。ピッチは音を、音色は声色を教えます。

メル尺度: 人の聞こえ方に沿った周波数

人は周波数を線形には聞きません。100 Hz から 200 Hz への跳びは大きく感じますが、5000 Hz から 5100 Hz はほとんど感じません。

メル尺度は、この聞こえ方に合わせた知覚的な周波数尺度です。低域は細かく、高域は粗くなります。

メルスペクトログラムは STFT をその尺度へ写し直します。耳が実際に聞き分ける帯域へ詳細を集中させるため、多くの音声機械学習で既定の前処理として使われます。

言い換えると、メルスペクトログラムは「機械が扱いやすい、人間の耳寄りの音の地図」です。通常のスペクトログラムは周波数を均等な間隔で並べますが、メルでは耳が細かく聞き分ける低域を細かく、差を感じにくい高域をまとめて扱います。

MEL · SPECTRALIDLE
メルスペクトログラム — 人の聞こえ方の周波数

同じ STFT をメル尺度へ写し直したものです。耳が聞き分ける低域は細かく、高域は粗くなります。この母音的なトーンの倍音列とフォルマントの帯は、リニア軸より近くに並びます — 耳(そして多くの機械学習の前処理)が実際に使う見え方です。

MFCC: コンパクトな音色の指紋

MFCC(メル周波数ケプストラム係数)は、メルスペクトログラムを、相関を除いた少数の数値へ圧縮し、スペクトル包絡 — 細かいピッチの詳細を無視した、スペクトルの全体形状 — を捉えます。メルエネルギーの対数をとり、DCT(情報を最初の数係数へ集める余弦基底の変換)を適用して計算します。結果は音色の小さく安定した「指紋」で、楽器・声・音種の分類に広く使われます。

MFCC は、音そのものを再生するためのデータではなく、分類や比較のための要約です。たとえば「これは声に近いか、打楽器に近いか」「前半と後半で音色が変わったか」を見るには便利ですが、「どの音名が鳴っているか」を知りたいならクロマやピッチ検出を使います。

MFCC · TIMBREIDLE
MFCC マップ — コンパクトな音色の指紋

MFCC はメルスペクトログラムを少数の係数へ圧縮し、ピッチの詳細を捨ててスペクトル包絡を捉えます。各行が時間に対する1係数(0次のエネルギー項は除外)で、音色が安定していれば行も安定します。これが楽器や声の分類器が実際に比較する指紋です。

1 つの数値で明るさ: 重心と平坦度

スペクトル形状をフレームごとに要約する 2 つのスカラーがあります。

特徴量測るもの高い値の意味
スペクトル重心スペクトルの「重心」(Hz)より明るく、高域エネルギーが多い
スペクトル平坦度ノイズ的か調性的か(0〜1)明確なピッチ(0)よりノイズ(1)に近い

これらは安価な明るさ/ノイズ性の代理指標で、UI メーター、しきい値、MFCC ベクトル全体までは要らない簡易記述子に便利です。

libsonare がこれらをどう計算するか

MelSpectrogram はメルフィルタバンクを STFT パワーに適用してメルスペクトログラムを作り、対数圧縮と DCT 相当の処理で MFCC を導きます。

項目内容
メル設定n_mels = 128fminfmax(0 は sr/2)
解析窓n_fft = 2048hop_length = 512、Hann 窓
正規化htk = false で Slaney 式
追加指標スペクトル重心と平坦度はフレームごとの振幅スペクトルから直接計算

これらはリファレンス比較に足る程度に librosa の規約に従っています。スペクトル指標は TimbreAnalyzer などの上位記述子に再利用されます。メルと MFCC はプレビュー用に近似音声へ逆変換することもできます(逆変換特徴量を参照)。

関連: MIR の全体像, スペクトログラムと STFT, セクションと構成, クロマ特徴量