ytpiano2sheet은(는) 무엇을 하나요?
ytpiano2sheet.py(이 파일과 같은 폴더에 있음)는 피아노 튜토리얼 영상의 떨어지는 막대를 읽습니다. 이 막대는 피아니스트의 실제 MIDI로부터 그려지기 때문에 오디오를 전사하는 것보다 훨씬 정확합니다. 두 개의 테스트 영상에서 990개 중 989개 음표가 수동 검증 전사와 일치했고, 947개 키 누름 중 947개가 독립적인 판독과 일치했습니다. 키보드 위로 막대가 떨어지거나 올라오는 영상에서만 작동합니다.
전사 결과는 사용자의 개인 연습용입니다. 음악은 해당 작곡가, 편곡가 및 영상 제작자에게 저작권이 있습니다. 사용자를 대신하여 출력물을 업로드, 게시 또는 공유하지 마십시오. 사용자가 요청할 경우 README의 "개인 사용 및 법적 고지" 섹션을 안내해 주십시오.
모든 명령은 uv run <이 폴더>/ytpiano2sheet.py ...로 실행하십시오. uv가 Python 의존성을 자동으로 설치합니다. 아래에서 $BS는 이 폴더의 절대 경로를 의미합니다.
1. 먼저 묻기
사용자가 링크나 동영상 파일을 제공하지 않았다면, 일반 텍스트로 요청하십시오.
그런 다음 두 질문을 한 번의 AskUserQuestion 호출로 묻습니다(사용자가 이미 답변한 질문은 건너뜁니다):
- "어떤 출력물을 원하시나요?" (multiSelect: true)
- "PDF 악보" (형식
pdf) - "MIDI 파일" (형식
mid) - "듣기용 오디오 (m4a)" (형식
m4a) - "MusicXML + MuseScore 파일" (형식
musicxml,mscz- 악보 편집용) "기타"로wav또는review(감지된 음표가 표시된 막대 이미지)를 지정할 수 있습니다.
- "PDF 악보" (형식
- "어떤 키보드로 연주하시나요?"
- "88키, 풀 피아노 (권장)" (
88) - "76키" (
76) - "61키" (
61) - "49키" (
49) "기타"로 다른 크기(73, 37, 32, 25) 또는C2-C7과 같은 범위를 지정할 수 있습니다(가온 도는 C4). 키보드 밖의 음표는 한 옥타브 단위로 이동하므로 화성은 유지됩니다.
- "88키, 풀 피아노 (권장)" (
2. 사전 요구사항
uv --version. uv가 없으면 설치 전에 묻습니다(brew install uv, 또는curl -LsSf https://astral.sh/uv/install.sh | sh).uv run $BS/ytpiano2sheet.py --check --formats <형식들>. 누락된 항목(MuseScore는 pdf/mscz, fluidsynth와 사운드폰트는 오디오, ffmpeg는 m4a)과 각각을 설치하는 명령어를 나열합니다.- 무언가 누락된 경우, 각 항목과 설치 명령어를 명시하여(예: "brew install --cask musescore", "32 MB 사운드폰트를 ~/.cache/ytpiano2sheet에 다운로드") AskUserQuestion으로 설치 여부를 묻습니다. 사용자가 동의하면 3단계 실행에
--install을 추가합니다. 설치에 sudo가 필요한 경우(Linux의 apt-get), 사용자에게!접두사를 붙여 직접 실행하도록 요청하고 다시 확인합니다. 사용자가 거부하면 누락된 도구가 필요한 형식을 제외하고 어떤 형식을 제외했는지 알립니다.
3. 실행
uv run $BS/ytpiano2sheet.py "<링크 또는 파일>" -f <형식들>,review -k <키보드> -o <출력 폴더> [--install]
- 사용자가 요청하지 않았더라도 항상
review를 추가하십시오: 4단계에 이미지가 필요합니다. 사용자가 요청하지 않은 경우 이후에review폴더는 삭제하십시오. - 기본 출력 폴더: 사용자가 별도로 지정하지 않으면 사용자 현재 프로젝트의
out/폴더. 각 곡은 영상 제목을 딴 폴더 안에 생성됩니다:out/<곡>/<곡>.pdf등,out/<곡>/review/, 작은 키보드의 경우<곡> (61 keys).*. - 2-3분 영상 기준 약 1분 소요(다운로드 포함). 로그는 찾은 키보드, 막대 속도, 음표 개수, 악보의 추정 조표와 박자를 보고합니다.
- 선택적 플래그:
--meter 3또는--meter 4,--key D/--key d(D단조)는 악보의 추정을 재정의합니다. 악보는 오직 3/4 또는 4/4만 추정합니다. 복합 박자(쇼팽 야상곡 Op. 9 No. 2의 12/8, 뱃노래 6/8)나 4/4 곡의 셋잇단음표(월광 소나타)가 너무 많은 3/4 마디로 표시될 경우--meter 12/8,6/8또는9/8를 전달하십시오. 영상 키보드가 비정상적인 건에서 잘린 경우--lowest C2(로그에서 추정해야 했을 때 경고). 인트로나 엔드 화면이 리뷰 이미지에서 음표로 나타날 경우--start/--end(초). 일부 막대(특히 어두운 막대)에 박스가 없을 경우--threshold N(로그에 기록된 임계값보다 낮게).
"키보드 위로 움직이는 막대를 찾을 수 없습니다" 메시지와 함께 중단되면 영상에 떨어지는 막대가 없는 것입니다(예: 촬영된 피아노). 이 도구로 읽을 수 없다고 사용자에게 알리십시오.
4. 보고 전 확인
Read 도구로 리뷰 이미지 몇 장을 열어보십시오: 첫 번째, 중간쯤, 마지막, 그리고 밀도가 높아 보이는 이미지. 모든 밝은 막대에 음표 이름이 적힌 박스가 있어야 하고, 빈 공간에 박스가 있으면 안 됩니다. 또한 다음을 확인하십시오:
- 로그의 키보드 라인이 88키 A0-C8 또는 적절한 작은 범위를 가리키는지;
- 악보의 조표가 음악과 일치하는지(로그 라인
sheet: key ...); - PDF의 경우 1페이지가 피아노 악보처럼 보이는지. macOS에서
sips -s format png <pdf> --out page1.png또는 MuseScore-o page1.png로 변환하여 확인하십시오.
막대가 누락되었거나 잘못된 경우, 숨기지 말고 타임스탬프와 함께 말하십시오. 먼저 플래그를 시도해 보십시오: 악보의 박자나 조표만 잘못된 경우 --meter 또는 --key(MIDI는 변경되지 않음), 로그의 키보드 범위가 잘못된 경우 --lowest.
판독기 자체가 잘못되었고 어떤 플래그도 도움이 되지 않는다면, 자동으로 스크립트를 편집하지 마십시오. 한 영상을 고치는 수정이 다른 영상을 망가뜨릴 수 있으며, 잘못된 결과는 여전히 그럴듯한 악보처럼 보입니다. 무엇이 잘못 보이고 그 이유를 설명한 후, AskUserQuestion으로 로컬 복사본을 패치할지 묻습니다. 사용자가 동의하면:
- 편집 전에 변경할 각 스크립트를 곡 폴더에 복사하십시오(
ytpiano2sheet.py.orig,sheet.py.orig). - 원인을 해결하는 가장 작은 변경을 하고, 재실행한 후 위의 확인을 다시 수행하십시오. 그런 다음
uv run $BS/test_ytpiano2sheet.py를 실행하십시오. 실패하면 원본을 복원하십시오. - 곡 폴더에
bug-report.md를 작성하십시오: 영상 링크, 잘못된 타임스탬프, 관련 로그 라인, 각 변경사항에 대한diff -u(원본 대비). 작성자가 참조 영상에 대해 수정을 테스트하고 모두에게 배포할 수 있도록 합니다. - AskUserQuestion으로 해당 보고서를 업스트림에 이슈로 등록할지 묻습니다. 동의한 경우에만, 그리고
gh가 설치되어 로그인된 경우에만:gh issue create --repo <$BS의 git remote get-url origin에서 추출한 소유자/이름> --title "<실패한 영상 스타일에 대한 짧은 설명>" --body-file <곡 폴더>/bug-report.md, 그런 다음 사용자에게 이슈 링크를 알려줍니다.gh가 없거나 $BS가 git 클론이 아닌 경우, 사용자가 직접 게시할 수 있도록bug-report.md의 위치를 알려줍니다.
5. 보고
작성된 파일, 음표 개수, 사용된 조표와 박자, 키보드 접기에 의해 이동된 음표(로그 라인 keyboard ...: N notes moved), 그리고 4단계에서 이상했던 사항을 나열하십시오. 스크립트가 패치된 경우 명확히 말하고 bug-report.md를 가리키십시오. 간결하게 유지하십시오.