Communitygithub.com

frankhzh-source/digital-human-video-pipeline

数字人视频制作管线:从文案到成片,全链路自动化,支持口号一致性校验、声音克隆、数字人播报与特效合成。

digital-human-video-pipeline란 무엇인가요?

이 스킬은 프롬프트/스크립트 한 줄로 디지털 휴먼 동영상을 제작하는 완전 자동화 파이프라인입니다. 로컬 환경(D:\)에서 전 과정이 검증되었으며, 74.8초의 녹음으로 15.6초 테스트 영상을 0실패로 완성한 실전 사례를 기반으로 합니다. 주요 기능으로는 ① 문구 일관성 게이트(핵심 슬로건이 AI에 의해 임의로 변경되는 것을 방지하는 하드 체크 메커니즘), ② MiniMax 음성 복제(B2 레시피, 9.9위안/음색), ③ HeyGen 디지털 휴먼(A7 아바타 + avatar_v 엔진, 약 0.85크레딧/초), ④ HyperFrames 투명 오버레이(gsap.timeline 기반 카드/차트 애니메이션), ⑤ ffmpeg 최종 합성(ProRes4444 오버레이 + ASS 자막 + 사이드체인 컴프레션 BGM + -14 LUFS 노멀라이제이션)을 포함합니다. 이 스킬은 Claude Code, Cursor, Codex 등 모든 AI 어시스턴트에서 동일하게 사용할 수 있으며, 각 단계별로 구체적인 CLI 명령어와 검증 포인트를 제공하여 재현성을 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add frankhzh-source/digital-human-video-pipeline

즐겨 사용하는 AI에게 물어보기

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

문서

디지털 휴먼 영상 제작 파이프라인 (로컬 전구간 검증 완료 ✅)

2026-09-21/22 실측 완료: 74.8s 음성 → 15.6s 테스트 영상 (A7 아바타 + MiniMax 복제 음성 + HyperFrames 패키징) 전 과정 0 실패. 모든 스크립트는 D:\workbuddy\Claw\Claw에 위치하며, D:/Anaconda3/envs/ai/python.exe -X utf8로 실행 (faster_whisper가 이 환경에 설치됨). 2026-09-29 보충: [0] 문구 일관성 게이트——슬로건/마무리 문장이 두 번 임의로 변경된 사례 (게이트 항목 참조). 현재는 1거부권 선행 단계.

전체 흐름 (게이트 + 6단계)

[0] 문구 게이트(필수) → [1] 마스터 오디오 → [2] ASR 전사+구간표 → [3] MiniMax 복제 음성(B2 레시피)
    → [4] HeyGen photo avatar + lipsync → [5] HyperFrames 투명 오버레이(ProRes4444)
    → [6] ffmpeg 합성(자막/효과음/BGM/음량) → 완성 영상 + 썸네일

[0] 문구 일관성 게이트 (필수, 1거부권, 모든 생성 작업보다 우선)

배경: 슬로건/마무리 문장이 두 번 임의로 변경됨 (2026-09-28 오프닝 4연속 질문이 방향 변경+슬로건 누락, 24크레딧 재작업; 2026-09-29 마무리 「출처 선점」이 「필수 과목」으로 변경). 교훈: 기억/자각은 신뢰할 수 없음——규칙은 메모리에 저장되지만, 위반은 작업 중간에 발생하며 그 시점에 규칙은 이미 컨텍스트에서 사라짐. 해결책은 「자각」을 「메커니즘」으로 바꾸는 것: 레지스트리 + 스크립트 하드 검증 + 수동 승인 게이트.

세 가지 철칙:

  1. 슬로건/마무리 문장/출처는 반드시 원본 스크립트를 한 글자씩 대조——원본=구간 TTS 스크립트의 ANCHOR 구간 또는 완성 영상 자막 원본. 임의 작성 금지, 「구어체 미세 조정」 금지;
  2. 초안 작성 전에 원문 인용: 새 단락 초안 작성 후, 슬로건이 포함된 원문을 한 글자씩 사용자에게 제시하여 승인을 받은 후에만 생성 진행;
  3. 유료 생성 전 반드시 게이트 통과: TTS/HeyGen 등 크레딧 소모 작업 전에 슬로건 검증이 반드시 PASS 되어야 함.

