Skip to content

メロディとピッチ

ピッチ追跡は、音の基本周波数を時間に沿って追います。メロディ抽出、ボーカルのチューニング確認、採譜に近いワークフローの土台です。クロマ がオクターブを畳み込むのに対し、ピッチ追跡は実際の周波数を保ちます。本ページは 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 検出は、そうしたフレームを無声音としてマークし、音楽に隙間があるところではメロディ線にも隙間を作ります。

PITCH · MELODY CONTOURIDLE
ピッチコンター — メロディを f0 として描く

ピッチ追跡はフレームごとに基音の周波数を推定し、歌ったり弾いたりした旋律を目に見えるコンターに変えます。明確なピッチが聞こえない箇所では線が途切れます。「平滑化」を切り替えると、音の立ち上がりで時おりオクターブが飛ぶ生の推定が、メディアンフィルタとオクターブ補正によってきれいな旋律へ落ち着く様子が見えます。再生すると、聞こえるピッチの上をドットが進みます。

平滑化
libsonare がどう追跡するか

libsonare は単音音声向けに YIN と pYIN による F0 推定を実装しています。analyzeMelody / MelodyAnalyzer はフレームごとの YIN 周波数と信頼度を返し、平均周波数、ピッチ範囲、安定度、簡易 vibrato rate も計算します。低レベルの pitchYin / pitchPyin では、YIN と pYIN のトラックを直接取得できます。結果は MIDI ノート番号へ変換してチューニングや編集ワークフローに使えます。ピッチ追跡は、分離された明確なピッチ素材で最も信頼でき、多音やノイズの多いミックスでは劣化します。

関連: クロマ特徴量, メル・MFCC・音色, 編集の基礎, MIR の全体像