ピッチ検出 — 声の高さを機械で言い当てる

「ド」なのか「ソ」なのか、男声なのか女声なのか — 声の高さの正体は波形の繰り返しの周期です。信号を自分自身とずらして重ねる自己相関、スペクトルの櫛の間隔を測るケプストラム。2大古典手法と、その落とし穴(オクターブエラー)まで動かして確かめます。

1. ピッチ=繰り返しの周期

母音を発声しているとき、声帯は一定周期で開閉し、波形はほぼ同じ形を繰り返します。この繰り返しの速さが基本周波数 f0(おおよそ男声 80〜160 Hz、女声 160〜300 Hz)。倍音がどれだけ乗っていても、波形全体の繰り返し周期 T は 1/f0 のまま — だからピッチ検出とは「T を見つける問題」です。

では、波形のどこからどこまでが「1回分」かを機械はどう見つけるのか。一番素直なアイデアが自己相関です。

2. 自己相関 — 自分をずらして重ねてみる

信号のコピーを時間 τ(ラグ)だけずらし、元の信号とどれだけ一致するかを掛け算の総和で測ります。τ がちょうど周期 T の整数倍になった瞬間、コピーは元の波形にぴったり重なり、一致度(相関値)が跳ね上がります。

自己相関の直感 — ずらして重ねて、一致度を測る
上段: 元の信号(水色)と τ だけずらしたコピー(オレンジ)。右のメーターが一致度 r(τ)。下段: 動かした τ の範囲だけ ACF 曲線が描き足されていきます。τ = 8 ms でコピーが完全に重なり、最初の大きなピーク=周期 T(→ f0 = 125 Hz)。16 ms(2T)にもピークがあることに注目。
r(τ) = Σn x(n) · x(n + τ) τ = 0 で最大。最初の大きなピークの位置が周期 T、その逆数 1/T が f0
POINT — 「最初の大きなピーク」を探す ACF は τ = T だけでなく 2T, 3T… にもピークを持つ(2周期ずらしても重なるから)。欲しいのはτ = 0 の自明なピークを除いた、最初の大きなピーク。この「どのピークを選ぶか」が次のオクターブエラー問題につながる。

3. 推定してみる — そして落とし穴

ACF のピークを自動で拾えばピッチ推定器の完成です。下のデモでは探索範囲 80〜400 Hz の中で最大のピークを選んでいます。まずは f0 スライダーを動かして、推定値が正解に追従することを確認してください。次に「かすれ声モード」ボタンを押すと…。

ピッチ推定デモ — 正解と比べる/オクターブエラーを起こす
上段: 波形。下段: ACF(薄い帯=探索範囲、白カーソルが探索して赤/緑マーカーで確定)。かすれ声モードでは1周期おきに振幅が揺れる(周期倍加)ため 2T のピークが T を追い越し、推定が1オクターブ下に転落します — これがオクターブエラー(f0 が 160 Hz 以上のとき。それ未満では 2T が探索範囲の外に出るため助かる — 探索範囲の制限も立派な対策のひとつ)。
注意 — オクターブエラーはピッチ検出の宿命 ACF にとって「T で繰り返す信号」は「2T でも繰り返す信号」でもある。かすれ声・こもった声・強い倍音などわずかな崩れで、推定は簡単に半分(オクターブ下)や2倍(オクターブ上)へ飛ぶ。単純な最大値選びではなく「十分良い最初の候補を選ぶ」戦略が必要になる。

4. ケプストラム法 — スペクトルの櫛の間隔を測る

視点を周波数側に移すと、周期信号のスペクトルは f0 間隔の櫛(倍音列)です。log を取ると、log スペクトルは「周波数軸上で周期 f0 の波打ち」+「ゆるやかな包絡」の足し算になります。

波打ちの周期を測りたければ、もう一度フーリエ変換すればいい。log スペクトルを逆フーリエ変換したものがケプストラム(cepstrum)、その横軸はケフレンシー(quefrency、単位は時間)。倍音の櫛はケフレンシー 1/f0 の鋭いピークとして現れます。

ケプストラム法 — スペクトル → log → もう一度変換
上段: スペクトル(f0 間隔の櫛)。中段: log スペクトル=「速い波打ち(ピッチ)+ゆるい起伏(声道)」。下段: その逆変換=ケプストラム。左端の塊が声道(包絡)成分、点滅しているピークのケフレンシーがちょうど 1/f0。スライダーで f0 を上げると櫛が広がり、ピークが左(短い周期)へ動きます。
c(q) = IDFT( log |X(f)| ) q はケフレンシー[秒]。ピッチはピーク位置 q* から f0 = 1/q*。MFCC(前レッスン)と同じ「log で積を和にほどく」発想

5. 現代の手法 — YIN、そしてニューラルへ

一歩先へ — YIN の2つの工夫 ① 相関の代わりに差分 d(τ) = Σ(x(n) − x(n+τ))² を使い、②「d の累積平均で割る」正規化(CMNDF)で τ が小さいほど有利になる偏りを打ち消す。そのうえで絶対しきい値(例 0.1)を最初に下回る谷を採用 — 「一番深い谷」ではなく「十分深い最初の谷」を選ぶ、というピーク選択規則の転換こそが本質。

6. まとめ