RVC ํ๋ จ์ ๋ํ ์ค๋ช ๊ณผ ํ๋ค
๋ณธ ํ์์๋ ์ด๋ป๊ฒ ๋ฐ์ดํฐ ํ๋ จ์ด ์ด๋ฃจ์ด์ง๊ณ ์๋์ง ์ค๋ช ํฉ๋๋ค.
ํ๋ จ์ ํ๋ฆ
GUI์ ํ๋ จ ํญ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ์ค๋ช ํฉ๋๋ค.
step1
์คํ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋ํ, ๋ชจ๋ธ์ด ํผ์น(์๋ฆฌ์ ๋๋ฎ์ด)๋ฅผ ๊ณ ๋ คํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์ฌ๊ธฐ์์ ์ค์ ํ ์๋ ์์ต๋๋ค..
๊ฐ ์คํ์ ์ํ ๋ฐ์ดํฐ๋ /logs/experiment name/
์ ๋ฐฐ์น๋ฉ๋๋ค..
step2a
์์ฑ ํ์ผ์ ๋ถ๋ฌ์ค๊ณ ์ ์ฒ๋ฆฌํฉ๋๋ค.
์์ฑ ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
์์ฑ ํ์ผ์ด ์๋ ํด๋๋ฅผ ์ง์ ํ๋ฉด ํด๋น ํด๋์ ์๋ ์์ฑ ํ์ผ์ด ์๋์ผ๋ก ๊ฐ์ ธ์์ง๋๋ค.
์๋ฅผ ๋ค์ด C:Users\hoge\voices
๋ฅผ ์ง์ ํ๋ฉด C:Users\hoge\voices\voice.mp3
๊ฐ ์ฝํ์ง๋ง C:Users\hoge\voices\dir\voice.mp3
๋ ์ฝํ์ง ์์ต๋๋ค.
์์ฑ ๋ก๋์๋ ๋ด๋ถ์ ์ผ๋ก ffmpeg๋ฅผ ์ด์ฉํ๊ณ ์์ผ๋ฏ๋ก, ffmpeg๋ก ๋์ํ๊ณ ์๋ ํ์ฅ์๋ผ๋ฉด ์๋์ ์ผ๋ก ์ฝํ๋๋ค. ffmpeg์์ int16์ผ๋ก ๋ณํํ ํ float32๋ก ๋ณํํ๊ณ -1๊ณผ 1 ์ฌ์ด์ ์ ๊ทํ๋ฉ๋๋ค.
์ก์ ์ ๊ฑฐ
์์ฑ ํ์ผ์ ๋ํด scipy์ filtfilt๋ฅผ ์ด์ฉํ์ฌ ์ก์์ ์ฒ๋ฆฌํฉ๋๋ค.
์์ฑ ๋ถํ
์
๋ ฅํ ์์ฑ ํ์ผ์ ๋จผ์ ์ผ์ ๊ธฐ๊ฐ(max_sil_kept=5์ด?)๋ณด๋ค ๊ธธ๊ฒ ๋ฌด์์ด ์ง์๋๋ ๋ถ๋ถ์ ๊ฐ์งํ์ฌ ์์ฑ์ ๋ถํ ํฉ๋๋ค.๋ฌด์์ผ๋ก ์์ฑ์ ๋ถํ ํ ํ์๋ 0.3์ด์ overlap์ ํฌํจํ์ฌ 4์ด๋ง๋ค ์์ฑ์ ๋ถํ ํฉ๋๋ค.4์ด ์ด๋ด์ ๊ตฌ๋ถ๋ ์์ฑ์ ์๋์ ์ ๊ทํ๋ฅผ ์ค์ํ ํ wav ํ์ผ์ /logs/์คํ๋ช
/0_gt_wavs
๋ก, ๊ฑฐ๊ธฐ์์ 16k์ ์ํ๋ง ๋ ์ดํธ๋ก ๋ณํํด /logs/์คํ๋ช
/1_16k_wavs
์ wav ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
step2b
ํผ์น ์ถ์ถ
wav ํ์ผ์์ ํผ์น(์๋ฆฌ์ ๋๋ฎ์ด) ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. parselmouth๋ pyworld์ ๋ด์ฅ๋์ด ์๋ ๋ฉ์๋์ผ๋ก ํผ์น ์ ๋ณด(=f0)๋ฅผ ์ถ์ถํด, /logs/์คํ๋ช
/2a_f0
์ ์ ์ฅํฉ๋๋ค. ๊ทธ ํ ํผ์น ์ ๋ณด๋ฅผ ๋ก๊ทธ๋ก ๋ณํํ์ฌ 1~255 ์ ์๋ก ๋ณํํ๊ณ /logs/์คํ๋ช
/2b-f0nsf
์ ์ ์ฅํฉ๋๋ค.
feature_print ์ถ์ถ
HuBERT๋ฅผ ์ด์ฉํ์ฌ wav ํ์ผ์ ๋ฏธ๋ฆฌ embedding์ผ๋ก ๋ณํํฉ๋๋ค. /logs/์คํ๋ช
/1_16k_wavs
์ ์ ์ฅํ wav ํ์ผ์ ์ฝ๊ณ HuBERT์์ wav ํ์ผ์ 256์ฐจ์ feature๋ค๋ก ๋ณํํ ํ npy ํ์์ผ๋ก /logs/์คํ๋ช
/3_feature256
์ ์ ์ฅํฉ๋๋ค.
step3
๋ชจ๋ธ์ ํ๋ จ์ ์งํํฉ๋๋ค.
์ด๋ณด์์ฉ ์ฉ์ด ํด์ค
์ฌ์ธตํ์ต(๋ฅ๋ฌ๋)์์๋ ๋ฐ์ดํฐ์ ์ ๋ถํ ํ์ฌ ์กฐ๊ธ์ฉ ํ์ต์ ์งํํฉ๋๋ค.ํ ๋ฒ์ ๋ชจ๋ธ ์ ๋ฐ์ดํธ(step) ๋จ๊ณ ๋น batch_size๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ์ฌ ์์ธก๊ณผ ์ค์ฐจ๋ฅผ ์์ ํฉ๋๋ค. ๋ฐ์ดํฐ์ ์ ๋ถ์ ๋ํด ์ด ์์ ์ ํ ๋ฒ ์ํํ๋ ์ด๋ฅผ ํ๋์ epoch๋ผ๊ณ ๊ณ์ฐํฉ๋๋ค.
๋ฐ๋ผ์ ํ์ต ์๊ฐ์ ๋จ๊ณ๋น ํ์ต ์๊ฐ x (๋ฐ์ดํฐ์ ๋ด ๋ฐ์ดํฐ์ ์ / batch size) x epoch ์๊ฐ ์์๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก batch size๊ฐ ํด์๋ก ํ์ต์ด ์์ ์ ์ด๊ฒ ๋ฉ๋๋ค. (step๋น ํ์ต ์๊ฐ รท batch size)๋ ์์์ง์ง๋ง GPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. GPU RAM์ nvidia-smi ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค. ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ต๋ํ ๋๋ฆฌ๋ฉด ์งง์ ์๊ฐ ๋ด์ ํ์ต์ด ๊ฐ๋ฅํฉ๋๋ค.
์ฌ์ ํ์ต๋ ๋ชจ๋ธ ์ง์
RVC๋ ์ ์ ๋ฐ์ดํฐ์
์ผ๋ก๋ ํ๋ จ์ด ๊ฐ๋ฅํ๋๋ก ์ฌ์ ํ๋ จ๋ ๊ฐ์ค์น์์ ๋ชจ๋ธ ํ๋ จ์ ์์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก rvc-location/pretrained/f0G40k.pth
๋ฐ rvc-location/pretrained/f0D40k.pth
๋ฅผ ๋ถ๋ฌ์ต๋๋ค. ํ์ต์ ํ ์์, ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ ๊ฐ save_every_epoch๋ณ๋ก logs/experiment name/G_{}.pth
์ logs/experiment name/D_{}.pth
๋ก ์ ์ฅ์ด ๋๋๋ฐ, ์ด ๊ฒฝ๋ก๋ฅผ ์ง์ ํจ์ผ๋ก์จ ํ์ต์ ์ฌ๊ฐํ๊ฑฐ๋, ๋ค๋ฅธ ์คํ์์ ํ์ตํ ๋ชจ๋ธ์ ๊ฐ์ค์น์์ ํ์ต์ ์์ํ ์ ์์ต๋๋ค.
index์ ํ์ต
RVC์์๋ ํ์ต์์ ์ฌ์ฉ๋ HuBERT์ feature๊ฐ์ ์ ์ฅํ๊ณ , ์ถ๋ก ์์๋ ํ์ต ์ ์ฌ์ฉํ feature๊ฐ๊ณผ ์ ์ฌํ feature ๊ฐ์ ํ์ํด ์ถ๋ก ์ ์งํํฉ๋๋ค. ์ด ํ์์ ๊ณ ์์ผ๋ก ์ํํ๊ธฐ ์ํด ์ฌ์ ์ index์ ํ์ตํ๊ฒ ๋ฉ๋๋ค.
Index ํ์ต์๋ ๊ทผ์ฌ ๊ทผ์ ํ์๋ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Faiss๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. /logs/์คํ๋ช
/3_feature256
์ feature๊ฐ์ ๋ถ๋ฌ์, ์ด๋ฅผ ๋ชจ๋ ๊ฒฐํฉ์ํจ feature๊ฐ์ /logs/์คํ๋ช
/total_fea.npy
๋ก์ ์ ์ฅ, ๊ทธ๊ฒ์ ์ฌ์ฉํด ํ์ตํ index๋ฅผ/logs/์คํ๋ช
/add_XXX.index
๋ก ์ ์ฅํฉ๋๋ค.
๋ฒํผ ์ค๋ช
- ใขใใซใฎใใฌใผใใณใฐ (๋ชจ๋ธ ํ์ต): step2b๊น์ง ์คํํ ํ, ์ด ๋ฒํผ์ ๋๋ฌ ๋ชจ๋ธ์ ํ์ตํฉ๋๋ค.
- ็นๅพดใคใณใใใฏในใฎใใฌใผใใณใฐ (ํน์ง ์ง์ ํ๋ จ): ๋ชจ๋ธ์ ํ๋ จ ํ, index๋ฅผ ํ์ตํฉ๋๋ค.
- ใฏใณใฏใชใใฏใใฌใผใใณใฐ (์ํด๋ฆญ ํธ๋ ์ด๋): step2b๊น์ง์ ๋ชจ๋ธ ํ๋ จ, feature index ํ๋ จ์ ์ผ๊ด๋ก ์ค์ํฉ๋๋ค.