REAL-TIME SINGING ANALYSIS × WEB AUDIO API
カラオケ採点デモ 音程・ビブラート・しゃくり・こぶしを検出
マイクの歌声から基本周波数(F0)を YINアルゴリズム でリアルタイム推定し、
音程のズレ(セント単位)と歌唱テクニックをブラウザだけで検出する技術デモです。
音声はすべてブラウザ内で処理され、サーバーには一切送信されません。
「マイクで歌う」でマイク解析を開始。マイクがない場合は「シミュレーション歌唱」で合成音声の解析をご覧いただけます。
音程OK (±30セント以内)
音程のズレ
ビブラート
しゃくり
こぶし
PITCH — いま歌っている音
—
ズレ — セント
TECHNIQUES & SCORE — 検出結果
0.0s
ビブラート
0
しゃくり
0
こぶし
0%
音程正確率
0
スコア
これは何?
業務用カラオケの「精密採点」的な歌声解析を、Web Audio APIとVanilla JavaScriptだけでブラウザ上に再現した技術デモです。 マイク入力から YIN法(de Cheveigné & Kawahara, 2002)で基本周波数を推定し、 そのピッチ軌跡を解析して「音程のズレ(セント)」「ビブラート」「しゃくり」「こぶし」を検出しています。
各テクニックの音響的な定義、YINアルゴリズムの中身、検出ロジックの設計は 解説記事「カラオケ採点システムの仕組み」で詳しく紹介しています。
使い方・楽しみ方
- 音程チェック:「ガイド音を鳴らす」で基準音を再生し、同じ高さで「あー」と歌うと、ゲージにセント単位のズレが表示されます。±30セント以内でキープできれば音程OK(シアン色)です。
- ビブラート:声を伸ばしながら高さを規則的に揺らしてみてください。毎秒5〜7回・±20〜50セント程度の規則的な揺れが約1秒続くと「ビブラート」と判定されます。
- しゃくり:目標の音より低い音から「ずり上げて」歌い出すと「しゃくり」バッジが出ます。
- こぶし:音を伸ばしている途中で「うぅん↑」と一瞬だけ音を持ち上げてすぐ戻すと「こぶし」と判定されます(演歌の要領で)。
- マイクがない環境では「シミュレーション歌唱」を押すと、合成音声(ストレート→しゃくり→ビブラート→こぶし)が同じ解析パイプラインを通る様子を確認できます。
プライバシーについて
- マイクの音声は、お使いのブラウザの中だけで解析されます。録音データ・解析結果がサーバーへ送信されることは一切ありません(本ページは静的配信のみで、送信先そのものがありません)。
- マイクの使用はブラウザの許可ダイアログで制御されます。「停止」を押すとマイクは完全に解放されます。
- 本デモの採点ロジックは学習用の簡易モデルであり、実際の業務用カラオケ採点機の仕様とは無関係の独自実装です。
技術メモ
- F0推定: YIN法(差分関数+累積平均正規化+放物線補間)を2048サンプル窓で毎フレーム実行
- 音程: 平均律(A4=440Hz)の最寄り半音とのズレをセント値
1200×log2(f/f_ref)で算出 - ビブラート: ピッチ残差のゼロ交差から揺れの速さ(4〜8.5Hz)・深さ(8セント以上)・規則性を判定
- しゃくり: ノート確定直前の軌跡が「80セント以上低い位置から概ね単調に上昇」していたら検出
- こぶし: 保持中の音から+60セント以上の山が出て400ms以内に戻ったら検出(ビブラート中は除外)
- 対応ブラウザ: Chrome / Edge / Firefox / Safari の最新版(マイク使用にはHTTPSが必要)
音声信号処理・リアルタイム解析・エッジAIの開発はテクノスフィアの得意分野です。