화면 녹화 음성 해설은(는) 무엇을 하나요?
화면 녹화에 내레이션을 입힐 때 오래 걸리는 부분은 음성이 아니라 싱크입니다. 즉, 각 문장을 해당 클릭 동작과 정렬하고, 문장이 동작보다 길어지는 부분을 수정하는 작업입니다. 이 스킬은 이러한 작업을 자동으로 처리하며 내레이션이 흐트러지거나 겹치는 일이 없도록 합니다.
사용 시기
- "이 데모/튜토리얼/화면 녹화에 음성 해설을 추가해 줘."
- "화면을 무음으로 녹화했어요. 내레이션을 넣어 주세요." 또는 "제 목소리/억양을 사용하고 싶지 않아요."
- "내레이션이 화면 동작과 일치하게 해 주세요."
단계
-
MIRAGEA_API_KEY가 설정되어 있는지 확인하세요 (절대 출력하지 마십시오). 음성: 사용자의 Miragea 음성 ID를 한 번 묻거나, 사용자 음성 클립의 공개 URL과 해당 클립의 정확한 단어를 물어보세요.export MIRAGEA_VOICE_ID=...를 제안하여 다시 묻지 않도록 합니다. 사용자가 소유하거나 사용 권한이 있는 음성만 복제하세요. -
단계를 찾고 스크립트 템플릿을 생성합니다:
python3 scripts/scenes.py demo.mp4 # -> demo.frames/*.jpg, demo.frames/steps.json, demo.script.txt -
demo.frames/의 프레임을 확인하고(이미지를 읽을 수 있습니다) 각 단계에 대한 명확한 문장 하나를demo.script.txt의 해당 타임스탬프 뒤에 작성하여# step주석을 대체합니다. 문장이 다음 단계 전에 맞도록~N words힌트를 유지하세요. 자유롭게 단계를 병합, 이동 또는 삭제할 수 있습니다. 사용자가 자신의 스크립트를 제공한 경우, 해당 문장을 일치하는 타임스탬프에 배치하세요. -
비용 없이 타이밍을 확인합니다:
python3 scripts/voiceover.py demo.mp4 demo.script.txt --dry-run사용자가 정지 프레임을 원하지 않는 경우
will freeze로 표시된 줄을 줄이세요. -
렌더링:
python3 scripts/voiceover.py demo.mp4 demo.script.txt --voice VOICE_ID # 자막을 파일로 생성 python3 scripts/voiceover.py demo.mp4 demo.script.txt --burn --music bed.mp3 # 자막을 비디오에 굽기 + 배경 음악 -
출력된 JSON에서 사용자에게 경로를 알려주세요:
video(내레이션이 추가된 MP4),voice_track(편집기용 WAV),srt/vtt.frozen_seconds가 0보다 크면 언급하세요. -
대사를 변경하려면 스크립트를 편집하고 5단계를 다시 실행하세요. 변경되지 않은 대사는 캐시에서 무료로 가져옵니다.
스크립트 형식
[00:00] Acme에 오신 것을 환영합니다. 로그인 후 보게 되는 대시보드입니다.
[00:04] 새 프로젝트를 클릭하고, 이름을 입력한 후, 소유할 팀을 선택하세요.
[01:02.5] 이것으로 끝입니다. 프로젝트가 준비되었습니다.
허용되는 타임스탬프: [mm:ss], [h:mm:ss], mm:ss.s, 12.5s. #으로 시작하는 줄은 주석입니다.
싱크 작동 방식
- 각 대사는 정확히 해당 타임스탬프에 시작됩니다. 다음 단계 전에 0.25초의 여유 공간이 유지됩니다.
- 슬롯보다 긴 대사는
--max-speed(기본값 1.15배, 여전히 자연스러움)까지 속도가 빨라집니다. - 그래도 맞지 않으면, 비디오는 해당 단계의 마지막 프레임을 문장이 끝날 때까지 유지한 후 계속 진행됩니다. 이후 대사는 동일한 양만큼 이동하므로 싱크가 절대 깨지지 않습니다.
- 자막은 각 대사의 실제 음성 길이(최대 2줄 x 42자)에 따라 시간이 지정됩니다.
- 음량은 약 -16 LUFS(YouTube/웹 표준)로 정규화됩니다. 배경 음악이 제공되면 음성 아래로 음량이 낮아집니다.
옵션
| 플래그 | 기본값 | 설명 |
|---|---|---|
--voice ID / --ref-url URL --ref-text TEXT | 환경 변수 | 저장된 Miragea 음성, 또는 공개 클립에서 복제 (정확한 텍스트 = 저렴한 1배 요율) |
--model | expressive | 또는 standard |
--max-speed | 1.15 | 프레임 정지 전 최대 속도 증가율 |
--burn | 꺼짐 | 자막을 비디오에 굽기 |
--music FILE | 없음 | 배경 음악, 반복 및 자동 음량 낮춤 |
--keep-audio | 꺼짐 | 녹화 자체 사운드를 낮은 볼륨으로 음성 아래에 유지 |
--dry-run | 예상 말하기 속도로 슬롯 계획을 표시; API 호출 없음 | |
-o FILE | VIDEO.voiceover.mp4 | 출력 경로; 원본은 수정되지 않음 |
비용 및 제한
음성은 Miragea에서 문자당 청구됩니다 (저장된 음성 또는 정확한 참조 텍스트 사용 시 1배; 실시간 요금은 GET https://miragea.ai/v1/capabilities 참조). 3분 데모는 일반적으로 2,000~3,000자입니다. 각 대사는 2,000자 미만이어야 합니다. 참조 클립은 Miragea의 업로드 엔드포인트가 출시될 때까지 공개 URL이어야 합니다.
문제 해결
타임스탬프 없음/이전 줄 뒤에 있지 않음-> 오류에 명시된 스크립트 줄을 수정하세요.음성 선택 안 됨->--voice를 전달하거나MIRAGEA_VOICE_ID를 설정하세요.401키 오류,402miragea.ai에서 충전,429기다렸다가 다시 실행 (캐시된 줄은 재청구되지 않음).scenes.py에서 단계가 너무 많거나 적음 ->--threshold 0.02(더 많음) /0.08(더 적음),--min-gap.
실제 스크립트, 계획 JSON 및 생성된 자막에 대해서는 examples/를 참조하세요.