SW/인공지능

Meta : MusicGen : Colab 이용한 음악 생성, 방법, 예제, 명령어

얇은생각 2024. 1. 28. 23:40
반응형

인공 지능 알고리즘을 사용하여 매혹적인 음악 작곡을 생성하는 고급 텍스트 대 음악 모델인 MusicGen on Colab을 설정하는 방법에 대해 알아보십시오.

인공 지능의 광대한 영역에서, 딥 러닝은 자연 언어 처리, 컴퓨터 비전, 그리고 음성 인식을 포함하여, 많은 영역들에 혁명을 일으켰습니다. 그러나, 연구자들과 음악 애호가들 모두를 사로잡은 한 매력적인 영역은 인공 지능 알고리즘을 사용하는 음악의 생성입니다. 뮤직젠은 텍스트 프롬프트를 매혹적인 음악 작곡으로 매끄럽게 번역하는 최첨단 제어 가능한 텍스트 대 음악 모델입니다.

 

 

Meta : MusicGen : Colab 이용한 음악 생성, 방법, 예제, 명령어

 

 

MusicGen

뮤직젠은 단순성과 제어 가능성을 제공하는 음악 생성을 위해 설계된 주목할 만한 모델입니다. 뮤직젠은 뮤직LM과 같은 기존의 방법과 달리 자체 감독된 의미 표현의 필요성을 없애 눈에 띕니다. 이 모델은 단일 단계 자동 회귀 트랜스포머 아키텍처를 사용하고 32kHz EnCodec 토큰화기를 사용하여 훈련됩니다. 특히 뮤직젠은 기존의 접근 방식과 구별되게 한 번의 패스로 네 개의 코드북을 모두 생성합니다. 코드북 사이에 약간의 지연을 도입함으로써 이 모델은 병렬로 예측할 수 있는 능력을 입증하여 오디오의 초당 단 50단계의 자동 회귀 단계가 발생합니다. 이 혁신적인 접근 방식은 음악 생성 프로세스의 효율성과 속도를 최적화합니다.

 

뮤직젠은 2만 시간의 라이선스 음악에 대해 훈련을 받습니다. 그들은 또한 10K 고품질 음악 트랙의 내부 데이터 세트와 셔터스톡과 폰드5 음악 데이터에 대해 훈련을 시켰습니다.

 

 

필수 구성 요소:

MusicGen GitHub 공식 보고서에 따르면:  

파이썬 3.9

PyTorch 2.0.0

최소 16GB의 메모리를 갖춘 GPU

사용 가능한 MusicGen 모델

 

사전 훈련을 받은 4가지 모델이 있으며 다음과 같습니다:

 소형: 300M 모델, 음악에 한해 텍스트

중간: 1.5B 모델, 음악에만 텍스트 제공

Melody : 1.5B 모델, Text to music, Text + melody to music

: 3.3B 모델, 음악에만 텍스트 제공

 

 

실험

아래는 MusicGen large 모델을 이용한 조건부 음악 생성 결과입니다.

 텍스트 입력 : 바이올린과 피아노가 함께하는 징글벨 선율

출력: (MusicGen "" 모델 사용)

 

 아래는 MusicGen "melody" 모델의 출력입니다. 위의 오디오 및 텍스트 입력을 사용하여 다음과 같은 오디오를 생성했습니다.

텍스트 입력 : 무거운 드럼과 드럼만 추가

출력: (MusicGen "melody" 모델 사용)

 

 

Colab에서 Music Gen을 설정하는 방법

더 빠른 추론을 위해 GPU를 사용하고 있는지 확인하세요. CPU를 사용하여 10초의 오디오를 생성하는 데 ~9분이 걸렸지만 GPU(T4)를 사용하면 35초밖에 걸리지 않았습니다.

시작하기 전에 Torch Torch Audio Colab에 설치되어 있는지 확인합니다.

