본문 바로가기

Programming

Cursor를 이용한 음악 생성 프로그램 (왕초보 비개발자도 가능할 수준)

 

 

요새 보면 mubert 같은 ai 서비스를 이용해서 prompt를 이용한 음원을 만드는 것을 쉽게 볼 수 있다.

 

하지만 웹 기반으로 만들기 편한 반면 비용은 사실 좀 신경이 쓰이긴 한다.

 

Lofi Youtube를 운영하며 어려웠던 부분들을 나열해보고 해결하기 위한 노력을 기록해본다.

 

Lofi Youtube 운영할때 가장 어려웠던 부분

1. 음원 수급의 문제

음원 수급을 epidemic sound에서 제공을 받아서 운영했었다. 하지만, 1시간 내지 2시간 음원 플레이를 하는데

기존 플레이리스트를 리스트화해서 랜덤으로 뽑아서 추출하다보니 가장 큰 문제는 곡이 겹치는 사례가 의외로 꽤 있었다.

500곡 내외를 가지고 자동생성을 돌렸는데도 불구하고 어울리는 BPM 구성을 맞추면 생각보다 매치되는 곡이 몇곡 되지 않는다. 그래서 곡이 겹치는 문제가 생각보다 많았다.

그리고 분석 프로그램의 문제긴 하지만, lo-fi의 음원들은 앞에 intro가 길거나 이상한 음(?)이 많아서 제대로된 bpm을

인식하지 못하는 문제도 한 몫했다. 그래서 일일이 수정하는 문제들도 빈번했다. 제대로된 bpm을 분석하기 위해

serato dj나 rekordbox (DJ Tool)까지도 활용해 보았으나... 역시 lo-fi는 제대로 되지 않았다.

 

2. Premier Pro 자동화 불가

정확하게 안되는 건 아닌거 같았다. xml형태로 파일을 만들어서 프로젝트에 삽입하려고 했는데 그게 되지 않아서

내가 직접 음원을 붙여 놓고 export를 해야 했다. (다행히 자동화 프로그램으로 자막 srt랑 timeline까진 뽑게 할 수 있었다.)

결국 PC에서 수동으로 해야 하므로 적정한 방법이 아니란 것을 알았다.

 

3. 구독자 수급 불가

주로 음원은 밤에 업로드 하고 있었지만, 검색이 낮고 담백한 컨텐츠기 때문에 도파민 중독에 살고 있는 우리 사회에선

어울리지 않는 컨텐츠 (더 정확히 얘기하면 레드오션이 아닐까)라 생각이 들었다.

3주간 운영해봤는데 구독자가 10명이었다가 9명으로 줄었다.

 

해결과제

1. 나의 흥미 유지

2. 장르 선정

3. 음원생성 자동화

4. 동영상 생성 자동화

5. 유튜브 업로드 자동화

 

정확히 얘기하면, 이젠 lo-fi 뿐만이 아닌 내가 원하는대로 만드는 음원을 생성하는 것이다.

 

이 부분을 해결하기 위해 이번엔 ChatGPT가 아닌, Cursor를 이용해서 코딩해보기로 했다.

 

머신러닝에는 파이선이 제격인지라 별다른 고민없이 python으로 언어를 선택했다.

 

장비 스펙은 아래와 같다.

OS : Windows 10

Graphic : RTX3060

Programming Language : Python 3.11

Programming Tool : Cursor

 

이 사양으로 작업을 이어갈 예정이다.

 

거의 비개발 수준으로 가이드를 진행할 예정이다.

코딩은 개발언어를 잘 이해하고 쓰는 것보단, 프로그래밍 순서를 얼마나 정확하게 나열하느냐 부터가 더 중요하다고 생각한다.

내가 프로그램을 아무리 잘 짜도 순서가 틀어져 있으면 다시 돌리고 조정하는 과정에서 꽤 많은 시간과 노력이 소모되기 때문이다.

 

내가 기존에 만들어봤던 유튜브 쇼츠 자동 업로드 프로그램도 아래와 같은 방식으로 되어 있다.

 

1. 주제 / 내용을 구글폼으로 받기

2. doGet으로 api gateway -> lambda로 전송

3. bedrock API를 이용해서 쇼츠 스크립트와 쇼츠용 세로 이미지 5장 출력

4. polly로 TTS 생성

5. json2video를 이용해 영상으로 추출

6. json2video로 나온 영상 youtube로 업로드

 

이런 순서로 하고 있었는데, 저걸 단순화 하면 다음과 같다.

1. 내가 생각날때 구글폼으로 쇼츠 올리고 싶은 주제와 내용을 저장.

2. 구글폼에서 들어온 데이터가 chatgpt를 통해서 대본과 이미지를 생성

3. 대본을 tts로 생성

4. youtube 업로드용 비디오 생성

5. youtube 업로드

 

만일 여기에 기능을 더 추가한다면 검수 대기 기능(혹시 이상한 내용이 올라갈지 모르므로 사전 검열 추가)정도가 아닐까 한다.

 

다시 생성 프로그램으로 넘어가자. 

 

Cursor 설치 : https://www.cursor.com/ 사이트에서 다운로드

https://www.cursor.com/pricing 사이트에 보면 가격 정책이 나와 있다.

