프레젠터 보이스오버은(는) 무엇을 하나요?
도구: video-generations 저장소의 $VIDEO_ROOT/voice/ (speak.py, speak_cast.py, polish_vo.py, mix_narration.py, el_cache.py); $VIDEO_ROOT/models 디렉토리의 모델 (python studio/get_models.py).
1. 프레젠터처럼 작성하기 (스크립트가 음성보다 중요합니다)
-
절대 화면을 읽지 마십시오. 화면상의 텍스트는 사실을 진술하고, 목소리는 그 뒤에 숨은 의미, 감정 또는 이야기를 더합니다. 대사가 화면을 단어 그대로 반복한다면, 다시 쓰거나 잘라내십시오. 예외: 제품 이름과 최종 태그라인.
-
한 줄에 하나의 아이디어. 짧은 문장, 6-12단어. 구어체 영어, 축약형 허용.
-
영웅 스레드. 한 인물(예: Aroon, Anita, Dr Rao)을 따르고 그를 다시 언급하십시오. 사람들은 기능이 아니라 이야기를 기억합니다.
-
끝 초점. 핵심 단어를 구절의 마지막에 두십시오("...모든 팀은 단 하나만 가집니다."). 목소리가 자연스럽게 그곳에 머뭅니다. 문맥을 먼저 제시하십시오: "2시 14분, 이른 아침, // Aroon // 쓰러집니다."
-
세 가지 규칙: 혜택과 목록에 대해 균일한 박자로 사용하십시오.
-
대비와 전환: 문제 → "이제, 상상해 보십시오…" → 해결책.
-
도입부: 각 섹션을 앵커로 시작하십시오("먼저, 가족들을 위해.", "이제, 병원 안으로 들어가 보십시오.").
-
종결부: 진술문은 마침표로 끝나 내려가는 완료된 어조를 만듭니다. 약속이나 태그라인, 명확한 초대, 그리고 "감사합니다"로 마무리하십시오.
-
속도 (하우스 스타일): 느리고 일시 정지가 많은 전달은 로봇처럼 들립니다("너무 많은 일시 정지, 너무 적은 단어"). 기본적으로 유창한 프레젠터 속도를 사용하십시오:
- 대부분의 대사는 속도 1.00, 긴 목록/설명은 1.02, 태그라인과 마무리는 0.95–0.97, 단 하나의 감정적 훅에만 0.93을 사용하십시오.
- 한 줄에 최대 한 번의
...유지 박자, 그리고 감정적 전환에서만 사용하십시오("2시 14분, 이른 아침 ... Aroon 쓰러집니다", "만약 ... 단 한 번의 탭이면 충분하다면?")./는 드물게 사용하고 일반 쉼표를 선호하십시오. - 이 스타일의 측정된 속도: 초당 약 2.6–2.8 구어 단어(af_kore 기준). 예산 = 단어 수 / 2.7 + 0.35초 다듬기 꼬리; 각 대사는 다음 비주얼 박자 전에 맞아야 합니다.
- 문제 구축 후와 해결책의 감정적 보상 후에 의도적인 침묵(1–1.5초, 대사 없음)을 남기십시오("그 첫날 밤보다 평온합니다.").
- 밀도: 2.5분짜리 영화에 약 230–250개의 내레이션 단어; 모든 장면은 최소 한 줄을 가지므로 계획된 침묵 외에는 어떤 장면도 ~3초 이상 조용히 실행되지 않습니다.
-
정직함: 조작된 결과 없음; 가상의 이름과 수치는 데모 데이터입니다.
-
빠른 경로 (시간 절약을 위해): 모든 대사 작성 → 위 예산으로 예상 시간 계산 → 텍스트에서 오버런 수정 → 한 번에 생성. 노트북에서 재생성하는 데 대사당 약 25-40초가 소요되므로, 대부분의 시간은 다시 작성되는 텍스트에 사용됩니다.
2. 마크업 (내레이션 파일)
LINES = [(start_s, speed, text), ...], VOICE = '...', 그리고 전달 노트가 포함된 독스트링. 예시: voice/examples/narration_demo.py.
/= 숨 쉬기 일시 정지(0.25초),//= 극적 일시 정지(0.55초),...= 유지 박자(0.8초).voice/lexicon.py에서 엔진이 잘못 발음하는 이름을 다시 철자(예: Arun → "Aroon", Dr → "Doctor")하고 먼저 한 줄을 테스트하십시오.- 여러 음성의 대화:
speak_cast.py를 위한LINES = [(key, voice, speed, text), ...](voice/examples/dialogue_demo.py).
3. 음성
- 엔진: kokoro-onnx를 통한 Kokoro, 오프라인, 50개 이상의 음성. 좋은 프레젠터 선택: af_kore / af_heart (차분하고 자신감 있는 여성), hm_omega / hm_psi (인도 남성), am_onyx (깊은 남성), bm_george (영국 남성), hf_alpha / hf_beta (인도 여성). 혼합 가능:
hm_omega:0.6,am_onyx:0.4. - 새 음성 선택의 경우, 후보당 3개의 대표 대사(훅, 해결책, 태그라인)를 렌더링하고 전체 실행 전에 사용자가 선택하도록 하십시오.
- 단어 수준 강세는 강제할 수 없습니다. 구문, 구두점, 일시 정지 및 속도로 강세를 만드십시오. 정확한 강조는 인간 녹음이 필요합니다.
- 프리미엄 클라우드 음성:
voice/el_cache.py(ElevenLabs; 각 대사는 한 번 청구된 후 캐시됨).
4. 생성 → 다듬기 → 믹싱
python voice/speak.py <narration>.py work/vo [voice]— 재개 가능; 각 구절이 개별적으로 발화되고 표시된 침묵과 결합됩니다.python voice/polish_vo.py work/vo work/vo_polished— 트림, 웜/클리어 EQ, 부드러운 압축, 미묘한 룸, 페이드 아웃 꼬리.python voice/mix_narration.py <silent.mp4> <music.wav> <narration>.py work/vo_polished <out.mp4>— 대사 배치, 긴 대사를 최대 1.08×까지 가속, 필요한 경우 이후 대사만 이동, 음악 덕킹, −16 LUFS,.srt파일 생성.- 드리프트 보고서를 확인하십시오. 모든 대사는 비주얼과 약 0.5초 이내여야 합니다. 드리프트가 누적되면 대사를 줄이거나 잘라내고(화면을 반복하는 대사 선호) 시작 시간을 해당 비주얼 박자로 이동하십시오; 건드리지 않은 대사를 재생성하지 않고 다시 믹싱하십시오.
일부 대사를 다시 하려면 이전 클립을 옆으로 이동하고
speak.py를 다시 실행하십시오; 누락된 클립만 채웁니다. 클립 번호를 LINES와 동기화 상태로 유지하십시오. - MP4와 SRT를 전달하십시오.