メロディとピッチ
ピッチ追跡は、音の基本周波数を時間に沿って追います。メロディ抽出、ボーカルのチューニング確認、採譜に近いワークフローの土台です。クロマ がオクターブを畳み込むのに対し、ピッチ追跡は実際の周波数を保ちます。本ページは MIR の全体像 のピッチの節を掘り下げます。
基本周波数(F0)
ピッチのある音は、1 つの周波数だけでできているわけではありません。基本周波数(F0)と、その整数倍にある倍音が重なっています。
たとえば歌手が A4 を伸ばすと、F0 は 440 Hz です。録音には 880 Hz、1320 Hz などの倍音にもエネルギーがあります。
人が知覚する音高は F0 に対応します。そのため、ピッチ追跡は時間方向の F0 推定です。難しいのは、周波数を測ること自体より、どのピークが基本周波数で、どのピークが倍音なのかを判断することです。
YIN と pYIN
libsonare には関連する 2 種類の推定器があります。
- YIN は時間領域の difference function を使って F0 を探します。波形がもっともよく繰り返すラグ、つまり周期を見つけ、それを周波数へ変換します。クリーンな単音音声では正確で軽量です。
- pYIN(probabilistic YIN)は、YIN を確率モデルで包み、複数の F0 候補を時間方向に追跡します。また、そのフレームがそもそも有声音かどうかという voicing も推定します。これにより、無音、息、ノイズで不要なピッチが出やすい実録音に対して頑健になります。
単音と多音
これらの推定器は単音入力、つまり 1 度に 1 音だけが鳴る素材(ソロボイス、リードライン、ベース)を仮定します。コード採譜器ではありません。フルミックスやコードを入力すると、単一 F0 という仮定が崩れます。混み合ったトラックの中のメロディを追う場合は、先にステムや HPSS/音源分離で対象の線を分け、よりクリーンな信号に対してピッチ追跡します。
Voicing: ピッチがないフレーム
すべてのフレームにピッチがあるわけではありません。休符、無声子音("s" や "t")、打楽器には明確な F0 がありません。素朴なトラッカーはそれでも何らかの数値を返し、跳ね回る無意味な線を作ります。pYIN が得意とする voicing 検出は、そうしたフレームを無声音としてマークし、音楽に隙間があるところではメロディ線にも隙間を作ります。
libsonare がどう追跡するか
libsonare は単音音声向けに YIN と pYIN による F0 推定を実装しています。analyzeMelody / MelodyAnalyzer はフレームごとの YIN 周波数と信頼度を返し、平均周波数、ピッチ範囲、安定度、簡易 vibrato rate も計算します。低レベルの pitchYin / pitchPyin では、YIN と pYIN のトラックを直接取得できます。結果は MIDI ノート番号へ変換してチューニングや編集ワークフローに使えます。ピッチ追跡は、分離された明確なピッチ素材で最も信頼でき、多音やノイズの多いミックスでは劣化します。
関連: クロマ特徴量, メル・MFCC・音色, 編集の基礎, MIR の全体像