전편은 여기를 참고
Python를 이용해서 lofi youtube를 자동으로 생성해보자. (1)
https://www.youtube.com/@OfficeLofiatNight Office Lofi at Night이 채널은 개발자, 디자이너, 크리에이터 등 누구나 코딩, 공부, 작업에 몰입할 수 있도록 만들어졌습니다. 로파이 재즈, 힙합, 재즈합 등 편안한
blog.drumgoon.net
현재는 업로드를 중지했다.
1편에서 언급하지 않은 것들 중 여러가지 문제가 있었는데 그 부분을 나열해가면서 핑계 겸 회고를 해본다.
1. 영상의 알맹이, 음원은 무엇이 문제인가
- epidemic sound의 맘에 드는 곡을 일일이 수동으로 하나하나 다운 받아가며 생성해야 하기 때문에 물리적인 시간이 소모된다.
- premier pro에 plug-in이 있다고는 하는데 복잡해 보여서 실제 연동하지 못했다. 만일 premier가 아니라면 일일이 수동 다운해야 한다.
- 자동화로 다운로드 받는 스크립트를 구현해보려 했으나 selenium으로 가져 오기 위한 태그값들이 뭔가 이상하게 분리가 안되어서 계속 시도하다 실패를 했다. (ChatGPT 너...)
- haejang님의 블로그 내용을 보니 selenium으로 처리하셨다고 하셨다. (https://honglab.tistory.com/352/#comment20033430)
- 같은 장르의 비슷한 곡을 이용해 자동생성시 곡이 중복되는 경우가 많았다.
- 일부러 코드상에서 중복을 피하기 위한 로직도 적용했는데 중복을 피하면 곡이 모자라고, 그걸 좀 느슨하게 풀자니 곡이 지속적으로 중복되었다.
- 대략 180곡 가량의 main source를 가지고 했는데, 내가 선택한 장르는 lofi 였기 때문에 해당 장르의 특성상 lofi, lofi-hiphop, ballad등 고를 수 있는 곡이 많지 않았고, 차분하지만 bpm은 80 ~ 100까지 걸어야 했다. 그래서 곡 소스가 부족한 부분이 있었다.
2. 음원 퀄리티만이 아닌 다른 문제
- 나는 최초엔 자동 mixing 까지 고려하고 있었다.
자동 mixing이 되려면 먼저 각 음원의 시작 조, bpm, 곡의 실제 시작 포인트까지 알아야 한다. 그래야 8bar던 16bar던 오토 믹싱을 할 수 있는 포인트를 알 수가 있고 곡을 합칠 수 있는데 python의 pip library상에는 존재하지 않는 것 같았다.
- librosa, music21에서 분석을 돌린것과 epidemicsound에서 알려주는 bpm이 다르다.
그것은 어쩌면 당연할 것이다. edm처럼 같은 비트가 끝까지 이어지는 것이 아닌 처음엔 완전 조용하다가 좀 있으면 시작하므로 음원의 bpm 추출을 위한 참고 포인트를 모르는 것이다.
그래서 나는 항상 bpm, 조성을 파악하기 위해 쓰는 프로그램이 있다. DJ용 자동 음원 분석 및 믹싱 소프트웨어다. (rekordbox: https://rekordbox.com/en/)
- 믹싱을 하면서 의도는 플레이리스트의 bpm이 너무 튀지 않게 하려고 노력했다.
그러다보니 리스트 추출시 bpm이 점점 올라가는 구조로 배열하기 시작했다. 그러다 보니 librosa에서 생성된 bpm이 제대로 매칭이 안되어 이상한 곡이 껴 들어가는 현상이 있었다. 재배열 자체는 생각보다 복잡했다. csv 내용까지 변경해야 했으므로 어렵다기 보단 번거로운 부분이 더 많았던거 같다.
사실 곡 순서는 빠른 거에서 느린 것으로 가는 게 더 맞기도 한거 같다...
- 저작권의 공포
에피데믹 사운드에선 구독 후 link된 youtube 계정의 사운드에 대해선 저작권을 걸지 않는다고 들었다.
그런데 가끔 특정곡이 필터링 되서 잡히는 곡이 있었다. 물론 영상에 제약이 있진 않았고 사용 허가 되었다고 필터링이 풀리긴 했지만 어찌되었던 남이 만든 곡을 쓰는데는 일부 제약이 있다는 사실에는 의심에 여지가 없다.
- 역시 AI 작곡이 대안일까?
인터넷에 보면 python 작곡 관련 프로그램 코드가 많다. midi를 기반으로 추출하는 기능이 대표적이며, 사용도 해봤었다. 보시는 분들도 대부분 아시겠지만 플레이까지 하려면 결국 soundfont들이 필요하며 한 가지의 악기만 필요한 것도 아니다. 또한 midi의 velocity (volume) 조절도 별도로 되지 않아서 볼륨 변화나 파형 변화에 민감한 lofi들에게는 쥐약이다.
기본적으로 youtube의 걸만한 노래를 만들려면 drum, bass, synth, melody 악기등 여러 트랙이 필요하며 midi를 생성하여 sf2로 음원을 뽑아내는 것과 별개로 음원 품질이 준수한 sf2 파일도 찾아야 한다. 또한 일일이 midi는 잘들어 왔는지 살짝씩 밀려서 퀀타이즈 (박자 정렬)이 필요하지 않은지를 일일이 다 점검하려면 자동생성보다 더 많은 작업이 필요하다.
최근 사용해 본 것 중 suno ai (https://suno.com/)에서 테스트로 몇곡 만들어봤는데 나쁘진 않았다. 알고 있기론 AI 작곡했어도 사용권을 인정받아서 유튜브에 올려도 문제가 되진 않을 것으로 기대하곤 있지만, 기본적으로 credit 가격의 문제로 인해 1시간 또는 2시간 플레이리스트를 1일 1편씩 생성해 내는 것은 무리가 있을 것이다.
mubert(https://mubert.com/ko/render)도 사용해봤었는데 lofi에서 들리는 synth나 ambient 사운드가 좀 찢어지는 소리가 많이 나서 lofi용으로는 부적합하다는게 내 생각이었다 (프롬프트 실력이 부족했을지도??)
python에서 musicgen(https://github.com/facebookresearch/audiocraft/blob/main/docs/MUSICGEN.md)을 이용하여 생성해보기도 했는데 prompt를 열심히 해봤지만 원하는 품질의 음원이 나오지 않았다. 30초 음원을 생성하는데 특정구간이 빈다던지, 찢어지는 소리가 난다던지 하는 하자 문제가 굉장히 컷기 때문에 잠시 써보고 다신 쓰지 않았다.
- 그럼 진짜는 어떻게 만들죠?
현재 가장 좋은 것은 suno ai를 이용하여 각 3 ~ 5분의 곡을 대략 500 ~ 1000곡까지 깔아놓고 자동으로 돌리는 것이 가장 좋아보인다. 또한 장르 제한도 좀 풀어야 한다. lofi뿐만이 아닌 jazz, hiphop 요소까지 포함한다.
물론 80 ~ 100bpm까지 내려가면 lofi-jazz, lofi-hiphop 카테고리에 걸리기도 한다.
영상을 위한 제목, 내용, SEO 태그까지 전부 처리가 가능하지만, 자동 업로드는 아직은 좀 위험하다. premier pro에 srt파일을 올려도 일부 자막이 밀리는 현상이 있어서 어긋나보이는 현상이 자주 발견되기 때문이다.
- 결론
진행하려고 했으나 마무리를 하지 못해서 아쉬웠다. 완전 자동화를 하기 위해선 아직 툴의 지원이나 멱등성을 보장하는 해결책을 못 본 것 같다. 심지어 자동 업로드용 API가 구글에 존재하지만, 앞단에서 이미 수동으로 손을 많이 타고 있기 때문에 앞의 수동을 잡지 않으면 좀 어려운거 같다.
최종적으로 만들고 싶은 이런거다.
https://youdj.online/ 이건 기존 노래를 가지고 하는 거지만, AI로 생성된 곡까지 포함해서 제대로 된 믹싱 포인트까지 자동으로 탐지하여 넘어가게 해주는 것이다. 하지만 이 사이트도 아직 그것까진 쉽지 않은 것 같다.
'Music' 카테고리의 다른 글
30분만에 Lofi Youtuber 되는 방법 (프로그램 설치, 움짤 생성, 음원 확보, 유튜브 송출까지) (0) | 2025.03.07 |
---|