Spaces:
Running
Running
Commit
·
8a3bb8f
1
Parent(s):
30c1b93
Update dataset to use range for num effects
Browse files- README.md +8 -14
- cfg/config.yaml +14 -19
- cfg/exp/default.yaml +4 -9
- cfg/exp/dist.yaml +3 -4
- remfx/datasets.py +43 -37
- setup.py +0 -1
README.md
CHANGED
|
@@ -20,36 +20,30 @@
|
|
| 20 |
|
| 21 |
## Experiments
|
| 22 |
Training parameters can be configured in `cfg/exp/default.yaml`. Here are some descriptions
|
| 23 |
-
- `
|
| 24 |
-
- `
|
| 25 |
- `model={model}` architecture to use (see 'Models')
|
| 26 |
-
- `
|
| 27 |
-
- `effects_to_remove={effect}` Effects to remove (see 'Effects')
|
| 28 |
- `accelerator=null/'gpu'` Use GPU (1 device) (default: null)
|
| 29 |
- `render_files=True/False` Render files. Disable to skip rendering stage (default: True)
|
| 30 |
- `render_root={path/to/dir}`. Root directory to render files to (default: DATASET_ROOT)
|
| 31 |
|
| 32 |
-
Note that "kept effects" are calculated from the difference between `effects_to_use` and `effects_to_remove`.
|
| 33 |
-
|
| 34 |
These can also be specified on the command line.
|
| 35 |
-
Example: `python scripts/train.py model=demucs "effects_to_use=[distortion, reverb, chorus]" "effects_to_remove=[distortion]" max_kept_effects=2 max_removed_effects=4 shuffle_kept_effects=False shuffle_removed_effects=True accelerator='gpu' render_root=/scratch/VocalSet'`
|
| 36 |
-
|
| 37 |
-
Printout:
|
| 38 |
-
```
|
| 39 |
-
Effect Summary:
|
| 40 |
-
Apply kept effects: ['chorus', 'reverb'] (Up to 2, chosen in order) -> Dry
|
| 41 |
-
Apply remove effects: ['distortion'] (Up to 4, chosen randomly) -> Wet
|
| 42 |
-
```
|
| 43 |
|
| 44 |
## Models
|
| 45 |
- `umx`
|
| 46 |
- `demucs`
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
## Effects
|
| 49 |
- `chorus`
|
| 50 |
- `compressor`
|
| 51 |
- `distortion`
|
| 52 |
- `reverb`
|
|
|
|
| 53 |
|
| 54 |
## Misc.
|
| 55 |
By default, files are rendered to `input_dir / processed / {string_of_effects} / {train|val|test}`.
|
|
|
|
| 20 |
|
| 21 |
## Experiments
|
| 22 |
Training parameters can be configured in `cfg/exp/default.yaml`. Here are some descriptions
|
| 23 |
+
- `num_kept_effects={min, max}` range of <b> Kept </b> effects to apply to each file.
|
| 24 |
+
- `num_removed_effects={min, max}` range of <b> Removed </b> effects to apply to each file.
|
| 25 |
- `model={model}` architecture to use (see 'Models')
|
| 26 |
+
- `effects_to_keek={effect}` Effects to apply but not remove (see 'Effects')
|
| 27 |
+
- `effects_to_remove={effect}` Effects to remove (see 'Effects')
|
| 28 |
- `accelerator=null/'gpu'` Use GPU (1 device) (default: null)
|
| 29 |
- `render_files=True/False` Render files. Disable to skip rendering stage (default: True)
|
| 30 |
- `render_root={path/to/dir}`. Root directory to render files to (default: DATASET_ROOT)
|
| 31 |
|
|
|
|
|
|
|
| 32 |
These can also be specified on the command line.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
## Models
|
| 35 |
- `umx`
|
| 36 |
- `demucs`
|
| 37 |
+
- `tcn`
|
| 38 |
+
- `dcunet`
|
| 39 |
+
- `dptnet`
|
| 40 |
|
| 41 |
## Effects
|
| 42 |
- `chorus`
|
| 43 |
- `compressor`
|
| 44 |
- `distortion`
|
| 45 |
- `reverb`
|
| 46 |
+
- `delay`
|
| 47 |
|
| 48 |
## Misc.
|
| 49 |
By default, files are rendered to `input_dir / processed / {string_of_effects} / {train|val|test}`.
|
cfg/config.yaml
CHANGED
|
@@ -14,23 +14,18 @@ accelerator: null
|
|
| 14 |
log_audio: True
|
| 15 |
|
| 16 |
# Effects
|
| 17 |
-
|
| 18 |
-
|
| 19 |
shuffle_kept_effects: True
|
| 20 |
shuffle_removed_effects: False
|
| 21 |
num_classes: 5
|
| 22 |
-
|
| 23 |
-
- compressor
|
| 24 |
-
- distortion
|
| 25 |
- reverb
|
| 26 |
- chorus
|
| 27 |
- delay
|
| 28 |
effects_to_remove:
|
| 29 |
- compressor
|
| 30 |
- distortion
|
| 31 |
-
- reverb
|
| 32 |
-
- chorus
|
| 33 |
-
- delay
|
| 34 |
|
| 35 |
callbacks:
|
| 36 |
model_checkpoint:
|
|
@@ -62,10 +57,10 @@ datamodule:
|
|
| 62 |
chunk_size: ${chunk_size}
|
| 63 |
mode: "train"
|
| 64 |
effect_modules: ${effects}
|
| 65 |
-
|
| 66 |
effects_to_remove: ${effects_to_remove}
|
| 67 |
-
|
| 68 |
-
|
| 69 |
shuffle_kept_effects: ${shuffle_kept_effects}
|
| 70 |
shuffle_removed_effects: ${shuffle_removed_effects}
|
| 71 |
render_files: ${render_files}
|
|
@@ -78,10 +73,10 @@ datamodule:
|
|
| 78 |
chunk_size: ${chunk_size}
|
| 79 |
mode: "val"
|
| 80 |
effect_modules: ${effects}
|
| 81 |
-
|
| 82 |
effects_to_remove: ${effects_to_remove}
|
| 83 |
-
|
| 84 |
-
|
| 85 |
shuffle_kept_effects: ${shuffle_kept_effects}
|
| 86 |
shuffle_removed_effects: ${shuffle_removed_effects}
|
| 87 |
render_files: ${render_files}
|
|
@@ -94,10 +89,10 @@ datamodule:
|
|
| 94 |
chunk_size: ${chunk_size}
|
| 95 |
mode: "test"
|
| 96 |
effect_modules: ${effects}
|
| 97 |
-
|
| 98 |
effects_to_remove: ${effects_to_remove}
|
| 99 |
-
|
| 100 |
-
|
| 101 |
shuffle_kept_effects: ${shuffle_kept_effects}
|
| 102 |
shuffle_removed_effects: ${shuffle_removed_effects}
|
| 103 |
render_files: ${render_files}
|
|
@@ -121,11 +116,11 @@ trainer:
|
|
| 121 |
_target_: pytorch_lightning.Trainer
|
| 122 |
precision: 32 # Precision used for tensors, default `32`
|
| 123 |
min_epochs: 0
|
| 124 |
-
|
| 125 |
enable_model_summary: False
|
| 126 |
log_every_n_steps: 1 # Logs metrics every N batches
|
| 127 |
accumulate_grad_batches: 1
|
| 128 |
accelerator: ${accelerator}
|
| 129 |
devices: 1
|
| 130 |
gradient_clip_val: 10.0
|
| 131 |
-
|
|
|
|
| 14 |
log_audio: True
|
| 15 |
|
| 16 |
# Effects
|
| 17 |
+
num_kept_effects: [2,2] # [min, max]
|
| 18 |
+
num_removed_effects: [2,2] # [min, max]
|
| 19 |
shuffle_kept_effects: True
|
| 20 |
shuffle_removed_effects: False
|
| 21 |
num_classes: 5
|
| 22 |
+
effects_to_keep:
|
|
|
|
|
|
|
| 23 |
- reverb
|
| 24 |
- chorus
|
| 25 |
- delay
|
| 26 |
effects_to_remove:
|
| 27 |
- compressor
|
| 28 |
- distortion
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
callbacks:
|
| 31 |
model_checkpoint:
|
|
|
|
| 57 |
chunk_size: ${chunk_size}
|
| 58 |
mode: "train"
|
| 59 |
effect_modules: ${effects}
|
| 60 |
+
effects_to_keep: ${effects_to_keep}
|
| 61 |
effects_to_remove: ${effects_to_remove}
|
| 62 |
+
num_kept_effects: ${num_kept_effects}
|
| 63 |
+
num_removed_effects: ${num_removed_effects}
|
| 64 |
shuffle_kept_effects: ${shuffle_kept_effects}
|
| 65 |
shuffle_removed_effects: ${shuffle_removed_effects}
|
| 66 |
render_files: ${render_files}
|
|
|
|
| 73 |
chunk_size: ${chunk_size}
|
| 74 |
mode: "val"
|
| 75 |
effect_modules: ${effects}
|
| 76 |
+
effects_to_keep: ${effects_to_keep}
|
| 77 |
effects_to_remove: ${effects_to_remove}
|
| 78 |
+
num_kept_effects: ${num_kept_effects}
|
| 79 |
+
num_removed_effects: ${num_removed_effects}
|
| 80 |
shuffle_kept_effects: ${shuffle_kept_effects}
|
| 81 |
shuffle_removed_effects: ${shuffle_removed_effects}
|
| 82 |
render_files: ${render_files}
|
|
|
|
| 89 |
chunk_size: ${chunk_size}
|
| 90 |
mode: "test"
|
| 91 |
effect_modules: ${effects}
|
| 92 |
+
effects_to_keep: ${effects_to_keep}
|
| 93 |
effects_to_remove: ${effects_to_remove}
|
| 94 |
+
num_kept_effects: ${num_kept_effects}
|
| 95 |
+
num_removed_effects: ${num_removed_effects}
|
| 96 |
shuffle_kept_effects: ${shuffle_kept_effects}
|
| 97 |
shuffle_removed_effects: ${shuffle_removed_effects}
|
| 98 |
render_files: ${render_files}
|
|
|
|
| 116 |
_target_: pytorch_lightning.Trainer
|
| 117 |
precision: 32 # Precision used for tensors, default `32`
|
| 118 |
min_epochs: 0
|
| 119 |
+
num_epochs: -1
|
| 120 |
enable_model_summary: False
|
| 121 |
log_every_n_steps: 1 # Logs metrics every N batches
|
| 122 |
accumulate_grad_batches: 1
|
| 123 |
accelerator: ${accelerator}
|
| 124 |
devices: 1
|
| 125 |
gradient_clip_val: 10.0
|
| 126 |
+
num_steps: 50000
|
cfg/exp/default.yaml
CHANGED
|
@@ -11,23 +11,18 @@ render_root: "./data"
|
|
| 11 |
accelerator: null
|
| 12 |
log_audio: True
|
| 13 |
# Effects
|
| 14 |
-
|
| 15 |
-
|
| 16 |
shuffle_kept_effects: True
|
| 17 |
shuffle_removed_effects: False
|
| 18 |
num_classes: 5
|
| 19 |
-
|
| 20 |
-
- compressor
|
| 21 |
-
- distortion
|
| 22 |
-
- reverb
|
| 23 |
-
- chorus
|
| 24 |
-
- delay
|
| 25 |
effects_to_remove:
|
| 26 |
- compressor
|
| 27 |
-
- distortion
|
| 28 |
- reverb
|
| 29 |
- chorus
|
| 30 |
- delay
|
|
|
|
| 31 |
datamodule:
|
| 32 |
batch_size: 16
|
| 33 |
num_workers: 8
|
|
|
|
| 11 |
accelerator: null
|
| 12 |
log_audio: True
|
| 13 |
# Effects
|
| 14 |
+
num_kept_effects: [0,0] # [min, max]
|
| 15 |
+
num_removed_effects: [0,5] # [min, max]
|
| 16 |
shuffle_kept_effects: True
|
| 17 |
shuffle_removed_effects: False
|
| 18 |
num_classes: 5
|
| 19 |
+
effects_to_keep:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
effects_to_remove:
|
| 21 |
- compressor
|
|
|
|
| 22 |
- reverb
|
| 23 |
- chorus
|
| 24 |
- delay
|
| 25 |
+
- distortion
|
| 26 |
datamodule:
|
| 27 |
batch_size: 16
|
| 28 |
num_workers: 8
|
cfg/exp/dist.yaml
CHANGED
|
@@ -11,14 +11,13 @@ render_root: "/scratch/EffectSet"
|
|
| 11 |
accelerator: "gpu"
|
| 12 |
log_audio: True
|
| 13 |
# Effects
|
| 14 |
-
|
| 15 |
-
|
| 16 |
shuffle_kept_effects: True
|
| 17 |
shuffle_removed_effects: False
|
| 18 |
num_classes: 5
|
| 19 |
-
|
| 20 |
- compressor
|
| 21 |
-
- distortion
|
| 22 |
- reverb
|
| 23 |
- chorus
|
| 24 |
- delay
|
|
|
|
| 11 |
accelerator: "gpu"
|
| 12 |
log_audio: True
|
| 13 |
# Effects
|
| 14 |
+
num_kept_effects: [0,4] # [min, max]
|
| 15 |
+
num_removed_effects: [1,1] # [min, max]
|
| 16 |
shuffle_kept_effects: True
|
| 17 |
shuffle_removed_effects: False
|
| 18 |
num_classes: 5
|
| 19 |
+
effects_to_keep:
|
| 20 |
- compressor
|
|
|
|
| 21 |
- reverb
|
| 22 |
- chorus
|
| 23 |
- delay
|
remfx/datasets.py
CHANGED
|
@@ -9,8 +9,7 @@ import random
|
|
| 9 |
from tqdm import tqdm
|
| 10 |
from pathlib import Path
|
| 11 |
from remfx import effects
|
| 12 |
-
from
|
| 13 |
-
from typing import Any, List, Dict
|
| 14 |
from torch.utils.data import Dataset, DataLoader
|
| 15 |
from remfx.utils import select_random_chunk
|
| 16 |
|
|
@@ -155,10 +154,10 @@ class EffectDataset(Dataset):
|
|
| 155 |
chunk_size: int = 262144,
|
| 156 |
total_chunks: int = 1000,
|
| 157 |
effect_modules: List[Dict[str, torch.nn.Module]] = None,
|
| 158 |
-
|
| 159 |
effects_to_remove: List[str] = None,
|
| 160 |
-
|
| 161 |
-
|
| 162 |
shuffle_kept_effects: bool = True,
|
| 163 |
shuffle_removed_effects: bool = False,
|
| 164 |
render_files: bool = True,
|
|
@@ -174,16 +173,16 @@ class EffectDataset(Dataset):
|
|
| 174 |
self.total_chunks = total_chunks
|
| 175 |
self.sample_rate = sample_rate
|
| 176 |
self.mode = mode
|
| 177 |
-
self.
|
| 178 |
-
self.
|
| 179 |
-
self.
|
| 180 |
-
self.effects_to_remove = effects_to_remove
|
| 181 |
self.normalize = effects.LoudnessNormalize(sample_rate, target_lufs_db=-20)
|
| 182 |
self.effects = effect_modules
|
| 183 |
self.shuffle_kept_effects = shuffle_kept_effects
|
| 184 |
self.shuffle_removed_effects = shuffle_removed_effects
|
| 185 |
-
effects_string = "_".join(self.
|
| 186 |
-
self.
|
| 187 |
self.proc_root = self.render_root / "processed" / effects_string / self.mode
|
| 188 |
|
| 189 |
self.files = locate_files(self.root, self.mode)
|
|
@@ -251,7 +250,7 @@ class EffectDataset(Dataset):
|
|
| 251 |
f"Effect {effect} not found in ALL_EFFECTS. "
|
| 252 |
f"Please choose from {ALL_EFFECTS}"
|
| 253 |
)
|
| 254 |
-
for effect in self.
|
| 255 |
if effect not in self.effects.keys():
|
| 256 |
raise ValueError(
|
| 257 |
f"Effect {effect} not found in self.effects. "
|
|
@@ -263,27 +262,37 @@ class EffectDataset(Dataset):
|
|
| 263 |
f"Effect {effect} not found in self.effects. "
|
| 264 |
f"Please choose from {self.effects.keys()}"
|
| 265 |
)
|
| 266 |
-
kept_fx = list(
|
| 267 |
-
OrderedSet(self.effects_to_use) - OrderedSet(self.effects_to_remove)
|
| 268 |
-
)
|
| 269 |
kept_str = "randomly" if self.shuffle_kept_effects else "in order"
|
| 270 |
-
rem_fx = self.effects_to_remove
|
| 271 |
rem_str = "randomly" if self.shuffle_removed_effects else "in order"
|
| 272 |
-
if self.
|
| 273 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
else:
|
| 275 |
-
num_kept_str =
|
| 276 |
-
|
| 277 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
else:
|
| 279 |
-
num_rem_str =
|
| 280 |
-
|
|
|
|
|
|
|
|
|
|
| 281 |
print(
|
| 282 |
f"Effect Summary: \n"
|
| 283 |
f"Apply kept effects: {kept_fx} ({num_kept_str}, chosen {kept_str}) -> Dry\n"
|
| 284 |
f"Apply remove effects: {rem_fx} ({num_rem_str}, chosen {rem_str}) -> Wet\n"
|
| 285 |
)
|
| 286 |
-
return kept_fx
|
| 287 |
|
| 288 |
def process_effects(self, dry: torch.Tensor):
|
| 289 |
# Apply Kept Effects
|
|
@@ -293,13 +302,10 @@ class EffectDataset(Dataset):
|
|
| 293 |
else:
|
| 294 |
effect_indices = torch.arange(len(self.effects_to_keep))
|
| 295 |
|
| 296 |
-
|
| 297 |
-
|
| 298 |
-
|
| 299 |
-
else:
|
| 300 |
-
num_kept_effects = len(self.effects_to_keep)
|
| 301 |
effect_indices = effect_indices[:num_kept_effects]
|
| 302 |
-
|
| 303 |
# Index in effect settings
|
| 304 |
effect_names_to_apply = [self.effects_to_keep[i] for i in effect_indices]
|
| 305 |
effects_to_apply = [self.effects[i] for i in effect_names_to_apply]
|
|
@@ -312,22 +318,19 @@ class EffectDataset(Dataset):
|
|
| 312 |
|
| 313 |
# Apply effects_to_remove
|
| 314 |
# Shuffle effects if specified
|
| 315 |
-
wet = torch.clone(dry)
|
| 316 |
if self.shuffle_removed_effects:
|
| 317 |
effect_indices = torch.randperm(len(self.effects_to_remove))
|
| 318 |
else:
|
| 319 |
effect_indices = torch.arange(len(self.effects_to_remove))
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
num_removed_effects = len(self.effects_to_remove)
|
| 325 |
effect_indices = effect_indices[:num_removed_effects]
|
| 326 |
# Index in effect settings
|
| 327 |
effect_names_to_apply = [self.effects_to_remove[i] for i in effect_indices]
|
| 328 |
effects_to_apply = [self.effects[i] for i in effect_names_to_apply]
|
| 329 |
# Apply
|
| 330 |
-
|
| 331 |
wet_labels = []
|
| 332 |
for effect in effects_to_apply:
|
| 333 |
# Normalize in-between effects
|
|
@@ -346,7 +349,10 @@ class EffectDataset(Dataset):
|
|
| 346 |
# Normalize
|
| 347 |
normalized_dry = self.normalize(dry)
|
| 348 |
normalized_wet = self.normalize(wet)
|
|
|
|
|
|
|
| 349 |
|
|
|
|
| 350 |
return normalized_dry, normalized_wet, dry_labels_tensor, wet_labels_tensor
|
| 351 |
|
| 352 |
|
|
|
|
| 9 |
from tqdm import tqdm
|
| 10 |
from pathlib import Path
|
| 11 |
from remfx import effects
|
| 12 |
+
from typing import Any, List, Dict, Tuple
|
|
|
|
| 13 |
from torch.utils.data import Dataset, DataLoader
|
| 14 |
from remfx.utils import select_random_chunk
|
| 15 |
|
|
|
|
| 154 |
chunk_size: int = 262144,
|
| 155 |
total_chunks: int = 1000,
|
| 156 |
effect_modules: List[Dict[str, torch.nn.Module]] = None,
|
| 157 |
+
effects_to_keep: List[str] = None,
|
| 158 |
effects_to_remove: List[str] = None,
|
| 159 |
+
num_kept_effects: List[int] = [1, 5],
|
| 160 |
+
num_removed_effects: List[int] = [1, 5],
|
| 161 |
shuffle_kept_effects: bool = True,
|
| 162 |
shuffle_removed_effects: bool = False,
|
| 163 |
render_files: bool = True,
|
|
|
|
| 173 |
self.total_chunks = total_chunks
|
| 174 |
self.sample_rate = sample_rate
|
| 175 |
self.mode = mode
|
| 176 |
+
self.num_kept_effects = num_kept_effects
|
| 177 |
+
self.num_removed_effects = num_removed_effects
|
| 178 |
+
self.effects_to_keep = [] if effects_to_keep == None else effects_to_keep
|
| 179 |
+
self.effects_to_remove = [] if effects_to_remove == None else effects_to_remove
|
| 180 |
self.normalize = effects.LoudnessNormalize(sample_rate, target_lufs_db=-20)
|
| 181 |
self.effects = effect_modules
|
| 182 |
self.shuffle_kept_effects = shuffle_kept_effects
|
| 183 |
self.shuffle_removed_effects = shuffle_removed_effects
|
| 184 |
+
effects_string = "_".join(self.effects_to_keep + ["_"] + self.effects_to_remove)
|
| 185 |
+
self.validate_effect_input()
|
| 186 |
self.proc_root = self.render_root / "processed" / effects_string / self.mode
|
| 187 |
|
| 188 |
self.files = locate_files(self.root, self.mode)
|
|
|
|
| 250 |
f"Effect {effect} not found in ALL_EFFECTS. "
|
| 251 |
f"Please choose from {ALL_EFFECTS}"
|
| 252 |
)
|
| 253 |
+
for effect in self.effects_to_keep:
|
| 254 |
if effect not in self.effects.keys():
|
| 255 |
raise ValueError(
|
| 256 |
f"Effect {effect} not found in self.effects. "
|
|
|
|
| 262 |
f"Effect {effect} not found in self.effects. "
|
| 263 |
f"Please choose from {self.effects.keys()}"
|
| 264 |
)
|
|
|
|
|
|
|
|
|
|
| 265 |
kept_str = "randomly" if self.shuffle_kept_effects else "in order"
|
|
|
|
| 266 |
rem_str = "randomly" if self.shuffle_removed_effects else "in order"
|
| 267 |
+
if self.num_kept_effects[0] > self.num_kept_effects[1]:
|
| 268 |
+
raise ValueError(
|
| 269 |
+
f"num_kept_effects must be a tuple of (min, max). "
|
| 270 |
+
f"Got {self.num_kept_effects}"
|
| 271 |
+
)
|
| 272 |
+
if self.num_kept_effects[0] == self.num_kept_effects[1]:
|
| 273 |
+
num_kept_str = f"{self.num_kept_effects[0]}"
|
| 274 |
else:
|
| 275 |
+
num_kept_str = (
|
| 276 |
+
f"Between {self.num_kept_effects[0]}-{self.num_kept_effects[1]}"
|
| 277 |
+
)
|
| 278 |
+
if self.num_removed_effects[0] > self.num_removed_effects[1]:
|
| 279 |
+
raise ValueError(
|
| 280 |
+
f"num_removed_effects must be a tuple of (min, max). "
|
| 281 |
+
f"Got {self.num_removed_effects}"
|
| 282 |
+
)
|
| 283 |
+
if self.num_removed_effects[0] == self.num_removed_effects[1]:
|
| 284 |
+
num_rem_str = f"{self.num_removed_effects[0]}"
|
| 285 |
else:
|
| 286 |
+
num_rem_str = (
|
| 287 |
+
f"Between {self.num_removed_effects[0]}-{self.num_removed_effects[1]}"
|
| 288 |
+
)
|
| 289 |
+
rem_fx = self.effects_to_remove
|
| 290 |
+
kept_fx = self.effects_to_keep
|
| 291 |
print(
|
| 292 |
f"Effect Summary: \n"
|
| 293 |
f"Apply kept effects: {kept_fx} ({num_kept_str}, chosen {kept_str}) -> Dry\n"
|
| 294 |
f"Apply remove effects: {rem_fx} ({num_rem_str}, chosen {rem_str}) -> Wet\n"
|
| 295 |
)
|
|
|
|
| 296 |
|
| 297 |
def process_effects(self, dry: torch.Tensor):
|
| 298 |
# Apply Kept Effects
|
|
|
|
| 302 |
else:
|
| 303 |
effect_indices = torch.arange(len(self.effects_to_keep))
|
| 304 |
|
| 305 |
+
r1 = self.num_kept_effects[0]
|
| 306 |
+
r2 = self.num_kept_effects[1]
|
| 307 |
+
num_kept_effects = torch.round((r1 - r2) * torch.rand(1) + r2).int()
|
|
|
|
|
|
|
| 308 |
effect_indices = effect_indices[:num_kept_effects]
|
|
|
|
| 309 |
# Index in effect settings
|
| 310 |
effect_names_to_apply = [self.effects_to_keep[i] for i in effect_indices]
|
| 311 |
effects_to_apply = [self.effects[i] for i in effect_names_to_apply]
|
|
|
|
| 318 |
|
| 319 |
# Apply effects_to_remove
|
| 320 |
# Shuffle effects if specified
|
|
|
|
| 321 |
if self.shuffle_removed_effects:
|
| 322 |
effect_indices = torch.randperm(len(self.effects_to_remove))
|
| 323 |
else:
|
| 324 |
effect_indices = torch.arange(len(self.effects_to_remove))
|
| 325 |
+
wet = torch.clone(dry)
|
| 326 |
+
r1 = self.num_removed_effects[0]
|
| 327 |
+
r2 = self.num_removed_effects[1]
|
| 328 |
+
num_removed_effects = torch.round((r1 - r2) * torch.rand(1) + r2).int()
|
|
|
|
| 329 |
effect_indices = effect_indices[:num_removed_effects]
|
| 330 |
# Index in effect settings
|
| 331 |
effect_names_to_apply = [self.effects_to_remove[i] for i in effect_indices]
|
| 332 |
effects_to_apply = [self.effects[i] for i in effect_names_to_apply]
|
| 333 |
# Apply
|
|
|
|
| 334 |
wet_labels = []
|
| 335 |
for effect in effects_to_apply:
|
| 336 |
# Normalize in-between effects
|
|
|
|
| 349 |
# Normalize
|
| 350 |
normalized_dry = self.normalize(dry)
|
| 351 |
normalized_wet = self.normalize(wet)
|
| 352 |
+
print(dry_labels_tensor, wet_labels_tensor)
|
| 353 |
+
import pdb
|
| 354 |
|
| 355 |
+
pdb.set_trace()
|
| 356 |
return normalized_dry, normalized_wet, dry_labels_tensor, wet_labels_tensor
|
| 357 |
|
| 358 |
|
setup.py
CHANGED
|
@@ -47,7 +47,6 @@ setup(
|
|
| 47 |
"pyloudnorm",
|
| 48 |
"pedalboard",
|
| 49 |
"frechet_audio_distance",
|
| 50 |
-
"ordered-set",
|
| 51 |
"asteroid",
|
| 52 |
],
|
| 53 |
include_package_data=True,
|
|
|
|
| 47 |
"pyloudnorm",
|
| 48 |
"pedalboard",
|
| 49 |
"frechet_audio_distance",
|
|
|
|
| 50 |
"asteroid",
|
| 51 |
],
|
| 52 |
include_package_data=True,
|