Facebook에서 AudioCraft 라이브러리를 설치합니다.

!python3 -m pip install -U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft

 

 

필요한 라이브러리를 가져옵니다.

from audiocraft.models import musicgen
from audiocraft.utils.notebook import display_audio
import torchfrom audiocraft.data.audio import audio_write

 

 

모델을 로드합니다. 모델 목록은 다음과 같습니다:

# | model types are => small, medium, melody, large |
# | size of models are => 300M, 1.5B, 1.5B, 3.3B |
model = musicgen.MusicGen.get_pretrained('large', device='cuda')

 

 

파라미터 설정(옵션):

model.set_generation_params(duration=60) # this will generate 60 seconds of audio.

 

 

조건부 음악 생성(텍스트를 제공하여 음악을 생성).

model.set_generation_params(duration=60)
res = model.generate( [ 'Jingle bell tune with violin and piano' ], progress=True)
# This will show the music controls on the colab

model.set_generation_params (duration=60)

res = model.generate(['바이올린과 피아노가 함께하는 징글벨 선율'), progress = True)

# 콜랩의 음악 컨트롤이 표시됩니다

 

 

조건 없는 음악을 생성하려면:

res = model.generate_unconditional( num_samples=1, progress=True)
# this will show the music controls on the screendisplay_audio(res, 16000)

res = model.generate_uncond 조건(num_samples=1, progress= true)

# 화면 디스플레이_ audio(res, 16000)에 음악 컨트롤이 표시됩니다

 

 

음악 계속을 생성하려면

음악 연속을 만들려면 오디오 파일이 필요합니다. 우리는 그 파일을 모델에게 주고 모델은 더 많은 음악을 생성하고 추가할 것입니다.

from audiocraft.utils.notebook import display_audio
import torchaudio


path_to_audio = "path-to-audio-file.wav"
description = "Jazz jazz and only jazz"


# Load audio from a file. Make sure to trim the file if it is too long!
prompt_waveform, prompt_sr = torchaudio.load( path_to_audio )
prompt_duration = 15
prompt_waveform = prompt_waveform[..., :int(prompt_duration * prompt_sr)]
output = model.generate_continuation(prompt_waveform, prompt_sample_rate=prompt_sr,
descriptions=[ description ], progress=True)
display_audio(output, sample_rate=32000)

 

 

멜로디 조건부 생성 방법:

model = musicgen.MusicGen.get_pretrained('melody', device='cuda')


model.set_generation_params(duration=20)


melody_waveform, sr = torchaudio.load("path-to-audio-file.wav")
melody_waveform = melody_waveform.unsqueeze(0).repeat(2, 1, 1)
output = model.generate_with_chroma(
descriptions=['Add heavy drums'], melody_wavs=melody_waveform, melody_sample_rate=sr,progress=True)
display_audio(output, sample_rate=32000)

 

 

오디오 파일을 디스크에 기록합니다.

콜랩에서 파일을 다운받으려면 WAV 파일을 디스크에 써야 합니다. 여기 WAV 파일을 디스크에 쓸 함수가 있습니다. 첫 번째 입력으로 모델 출력을, 두 번째 입력으로 파일 이름을 가져갑니다.

def write_wav(output, file_initials):
    try:
        for idx, one_wav in enumerate(output):
        audio_write(f'{file_initials}_{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
        return True
    except Exception as e:
        print("error while writing the file ", e)
        return None


# this will write a file that starts with bollywood
write_wav(res, "audio-file")

 

 

결론

결론적으로, 아우디크래프트의 뮤직젠은 강력하고 통제 가능한 음악 생성 모델입니다. 미래를 내다보면, 아우디크래프트는 인공지능이 만든 음악의 발전에 대한 흥미로운 미래 잠재력을 가지고 있습니다. 음악가든 인공지능 마니아든 간에, 아우디크래프트의 뮤직젠은 창의적인 가능성의 세계를 엽니다.

반응형