TIL/AI 인공지능

RVC V2 목소리(노래) 모델 학습 튜토리얼

Art Rudy
반응형

RVC란?

Retrieval-based Voice Conversion : 검색 기반 음성 변환
AI 음성 합성 기술로 기존의 음성데이터를 이용해 변조하는 방식이다. 음성 변조와 비슷하다고 생각하면 될 듯하다. 

RVC(목소리 변조 AI 프로그램)는 실시간 음성 변환 기술을 기반으로 한 프로그램으로, 음성의 특징을 조작하여 다양한 목소리를 생성하고 변조할 수 있는 도구이다. 이 프로그램은 AI 기술을 활용하여 음성 데이터를 분석하고 재구성함으로써 목소리의 톤, 억양, 발음 등을 변경할 수 있다.

 

RVC v2 학습 사전 준비

목소리 모델을 만들기 위해서는 학습시키고자 하는 목소리 파일이 최소 5~10분 정도 필요하다. 잡음이 없는 곳에서 무반주에 녹음한 노래 녹음 파일을 학습할 것을 권장한다.(노래방 X, 무반주 노래 O)

※ 파일 이름은 영어 소문자(대문자X), 띄어쓰기X, 언더바(_)는 사용 가능

녹음 파일(목소리 파일)들을 zip으로 압축하여 구글 드라이브에 업로드한다.

 

내 드라이브에 rvcDisconnected라는 이름으로 폴더를 생성하고 압축한 파일을 업로드한다.
이때 압축한 zip파일 이름도 위에 명시해둔 대로 영어 소문자로만 설정한다.

 

RVC v2를 이용한 모델 학습

※ 시행하기 전 필독

  1. 모든 과정의 실행은 기다릴 필요 없이 위에서부터 아래로 순서대로 재생아이콘을 누르면 순차대로 실행된다. 설정 값만 미리 세팅해두고 하나씩 기다리지 말고 순서대로 클릭만 해두면 된다.
  2. 무료버전의 코랩을 사용하는 경우 전체 런타임 지속 시간 전체 12시간, 아무런 동작 없이는 최대 60~90분으로 이 점을 꼭 명심하고 학습시켜야 한다. 때문에 너무 높은 epoch 설정을 하면 안된다. 또한 학습 중간에 60~90분이 넘어가기 전에는 코랩을 띄워놓은 페이지에서 마우스로 어디든(페이지를 벗어나지 않는 선에서) 클릭하여 이벤트를 발생시켜야 중간에 런타임 연결이 끊기는 현상을 방지할 수 있다.
  3. 중간에 런타임 연결이 끊기거나 에러가 발생해서 학습이 중단된 경우 학습이 정상 완료된 결과물과 달리 pth파일이 보이지 않을 것이다. 이 부분은 맨 마지막 부분에서 성공과 실패의 결과물을 비교해보도록 하겠다. 

 

