송젠: 자동 노래 생성을 위한 단일 단계 자동 회귀 변압기

최신 AI 리소스게시됨 6 개월 전 AI 공유 서클
1.7K 00

일반 소개

송젠은 텍스트-노래 생성 작업을 위해 설계된 오픈 소스, 단일 단계 자동 회귀형 Transformer 모델입니다. 이 모델은 텍스트 입력에서 보컬과 백킹 트랙이 포함된 노래를 생성할 수 있으며, 가사, 악기 설명, 음악 스타일, 분위기, 음색 등 다양한 음악적 속성을 세밀하게 제어할 수 있습니다. 또한 사용자는 사운드 복제를 위해 3초 레퍼런스 오디오 클립을 사용할 수 있습니다. songGen은 두 가지 출력 모드를 지원합니다. 하이브리드 모드는 보컬과 백 보컬이 포함된 혼합 트랙을 직접 생성하고 투 트랙 모드는 후속 애플리케이션을 위해 별도의 보컬 및 백 보컬 트랙을 생성합니다. 또한 이 프로젝트는 자동화된 데이터 전처리 파이프라인과 효율적인 품질 관리 메커니즘을 제공하여 커뮤니티 참여와 향후 연구를 용이하게 합니다.

SongGen:自动生成歌曲的单阶段自回归Transformer

 

기능 목록

  • 텍스트-노래 생성
  • 가사, 악기 설명, 음악 스타일, 분위기 및 음색을 세밀하게 제어할 수 있습니다.
  • 사운드 복제를 위한 3초 레퍼런스 오디오 클립 제공
  • 혼합 모드 및 듀얼 트랙 모드 출력
  • 자동화된 데이터 전처리 파이프라인
  • 오픈 소스 모델 가중치, 학습 코드, 주석이 달린 데이터 및 처리 파이프라인

 

도움말 사용

공식 설치 프로세스 정보를 제공해 주셔서 감사합니다! 이를 바탕으로 수정할 예정입니다. 아래는 업데이트된 사용 도움말 섹션입니다:

도움말 사용

설치 프로세스

  1. 프로젝트 웨어하우스 복제:
   git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
  1. 새 Conda 환경을 만들고 활성화합니다:
   conda create -n songgen python=3.9.18
conda activate songgen
  1. CUDA 11.8 및 관련 종속성을 설치합니다:
   conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
  1. 송젠은 추론 모드에서만 사용하세요:
   pip install .

체크포인트 다운로드

미리 학습된 xcodec 및 songgen용 모델 체크포인트를 다운로드하세요.

추론 실행

하이브리드 모델

  1. 필요한 라이브러리를 가져옵니다:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. 사전 학습된 모델을 로드합니다:
   ckpt_path = "..."  # 预训练模型的路径
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = SongGenMixedForConditionalGeneration.from_pretrained(
ckpt_path,
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
  1. 입력 텍스트와 가사를 정의합니다:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. 노래 생성하기:
   model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path, separate=True)
generation = model.generate(**model_inputs, do_sample=True)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("songgen_out.wav", audio_arr, model.config.sampling_rate)

듀얼 트랙 모델

  1. 필요한 라이브러리를 가져옵니다:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. 사전 학습된 모델을 로드합니다:
   ckpt_path = "..."  # 预训练模型的路径
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = SongGenDualTrackForConditionalGeneration.from_pretrained(
ckpt_path,
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
  1. 입력 텍스트와 가사를 정의합니다:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. 노래 생성하기:
   model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path, separate=True)
generation = model.generate(**model_inputs, do_sample=True)
vocal_array = generation.vocal_sequences[0, :generation.vocal_audios_length[0]].cpu().numpy()
acc_array = generation.acc_sequences[0, :generation.acc_audios_length[0]].cpu().numpy()
min_len = min(vocal_array.shape[0], acc_array.shape[0])
vocal_array = vocal_array[:min_len]
acc_array = acc_array[:min_len]
audio_arr = vocal_array + acc_array
sf.write("songgen_out.wav", audio_arr, model.config.sampling_rate)

세부 기능 작동

  • 텍스트-노래 생성: 가사와 음악에 대한 설명이 포함된 텍스트를 입력하면 모델이 해당 노래의 오디오를 생성합니다.
  • 세분화된 제어텍스트에 설명을 입력하면 악기, 스타일, 분위기 등 생성된 곡의 다양한 속성을 제어할 수 있습니다.
  • 사운드 복제3초 분량의 레퍼런스 오디오 클립이 제공되며, 모델은 해당 사운드를 모방하여 노래를 생성할 수 있습니다.
  • 출력 모드 선택필요에 따라 하이브리드 모드 또는 듀얼 트랙 모드를 선택하여 다양한 장면에 유연하게 적용할 수 있습니다.
  • 데이터 전처리 파이프라인자동화된 데이터 전처리 및 품질 관리를 통해 생성된 결과의 높은 품질을 보장합니다.
© 저작권 정책

관련 게시물

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...