반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

가끔 보자, 하늘.

Audiocraft (사운드 생성 AI) 사용하기 본문

개발 이야기/개발툴 및 기타 이야기

Audiocraft (사운드 생성 AI) 사용하기

가온아 2023. 8. 25. 15:35

얼마 전 Meta에서 Audiocraft를 공개했습니다.

더보기

Audiocraft는 딥러닝을 통한 오디오 처리 및 생성을 위한 라이브러리입니다. 이 라이브러리에는 텍스트 및 멜로디 컨디셔닝 기능을 갖춘 간단하고 제어 가능한 음악 생성 LM인 MusicGen과 함께 최첨단 EnCodec audio compressor, tokenizer가 탑재되어 있습니다.

샘플 사운드 제작할 때 좋을 듯 해서 사내에 설치해 보았습니다.

SD WEBUI처럼 Audiocraft를 fork해 제작된 Audiocraft_plus 를 사용해 손쉽게 설치/사용 할 수 있습니다. (Audiocraft_plus는 아직 초기 단계로 Audiocraft가 지원하는 기능 중 일부만 지원하는 프로젝트입니다.)

우선 해당 github page를 참고해 기본 코드를 설치하세요. (Python은 이미 설치되어 있다고 가정하겠습니다.) ffmpeg을 미리 다운로드 페이지에서 다운받아 설치하세요. 압축을 풀면 bin 폴더에 exe 파일 세 개가 있습니다. 이 경로를 환경변수에 등록해도 되지만 저는 그냥 audiocraft_plus 폴더에 넣고 실행했습니다.(path 설정 귀차나... -_-a)

정상적인 실행을 위해 12GB 이상의 VRAM을 가진 그래픽 카드와 CUDA, torch, transformer 등의 라이브러리를 설치해야 합니다. (WEB UI 설치와 유사하여 여기에 상세한 언급은 하지 않습니다. 설치 혹은 실행에 문제가 있다면 이 글의 댓글 혹은 https://github.com/GrandaddyShmax/audiocraft_plus/issues 에 문의를 등록해 주세요.)

모든 설치가 정상적으로 되었다면 아래와 같이 실행할 수 있습니다.

python app.py  # localhost에 7860 포트로 오픈
   or
python app.py --server_port 7877 --listen 0.0.0.0 # 7877로 포트 변경, public open 예시

정상적으로 실행되었다면 아래와 같은 화면을 볼 수 있습니다.

  1. 메인 탭
    1. MusicGen - 음악을 생성하는 탭입니다. 
    2. AudioGen - 이펙트를 생성하는 탭입니다.
    3. Audio Info - 생성된 사운드의 정보를 확인할 수 있습니다.
  2. 서브탭은 사운드 생성에 대한 상세 값을 설정할 수 있습니다. 여기서는 생성에 필수적인 내용만 아래에서 다루도록 하겠습니다.
  3. 어떤 사운드를 생성할지를 서술하는 Prompt 를 입력하면 됩니다.
  4. Duraion과 Overlap은 사운드의 길이를 결정합니다. Duraion은 각 프롬프트의 음악을 길이를 설정하며, (음악을 잘 모르겠지만 원문 그대로 해석하자면...) Overlap을 10s로 지정하면 첫 프롬프트는 30s이며 다음 프롬프트부터는 10s overlap이 있으므로 20s가 됩니다.(프롬프트 세그먼트는 최대 10개까지 가능하며,  한 프롬프트 당 음악의 길이는 최대 30s 입니다.)
  5. 생성된 음악을 들을 수 있습니다. 내려받기 버튼을 누르면 위는 mp4로 제작된 영상이 다운되며 아래는 오디오만 저장된 mp3 파일로 다운로드 됩니다.
  6. webui 에서 이미지를 생성할 때 발급되는 값과 동일한 역학을 하는 생성된 음악의 seed값입니다.
  7. 여기에 기존에 생성했던 음악의 seed값을 입력하고 생성하면 유사한 결과물을 얻을 수 있습니다.
  8. 설정값을 기준으로 음악을 생성합니다. 
  9. 생성 과정을 강제로 중단할 수 있습니다. 

상세 탭에 대해서는 예제를 다루면서 필요할 때 다루겠습니다. 

MusicGen 탭에서 BGM 생성하기

해변가에서 잔잔하게 들을만한 음악을 만들어 보겠습니다.

우선 Settings 탭에서 음질, 생성 모델 등을 설정합니다. 이 예제에선 strereo와 48000 sample rate, 그리고 모델은 large (약 6G, 첫 실행 시 모델을 다운로드 합니다.)를 선택하겠습니다.

Generation 탭에서 "Structure Prompts"를 열어 "Enable"을 체크, 잔잔한 탬포를 위해 BPM을 40으로 설정합니다.

Prompts는 1개만, Input Text에는 "Make a calm and lyrical guitar music good to listen on the beach at sunset."를 입력합니다.

이제 "Generate" 버튼을 눌러 생성한 사운드를 들어보세요. 

AudioGen 탭에서 효과음 생성하기

Input Text 에 "a gun shooting sound"를 입력, Duration에 2를 입력 후 생성합니다. 

지금까지 프롬프트만으로 사운드를 생성하는 과정을 살펴봤습니다.

이번에는 기존 사운드를 참고해 생성하는 과정을 살펴보겠습니다. 처음에는 MusicGen -> Audio 탭을 활용하는 줄 알았는데 아니더군요. 

 

좌측 화면에 보이는 Input Audio에 샘플 사운드 파일을 넣고 생성했더니 입력한 그 파일 그대로 출력되서 의아해했습니다. 

왜 있는거지 -_-a 

등록된 document를 살펴봐도 용도를 못찾겠네요. 혹시 아시는 분 있으면 댓글 부탁드립니다.

다른 방법이 있나 찾다가 그냥 demos 에 있는 기능을 사용하기로 했습니다. -0-a

 

 

 

아래와 같이 Audiocraft 에서 제공하는 데모 코드를 실행하세요.

python demos/musicgen_app.py # 7860 기본 포트로 오픈

   or 
   
python demos/musicgen_app.py --server_port 7880 # 포트 변경해서 오픈하기. 위처럼 --listen 으로 오픈도 가능합니다.

그럼 아래와 같은 화면이 출력됩니다.

(1)에 어떤 음악을 만들고 싶은지 입력하세요. 여기서는 비교를 위해 위와 같은 프롬프트 "Make a calm and lyrical guitar music good to listen on the beach at sunset." 를 입력하겠습니다. 

(2)에 샘플 사운드를 등록해 보세요. 없으신 분은 이 샘플 사운드(출처 : https://www.youtube.com/watch?v=RToxTn-Z_jg, 뚱치땅치 님 연주, 요즘은 작업하면서 하루 종일 뚱치땅치님 연주를 듣고 있네요. ^^)를 등록해 테스트 해보시기 바랍니다.

이제 생성을 해보면 등록된 연주 스타일을 참고해 결과물을 만들어 냅니다. (하지만 ...영 엉뚱한 결과물을 만들어내기도 합니다. ^^a)

이 외에도 학습 시키기 , API 사용 하기 등의 여러 기능을 지원합니다. 저도 사용하면서 재미있는 내용이 있으면 또 공유하겠습니다. 

재밌는 하루하루 되시길... :)

반응형