基本周波数は反復周期であり、音色の総体ではない
ほぼ周期的な音が1秒間に220回繰り返されると、基本周波数(F0)は約220 Hzです。人の耳は通常この周期をピッチとして知覚しますが、実際の信号は220 Hzだけではありません。440、660、880 Hzなどの倍音に加え、ノイズや共鳴によるエネルギー変動も含まれます。
そのため、2人がどちらもA3を歌い、基本周波数が近くても、一方は明るく、もう一方は柔らかく聞こえることがあります。F0が答えるのは「周期がおおよそどれくらい速いか」であり、音色には倍音比、スペクトル形状、共鳴、時間変化も関わります。
アルゴリズムがフレームごとに推定する理由
話し声のピッチは常に変化するため、アルゴリズムは音声を重なり合う短いフレームに分け、各フレームで最も可能性の高い周期を探します。YINは差分関数で周期候補を見つけ、補間で精密化します。確率版のpYINは複数候補と時間方向の連続性も考慮します。短いフレームは反応が速い一方で周波数分解能に限界があり、長いフレームは安定するものの急速な変化を平均化してしまいます。
CVoiceはまずYINを試し、有効性が不足する場合にpYINで補います。FrostNoteは低遅延を重視するため、単一フレームの値を最終回答とせず、連続フレームと保持時間を組み合わせます。
セントで比率の差を比較可能にする
十二平均律では、1オクターブを1200セント、1半音を100セントに分けます。セントが比較するのは単純な差ではなく周波数比です:
つまり、220 Hzから221 Hzへの差と、880 Hzから881 Hzへの差では、聴覚上の意味が異なります。FrostNoteが目標付近の約±25セントを成功範囲にするのは、異なる音域でも一貫した相対尺度を使うためです。
2倍または半分へ飛ぶ理由
第2倍音が基本周波数より強いと、アルゴリズムが220 Hzを440 Hzと読むことがあります。周期構造をより長い周期として解釈できる場合には、110 Hzと読むこともあります。これがオクターブ誤判定です。息漏れ声、鼻声、ハミング、部屋の共鳴、スマートフォンのノイズ抑制、背景音楽は発生確率を高めます。
解決策は単に大きな声で歌うことではありません。安定した母音を保ち、残響を減らし、伴奏を避け、マイクの過負荷を防ぎ、連続フレームに対して中央値処理や急な跳びの抑制を行うほうが、一般に効果的です。
測定値の使い方
- 一定時間の中央値と変動範囲を見て、単一フレームのピークを過信しないでください。
- F0、音名、音色を区別してください。互いに関係はありますが、同じ概念ではありません。
- 録音を比較するときは文章、デバイス、環境をそろえてください。そうしないと、変化は発声だけに由来しません。
応用例:FrostNote F0を使ってリアルタイムの音程練習を行い、CVoice F0を8つの声の方向の一つとしてのみ扱います。
参考資料
- librosa:YIN基本周波数推定ドキュメント
- A. de Cheveigné、H. Kawahara、YIN基本周波数推定法、JASA、2002(上記ドキュメントに引用)。