Cursor에서 사용가능한 AI 모델은 아래와 같다.

비용은 아래와 같다.

 

2주간 프로 수준의 API 사용이 가능하다.

난 아직 트라이얼 상태이므로 유료 모드로 사용중에 있다.

 

그래픽 카드는 각자 사용하는 사양에 따라 다르므로 prompt상에서 별도로 요청해주어야 한다.

 

Python 설치는 난 여기서 받았다.

https://www.python.org/downloads/release/python-3110/

 

Python Release Python 3.11.0

The official home of the Python Programming Language

www.python.org

각 OS별로 설치 방법이 다르므로 이 부분을 염두하여 설치하면 된다.

 

다 하고 Cursor를 켜보자.

프로젝트를 지정하고 VS Code Plugin을 설치한다.

 

여기선 Git에 대한 부분은 언급하지 않는다. 로컬에서 프로그램이 돌아가는 것이 더 중요하기 때문에 관리 방법에 대해선

필요할 경우 별도로 생성할 예정.

 

프로그램이 켜지면 우상단에 이런 아이콘들이 보일 것이다.

왼쪽은 사이드바, 아래는 터미널, 오른쪽은 Chat화면이다.

이제 오른쪽을 열어 프롬프트를 해보자.

코딩이 나오고 있다.

하지만, 여기선 mubert api를 이용해 호출하도록 지시하고 있다. 하지만 난 mubert를 이용하지 않을 것이다.

사실 mubert를 사용해봤지만, 만족한 음원이 아니라 youtube에 쓰기는 어려운 음원이었기 때문이다.

프롬프트에 내가 가진 그래픽 카드의 사양을 기재했다.

그랬더니 어울리는 라이브러리와 함꼐 코딩이 변경되었다.

코딩영역에 마우스를 올리면 자연스럽게 추가 기능이 오픈된다.

지금은 만들어진 파일이 없으므로 main.py에 생성해서 넣어야 한다.

Apply 후 Create new file을 선택하면 자동으로 원하는 곳에 파일 생성 후 코드를 부어준다.

녹색 영역은 추가될 영역, 빨간 영역은 삭제될 영역이다. 여기서 코드를 확인하여 문제가 없어 보이면 Ctrl + Enter를 누르면

자동으로 AI에서 추천한대로 변경된다. (이게 만능은 아니다)

 

파이선은 라이브러리도 추가로 설치해야 되므로 library도 설치할 수 있는 코드를 준다.

requirements.txt로 만들어서 설치하면 될거 같다.

 

환경 설정도 만들어야 한다.

 

설치하다보면 오류도 나온다. 이럴땐?

터미널 화면에 커서를 올려보면 바로 Chat으로 보낼 수 있다.

올려놓고 그대로 엔터를 치면?

이런 식으로 다시 오류를 잡아서 추천해준다.

 

돌려보자!

30초 음원을 생성하는데 시간이 좀 걸리긴 하지만, 나쁘진 않다.

lo-fi로 생성했을땐 음이 깨지고 하는 경우가 좀 있었는데, 일단 Cursor가 추천한 edm음악을 보면 아래와 같다.

https://drive.google.com/file/d/1alVNtGxrR8_rbeLjArnVnS5tc1OwfuRu/view?usp=sharing

 

edm_track_20241126_161705.wav

 

drive.google.com

edm 150 bpm의 음원이다. edm으로 들었을땐 뭐 쏘쏘하지만, 꽤 단조롭기 때문에 prompt 변경은 반드시 필요할 것이다.

 

프롬프트는 영어로 써야, 모델에서 제대로 된 것으로 줄 것이다. 만일 애매하면 한글 프롬프트를 google translate API 또는 bedrock, chatgpt 등 여러 AI를 이용해서 prompt를 가공하면 될 것 같다.

 

이 부분을 수정한다.

결과는 이렇게 나왔다.

https://drive.google.com/file/d/1CWDtbfxvMELScxvpIvcJ7X0540KflUBQ/view?usp=sharing

 

lofi_track_lo-fi_75bpm_20241126_171621.wav

 

drive.google.com

 

뭔가 음산하고 어지러운 느낌이라서 프롬프트를 더 가공해야 할 것 같다.

아니면 audiocraft 라이브러리를 연구하거나, 다른 음원 생성 라이브러리를 활용하는 부분도 가능할 것 같다.

그게 번거로우면 변수를 수정하는 방법도 있다.

 

만일 어떻게 수정해야 할지 헷갈린다면?

 

물론 이 세팅을 믿을 수  있는 건 아니다.

사용자가 적절히 요구사항에 따라 달라진다.

 

영상 편은 다음편에 담아볼 예정이다.

ffmpeg에 내가 기존에 생성한 mp4 4초짜리 영상을 무한으로 붙여서 밑에 오디오를 깔고 끝까지 가는 방식으로 만들것이다.

 

유튜브 자동 업로드는 동영상 크기가 문제지 생각보다 엄청난 문제는 아닐거 같다.

 

어차피 난 ableton에 별도로 믹스를 하거나 dj 장비 (numark nv)를 이용해 플레이할 수도 있기 때문이다.

 

모두들 한번 돌려보면 좋을 것 같다.