Skip to content

メロディとピッチ

ピッチ追跡は、音の基本周波数を時間に沿って追います。メロディ抽出、ボーカルのチューニング確認、採譜に近いワークフローの土台です。クロマ がオクターブを畳み込むのに対し、ピッチ追跡は実際の周波数を保ちます。本ページは MIR の全体像 のピッチの節を掘り下げます。

基本周波数(F0)

ピッチのある音は、1 つの周波数だけでできているわけではありません。基本周波数(F0)と、その上に重なる部分音でできています。声、擦弦楽器、管楽器では、この部分音がほぼ F0 の整数倍に並ぶため、倍音と呼ばれます。

たとえば歌手が A4 を伸ばすと、F0 は 440 Hz です。録音には 880 Hz、1320 Hz などの倍音にもエネルギーがあります。

人が知覚する音高は F0 に対応します。そのため、ピッチ追跡は時間方向の F0 推定です。難しいのは、周波数を測ること自体より、どのピークが基本周波数で、どのピークが倍音なのかを判断することです。

「整数倍」には 2 つの限界がある

弦は硬さを持つため、上の部分音ほど理想的な倍音列より高くずれます。ピアノでは高次の部分音が正確な整数倍から数十セント上に来ます。鐘、シンバル、ドラムのような打奏体では部分音が整数比にならず、そもそも明確な F0 を持たないこともあります。逆方向の限界もあります。F0 の成分がスペクトルからまったく失われていても、人はその高さを聞き取ります。つまり基本周波数とは部分音列のいちばん下の成分であって、最も大きいピークではありません。後述の推定器がスペクトルの最大値を選ばず波形の周期を測るのは、このためです。

YIN と pYIN

libsonare には関連する 2 種類の推定器があります。

  • YIN は時間領域の差分関数(difference function)を使って F0 を探します。波形がもっともよく繰り返すラグ、つまり周期を見つけ、それを周波数へ変換します。クリーンな単音音声では正確で軽量です。
  • pYIN(probabilistic YIN)は、YIN を確率モデルで包み、複数の F0 候補を時間方向に追跡します。また、そのフレームがそもそも有声音かどうかという voicing も推定します。これにより、無音、息、ノイズで不要なピッチが出やすい実録音に対して頑健になります。

単音と多音

これらの推定器は単音入力、つまり 1 度に 1 音だけが鳴る素材(ソロボイス、リードライン、ベース)を仮定します。

ベースには既定より低い fmin が必要

fmin の既定は 65 Hz(C2)、fmax は 2093 Hz(C7)なので、既定のままで追えるのはおおよそ C2〜C7 です。エレクトリックベースの開放 E は 41.2 Hz、5 弦の Low B は 30.9 Hz で、どちらも探索範囲の外にあります。範囲外の音は倍音として、あるいは範囲の端に張り付いた値として返ります。ベースを扱うときは fmin を明示的に下げ、あわせて frameLength も伸ばしてください。YIN のラグ探索はフレーム長の半分で頭打ちになるため、44.1 kHz で 2048 サンプルのフレームでは、fmin をいくら下げても約 43 Hz より下は解けません。

これらの推定器はコード採譜器ではありません。フルミックスやコードを入力すると、単一 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 の全体像