AI 탐구노트

AudioCraft를 이용한 효과음 만들어 보기 본문

DIY 테스트

AudioCraft를 이용한 효과음 만들어 보기

42morrow 2024. 10. 9. 17:03

배경사진 :  Unsplash 의 Adrien Olichon

 

 

이번에는 AudioCraft를 이용해서 효과음을 생성해 보려고 합니다.

목표로 하는 것은 카운트다운에 사용될 초시계의 효과음을 만들어 보는 것입니다. 

 

지난 번에 퀴즈 때문에 다운받은 것이 있긴 한데...

마음에 드는 것은 다 유료 라이선스이고, 대충 기계음을 이용하니 영 듣기 거슬리고...

고민하던 중에 AI로 만들기로 했습니다.

지금은 DIY 시대니까요. ^^

 

 

모델 및 도구 선택

 

제가 사용할 것은 Meta에서 공개한 AudioCraft라는 도구입니다.

해당 모델은 이전에 소개글로 작성한 바가 있죠.

 

 

AudioCraft : 음악 생성 도구

AudioCraft는 메타에서 발표한 오디오, 음악 생성 도구입니다.  입력된 텍스트를 바탕으로 음악이나 효과음 등을 생성할 수 있죠. 얼마전에도 비슷한 게 발표되지 않았었냐구요? 맞습니다. 메타가

42morrow.tistory.com

 

 

음악, 효과음 등을 생성해주는데 데모 샘플이 아주 훌륭해 보였습니다. 

하지만 위 원본 github repo 상에는 사용자를 위한 GUI 도구가 없습니다

 

그래서, 올인원 웹기반 도구를 만들어서 공개한 audiocraft_plus를 이용하기로 했습니다. 

 

 

GitHub - GrandaddyShmax/audiocraft_plus: Audiocraft is a library for audio processing and generation with deep learning. It feat

Audiocraft is a library for audio processing and generation with deep learning. It features the state-of-the-art EnCodec audio compressor / tokenizer, along with MusicGen, a simple and controllable...

github.com

 

 

 

 

환경 구성

먼저 AudioCraft 동작을 위한 환경 구성을 합니다. 

가상 환경 하에서 작업하실 것과, CUDA 지원 버전의 torch, torchaudio를 이용하실 것을 권장 드립니다. 

# Conda 가상 환경 생성
$ conda create -n audiocraft python=3.11
$ conda activate audiocraft

# Pytorch 설치. 내 경우, CUDA 12.4 환경 활용토록...
# $ pip install torch torchaudio
$ pip3 install torch torchaudio --index-url https://download.pytorch.org/whl/cu124

# audiocraft 관련 패키지 설치
$ pip install -U audiocraft  # stable release
$ pip install -U git+https://git@github.com/GrandaddyShmax/audiocraft_plus#egg=audiocraft

# audiocraft_plus github repo clone 및 추가 필요 패키지 설치
$ git clone https://github.com/GrandaddyShmax/audiocraft_plus
$ cd audiocraft_plus
$ pip install -e .

# ffmpeg apt 패키지 설치 (없다면)
$ sudo apt install ffmpeg

 

 

실행

$ python app.py

 

 

확인

프로그램을 구동하고 브라우저를 통해 아래 URL로 접근하면 AudioCraft_plus의 웹 화면이 표시됩니다. 

크게는 MusicGen, AudioGen, AudioInfo, ChangeLog, About 이렇게 5개의 탭으로 구성되어 있습니다. 

 

  • MusicGen : 음악을 생성합니다.
  • AudioGen : 음향효과를 생성합니다.
  • Audio Info : 생성된 오디오와 관련된 정보를 확인할 수 있습니다.

사진 : MusicGen 탭 화면

 

사진 : AudioGen 탭 화면

 

 

테스트

저는 이 가운데 AudioGen을 통해서 시계가 재깍거리는 3초짜리 음향효과를 만들어 볼 생각입니다. 

 

MusicGen과 AudioGen 둘 다 실행시키면 필요한 모델을 자동으로 다운받게 되어 있습니다.

그나마 AudioGen의 용량이 적네요.

 

MusicGen의 경우, Model을 melody/small/medium/large/custom 이렇게 선택할 수 있습니다.

아무래도 큰 모델의 생성 결과물이 좋습니다. 

 

 

사진 : MusicGen을 이용해 음악을 생성한 예시

 

 

생성된 결과물

 

1.재깍 거리는 시계 소리  (AudioGen 이용 예시)

tick_03.wav
0.28MB

 

2.나뭇잎 사이를 지나가는 바람의 소리 (MusicGen 이용 예시)

music_01.wav
1.83MB

 

 

 

 

참고사항

github에 공개된 코드를 이용해서 실행 중에 아래와 같은 오류가 발생했습니다.

해당 코드 부분을 수정하고 진행했습니다. 

 

 

오류-1. Audio Gen의 구동 중 오류

 

인자값으로 str 대신 PosixPath 타입이 넘어와서 생긴 오류입니다. 

RuntimeError: torchaudio::sox_io_save_audio_file() Expected a value of type 'str' for argument '_0' but instead found type 'PosixPath'.
Position: 0
Value: PosixPath('/tmp/tmpgdbw3vgy.wav')

 

/home/sol/code_ssd/audiocraft_plus/audiocraft/data/audio.py의 210번 라인

# ta.save(path, wav, sample_rate, **kwargs)
ta.save(str(path), wav, sample_rate, **kwargs)

 

 

오류-2.Music Gen 구동 중 오류

 

custom_model 설정값이 None인 경우 발생합니다. 

File "/home/sol/code_ssd/audiocraft_plus/app.py", line 826, in predict_full custom_model = "models/" + custom_model ~~~~~~~~~~^~~~~~~~~~~~~~ TypeError: can only concatenate str (not "NoneType") to str

 

app.py의 826번 라인

# custom_model = "models/" + custom_model
custom_model = "models/" + (custom_model if custom_model is not None else "default_model")

 

 

지금까지 AudioCraft를 AudioCraft_plus를 이용해서 사용해 봤습니다. 

 

음악, 음향효과 등은 인터넷에서 많이 접할 수 있지만, 

정작 딱 내가 원하는 목적에 맞는 것을 구하는 것은 어렵습니다.

컨텐츠를 만드는 분들에게는 이렇게 직접 창작할 수 있는 도구들이 생긴다는 좋은 소식이죠.

 

아무쪼록 다른 분들도 여기서 소개해 드린 길을 한번 가 보시기 바랍니다.

재미날테니까요 ~ ^^