오늘은 지난번에 이어 그래서 음성 학습을 위해 어떤 모델을 썼는지, 파이프라인은 어떻게 되는지 설명하도록 하겠다.
이 프로젝트에 있어 다시 돌아보면 모델 선택에 매우 많은 어려움이 있었던 것 같다. 지난 포스팅에서 언급했듯이 우리 프로젝트의 조건에 맞는 모델을 찾는 것이라곤 매우 까다로웠기 때문이다.. 일단 먼저 그중 대표적인 모델 두가지에 대해 설명하고 결론적으로 우리 프로젝트에는 어떤 모델을 사용했고 어떻게 녹여냈는지 설명하겠다.
# Diffusion SVC vs RVC
1. Diffusion SVC
먼저 Diffusion SVC이다. pipeline만 봐도 정말 어려운것이 딥러닝에 대해 공부를 많이 했던 사람도 처음 보는 용어가 매우 많다..
하지만 사실 왼쪽 상단의 Noise와 아래족 하단의 Noisy Mel Spectogram부분만 보면 된다. 쉽게 말해 기존 보컬을 특정 보컬(내가 입히고 싶은 보컬)로 변환을 하고 싶다면 먼저 이 보컬에 대해 모델이 분석을 하고, 분석한 변수를 바탕으로 기존 보컬에 노이즈를 추가하는 방식이다.
** 아래 구글 코랩에서 실제로 사용해볼 수 있다 **
Diff_SVC_training_notebook_(colab_ver_).ipynb
Run, share, and edit Python notebooks
colab.research.google.com
2. RVC
RVC 모델도 사실상 pipeline이 거의 동일하다. 하지만 diffusion SVC보다 좀 더 간단한 파라미터 값들을 추출해서 .pt라는 파일에 저장을 하고 그 파라미터를 토대로 기존 노래에 노이즈를 입히는 식으로 진행이 된다.
** 아래 구글 코랩에서 실제로 사용해볼 수 있다 **
RVC Crepe v2 + persistent storage / autosave
Colaboratory notebook
colab.research.google.com
그래서 우리는 왜 RVC를 선택하였는가?!!?
사실 다양한 실험을 했을때 두가지 모델의 성능은 거의 비슷했다. 물론 내가 음악 전문가는 아니지만 그렇다고 막귀는 아니기때문에 무조건 그렇다 할 수는 없지만 적어도 큰 차이는 없었다.
하지만 우리가 RVC를 선택한 이유는 정말 오로지 학습 및 추론 시간에 달려있었다.
좀더 직관적으로 비교를 해보겠다.
성능:
Diffusion SVC: A
RVC: A-
학습 시간:
Diffusion SVC: B+
RVC: A
필요한 데이터셋:
Diffusion SVC: 20분 길이
RVC: 3 ~ 5분
데이터셋 품질(음질):
Diffusion SVC: 노이즈 없어야함
RVC: 노이즈 가능
결론
즉 성능만 따지고 보면 Diffusion이 좀 더 우수하다고 할 수 있겠지만 성능을 제외한 나머지 부분에서 모든것이 RVC가 더 뛰어났다.
그러니 RVC를 선택하지 않을 수가 없었다..

다음 포스팅부터는 이제 이 RVC를 로컬화 한 과정, 그리고 실제 실험 결과 분석을 했던 것과 그 이후로는 모델 서빙을 어떻게 했는지 자세히 풀어보고자 한다.
'MLOps > MLOps projects' 카테고리의 다른 글
AI Voice Conversion Project(음성 합성 모델) #4: 모델 배포과정(Docker) (1) | 2024.03.28 |
---|---|
AI Voice Conversion Project(음성 합성 모델) #3: 모델 로컬화 (2) | 2024.03.26 |
AI Voice Conversion Project(음성 합성 모델) (0) | 2024.03.06 |