Communitygithub.com

Pavan-makwana/My-Agentic-Skills

정밀 오디오 보컬 온셋 감지 및 단어별 점진적 타이포그래피 동기화 엔진. 오디오 파형을 슬라이스하고, RMS 에너지 엔벨로프를 측정하며, 빠른 보컬 케이던스를 밀리초 타임스탬프로 매핑하여 바이럴 릴스에 최적화됩니다.

My-Agentic-Skills란 무엇인가요?

이 스킬은 가사 비디오 제작에서 흔히 발생하는 '전체 줄 한꺼번에 표시' 방식의 느리고 어색한 싱크 문제를 해결합니다. 오디오 파일의 RMS 에너지 엔벨로프를 분석하여 각 단어의 발성 시작점(onset)을 밀리초 단위로 감지하고, 단어별 타임스탬프 JSON을 생성합니다. 생성된 타임스탬프를 기반으로 CSS 전환 효과를 활용해, 가사가 한 줄씩이 아닌 단어 단위로 점진적으로 나타나도록 HTML을 렌더링합니다. Singer가 빠르게 부르는 구간에서도 각 단어가 정확한 타이밍에 강조되므로, 보다 자연스럽고 몰입감 있는 가사 싱크 경험을 제공합니다. 주로 Claude Code, Cursor, Codex와 같은 AI 에이전트 플랫폼에서 사용될 수 있으며, Python 스크립트를 통한 오디오 분석과 CSS/HTML을 통한 시각화를 결합합니다. 바이럴 숏폼 영상(릴스, 쇼츠) 제작에 특히 유용하며, 빠른 보컬 케이던스가 있는 음악 콘텐츠에 최적화되어 있습니다.

지원 대상~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에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

가사 단어 싱크 엔진

일반적인 가사 비디오 문제인 '전체 줄 표시' 방식이 가수의 전달 속도보다 느리거나 뒤처지는 문제를 해결합니다. 각 단어를 음향적 온셋(onset)에 동기화합니다.

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.

관련 스킬