Communitygithub.com

Pavan-makwana/My-Agentic-Skills

高精度音声発声検出と単語単位の段階的タイポグラフィ同期エンジン。音声波形をスライスし、RMSエネルギーの包絡線を測定し、ミリ秒単位のタイムスタンプで高速な声のリズムをマッピングしてバイラルリールを実現します。

My-Agentic-Skills とは?

このスキルは、歌詞の各行を単語単位で音声の開始点(音響オンセット)に同期させる「Lyric Word Sync Engine」です。従来の歌詞表示のように行全体が一度に表示されると、歌手の速い歌唱に表示が追いつかないという問題を解決します。音声ファイルのRMSエネルギー包絡線解析と音声認識による発声チェックポイントを元に、各単語の重み付けとサブ秒単位のタイムスタンプを生成します。表示はHTML/CSSで制御され、未発声の単語は薄いゴーストインク(opacity: 0.12)で、発声された単語は深紅(opacity: 1, color: #8c1226)に切り替わることで、視覚的に自然なリズム表示を実現します。主にClaude CodeやClineなどのAIエージェントプラットフォーム上で動作し、バイラルリールやインタラクティブな歌詞表示コンテンツ制作に最適です。

対応~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/Pavan-makwana/My-Agentic-Skills/tree/HEAD/skills/lyric-word-sync-engine

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

歌詞単語同期エンジン

一般的な歌詞ビデオの問題「行全体表示が遅く、歌手の歌唱に追いつかない」を解決します。各単語をその音響的な開始点に同期させます。

flowchart TD
    A[音声ファイル MP3/WAV] --> B[音響包絡線解析 RMS]
    B --> C[音声認識 / 発声チェックポイント]
    C --> D[単語音節重み付け]
    D --> E[サブ秒単位の単語タイムスタンプ JSON]
    E --> F[段階的単語表示 HTML/CSS]

問題と解決策

  • 問題: 歌手が加速する(例:速いチャラナムやスタッカートのライン)と、静的な行全体表示が画面に長く残りすぎたり、歌手が歌い終わった後に表示されたりする。
  • 解決策:
    1. 各行は個々の単語にトークン化される: ["Kanmani", "anbodu", "kaadhalan"]
    2. アクティブな発声時間は、音節の重みと局所的なRMSエネルギーの上昇に応じて分配される。
    3. 行内のすべての単語はレイアウト上で同時にレンダリングされるため、フォントサイズや行折り返しが変動しない。
    4. まだ発声されていない単語は薄いゴーストインクで表示される(opacity: 0.12)。
    5. 歌手が各単語を発声すると、その単語は深紅に切り替わる(opacity: 1, color: #8c1226)。

タイムスタンプ抽出スクリプト

import wave, numpy as np

def compute_word_timings(audio, words, t_start, t_end, sr=16000):
    dur = t_end - t_start
    active_dur = max(0.4, dur * 0.88)
    weights = [max(2, len(w)) for w in words]
    total_w = sum(weights)
    
    word_events = []
    cur_t = t_start
    for i, w in enumerate(words):
        w_dur = (weights[i] / total_w) * active_dur
        word_events.append({
            'word': w,
            't_rel': round(cur_t, 3)
        })
        cur_t += w_dur
    return word_events

CSS 段階的単語ハイライト

.native .word {
  display: inline-block;
  opacity: 0.12;
  transition: opacity .12s ease-out;
  padding: 0 .25cqw;
}
.native .word.revealed {
  opacity: 1;
}

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル