File size: 4,955 Bytes
528df8b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
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 ํ๋ จ์ ์ผ๊ด๋ก ์ค์ํฉ๋๋ค. |