일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ssh
- logstash
- mariadb
- JavaScript
- 유니티
- 설정
- Windows
- 엘라스틱서치
- Python
- Ai
- docker
- JS
- s3
- MySQL
- 영어
- nodejs
- unity
- elasticsearch
- ChatGPT
- Kibana
- build
- Linux
- AWS
- 구글
- MSSQL
- Es
- sample
- API
- error
- Today
- Total
가끔 보자, 하늘.
Audiocraft (사운드 생성 AI) 사용하기 본문
얼마 전 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 예시
정상적으로 실행되었다면 아래와 같은 화면을 볼 수 있습니다.
- 메인 탭
- MusicGen - 음악을 생성하는 탭입니다.
- AudioGen - 이펙트를 생성하는 탭입니다.
- Audio Info - 생성된 사운드의 정보를 확인할 수 있습니다.
- 서브탭은 사운드 생성에 대한 상세 값을 설정할 수 있습니다. 여기서는 생성에 필수적인 내용만 아래에서 다루도록 하겠습니다.
- 어떤 사운드를 생성할지를 서술하는 Prompt 를 입력하면 됩니다.
- Duraion과 Overlap은 사운드의 길이를 결정합니다. Duraion은 각 프롬프트의 음악을 길이를 설정하며, (음악을 잘 모르겠지만 원문 그대로 해석하자면...) Overlap을 10s로 지정하면 첫 프롬프트는 30s이며 다음 프롬프트부터는 10s overlap이 있으므로 20s가 됩니다.(프롬프트 세그먼트는 최대 10개까지 가능하며, 한 프롬프트 당 음악의 길이는 최대 30s 입니다.)
- 생성된 음악을 들을 수 있습니다. 내려받기 버튼을 누르면 위는 mp4로 제작된 영상이 다운되며 아래는 오디오만 저장된 mp3 파일로 다운로드 됩니다.
- webui 에서 이미지를 생성할 때 발급되는 값과 동일한 역학을 하는 생성된 음악의 seed값입니다.
- 여기에 기존에 생성했던 음악의 seed값을 입력하고 생성하면 유사한 결과물을 얻을 수 있습니다.
- 설정값을 기준으로 음악을 생성합니다.
- 생성 과정을 강제로 중단할 수 있습니다.
상세 탭에 대해서는 예제를 다루면서 필요할 때 다루겠습니다.
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 사용 하기 등의 여러 기능을 지원합니다. 저도 사용하면서 재미있는 내용이 있으면 또 공유하겠습니다.
재밌는 하루하루 되시길... :)
'개발 이야기 > 개발툴 및 기타 이야기' 카테고리의 다른 글
ChatGPT로 스토리보드 만들기 (1) | 2023.11.08 |
---|---|
Github Copilot Chat 활성화 (0) | 2023.09.26 |
windows 11 linux docker에서 gpu 사용할 수 있는 개발환경 만들기 (0) | 2023.08.10 |
Stable diffusion을 업무에 활용하기 #4 캐릭터 전용 학습 툴 제작기 (0) | 2023.08.03 |
GroundingDINO 설치 썰! (1) | 2023.06.29 |