Communitygithub.com

yyert123/remotion-narration

비디오 스크립트를 Remotion용 장면별 음성 해설로 변환합니다. 한 번의 명령으로 장면당 하나의 MP3(저장된 음성 또는 복제된 음성), 측정된 길이를 durationInFrames으로 변환, Remotion Caption 형식의 단어 수준 자막 및 SRT 파일을 생성합니다. 음성 해설이 있는 비디오를 Remotion(또는 React/코드 기반 비디오 도구)으로 제작할 때, 사용자가 "음성 해설 추가", "이 장면들 내레이션", "장면을 내레이션에 동기화", "음성을 따라가는 자막 추가"를 요청할 때 사용하세요. 음성 및 타이밍은 Miragea 제공, GPU나 ElevenLabs 불필요.

remotion-narration란 무엇인가요?

이 기술은 Remotion 프로젝트를 위한 완전한 음성 해설 데이터(장면별 오디오, 정확한 지속 시간, 시작 프레임, 단어 수준 자막)를 생성합니다. 사용자가 마크다운, 텍스트 또는 JSON 형식의 스크립트를 제공하면, 각 장면을 Miragea API(저장된 음성 또는 복제된 음성)로 읽어 MP3 파일로 변환하고, 실제 오디오 길이를 기준으로 Remotion의 `durationInFrames` 값을 계산합니다. 또한 Remotion의 `Caption[]` 형식 및 SRT 형식의 자막을 생성하여 `createTikTokStyleCaptions()`와 같은 자막 애니메이션 기능과 완벽하게 호환됩니다. GPU가 필요 없으며, 중단된 실행의 재개와 변경되지 않은 장면의 재사용을 지원하여 비용과 시간을 절약합니다. Remotion, React, 또는 모든 코드 기반 비디오 도구를 사용하는 개발자에게 이상적입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yyert123/miragea-skills/tree/HEAD/remotion-narration

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

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

문서

Remotion 음성 해설

Remotion 컴포지션에 필요한 모든 것(장면별 오디오, 정확한 지속 시간, 시작 프레임, 자막)을 음성 해설을 기반으로 생성합니다. 장면 길이는 실제 오디오 길이에서 비롯되므로 어긋남이 없습니다.

사용 시기

  • 사용자가 스크립트(Markdown, 텍스트 또는 JSON)와 Remotion 프로젝트를 가지고 있고 음성 해설을 원할 때.
  • 장면이 해당 음성 해설만큼 정확히 지속되어야 하고, 자막이 음성을 단어 단위로 따라가야 할 때.

단계

  1. MIRAGEA_API_KEY가 설정되어 있는지 확인하세요(절대 출력하지 마세요). 음성을 선택하세요:

    • --voice VOICE_ID - 사용자의 Miragea 계정에 저장된 음성, 또는
    • --ref-url https://... - 복제할 음성의 공개 클립(사용자 동의 필요), 추가로 --ref-text "클립의 정확한 단어"를 사용하면 더 저렴한 1x 요금이 적용됩니다.
  2. 스크립트를 작성하세요. 각 ## 제목(또는 빈 줄로 구분된 단락)이 하나의 장면이 됩니다:

    ## intro
    음성 실수를 가장 빠르게 수정하는 방법, Retake를 만나보세요.
    ## demo
    올바른 단어를 입력하세요. Retake가 문장을 다시 음성화하고 이어 붙입니다.
    
  3. Remotion public/ 폴더로 생성하세요:

    python3 scripts/narrate.py script.md --voice VOICE_ID --out public/narration --fps 30
    
  4. 컴포지션에서 public/narration/narration.json을 사용하세요(examples/Narrated.tsx 참조): totalFrames를 durationInFrames로, 각 장면의 startFrame / durationInFrames를 <Sequence>로, staticFile('narration/' + scene.file)를 <Audio>로, 그리고 scene.captions(Remotion Caption[]: text, startMs, endMs, timestampMs, confidence)을 @remotion/captions의 createTikTokStyleCaptions()와 함께 사용하여 애니메이션 자막을 만드세요.

  5. 스크립트를 수정하고 자유롭게 다시 실행하세요: 변경되지 않은 장면은 매니페스트에서 재사용되어 비용이 들지 않습니다. 실행이 중간에 중단되면 완료된 장면은 유지되고 다음 실행에서 이어집니다.

옵션

플래그기본값의미
--fps30프레임 계산용 프레임 속도
--pad0.4각 장면 후 여유 시간(초)
--captions miragea예생성된 오디오에서 자막 시간 측정(정확, +3포인트/초)
--captions estimate무료: 단어 길이로 분산
--modelexpressivestandard는 참조 음성을 더 가깝게 따릅니다
--speed1.00.25-4

2,000자를 초과하는 장면은 문장 끝에서 자동으로 분할되어 결합됩니다.

문제 해결

  • choose a voice -> --voice 또는 --ref-url을 전달하세요. 참조 URL은 공개적이어야 하며, 1,024자 미만이고 직접 제공되어야 합니다(GitHub raw, S3/R2 공개 객체는 작동하지만, 서명된 리디렉션은 작동하지 않을 수 있습니다).
  • 401/402/429 -> 키, 잔액, 요청 한도 문제입니다. 다시 실행하는 것은 항상 안전합니다.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