이곳에서 다루는 주제는 주로 노래 커버이고 가끔 TTS도 다룹니다.



- 원하는 목소리로 노래를 커버 하고 싶어요!


그 노래를 이 목소리로 듣고 싶은데 이 사람은 그 노래를 부른 적이 없을 때, 마치 이 사람이 그 노래를 부른 것 같은 노래를 만들 수 있습니다.

유튜브에서 제목에 AI Cover라고 검색하면 나오는 결과물을 얻을 수 있습니다.

https://www.youtube.com/results?search_query=ai+cover


노래 커버에는 주로 SVC로 끝나는 깃헙 레포지토리의 모델을 사용해서 만듭니다.


노래를 커버하는 과정은 크게 다음의 순서로 이루어집니다.

1. 데이터셋 생성

2. 학습 환경 구성

3. 학습

4. 레퍼런스 보컬 준비

5. 추론

6. 결과물과 반주 합치기


이렇게 노래를 커버하는데에는 원곡의 레퍼런스 보컬과 커버하고 싶은 목소리의 데이터셋이 필요합니다.


만약 A가수의 Love song이라는 노래를 B가수의 목소리로 커버하고 싶다면 학습의 과정은 아래와 같습니다:


1) B가수의 노래로부터 보컬을 추출해 데이터셋으로 가공합니다.

2) 깃헙 레포지토리를 다운로드 받고 필요한 라이브러리를 설치합니다.

3) B가수의 데이터셋으로 학습을 수행합니다.

4) A가수의 Love song 노래로부터 보컬을 분리해서 원곡의 레퍼런스 보컬을 준비합니다.

5) 4번에서 준비한 레퍼런스 보컬과 3번 학습으로 얻어진 B가수 모델을 가지고 추론을 수행해 B가수가 Love song 부르는 보컬을 얻습니다.

6) 5번에서 얻어진 커버된 보컬을 반주와 합칩니다.


대충 이러한 과정으로 진행됩니다.


처음 학습해본다면 아래 링크를 참고해보세요

https://arca.live/b/aispeech/78639996 (RVC 모델 학습, RVC만 사용)

https://arca.live/b/aispeech/79375084 (RVC 모델 학습, RVC/UVR/Goldwave 사용)

https://arca.live/b/aispeech/74125759 (DDSP 모델 학습, DDSP/Goldwave 사용)


실제 데이터셋 생성을 알아봅시다.


학습할 음성이나 노래 음성을 모델을 학습에 사용할 수 있도록 만드는 과정입니다.

SVC모델에서 취하는 데이터셋은 10초~15초 길이로 잘게 자른 원하는 화자의 보컬만 분리한 wav파일을 사용합니다.

데이터셋을 만드는데는 보통 UVR이라는 프로그램을 씁니다. 

파이썬을 코드를 작성할 수 있다면 작업을 자동화하는 스크립트를 만들어 편리하게 만들 수 있습니다.


모델에 따라 다르지만 이렇게 10~15초 길이로 잘게 자른 파일 20분~2시간 어치를 준비하면 됩니다.


아래는 데이터셋을 만들 때 유용한 정보가 있는 링크입니다.


UVR 사용방법: https://arca.live/b/aispeech/76792418

UVR 작업 순서: https://arca.live/b/aispeech/76947571

전체적인 데이터셋 생성 도구들: https://arca.live/b/aispeech/76727179

데이터셋 만들기(학습 이전까지의 내용을 참조합시다): https://arca.live/b/aispeech/74125759


데이터셋을 준비했다면 원곡의 레퍼런스 보컬을 준비합시다.

레퍼런스 보컬을 준비하는 과정은 데이터셋을 만드는 과정과 크게 다르지 않습니다.

다만, 데이터셋에 비해 높은 품질의 보컬을 얻어야 하고, 데이터셋처럼 가공할 필요 없이 3분의 음악이면 3분의 보컬 그대로 사용하면 된다는 차이점이 있습니다.


아래는 레퍼런스 보컬을 준비하는데 유용한 링크입니다.


UVR 사용방법: https://arca.live/b/aispeech/76792418

UVR 작업 순서: https://arca.live/b/aispeech/76947571

듀엣보컬 분리하기: https://arca.live/b/aispeech/78030601


다음으로 학습을 어디서 할 건지 정합시다.

컴퓨터에 엔비디아의 VRAM 8GB 이상의 그래픽카드가 있다면 로컬로 학습이 가능합니다.

그런 그래픽카드가 없다면 코랩이나 런팟을 이용해야 합니다.


