File size: 10,255 Bytes
da6258f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
์–ธ์–ด: [English](/README.md) [็ฎ€ไฝ“ไธญๆ–‡](./cn_README.md) **ํ•œ๊ตญ์–ด**
# DDSP-SVC
<div align="center">
<img src="https://storage.googleapis.com/ddsp/github_images/ddsp_logo.png" width="200px" alt="logo"></img>
</div>
DDSP(์ฐจ๋ณ„ํ™” ๊ฐ€๋Šฅํ•œ ๋””์ง€ํ„ธ ์‹ ํ˜ธ) ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์‹ ๊ฒฝ๋ง ์ฒ˜๋ฆฌ ๋…ธ๋ž˜ ์Œ์„ฑ ๋ณ€ํ™˜ ์‹œ์Šคํ…œ

## 0. ์†Œ๊ฐœ

DDSP-SVC๋Š” ์ƒˆ๋กœ์šด ์˜คํ”ˆ ์†Œ์Šค ๋…ธ๋ž˜ ์Œ์„ฑ ๋ณ€ํ™˜ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ๊ฐœ์ธ ์ปดํ“จํ„ฐ์—์„œ ๋Œ€์ค‘ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋ฃŒ AI ์Œ์„ฑ ๋ณ€ํ™˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์ „๋…ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋ณด๋‹ค ๋” ์œ ๋ช…ํ•œ [Diff-SVC](https://github.com/prophesier/diff-svc)์™€ [SO-VITS-SVC](https://github.com/svc-develop-team/so-vits-svc)๋ž‘ ๋น„๊ตํ•ด๋ณด์•˜์„๋•Œ, ํ›ˆ๋ จ๊ณผ ํ•ฉ์„ฑ ๊ณผ์ •์—์„œ ์กฐ๊ธˆ ๋” ๋‚ฎ์€ ์ปดํ“จํ„ฐ ์‚ฌ์–‘์—์„œ๋„ ๋™์ž‘ํ•˜๊ณ  ํ›ˆ๋ จ ์‹œ๊ฐ„๋„ ๋ช‡ ๋ฐฐ ๋” ๋‹จ์ถ• ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์Œ์„ฑ์„ ๋ณ€๊ฒฝ ํ•  ๋•Œ SO-VITS-SVC์—์„œ ์š”๊ตฌํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ์ž์›๋ณด๋‹ค ์š”๊ตฌ ๊ธฐ์ค€์ด ๋‚ฎ์œผ๋ฉฐ Diff-SVC์˜ ๊ฒฝ์šฐ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋ณ€๊ฒฝ์ด ๋„ˆ๋ฌด ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๋ณธ๋ž˜ DDSP ์˜ ํ•ฉ์„ฑ ํ’ˆ์งˆ์ด ๊ทธ๋‹ฅ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ (ํ›ˆ๋ จ ์ค‘์— TensorBoard์—์„œ ๋ณธ๋ž˜์˜ ์ถœ๋ ฅ์„ ๋“ค์„ ์ˆ˜ ์žˆ์Œ) ์‚ฌ์ „ํ›ˆ๋ จ๋œ ๋ณด์ฝ”๋” ๊ธฐ๋ฐ˜ enhancer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡๋ช‡ ๋ฐ์ดํ„ฐ์…‹์ด SO-VITS-SVC์˜ ์Œ์งˆ๊ณผ ๋น„์Šทํ•œ ์ˆ˜์ค€์œผ๋กœ ๋„๋‹ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ์ด ๋งค์šฐ ๋†’์€ ๊ฒฝ์šฐ์—๋„ Diff-SVC์˜ ์Œ์งˆ์ด ๊ฐ€์žฅ ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” `samples` ํด๋”์— ์กด์žฌํ•˜๋ฉฐ ๊ด€๋ จ๋œ ์ฒดํฌํฌ์ธํŠธ ๋ชจ๋ธ๋“ค์€ Releases ํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : DDSP-SVC๋ฅผ ํ†ตํ•ด ํ•™์Šต์‹œํ‚ค๋Š” ๋ชจ๋ธ์ด **ํ•ฉ๋ฒ•์ ์œผ๋กœ ํ—ˆ๊ฐ€๋œ ๋ฐ์ดํ„ฐ**๋กœ ํ•™์Šต๋˜๋„๋ก ํ•ด์ฃผ์‹œ๊ณ  ๋ถˆ๋ฒ•์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์Œ์„ฑ์„ ํ•ฉ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์ผ์ด ์—†๋„๋ก ํ•ด์ฃผ์„ธ์š”. ๋ณธ ์ €์žฅ์†Œ์˜ ์†Œ์œ ์ž๋Š” ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ์™€ ์˜ค๋””์˜ค ์ด์šฉํ•œ ๊ถŒ๋ฆฌ ์นจํ•ด, ์‚ฌ๊ธฐ ๋ฐ ๊ธฐํƒ€ ๋ถˆ๋ฒ• ํ–‰์œ„์— ๋Œ€ํ•ด ์ฑ…์ž„์„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

## 1. ์˜์กด์„ฑ ์„ค์น˜ํ•˜๊ธฐ
์šฐ์„  PyTorch๋ฅผ [**๊ณต์‹ ์›น์‚ฌ์ดํŠธ์„œ**](https://pytorch.org/) ์„ค์น˜ํ•˜๋Š”๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ดํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”:
```bash
pip install -r requirements.txt 
```
์•ˆ๋‚ด : ์œˆ๋„์šฐ ๊ธฐ์ค€ Python 3.8 + torch 1.9.1 + torchaudio 0.6.0 ๋ฒ„์ „์—์„œ ํ…Œ์ŠคํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์ตœ์‹  ๋ฒ„์ „์ด๊ฑฐ๋‚˜ ๊ตฌ ๋ฒ„์ „์˜ ์˜์กด์„ฑ์ผ ๊ฒฝ์šฐ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

^ ์—…๋ฐ์ดํŠธ: ์œˆ๋„์šฐ ๊ธฐ์ค€ Python 3.8 + cuda 11.8 + torch 2.0.0 + torchaudio 2.0.1 ์—์„œ ๋™์ž‘ํ•˜๊ณ , ํ•™์Šต ์†๋„๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค!

## 2. ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ ์ค€๋น„ํ•˜๊ธฐ
์—…๋ฐ์ดํŠธ:  ContentVec ์ธ์ฝ”๋”๊ฐ€ ์ด์ œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. HubertSoft ์ธ์ฝ”๋” ๋Œ€์‹  [ContentVec](https://ibm.ent.box.com/s/z1wgl1stco8ffooyatzdwsqn2psd9lrr) ์ธ์ฝ”๋”๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ  ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- **(์š”๊ตฌ๋จ)** ์‚ฌ์ „ ํ›ˆ๋ จ๋œ [**HubertSoft**](https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt) ์ธ์ฝ”๋”๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ  `pretrain/hubert` ํด๋”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค..
-  ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ณด์ฝ”๋” ๊ธฐ๋ฐ˜ enhancer๋ฅผ [DiffSinger ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ณด์ฝ”๋” ํ”„๋กœ์ ํŠธ](https://openvpi.github.io/vocoders)์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ `pretrain/` ํด๋”์— ์••์ถ•์„ ํ’€์–ด์ฃผ์„ธ์š”.

## 3. ์ „์ฒ˜๋ฆฌ ์ž‘์—…

ํ•™์Šต์‹œํ‚ฌ ๋ฐ์ดํ„ฐ์…‹ (.wav ํ˜•์‹์˜ ์˜ค๋””์˜ค ํด๋ฆฝ)์„ `data/train/audio` ํด๋”์— ๋„ฃ์–ด์ฃผ์„ธ์š”.

๊ฒ€์ฆํ•  ๋ฐ์ดํ„ฐ์…‹ (.wav ํ˜•์‹์˜ ์˜ค๋””์˜ค ํด๋ฆฝ, ์œ„ ๋ฐ์ดํ„ฐ์…‹์—์„œ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ๊ดœ์ฐฎ์€ ๋ฐ์ดํ„ฐ๋“ค)์„ `data/val/audio` ํด๋”์— ๋„ฃ์–ด์ฃผ์„ธ์š”.

๋˜ํ•œ,
```bash
python draw.py
```
๋ฅผ ์‹คํ–‰ ํ•˜์—ฌ ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (`draw.py`์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์••์ถ• ํ•ด์ œํ•œ ํŒŒ์ผ๋“ค๊ณผ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

Combtooth substractive synthesiser (**๊ถŒ์žฅ๋จ**)๋ฅผ ์ด์šฉํ•ด ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:
```bash
python preprocess.py -c configs/combsub.yaml
```

๋˜๋Š” Sinusoids additive synthesiser๋ฅผ ์ด์šฉํ•ด ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:
```bash
python preprocess.py -c configs/sins.yaml
```

์ „์ฒ˜๋ฆฌ ์ด์ „์— `config/<๋ชจ๋ธ ์ด๋ฆ„>.yaml`์— ์œ„์น˜ํ•œ ์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์„ค์ •์€ GTX-1660 ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋กœ 44.1khz ์ƒ˜ํ”Œ๋ง ์†๋„ synthesiser๋ฅผ ์ด์šฉํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜๊ฒŒ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋‚ด 1: ๋ชจ๋“  ์˜ค๋””์˜ค ํด๋ฆฝ์˜ ์ƒ˜ํ”Œ๋ง ์†๋„๋ฅผ yaml ์„ค์ • ํŒŒ์ผ์—์„œ ์„ค์ •ํ•œ ์†๋„์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•ด์ฃผ์„ธ์š”! ๋™์ผํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์€ ๋™์ž‘ํ•˜๋‚˜ ์ƒ˜ํ”Œ๋ง ์†๋„๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

์•ˆ๋‚ด 2: ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹์˜ ์˜ค๋””์˜ค ํด๋ฆฝ ๊ฐฏ์ˆ˜๋Š” (๋ถ„ํ• ํ•œ๋‹ค๋Š” ๊ธฐ์ค€์œผ๋กœ) 1000๊ฐœ ์ •๋„๊ฐ€ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ธด ์˜ค๋””์˜ค ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋„ฃ๋Š”๋‹ค๋ฉด ํ•™์Šต ์†๋„๋Š” ํ–ฅ์ƒ๋˜๋‚˜ ๋ชจ๋“  ์˜ค๋””์˜ค ํŒŒ์ผ์˜ ๊ธธ์ด๊ฐ€ 2์ดˆ ์ดํ•˜์ด๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋””์˜ค ํŒŒ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ๋งŽ์•„์•ผ ํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ 'cache_all_data'๋ฅผ false๋กœ ๋ฐ”๊ฟˆ์œผ๋กœ์จ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋‚ด 3: ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹์˜ ์˜ค๋””์˜ค ํด๋ฆฝ ๊ฐฏ์ˆ˜๋Š” 10๊ฐœ ์ •๋„๊ฐ€ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹์ด ๋„ˆ๋ฌด ๋งŽ์„ ๊ฒฝ์šฐ ๊ฒ€์ฆ ๊ณผ์ •์—์„œ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋‹ˆ ์กฐ์ ˆํ•ด์„œ ๋„ฃ์–ด์ฃผ์„ธ์š”.

์•ˆ๋‚ด 4: ๋ฐ์ดํ„ฐ์…‹์ด ๋†’์€ ํ’ˆ์งˆ์ด ์•„๋‹ ๊ฒฝ์šฐ ์„ค์ • ํŒŒ์ผ์—์„œ 'f0_extractor'๋ฅผ 'crepe'๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”. Crepe ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์†Œ์Œ ์–ต์ œ์— ํŠนํ™”๋˜์–ด ์žˆ์œผ๋‚˜ ๋ฐ์–ดํ„ฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ๋‹ค์ค‘ Speaker ํ•™์Šต์„ ์ด์ œ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ • ํŒŒ์ผ์˜ 'n_spk' ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค์ค‘ Speaker ๋ชจ๋ธ์ธ์ง€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. **๋‹ค์ค‘ Speaker** ๋ชจ๋ธ๋กœ ํ•™์Šตํ•˜๊ณ  ์‹ถ์€์‹  ๊ฒฝ์šฐ ์Œ์„ฑ ํด๋” ์ด๋ฆ„์ด **์–‘์ˆ˜์—ฌ์•ผ ํ•˜๋ฉฐ Speaker์˜ ID๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” 'n_spk'์˜ ์ˆ˜๋ณด๋‹ค ํฌ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.** ํด๋” ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:

```bash
# ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹
# ์ฒซ๋ฒˆ์งธ Speaker
data/train/audio/1/aaa.wav
data/train/audio/1/bbb.wav
...
# ๋‘๋ฒˆ์งธ Speaker
data/train/audio/2/ccc.wav
data/train/audio/2/ddd.wav
...

# ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹
# ์ฒซ๋ฒˆ์งธ Speaker
data/val/audio/1/eee.wav
data/val/audio/1/fff.wav
...
# ๋‘๋ฒˆ์งธ Speaker
data/val/audio/2/ggg.wav
data/val/audio/2/hhh.wav
...
```
'n_spk' = 1์ธ ๊ฒฝ์šฐ **1์ธ Speaker** ๋ชจ๋ธ์— ๋Œ€ํ•œ ํด๋” ๊ตฌ์กฐ๋„ ์ง€์›ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

```bash
# ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹
data/train/audio/aaa.wav
data/train/audio/bbb.wav
...
# ๊ฒ€์ฆ ๋ฐ์ดํ„ฐ์…‹
data/val/audio/ccc.wav
data/val/audio/ddd.wav
...
```

## 4. ํ•™์Šต์‹œํ‚ค๊ธฐ
```bash
# combsub ๋ชจ๋ธ์„ ํ•™์Šต์‹œํ‚จ๋‹ค๋Š” ์˜ˆ
python train.py -c configs/combsub.yaml
```
๋‹ค๋ฅธ ๋ชจ๋ธ๋“ค์„ ํ•™์Šตํ•  ๋•Œ์—๋„ ๋ช…๋ น์€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์ค‘๋„์— ํ•™์Šต์„ ์ผ์‹œ ์ค‘๋‹จ ํ•˜์…”๋„ ์•ˆ์ „ํ•˜๋ฉฐ ๋™์ผํ•œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ด ๋‹ค์‹œ ํ•™์Šต์„ ์ด์–ด๊ฐ€์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ์ง„ํ–‰ ๋„์ค‘ ์ผ์‹œ ์ค‘๋‹จํ•˜์—ฌ ์ƒˆ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ•™์Šต ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•œ ๋’ค (batchsize, lr ๋“ฑ) ๋™์ผํ•œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ด ๋ชจ๋ธ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

## 5. ์‹œ๊ฐํ™”
```bash
# TensorBoard๋ฅผ ์ด์šฉํ•ด ํ•™์Šต ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ
tensorboard --logdir=exp
```
ํ…Œ์ŠคํŠธ ์Œ์„ฑ ์ƒ˜ํ”Œ๋“ค์€ ์ฒซ ๊ฒ€์ฆ ์ดํ›„ TensorBoard์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์•ˆ๋‚ด: TensorBoard์— ํ‘œ์‹œ๋˜๋Š” ํ…Œ์ŠคํŠธ ์Œ์„ฑ ์ƒ˜ํ”Œ๋“ค์€ DDSP-SVC ๋ชจ๋ธ์„ ํ†ตํ•œ ์ถœ๋ ฅ๋ฌผ์ด๋ฉฐ Enhancer๋ฅผ ํ†ตํ•ด ํ–ฅ์ƒ๋œ ์Œ์„ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค. Enhancer๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•ฉ์„ฑ ๊ฒฐ๊ณผ๋ฌผ์„ ํ…Œ์ŠคํŠธ ํ•˜๊ณ  ์‹ถ์œผ์‹  ๊ฒฝ์šฐ ์•„๋ž˜ ๋‚ด์šฉ์— ์„ค๋ช…๋œ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.
## 6. ๋น„์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋ณ€ํ™˜์„ ํ•  ๊ฒฝ์šฐ

(**์ถ”์ฒœ๋จ**) ์‚ฌ์ „ ํ•™์Šต๋œ ๋ณด์ฝ”๋” ๊ธฐ๋ฐ˜ Enhancer๋ฅผ ์ด์šฉํ•ด ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ:
```bash
# enhancer_message_key = 0(๊ธฐ๋ณธ๊ฐ’)์ธ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ์Œ์„ฑ ๋ฒ”์œ„์—์„œ ๋†’์€ ์˜ค๋””์˜ค ํ’ˆ์งˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
# enhancer_adaptive_key ์„ 0 ์ด์ƒ์œผ๋กœ ์„ค์ •ํ•˜์—ฌ Enhancer๋ฅผ ๋” ๋†’์€ ์Œ์—ญ์œผ๋กœ ์ ์šฉ์‹œํ‚ต๋‹ˆ๋‹ค.
python main.py -i <์ž…๋ ฅ.wav> -m <๋ชจ๋ธํŒŒ์ผ.pt> -o <์ถœ๋ ฅ.wav> -k <ํ‚ค ๋ณ€๊ฒฝ (๋ฐ˜์Œ)> -id <speaker ์•„์ด๋””> -eak <enhancer_adaptive_key (๋ฐ˜์Œ)>
```

DDSP์˜ ๋‚ (Raw) ์ถœ๋ ฅ๋ฌผ:
```bash
# ๋น ๋ฅด์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์€ ํ’ˆ์งˆ (TensorBoard์—์„œ ๋“ค์œผ์‹œ๋Š”๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.)
python main.py -i <์ž…๋ ฅ.wav> -m <๋ชจ๋ธํŒŒ์ผ.pt> -o <์ถœ๋ ฅ.wav> -k <ํ‚ค ๋ณ€๊ฒฝ (๋ฐ˜์Œ)> -id <speaker ์•„์ด๋””> -e false
```

f0 ์ถ”์ถœ๊ณผ ์‘๋‹ต ์ž„๊ณ„๊ฐ’์— ๋Œ€ํ•œ ๊ธฐํƒ€ ์˜ต์…˜์€ ๋„์›€๋ง์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.
```bash
python main.py -h
```

(์—…๋ฐ์ดํŠธ) ๋‹ค์ค‘ Speaker๊ฐ€ ์ด์ œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. "-mix" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์Œ์ƒ‰์„ ๋””์ž์ธํ•˜์‹ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•„๋ž˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:
```bash
# ์ฒซ๋ฒˆ์งธ Speaker์™€ ๋‘๋ฒˆ์งธ Speaker์˜ ์Œ์ƒ‰์„ 0.5, 0.5 ๋น„์œจ๋กœ ํ˜ผํ•ฉํ•ฉ๋‹ˆ๋‹ค
python main.py -i <์ž…๋ ฅ.wav> -m <๋ชจ๋ธํŒŒ์ผ.pt> -o <์ถœ๋ ฅ.wav> -k <ํ‚ค ๋ณ€๊ฒฝ (๋ฐ˜์Œ)> -mix "{1:0.5, 2:0.5}" -eak 0
```

## 7. ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋ณ€ํ™˜์„ ํ•  ๊ฒฝ์šฐ
๋‹ค์Œ ๋ช…๋ น์„ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ GUI๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:
```bash
python gui.py
```
ํ”„๋ก ํŠธ์—”๋“œ์—์„œ๋Š” ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ, ํฌ๋กœ์Šค ํŽ˜์ด๋”ฉ, SOLA ๊ธฐ๋ฐ˜ ์Šคํ”Œ๋ผ์ด์‹ฑ ๋ฐ contextual semantic ์ฐธ์กฐ์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค ์ ์œ ๋กœ ๋น„์‹ค์‹œ๊ฐ„ ํ•ฉ์„ฑ์— ๊ฐ€๊นŒ์šด ์Œ์งˆ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: Phase ๋ณด์ฝ”๋” ๊ธฐ๋ฐ˜์˜ ์Šคํ”Œ๋ผ์ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ SOLA ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด๋ฏธ ์Šคํ”Œ๋ผ์ด์‹ฑ ์Œ์งˆ์ด ์ถฉ๋ถ„ํžˆ ๋†’์•„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™” ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทน๋„์˜ ์ €์ง€์—ฐ ์‹ค์‹œ๊ฐ„ ์Œ์งˆ์„ ์ถ”๊ตฌํ•˜์‹ ๋‹ค๋ฉด ํ™œ์„ฑํ™” ํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์กฐ์ •ํ•ด๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์Œ์งˆ์ด ๋” ๋†’์•„์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ์—์„œ ํฌ๋กœ์Šค ํŽ˜์ด๋“œ ์‹œ๊ฐ„์ด 0.1์ดˆ๋ณด๋‹ค ๊ธธ๋ฉด Phase ๋ณด์ฝ”๋”๊ฐ€ ์Œ์งˆ์„ ํฌ๊ฒŒ ์ €ํ•˜์‹œํ‚ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

## 8. ์ฐธ๊ณ 
* [ddsp](https://github.com/magenta/ddsp)
* [pc-ddsp](https://github.com/yxlllc/pc-ddsp)
* [soft-vc](https://github.com/bshall/soft-vc)
* [DiffSinger (OpenVPI version)](https://github.com/openvpi/DiffSinger)