비디오 트리밍
원시 녹음을 사람 편집자가 승인할 만한 깔끔한 첫 번째 컷으로 만듭니다. 모든 리테이크와 말더듬이 사라지고, 발언자의 자연스러운 리듬은 유지되며, 잘린 단어는 없으며, 모든 연결은 발언자가 의도한 문장 그대로 읽힙니다. 모든 분야, 모든 형식 및 음성 엔진이 이해하는 모든 언어에서 작동합니다. 규칙은 사람들이 말하는 방식에 관한 것이지, 말하는 내용에 관한 것이 아닙니다. 형식 및 언어 차이(일시 중지 스타일, 데모, 인터뷰, 시끄러운 장소, 비영어권 화자)는 references/formats.md에 나와 있습니다.
이 스킬은 트리밍 단계만 수행합니다. 하나의 카메라/오디오 소스 입력, 하나의 단일 트랙 타임라인 출력입니다. 화면 녹화, B-롤 또는 그래픽을 위에 배치하는 것은 이후 단계이며, segments.json(모든 유지된 조각의 정확한 소스 입/출력)을 재사용하여 다른 트랙을 동기화하여 자를 수 있습니다.
잘리는 것과 절대 잘리지 않는 것
잘림 (실수): 리테이크(마지막 테이크가 승리), 잘못된 시작, 포기한 접근, 말더듬 및 두 번 말한 단어, 필러 사운드("어", "음", "에", "그-" 같은 반쪽 단어), 수정한 발음 실수, 중얼거림, 편집자에게 화면에서 제거하라고 지시하는 내용, 그리고 데드 스페이스(긴 침묵, 호흡/딸깍 소리만 있는 일시 중지)입니다.
유지: 자연스러운 일시 중지(약 1초 미만), 서툴더라도 발언자의 구문, 의견, 이야기, 농담, 수사적 반복("이게 프로들이 하는 거고, 이게 이기는 사람들이 하는 거야"), 화면의 무언가를 가리키는 대사, 시청자가 봐야 하는 데모 순간, 리테이크가 없는 모든 것입니다.
이 스킬의 판단 범위 밖: 창의적 트리밍(속도 조절을 위해 이야기, 여담, 스폰서 멘트를 제거하는 것). 사람 편집자가 그렇게 할 수 있으며, 이를 따라하거나 플래그를 지정하지 마십시오. 사용자가 나중에 편집자 버전을 보여주면, 창의적인 부분이 아닌 실수에 대한 교훈만 학습하십시오.
이 분할의 이유: 이 스킬의 사용자는 편집자입니다. 실수만 제거하는 첫 번째 컷은 신뢰할 수 있고 그 위에 구축할 수 있지만, 취향 결정도 내리는 컷은 모든 것을 다시 확인하도록 강요합니다.
전체 규칙과 실제 예시: 컷을 작성하기 전에 references/cutting-rules.md를 읽으십시오. 이것이 이 스킬의 핵심입니다.
설정 (기기당 한 번)
Python 3.10+, ffmpeg 및 다음이 필요합니다.
pip install numpy soundfile num2words torch torchaudio
# 주요 음성 엔진: NVIDIA Parakeet (영어 + 24개 유럽 언어)
pip install parakeet-mlx # Apple Silicon (GPU 사용)
pip install "nemo_toolkit[asr]" # NVIDIA GPU가 있는 Windows/Linux
# Whisper: 갭 스캔에서 사용("어"/"음"을 쓰도록 설정 가능) 및 Parakeet이 지원하지 않는 언어용
pip install mlx-whisper # Apple Silicon
pip install faster-whisper # 그 외
pip install uroman # 비라틴 문자 언어(힌디어, 아랍어, 일본어 등) 전용
첫 번째 실행 시 Parakeet(~1.2GB), Whisper large-v3(~3GB) 및 MMS aligner(~1.2GB)를 다운로드합니다.
Parakeet을 사용하는 이유: 41분 테스트 녹음에서 9개의 숨겨진 리테이크(일반적인 전사본이 하나의 깔끔한 줄로 병합하여 추가 확인 및 검토자 수정이 필요했던 반복)가 있는 경우, Parakeet은 8개를 감지하고 Whisper는 1개를 감지했습니다. Parakeet은 또한 Whisper가 놓치는 중얼거림("Mm-hmm")을 기록하며, 전체 축어적 통과는 ~11분 대신 3분이 걸렸습니다. 각 엔진은 여전히 다른 엔진이 감지하는 몇 가지 한 단어 말더듬("때문에… 때문에")을 놓치므로, 다시 듣기 확인과 갭 스캔이 유지됩니다. 엔진 선택은 자동입니다(config "asr": "auto"). "parakeet" 또는 "whisper"로 설정하여 하나를 강제할 수 있습니다.
워크플로우
"컷 폴더"(녹음당 하나)에서 작업합니다. 스크립트는 이 스킬의 scripts/ 폴더에 있으며, python <skill>/scripts/<name>.py <cut folder>로 실행합니다.
1. 인테이크 (2분)
assets/config.example.json을<cut folder>/config.json으로 복사합니다.title,source(오디오가 포함된 카메라 파일),timeline_fps(전달 프레임 속도, 소스 속도는 프로빙됨) 및language(언어 코드: "en", "es", "hi", … 또는 "auto")를 설정합니다. 형식이 다른 일시 중지 스타일을 요구하지 않는 한(references/formats.md), 타이밍 숫자는 그대로 둡니다. 각 숫자는 실제 실수의 결과입니다(references/edges-and-pauses.md).- 형식(솔로, 대본 있음, 튜토리얼, 팟캐스트, 쇼트폼…)을 확인하고
references/formats.md에서 해당 행을 읽습니다. - 오디오 추출:
ffmpeg -i <camera file> -vn -ac 1 -ar 16000 <cut folder>/audio.wav - 화자 프로필이 존재하는 경우(
profiles/<speaker>.md, 아래 참조), 지금 읽습니다.
2. 축어적 전사 (Parakeet 사용 시 오디오 1분당 약 5초, 바로 백그라운드에서 시작)
python scripts/transcribe_verbatim.py <cut>/audio.wav <cut>/verbatim.json
이것은 일반적인 전사본이 아닙니다. 일반적인 전체 길이 패스는 많은 말더듬과 리테이크를 숨기고("because the, because the"가 "because the"로 돌아옴, Whisper는 약 1/3을 숨김) 단어 시간이 대략적으로만 맞아 단어 끝을 자르게 됩니다. 이 패스는 일시 중지에서 분할된 짧은 청크를 전사한 다음 모든 단어를 오디오에 강제 정렬합니다. 모든 컷은 이러한 단어 시간에 배치됩니다.
3. 후보 찾기
세 가지를 모두 실행한 다음 전사본과 함께 출력을 읽습니다.
python scripts/make_reading_copy.py <cut>: 모든 단어에 번호가 매겨진 전사본인reading.txt를 씁니다.python scripts/retake_finder.py <cut>: 발언자가 같은 시작 단어로 다시 시작하는 모든 위치입니다. 대부분은 리테이크(마지막 테이크 유지)이고 일부는 수사적 반복(둘 다 유지)입니다. 각각을 결정합니다.python scripts/gap_scan.py <cut>: 소리가 있는 모든 긴 간격을 다시 듣습니다. 중얼거린 재시작이 여기에 숨어 있습니다("배터리 수명이- 배터리 수명이"); 전사본은 종종 이를 건너<0xEB><0x9B>니다.
4. 전체 전사본을 읽고 컷 작성
편집자처럼 reading.txt를 위에서 아래로 읽고 references/cutting-rules.md를 염두에 둡니다. <cut>/cuts.json을 작성합니다.
{"remove": [[0, 236, "리테이크: 인트로의 이전 두 테이크"],
[1047, 1064, "잘못된 시작: 'because we just haven't had, because we have…'"]],
"remove_t": [[1125.80, 1129.45, "갭 스캔에서 들린 숨겨진 리테이크: 'So in each of these recipes…'"]],
"markers": [[2680, "호스트 노트: '내 집주인에 대한 부분만 삭제해 줘' -> '그래서 내 집주인이 전화했어…'(3문장) 제거됨"]],
"markers_t": [[1501.2, "확인: 4초 동안의 무음 따르기 유지, 발언자가 데모를 하고 있음"]]}
remove=reading.txt의 포함적 단어 인덱스 범위(선호됨: 자유로운 정확한 경계).remove_t= 초 단위, 전사본에 단어로 없는 소리 전용(갭 스캔 또는 확인에서).markers(단어 인덱스) /markers_t(초) = 모든 호스트 지시, 모든 판단 호출, 20초 이상의 고유 콘텐츠를 삭제하는 모든 되감기에 대한 타임라인의 빨간색 To-Do 마커로, 편집자가 몇 초 안에 확인할 수 있도록 합니다.- 모든 컷에 이유를 기입하십시오. 이는
CUTS.md에 포함되며, 이유가 있어야 컷 리스트를 검토할 수 있습니다.
진행하기 전에 모든 컷의 양쪽 단어를 하나의 문장으로 읽으십시오. 발언자가 의도한 문장으로 읽히지 않으면 컷이 잘못된 위치에 있는 것입니다. 이 습관 하나만으로 대부분의 "컷이 이해가 안 돼요"라는 피드백을 방지할 수 있습니다.
5. 빌드
python scripts/trim.py <cut>은 timeline.fcpxml, timeline.edl, segments.json, words-cut.json 및 CUTS.md를 쓰고 원시 및 컷 길이를 출력합니다. 상태 확인: 대본 없이 떠들썩한 녹음에서 30-45%를 제거하는 컷은 정상입니다(대본이 있는 경우 10-20%). 대본 없는 녹음에서 10% 미만은 일반적으로 리테이크를 놓쳤음을 의미합니다.
6. 다시 듣고 수정 (컷 1분당 약 15초)
python scripts/check_cut.py <cut>은 컷 오디오를 렌더링하고, 동일한 방식으로 전사한 다음 컷이 말해야 하는 내용과 단어별로 비교합니다. 그런 다음 python scripts/retake_finder.py <cut> --kept는 두 테이크가 모두 살아남은 반복된 시작 부분을 나열합니다.
모든 JOIN 라인은 다시 들어서 그렇지 않음을 증명할 때까지 버그로 취급하십시오. 출력 읽는 방법, 일반적인 전사 잡음 및 각 문제 유형 수정 방법: references/checks.md. 수정, 재빌드, 재확인. 두세 번의 라운드가 일반적입니다.
그런 다음 words-cut.json을 시청자가 듣는 것처럼 처음부터 끝까지 한 번 읽으십시오. 검사기는 오디오와 의도를 비교합니다. 읽기만이 의도 자체가 잘못된 경우(매달린 문장, 실수로 의도적으로 유지된 리테이크)를 잡아냅니다.
7. 전달
- Final Cut Pro:
timeline.fcpxml을 더블 클릭(파일 → 가져오기 → XML). Premiere/Resolve:timeline.edl을 가져와 카메라 파일에 다시 연결합니다. - 사용자에게 일반 언어로 알립니다. 원시 → 컷 길이, 컷 수, 각 마커(시간 + 수행된 작업), 확실하지 않은 사항 및 소요 시간.
- 사용자의 편집자가 최종 버전을 게시하면, 해당 전사본을 요청하고
python scripts/compare_editor.py <cut> <their transcript.txt>를 실행하십시오. 놓친 것을 찾는 가장 빠른 방법입니다(references/checks.md→ "편집자 버전과 비교").
피드백에서 학습(이 스킬을 향상시키는 부분)
모든 크리에이터는 다르게 말합니다. 한 화자에 대해 배운 내용을 프로필에 저장하십시오. profiles/<speaker-slug>.md (references/speaker-profile-template.md에서 시작, 실제 리뷰에서 구축된 채워진 예제는 assets/profiles/example-solo-youtube-host.md에 있음). 여기에는 그들의 언어 습관, 편집자에게 지시하는 방법, 일시 중지 스타일, 용어집 및 사용자가 한 모든 수정 사항이 포함됩니다.
사용자가 컷을 검토할 때:
- 수정하기 전에 각 불만을 그 원인에 매핑하십시오. 컷 결정(규칙), 가장자리 배치(숫자) 또는 전사본이 숨긴 것(탐지 격차)입니까?
references/lessons.md는 지금까지 본 원인을 나열하며, 대부분의 새로운 불만은 그중 하나로 판명됩니다. - 인스턴스뿐만 아니라 원인을 수정하십시오. 잘린 단어는 가장자리 규칙이 어딘가에서 잘못되었음을 의미하고, 놓친 리테이크는 프로필에 추가할 패턴을 의미합니다.
- 타이밍 숫자를 변경하기 전에 먼저 이전 녹음의 조인에 대해 변경 사항을 다시 실행하십시오. 하나의 불만을 수정하는 변경이 조용히 30개의 새로운 불만을 만들 수 있습니다(
references/lessons.md, 도입부 이야기). - 예제와 이유와 함께 프로필에 교훈을 기록하십시오. 모든 화자에게 적용되는 경우
references/cutting-rules.md에 추가하십시오.
이 스킬의 파일
scripts/transcribe_verbatim.py: 청크형 Parakeet(또는 Whisper) + 강제 정렬 →verbatim.jsonscripts/make_reading_copy.py: 번호가 매겨진 전사본 →reading.txtscripts/retake_finder.py: 반복된 시작 부분 →retakes.txt(빌드 후--kept)scripts/gap_scan.py: 시끄러운 간격 다시 듣기 →gaps.txtscripts/trim.py: 컷 →timeline.fcpxml,timeline.edl,segments.json,words-cut.json,CUTS.mdscripts/check_cut.py: 다시 듣기 비교 →check.txtscripts/compare_editor.py: 편집자의 최종 전사본과 비교 →compare-editor.txtreferences/cutting-rules.md: 예제와 함께 잘라야 할 것과 유지해야 할 것(모든 컷 전에 읽기)references/edges-and-pauses.md: 각 타이밍 숫자가 그런 이유references/checks.md: 확인 읽기, 전사 잡음, 각 문제 유형 수정references/lessons.md: 실제 실수, 원인 및 수정references/formats.md: 형식별 일시 중지 스타일 및 특이점, 시끄러운 오디오, 여러 화자, 다른 언어references/speaker-profile-template.md: 화자별 프로필assets/config.example.json,assets/profiles/example-solo-youtube-host.md