リアルタイムピッチが跳ぶ理由:信頼度・欠落・安定表示

画面上のピッチ線は、マイクが音符を直接「見ている」ように見えます。実際には各点が、ごく短い時間窓の中でノイズ、倍音、不安定な立ち上がりから選び出された結果です。

リアルタイム検出は短い窓で絶えず再推定している

母音を持続していても、波形は完全には同じ形を繰り返しません。呼吸、声帯の微小な変化、部屋の反射、マイクの自動ゲインがサンプルに含まれます。窓が短すぎると反応は速くても根拠が不足し、長すぎると値は安定しても滑音や立ち上がりに追従できません。リアルタイム製品は「即時性」と「信頼性」の間で選ぶ必要があり、絶対に動かない偽の直線を目指すものではありません。

ピッチ軌跡が跳ぶ4つの典型的な状況

  • 発声直後:発声の立ち上がりには気流や過渡成分が含まれ、周期構造がまだ安定していません。
  • 音量が低すぎる:解析窓に占める環境ノイズの割合が増えると、アルゴリズムが誤った周期を追跡することがあります。
  • 倍音のほうが目立つ:基本周波数が弱いと、結果が一時的に2倍または半分の位置へ跳ぶことがあります。
  • 音が切り替わっている:実際のピッチはもともと動いており、過度に平滑化すると本当の変化を隠してしまいます。

そのため「数値を1つ返す」だけでは不十分です。各フレームには品質判断も必要で、チャレンジ進捗に使えるのか、表示だけに使うのか、一時的に捨てるのかを決めます。

FrostNoteで信頼度をどう使うか

FrostNoteで保持進捗が増えるのは、音量がしきい値を超え、周期性の根拠が信頼でき、ピッチが合格範囲に入ったときだけです。短い音抜けでは積み上げた進捗をすぐに消しませんが、目標から明確に外れると増加を止めます。目標付近の表示は滑らかに寄せますが、見栄えのために高すぎる・低すぎるデータを中心へ無理に戻すことはありません。

初回の快適音域ガイドでは、ユーザーの発声で最初に出た数値をそのまま使いません。比較的安定した基本周波数を一定区間集め、その中央値から近い音域を提案します。中央値によって少数のオクターブ誤判定や立ち上がり異常の影響を減らせますが、これは今回の発声の出発点にすぎず、永久的な声域認定ではありません。

安定した表示は測定値の改ざんではない

実装上は「検出結果」と「表示範囲」を別々に扱えます。前者は実際の推定値を保持し、後者は一定のテンポで表示範囲を滑らかに調整します。FrostNoteは最初に広めの音域を表示し、安定したピッチを捉えたら目標付近へ狭め、無声や長時間の不安定が続けば再び広げます。これにより全体位置を見せつつ、各フレームに合わせて軸が震えるのを防ぎます。

練習のヒント静かな環境でマイク距離を一定にし、自然な音量で安定した母音を出してから、中盤の軌跡を見てください。最初の1点や最後の1点だけで発声全体を評価しないでください。

この検出をブラウザ内に残す理由

リアルタイム練習には低遅延が必要ですが、音声を長期保存する必要はありません。FrostNoteはブラウザ内でマイク収音と基本周波数推定を行い、サーバー側の統計には元録音、声紋、フレームごとのピッチ軌跡を送りません。チャレンジの再生データは現在のページのメモリにだけ保存され、更新や離脱後にアカウント情報として残りません。