동작 (2종 세트):

  • 레지스트리: 문구규격_확정.json (유일한 권위 있는 원본. 새 확정 문장은 사용자 승인 후 등록);
  • 검증: D:/Anaconda3/envs/ai/python.exe -X utf8 도구_슬로건검증.py <대상파일...>
    • .md/.txt/.json 지원 (직접 읽기), .ass (태그 제거 후 자막 텍스트 추출), .py (문자열 리터럴 추출, TTS 문장 상수 포함);
    • 자동으로 구두점/공백 정규화 후 부분 문자열 매칭; closed_targets는 봉인된 대상에 대해 경고만 하고 차단하지 않음;
    • exit 0=PASS 계속 진행 가능; exit 1=FAIL 유료 생성 차단; --self-test 자체 점검;
  • 상세 메커니즘 설명: references/copy-slogan-gate.md (배포판).

게이트 삽입 지점 (매 회차 실습 시 순차적으로 실행):

시점동작
초안 작성 후, TTS 이전도구_슬로건검증.py 도구_제XX회TTS.py → 반드시 PASS
HeyGen 제출 전다시 검증 (중간 수정으로 인한 표류 방지)
최종 조립 후, 배포 전도구_슬로건검증.py <sub.ass> <배포문안.md> → PASS 되어야 Feishu/배포 가능
실패 처리원본 스크립트로 한 글자씩 복원; 실제 새 확정 문장일 경우 → 사용자 승인 → 레지스트리 업데이트 → 재실행 PASS

[1] 마스터 오디오 요구 사항

  • 문장 끝이 완전히 마무리되어야 함 (절단 버전 사용 금지); 음량 -16 LUFS 기준; 30–90s 깨끗한 녹음은 복제 등록용 소스로 겸용 가능.
  • 복제 등록에는 오디오_음성원본_092211_문장끝마무리_69초.m4a 사용 (74.8s 반쪽 버전 사용 금지).

[2] ASR 전사 + 구간표