다음으로 어떤 모델을 사용할지 정합시다.

간단한 학습을 원하면 RVC를 쓰는게 좋습니다.

다른 모델로는 DDSP-SVC, so-vits-svc가 있고,

그 외에는 diff-svc, fish-diffusion가 있습니다.


모델 명칭깃헙 주소준비해야 하는 데이터셋의 양학습에 걸리는 시간
(RTX3090 기준)
RVC
https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI
20분 이상10분 이상
DDSP-SVC
https://github.com/yxlllc/DDSP-SVC
30분 이상1시간 이상
so-vits-svc
https://github.com/svc-develop-team/so-vits-svc
30분 이상1시간 이상
diff-svc
https://github.com/prophesier/diff-svc
1시간 이상6시간 이상
fish-diffusion
https://github.com/fishaudio/fish-diffusion
1시간 이상4시간 이상





















각각의 모델을 사용해 만들어진 결과물들의 링크입니다.


사용한 모델결과물
RVChttps://arca.live/b/aispeech?category=%EC%9E%91%ED%92%88&keyword=rvc
DDSP-SVChttps://arca.live/b/aispeech?category=%EC%9E%91%ED%92%88&keyword=ddsp-svc
so-vits-svchttps://arca.live/b/aispeech?category=%EC%9E%91%ED%92%88&keyword=so-vits
diff-svchttps://arca.live/b/aispeech?category=%EC%9E%91%ED%92%88&keyword=diff-svc









잘 모른다면 RVC로 시작하는 것을 추천합니다.

학습이 쉽고, 적은 데이터셋에, 짧은 학습으로 괜찮은 퀄리티의 결과물을 얻을 수 있습니다.


여기까지 정했다면 학습 환경을 구성하고 학습, 추론을 수행합니다. 

모델마다 다소의 차이가 있어 아래의 표를 참고해 계속 진행해주세요.


아래는 로컬 혹은 코랩에서 학습 및 추론에 도움이 되는 링크들입니다.


로컬 환경코랩 환경
RVChttps://arca.live/b/aispeech/78639996
https://arca.live/b/aispeech/79375084
https://arca.live/b/aispeech/78261020
DDSP-SVChttps://arca.live/b/aispeech/74125759

so-vits-svchttps://arca.live/b/aispeech/77906451

diff-svc

https://www.youtube.com/watch?v=8hJ1Wullg_g


fish-diffusionhttps://arca.live/b/aispeech/76805331














추론이 끝났으면 이후 믹싱 등의 과정을 통해 더 완성도있는 결과를 얻을 수 있습니다.

아래는 믹싱에 대한 정보가 있는 글의 링크들입니다.

https://arca.live/b/aispeech/78917323



- 원하는 목소리로 말하는 음성을 만들고 싶어요!


텍스트를 입력해 특정 목소리로 말하는 음성을 만드는 것을 가지고 TTS라고 합니다.

기본적으로 TTS도 위에 설명한 노래 커버와 비슷하나, 데이터셋을 만드는 과정 중 일부 차이가 있습니다.

1. 데이터셋의 wav파일의 길이가 4초 이하가 되도록 짧게 만듭니다

2. 데이터셋의 wav파일과 함께 각각의 데이터셋 음성의 대본을 작성해야 합니다. 이를 데이터셋을 만들 때의 라벨링 과정이라고 볼 수 있습니다.


TTS 모델은 여러가지가 있으나 여기서 다뤄진 모델은 VITS밖에 없습니다.

https://arca.live/b/aispeech/72903471


데이터셋 생성 및 라벨링 과정을 asr로 자동화한 레포지토리는 아래 글에서 확인할 수 있습니다.

https://arca.live/b/aispeech/78725636


라벨링없이 RVC로 공개 데이터셋을 타겟 화자의 목소리로 변환하여 VITS 학습을 수행하는, 

일명 'RVC-VITS' 에 대해서는 아래 글에서 확인할 수 있습니다.

https://arca.live/b/aispeech/78461054


VITS 레포지토리의 cjke2 클리너를 약간 수정했고 asr로 대본을 작성해서 학습을 수행하는

일명 'PolyLangVITS'에 대해서는 아래 글에서 확인할 수 있습니다.

https://arca.live/b/aispeech/79678631


korean cleaner심볼 세트를 japanese cleaner 심볼 세트로 혹은 역으로 변환하는 것에 대해서는 아래 글에서 확인할 수 있습니다.

https://arca.live/b/aispeech/79985598