STEP 1. RVC v2 Disconnected 코랩 주소(https://colab.research.google.com/drive/1XIPCP9ken63S7M6b5ui1b36Cs17sP-NS#scrollTo=ZodNcumpg-JM) 에 접속하여 코랩 프로젝트를 내 Drive로 복사한다. (반드시 복사해서 진행해야 됨)

 

STEP 2. Dependencies에서 Run me first! 실행 (아래 설정 값 참고하여 설정, 모르겠으면 똑같이 따라하면 됨)

이 부분에서 구글 드라이브 엑세스 허용 팝업이 한번 뜬다. 엑세스 허용을 해주어야 뒤의 과정들을 진행할 수 있으니 꼭 확인하고 넘어갈 것.

 

 

STEP 3. Initial Setup에서 설정 값 세팅

experiment_name: 학습할 모델 이름 설정(한글X, 대문자X, 띄어쓰기X)
model_architecture: 시스템 버전 설정
target_sample_rate: 샘플레이트 설정(학습 시킬 목소리 파일 샘플레이트에 맞춰서 설정)
speaker_id: 모르겠음(디폴트로 설정)
pitch_extraction_algorithm: 피치 식별 기술 설정(rmvpe계열이 최신 기술)
crepe_hop_length: 모르겠음(디폴트로 설정, 음정 관련 알고리즘 설정 값으로 추정)
pitch_guidance: 피치 가이드 설정(반드시 true 지정, 음정까지 학습할지 말지 결정)

세부 설정 값들은 모르겠으면 위의 이미지 그대로 따라하면 된다.

 

STEP 4. Download Pretrained Model 에서 pretrain_type을 original로 설정, 실행 

 

STEP 5. Preprocessing 에서 Load Dataset 설정 및 실행

사전 준비 때 드라이브(rvcDisconnected 폴더)에 업로드해두었던 녹음 압축 zip파일명과 동일하게 입력.

 

그 아래 나머지 프로세스도 실행해준다.

 

STEP 6. Training에서 두 단계는 Skip, 추후에 이어서 학습할 때 필요한 과정으로 추측.

 

STEP 7. Index Training 실행 (save_extra_files_to_drive 체크)

 

STEP 8. Training 설정 및 실행 (이 부분에서 데이터 학습이 이루어진다)

save_frequency: 학습 중간 저장 주기 설정(낮을 수록 자주, 높을 수록 텀이 길게 저장)
total_epochs: 총 학습 횟수
이 부분이 중요하다. 높을 수록 좋은 퀄리티의 결과물을 얻을 수 있지만 무조건 높다고 좋은 것은 아니고 학습시킬 녹음 파일의 질에 따라 달라진다. 무료버전의 코랩을 사용할 경우 날마다 사용할 수 있는 양이 들쭉날쭉해서 100 ~ 150으로 설정할 것을 권장. 200까지도 가능한 날이 있지만, GPU사용 제한으로 중간에 런타임 연결이 끊길 경우 다음날까지 기다렸다가 처음부터 다시 이 모든 과정을 해야하기 때문에 낮은 값으로 설정하길 권장한다. 

유료버전의 코랩을 사용할 경우 GPU 용량이 넉넉하다면 1000epoch 이상으로 설정하면 좋은 퀄리티를 얻을 수 있다. 학습시킬 녹음 데이터의 양과 epoch 수에 따라서 학습 시간이 상이함으로 이 점을 참고하도록 하자.

직접 시도해본 결과 약 3분 정도의 녹음 데이터 30개, 1000epoch 정도면 24시간 정도 걸린다.

batch_size: 한 번 학습할 때 동시에 학습시킬 양 설정(클수록 VRAM을 많이 점유한다고 한다. 2의 제곱 값으로 설정하는 것을 권장)

save_only_latest_ckpt: 체크(정확히 어떤 옵션인지 모르겠음)
cache_all_training_sets: 체크(정확히 어떤 옵션인지 모르겠음)
save_small_final_model: 체크(정확히 어떤 옵션인지 모르겠음)

나머지도 상세하게 어떤 옵션인지 모르겠으나 아래 이미지처럼 체크한 옵션들은 체크해주고, 체크하지 않은 옵션들은 디폴트 값 그대로 두고 진행한다.

 

아래와 같은 로그가 뜬다면 성공!
설정한 epoch 값에 도달하지 못했는데 런타임 연결이 끊겼거나 에러가 발생했다면 안타깝게도 이 모든 과정을 처음부터 다시.... 해야된다..ㅠㅠ 끊기더라도 중간에 이어서 할 수 있는 방법이 있는지는 모르겠다. 있다면 누가 좀 알려주길 바래요.. 나도 한 8번은 다시 해서 2주가 넘도록 고생했다...

 

STEP 9. Export Model from Notebook to Drive 실행(구글 드라이브로 학습시킨 데이터 모델 추출 과정)

 

 

STEP 10. 학습 완료된 파일 확인

학습이 정상적으로 완료되면 구글 드라이브의 rvcDisconnected 폴더에 이러한 폴더와 파일이 생성되어 있다.
추후에 이 모델을 사용하여 AI 커버를 만들 때 필요한 파일은 위에 표시한 파일 2개이다.
이 두 파일을 따로 빼서 압축하여 드라이브나 로컬에 저장하도록 한다.

※ 중간에 런타임 에러나 여러가지 이유로 학습이 중단된 경우 아래와 같은 결과물을 얻을 수 있다. 정상적인 결과물과 달리 pth파일이 보이지 않을 것이다. 이럴 경우 처음으로 돌아가서 모든 과정을 다시 해야한다... 화이팅..

 

이상 RVC V2 목소리(노래) 모델 학습하기 튜토리얼이었습니다!

저 또한 유튜브랑 이런저런 블로그 찾아보면서 여러 시행착오를 겪었고, 아직 상세하게 모르는 내용도 많지만 직접 시도하면서 여러 오류들과 상황들을 겪으며 성공한 과정을 정리해보았습니다. 현재 이보다 더 좋은 방법을 알고계신 분들은 댓글로 링크나 여러 의견들 남겨주시면 감사하겠습니다!

 

다음 포스팅에서는 이 학습한 모델을 가지고 AI 노래 커버를 제작하는 과정을 다루도록 하겠습니다~

 

반응형