D:/Anaconda3/envs/ai/python.exe -X utf8 도구_팟캐스트ASR전사.py <오디오> --md 전사_xxx.md
  • 단어 수준 타임스탬프 출력 (.asr_cache/*.json 캐시 있음, 재실행 시 즉시 반환); 전사 결과를 기준으로 5구간 정도로 분할, S1–S5 및 정보 포인트 표시;
  • 테스트 구간은 18–30s 선택: 중영 혼합, 일시 정지가 포함된 구간이 가장 대표적임.

[3] MiniMax 음성 복제 + 더빙

도구: 도구_MiniMax음성복제_범용.py (API 키 .secrets/minimax.key + minimax_group.txt, 중국 내 사이트 직통 연결, 프록시 불필요).

  • --check 무료 → --clone --yes 복제 (voice_id 규칙: 8자 이상 영문 숫자, 영문자로 시작, haifengv1 사용) → --t2a 더빙;
  • 더빙 레시피 확정판 「B2」: speech-2.8-hd + speed:0.95, 감정 태그 없음 (사용자 검수: 음색 괜찮음, B2 톤 수용 가능);
  • 어색한 톤 조정 우선순위: 문안 구어체화 > speed 0.95 > emotion=happy > 더 긴 샘플 재복제;
  • 비용 참고: HD 3.5위안/만자, 한 문장 <1펀.

[4] HeyGen 디지털 휴먼

선행: 프록시 반드시 켜야 함 (127.0.0.1:7890 수신 확인 + mcp.heygen.com 연결 테스트).

  • 도구: 도구_팟캐스트테스트영상A7_준비_2026-09-21.py (무료: 크레딧/schema/아바타 확인/오디오 전송) → 도구_팟캐스트테스트영상A7_제출_2026-09-21.py (--yes 게이트);
  • 아바타 A7 + avatar_v 엔진; 2분 내외 출력, 다운로드 후 probe 검수;
  • ⚠️ 실제 단가 ~0.85 크레딧/초 (15.7s 영상 실측 13크레딧, 559→546). 전체 영상 제출 전에 30s 중간 구간으로 먼저 단가 확인.

[5] HyperFrames 투명 오버레이 (카드/차트 애니메이션)

프로젝트: _cards_hf/compositions/v2_testcard.html (문안만 수정: 텍스트+타임스탬프).

  • 구동 방식: gsap.timeline({paused:true})를 window.__timelines["main-video"]에 등록 + 요소 data-start/data-duration;
  • 렌더링 (약 4.5–5분 소요, overlay_v2.mov 172MB는 확정판까지 보관, 중간에 삭제 금지——삭제 시 재렌더링 5분):
export PATH="/d/ffmpeg:/c/Users/admin/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin:$PATH"
cd _cards_hf && npx hyperframes render -c compositions/v2_testcard.html -f 25 --format mov \
  -o "../_v2/overlay_v2.mov"
  • ⚠️ 네 가지 필수 함정 (모두 실측으로 해결 완료):
    1. 루트 요소에 반드시 data-composition-id="..."가 있어야 함, 없으면 HF_DE_COMPOSITION_ROOT_MISSING;
    2. 화면 크기는 data-width/data-height 사용 (data-composition-width는 인식되지 않음 → 세로 1080×1920 출력);
    3. 렌더링 머신 PATH에 ffmpeg와 ffprobe가 모두 있어야 함 (D:\ffmpeg에 ffprobe가 없었던 경우 → npm i ffprobe-static --registry=https://registry.npmmirror.com으로 1분 해결; gyan.dev에서 114MB 패키지 다운로드 금지——국내 ~20KB/s에 연결 끊김);
    4. 렌더링 출력 1920×1080, 합성 시 1072로 스케일하여 완성 영상과 정렬.

[6] ffmpeg 합성 전달

도구: 도구_테스트영상v2합성_2026-09-22.py (매 회차 복사 후, 상단 SRC/OV/자막/포인트 상수만 수정).

  • 체인: zoompan punch-in (8.45/13.25s 각 5%) → overlay ProRes4444 → ASS 자막 (ass= 경로는 반드시 슬래시 상대 경로, 백슬래시는 이스케이프되어 무시됨) → 효과음 3종 세트 (adelay 정렬) → BGM 배경 (sidechaincompress 보컬 회피) → loudnorm -14 LUFS;
  • 자막: 단어 수준 타임스탬프로 문장 분할, 강조 단어는 {\c&H6ABEE9&}단어{\r} (BGR 금색); 썸네일은 13.8s 프레임 추출.

BGM / 효과음 패러다임 (문서화 완료: 정리_지식형영상BGM및효과음패러다임_2026-09-22.md)

지식형 음성 해설 = BGM 패러다임 B「정보 동반형」: BGM은 교실의 조명이지 무대 배경 음악이 아님.

  1. 멜로디 없음 (pluck/핑거피킹, "노래하지 않음"); 2. C4+ 중고음역 (저음역 장음 legato = 분위기 패드 drone = 답답함, v2.2 교훈); 3. 스타카토 여백; 4. BPM 88–104로 말하기 속도에 맞춤; 5. 주파수 대역이 보컬 300Hz–3.4kHz와 충돌 회피; 볼륨 레벨 -28~-32 LUFS (보컬 대비) + 사이드체인 회피 (threshold 0.028 / ratio 7 / attack 180ms / release 1000ms).
  • 두 가지 프리셋: make_bgm_pluck (기본) / make_bgm_pad (A/B 예비), BGM_STYLE 한 단어로 전환; 스타일 변경 시 코드표만 수정.

효과음 3종 세트 (레시피 고정, 포인트만 변경): whoosh 전환 (lowpass ≤2400) → tick 피드백 (1.2–1.6kHz, 최소 볼륨) → thump 강조 (전체 영상 ≤2회 느낌표); 볼륨 비율 강조 0.24 : 전환 0.22 : 피드백 0.165; 임의 2s 윈도우 ≤1개 포인트.

비용台账 (실측 기준)

항목비용
ASR / ffmpeg / HyperFrames / BGM 합성0
MiniMax 복제9.9위안/음색 (첫 합성 시에만 청구); TTS ≈0.02위안/문장
HeyGen 테스트 영상13 크레딧 / 15.7s; 69s 전체 영상 추정 ~59 크레딧, 2:44 버전 추정 ~140

검수 체크리스트 (완성 후 항목별 확인)

  1. 슬로건 게이트: 도구_슬로건검증.py <sub.ass> <배포문안.md> PASS (확정 문장이 한 글자씩 존재, [0]항목 철칙);
  2. volumedetect: mean ≈ -17dB / max ≤ -2.5dB (클리핑 없음);
  3. 3프레임 추출 (차트 카드 / 키워드 카드 / 결론 카드 시점): 얼굴과 손이 0개 가림 (안전 영역: 왼쪽 카드 56–546px, 오른쪽 카드 1150–1860px, 상단 제목 84px, 하단 자막 200px);
  4. 청감 3포인트: 시작 3s에 에너지감, 보컬이 또렷함, 끝에 머무는 느낌.

할 일 (확정판 전 반드시 처리)

  • 전체 마스터 오디오 확정: 69s 문장 끝 버전 또는 2:44 전체 재편집 (74.8s 반쪽 버전 사용 금지);
  • 전체 영상 증량: A7 섹션 카드 ×5구간, S4 문장별 화면 전환, BGM 4–8마디 루프+코다 확장, 3s 관심 카드.

관련 스킬