Repository: maxrmorrison/promonet (language: python)

Issue:
Parameter nitpicks



Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index c6562c8..8cfd8c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,3 @@ runs/
 
 *.c
 monotonic_align/monotonic_align
-
-profile.out
-profile.txt
diff --git a/README.md b/README.md
index 9872947..205d8fc 100644
--- a/README.md
+++ b/README.md
@@ -3,13 +3,11 @@
 [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
 [![Downloads](https://pepy.tech/badge/promonet)](https://pepy.tech/project/promonet) -->
 
-Official code for the paper _Adaptive End-to-End Voice Modification_
-[[paper]](https://www.maxrmorrison.com/pdfs/morrison2022adaptive.pdf)
+Official code for the paper _Adaptive Neural Speech Prosody Editing_
+[[paper]](https://www.maxrmorrison.com/pdfs/morrison2023adaptive.pdf)
 [[companion website]](https://www.maxrmorrison.com/sites/promonet/)
 
 
-TODO - sphinx documentation
-
 ## Installation
 
 ```
@@ -137,11 +135,11 @@ checkpoint = promonet.adapt.speaker(name, directory, gpus=gpus)
 audio = promonet.load.audio('test.wav')
 
 # Get prosody features to edit
-pitch, loudness = promonet.preprocess.prosody(audio, gpu=gpus[0])
+pitch, loudness = promonet.preprocess(audio, gpu=gpus[0])
 
 # (Optional) If you have the text transcript, you can edit phoneme
 #            durations using a forced alignment representation
-pitch, loudness, alignment = promonet.preprocess.prosody(
+pitch, loudness, alignment = promonet.preprocess(
     audio,
     text=promonet.load.text('test.txt'),
     gpu=gpus[0])
@@ -205,7 +203,7 @@ python -m promonet.data.download --datasets <datasets>
 Prepares features for training. Features are stored in `data/cache/`.
 
 ```
-python -m promonet.preprocess --datasets <datasets> --gpu <gpu>
+python -m promonet.data.preprocess --datasets <datasets> --gpu <gpu>
 ```
 
 
@@ -279,29 +277,21 @@ python -m promonet.evaluate \
 ```
 
 
-## Running tests
-
-```
-pip install pytest
-pytest
-```
-
-
 ## Citation
 
 ### IEEE
-M. Morrison and B. Pardo, "Adaptive End-to-End Voice Modification," Submitted
-to ICML 2022, July 2022.
+M. Morrison and B. Pardo, "Adaptive Neural Speech Prosody Editing," Submitted
+to ICML 2023, July 2023.
 
 
 ### BibTex
 
 ```
-@inproceedings{morrison2022adaptive,
-    title={Adaptive End-to-End Voice Modification},
+@inproceedings{morrison2023adaptive,
+    title={Adaptive Neural Speech Prosody Editing},
     author={Morrison, Max and Pardo, Bryan},
-    booktitle={Submitted to ICML 2022},
+    booktitle={Submitted to ICML 2023},
     month={July},
-    year={2022}
+    year={2023}
 }
 ```
diff --git a/config/ablate-mrd-ppg-latent-small.py b/config/ablate-mrd-ppg-latent-small.py
deleted file mode 100644
index 4df0c8c..0000000
--- a/config/ablate-mrd-ppg-latent-small.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'ablate-mrd-ppg-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/ablate-mrd-small.py b/config/ablate-mrd-small.py
deleted file mode 100644
index 8818297..0000000
--- a/config/ablate-mrd-small.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'ablate-mrd-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/ablate-periodicity.py b/config/ablate-periodicity.py
deleted file mode 100644
index b3d3184..0000000
--- a/config/ablate-periodicity.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Configuration name
-CONFIG = 'ablate-periodicity'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-
-###############################################################################
-# ablate-mrd-ppg-latent-small
-###############################################################################
-
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = False
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = False
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = False
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/ablate-ppg-latent-small.py b/config/ablate-ppg-latent-small.py
deleted file mode 100644
index 379abfd..0000000
--- a/config/ablate-ppg-latent-small.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'ablate-ppg-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/ppg-nearest-pitch-periodicity-loudness-small.py b/config/base-small.py
similarity index 61%
rename from config/ppg-nearest-pitch-periodicity-loudness-small.py
rename to config/base-small.py
index 1e0c943..1336c82 100644
--- a/config/ppg-nearest-pitch-periodicity-loudness-small.py
+++ b/config/base-small.py
@@ -1,5 +1,7 @@
+MODULE = 'promonet'
+
 # Configuration name
-CONFIG = 'ppg-nearest-pitch-periodicity-loudness-small'
+CONFIG = 'promonet-base-small'
 
 # Loudness features
 LOUDNESS_FEATURES = True
@@ -13,10 +15,6 @@
 # Phonemic posteriorgram conditioning
 PPG_FEATURES = True
 
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
 NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-augment-small.py b/config/conddisc-condgen-augment-small.py
similarity index 66%
rename from config/condition-both-mrd-augment-small.py
rename to config/conddisc-condgen-augment-small.py
index 061c022..3a30c02 100644
--- a/config/condition-both-mrd-augment-small.py
+++ b/config/conddisc-condgen-augment-small.py
@@ -1,5 +1,7 @@
+MODULE = 'promonet'
+
 # Configuration name
-CONFIG = 'condition-both-mrd-augment-small'
+CONFIG = 'conddisc-condgen-augment-small'
 
 # Whether to use pitch augmentation
 AUGMENT_PITCH = True
@@ -10,27 +12,33 @@
 # Discriminator periodicity conditioning
 DISCRIM_PERIODICITY_CONDITION = True
 
+# Discriminator phoneme conditioning
+DISCRIM_PHONEME_CONDITION = True
+
 # Discriminator pitch conditioning
 DISCRIM_PITCH_CONDITION = True
 
+# Discriminator augmentation ratio conditioning
+DISCRIM_RATIO_CONDITION = True
+
 # Pass loudness through the latent
 LATENT_LOUDNESS_SHORTCUT = True
 
 # Pass periodicity through the latent
 LATENT_PERIODICITY_SHORTCUT = True
 
+# Pass the phonemes through the latent
+LATENT_PHONEME_SHORTCUT = True
+
 # Pass pitch through the latent
 LATENT_PITCH_SHORTCUT = True
 
+# Pass the augmentation ratio through the latent
+LATENT_RATIO_SHORTCUT = True
+
 # Loudness features
 LOUDNESS_FEATURES = True
 
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
 # Periodicity conditioning
 PERIODICITY_FEATURES = True
 
@@ -40,10 +48,6 @@
 # Phonemic posteriorgram conditioning
 PPG_FEATURES = True
 
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
 NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-filter-clip-augment-small.py b/config/conddisc-condgen-augment-snake-small.py
similarity index 74%
rename from config/condition-both-mrd-snake-filter-clip-augment-small.py
rename to config/conddisc-condgen-augment-snake-small.py
index 14d0190..aa71d56 100644
--- a/config/condition-both-mrd-snake-filter-clip-augment-small.py
+++ b/config/conddisc-condgen-augment-snake-small.py
@@ -1,5 +1,7 @@
+MODULE = 'promonet'
+
 # Configuration name
-CONFIG = 'condition-both-mrd-snake-filter-clip-augment-small'
+CONFIG = 'conddisc-condgen-augment-snake-small'
 
 # Whether to use pitch augmentation
 AUGMENT_PITCH = True
@@ -10,9 +12,15 @@
 # Discriminator periodicity conditioning
 DISCRIM_PERIODICITY_CONDITION = True
 
+# Discriminator phoneme conditioning
+DISCRIM_PHONEME_CONDITION = True
+
 # Discriminator pitch conditioning
 DISCRIM_PITCH_CONDITION = True
 
+# Discriminator augmentation ratio conditioning
+DISCRIM_RATIO_CONDITION = True
+
 # Whether to perform gradient clipping on the generator
 GRADIENT_CLIP_GENERATOR = 1000.
 
@@ -22,18 +30,18 @@
 # Pass periodicity through the latent
 LATENT_PERIODICITY_SHORTCUT = True
 
+# Pass the phonemes through the latent
+LATENT_PHONEME_SHORTCUT = True
+
 # Pass pitch through the latent
 LATENT_PITCH_SHORTCUT = True
 
+# Pass the augmentation ratio through the latent
+LATENT_RATIO_SHORTCUT = True
+
 # Loudness features
 LOUDNESS_FEATURES = True
 
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
 # Periodicity conditioning
 PERIODICITY_FEATURES = True
 
@@ -50,9 +58,6 @@
 # Whether to use snake activation in the audio generator
 SNAKE = True
 
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
 NUM_STEPS = 100000
diff --git a/config/condition-discrim-latent-small.py b/config/conddisc-condgen-small.py
similarity index 78%
rename from config/condition-discrim-latent-small.py
rename to config/conddisc-condgen-small.py
index 9e66801..71a4cea 100644
--- a/config/condition-discrim-latent-small.py
+++ b/config/conddisc-condgen-small.py
@@ -1,5 +1,7 @@
+MODULE = 'promonet'
+
 # Configuration name
-CONFIG = 'condition-discrim-latent-small'
+CONFIG = 'conddisc-condgen-small'
 
 # Discriminator loudness conditioning
 DISCRIM_LOUDNESS_CONDITION = True
@@ -7,6 +9,9 @@
 # Discriminator periodicity conditioning
 DISCRIM_PERIODICITY_CONDITION = True
 
+# Discriminator phoneme conditioning
+DISCRIM_PHONEME_CONDITION = True
+
 # Discriminator pitch conditioning
 DISCRIM_PITCH_CONDITION = True
 
@@ -16,6 +21,9 @@
 # Pass periodicity through the latent
 LATENT_PERIODICITY_SHORTCUT = True
 
+# Pass the phonemes through the latent
+LATENT_PHONEME_SHORTCUT = True
+
 # Pass pitch through the latent
 LATENT_PITCH_SHORTCUT = True
 
@@ -31,10 +39,6 @@
 # Phonemic posteriorgram conditioning
 PPG_FEATURES = True
 
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
 NUM_STEPS = 100000
diff --git a/config/condition-discrim-small.py b/config/conddisc-small.py
similarity index 75%
rename from config/condition-discrim-small.py
rename to config/conddisc-small.py
index bcae3c2..79f2418 100644
--- a/config/condition-discrim-small.py
+++ b/config/conddisc-small.py
@@ -1,5 +1,7 @@
+MODULE = 'promonet'
+
 # Configuration name
-CONFIG = 'condition-discrim-small'
+CONFIG = 'conddisc-small'
 
 # Discriminator loudness conditioning
 DISCRIM_LOUDNESS_CONDITION = True
@@ -7,6 +9,9 @@
 # Discriminator periodicity conditioning
 DISCRIM_PERIODICITY_CONDITION = True
 
+# Discriminator phoneme conditioning
+DISCRIM_PHONEME_CONDITION = True
+
 # Discriminator pitch conditioning
 DISCRIM_PITCH_CONDITION = True
 
@@ -22,10 +27,6 @@
 # Phonemic posteriorgram conditioning
 PPG_FEATURES = True
 
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
 NUM_STEPS = 100000
diff --git a/config/condition-both-ar-8192-small.py b/config/condition-both-ar-8192-small.py
deleted file mode 100644
index c178888..0000000
--- a/config/condition-both-ar-8192-small.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-ar-8192-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-16384-small.py b/config/condition-both-mrd-16384-small.py
deleted file mode 100644
index bc7b69a..0000000
--- a/config/condition-both-mrd-16384-small.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-16384-small'
-
-# Number of samples generated during each forward pass
-CHUNK_SIZE = 16384
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-ar-16384-small.py b/config/condition-both-mrd-ar-16384-small.py
deleted file mode 100644
index 6534dbc..0000000
--- a/config/condition-both-mrd-ar-16384-small.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-ar-16384-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Number of samples generated during each forward pass
-CHUNK_SIZE = 16384
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-ar-8192-causal-all-small.py b/config/condition-both-mrd-ar-8192-causal-all-small.py
deleted file mode 100644
index 185b237..0000000
--- a/config/condition-both-mrd-ar-8192-causal-all-small.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-ar-8192-causal-all-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Whether to use causal layers for producing the latent
-CAUSAL = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-ar-8192-causal-small.py b/config/condition-both-mrd-ar-8192-causal-small.py
deleted file mode 100644
index 02283ec..0000000
--- a/config/condition-both-mrd-ar-8192-causal-small.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-ar-8192-causal-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Whether to use causal layers for producing the latent
-CAUSAL = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-ar-8192-small.py b/config/condition-both-mrd-ar-8192-small.py
deleted file mode 100644
index c603013..0000000
--- a/config/condition-both-mrd-ar-8192-small.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-ar-8192-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-ar-8192.py b/config/condition-both-mrd-ar-8192.py
deleted file mode 100644
index 7885316..0000000
--- a/config/condition-both-mrd-ar-8192.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-ar-8192'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/condition-both-mrd-ar-small.py b/config/condition-both-mrd-ar-small.py
deleted file mode 100644
index c50372e..0000000
--- a/config/condition-both-mrd-ar-small.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-ar-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Number of samples generated during each forward pass
-CHUNK_SIZE = 2048
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 300000
diff --git a/config/condition-both-mrd-mel175-small.py b/config/condition-both-mrd-mel175-small.py
deleted file mode 100644
index 307816b..0000000
--- a/config/condition-both-mrd-mel175-small.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-mel175-small'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 17.5
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-msd-ar-8192-small.py b/config/condition-both-mrd-msd-ar-8192-small.py
deleted file mode 100644
index ae393d0..0000000
--- a/config/condition-both-mrd-msd-ar-8192-small.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-msd-ar-8192-small'
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-msd-small.py b/config/condition-both-mrd-msd-small.py
deleted file mode 100644
index 2457cf2..0000000
--- a/config/condition-both-mrd-msd-small.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-msd-small'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-small.py b/config/condition-both-mrd-small.py
deleted file mode 100644
index 7bffd86..0000000
--- a/config/condition-both-mrd-small.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-small'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-augment-ar-8192-small.py b/config/condition-both-mrd-snake-augment-ar-8192-small.py
deleted file mode 100644
index 0ed3f6a..0000000
--- a/config/condition-both-mrd-snake-augment-ar-8192-small.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-augment-ar-8192-small'
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Whether to use autoregression
-AUTOREGRESSIVE = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-augment-clip-small.py b/config/condition-both-mrd-snake-augment-clip-small.py
deleted file mode 100644
index d39b32e..0000000
--- a/config/condition-both-mrd-snake-augment-clip-small.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-augment-clip-small'
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-augment-small.py b/config/condition-both-mrd-snake-augment-small.py
deleted file mode 100644
index a590e99..0000000
--- a/config/condition-both-mrd-snake-augment-small.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-augment-small'
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-augment.py b/config/condition-both-mrd-snake-augment.py
deleted file mode 100644
index df51010..0000000
--- a/config/condition-both-mrd-snake-augment.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-augment'
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Reduce batch size due to snake taking more memory
-BATCH_SIZE = 40
diff --git a/config/condition-both-mrd-snake-exact-clip-augment-small.py b/config/condition-both-mrd-snake-exact-clip-augment-small.py
deleted file mode 100644
index 7156a01..0000000
--- a/config/condition-both-mrd-snake-exact-clip-augment-small.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-filter-clip-augment-small'
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use exact filter values as BigVGan
-SNAKE_EXACT = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-filter-clip-small.py b/config/condition-both-mrd-snake-filter-clip-small.py
deleted file mode 100644
index ee2d767..0000000
--- a/config/condition-both-mrd-snake-filter-clip-small.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-filter-clip-small'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-filter-small.py b/config/condition-both-mrd-snake-filter-small.py
deleted file mode 100644
index a5051e4..0000000
--- a/config/condition-both-mrd-snake-filter-small.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-filter-small'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd-snake-small.py b/config/condition-both-mrd-snake-small.py
deleted file mode 100644
index a7c26c6..0000000
--- a/config/condition-both-mrd-snake-small.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd-snake-small'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-both-mrd.py b/config/condition-both-mrd.py
deleted file mode 100644
index b0617a6..0000000
--- a/config/condition-both-mrd.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Configuration name
-CONFIG = 'condition-both-mrd'
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/condition-discrim-pitch-loudness-small.py b/config/condition-discrim-pitch-loudness-small.py
deleted file mode 100644
index fc32bdb..0000000
--- a/config/condition-discrim-pitch-loudness-small.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# Configuration name
-CONFIG = 'condition-discrim-pitch-loudness-small'
-
-# Discriminator periodicity conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-discrim-pitch-periodicity-small.py b/config/condition-discrim-pitch-periodicity-small.py
deleted file mode 100644
index c417a39..0000000
--- a/config/condition-discrim-pitch-periodicity-small.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# Configuration name
-CONFIG = 'condition-discrim-pitch-periodicity-small'
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/condition-discrim-pitch-small.py b/config/condition-discrim-pitch-small.py
deleted file mode 100644
index c2ccf7c..0000000
--- a/config/condition-discrim-pitch-small.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Configuration name
-CONFIG = 'condition-discrim-pitch-small'
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-025-025-025-45.py b/config/loss-weights-025-025-025-45.py
deleted file mode 100644
index 1186c84..0000000
--- a/config/loss-weights-025-025-025-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-025-025-025-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = .25
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = .25
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = .25
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-05-05-05-45.py b/config/loss-weights-05-05-05-45.py
deleted file mode 100644
index 670e867..0000000
--- a/config/loss-weights-05-05-05-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-05-05-05-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = .5
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = .5
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = .5
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-1-2-1-45.py b/config/loss-weights-1-2-1-45.py
deleted file mode 100644
index f54bb5a..0000000
--- a/config/loss-weights-1-2-1-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-1-2-1-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 1.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-1-1-45.py b/config/loss-weights-2-1-1-45.py
deleted file mode 100644
index a36bc70..0000000
--- a/config/loss-weights-2-1-1-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-1-1-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 1.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-2-05-45.py b/config/loss-weights-2-2-05-45.py
deleted file mode 100644
index 7c78473..0000000
--- a/config/loss-weights-2-2-05-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-2-05-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = .5
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-2-1-45.py b/config/loss-weights-2-2-1-45.py
deleted file mode 100644
index d3c15aa..0000000
--- a/config/loss-weights-2-2-1-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-2-1-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-2-2-45.py b/config/loss-weights-2-2-2-45.py
deleted file mode 100644
index 3b38515..0000000
--- a/config/loss-weights-2-2-2-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-2-2-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 2.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-2-4-45.py b/config/loss-weights-2-2-4-45.py
deleted file mode 100644
index a13e193..0000000
--- a/config/loss-weights-2-2-4-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-2-4-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 4.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-2-8-45.py b/config/loss-weights-2-2-8-45.py
deleted file mode 100644
index 283d218..0000000
--- a/config/loss-weights-2-2-8-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-2-8-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 8.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-2-4-1-45.py b/config/loss-weights-2-4-1-45.py
deleted file mode 100644
index ca57ee9..0000000
--- a/config/loss-weights-2-4-1-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-2-4-1-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 4.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-4-2-1-45.py b/config/loss-weights-4-2-1-45.py
deleted file mode 100644
index fb997d1..0000000
--- a/config/loss-weights-4-2-1-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-4-2-1-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 4.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/loss-weights-4-4-4-45.py b/config/loss-weights-4-4-4-45.py
deleted file mode 100644
index 7e94538..0000000
--- a/config/loss-weights-4-4-4-45.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration name
-CONFIG = 'loss-weights-4-4-4-45'
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 4.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 4.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 4.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/ppg-linear.py b/config/ppg-linear.py
deleted file mode 100644
index aa946d1..0000000
--- a/config/ppg-linear.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Configuration name
-CONFIG = 'ppg-linear'
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'linear'
diff --git a/config/ppg-nearest-pitch-periodicity-loudness.py b/config/ppg-nearest-pitch-periodicity-loudness.py
deleted file mode 100644
index 67e8783..0000000
--- a/config/ppg-nearest-pitch-periodicity-loudness.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Configuration name
-CONFIG = 'ppg-nearest-pitch-periodicity-loudness'
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/ppg-nearest-pitch-periodicity-small.py b/config/ppg-nearest-pitch-periodicity-small.py
deleted file mode 100644
index fe6ce89..0000000
--- a/config/ppg-nearest-pitch-periodicity-small.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Configuration name
-CONFIG = 'ppg-nearest-pitch-periodicity-small'
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/ppg-nearest-pitch-periodicity.py b/config/ppg-nearest-pitch-periodicity.py
deleted file mode 100644
index 3d78d35..0000000
--- a/config/ppg-nearest-pitch-periodicity.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Configuration name
-CONFIG = 'ppg-nearest-pitch-periodicity'
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/ppg-nearest-pitch-small.py b/config/ppg-nearest-pitch-small.py
deleted file mode 100644
index ff7b7e7..0000000
--- a/config/ppg-nearest-pitch-small.py
+++ /dev/null
@@ -1,15 +0,0 @@
-CONFIG = 'ppg-nearest-pitch-small'
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/ppg-nearest-pitch.py b/config/ppg-nearest-pitch.py
deleted file mode 100644
index 2186a86..0000000
--- a/config/ppg-nearest-pitch.py
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG = 'ppg-nearest-pitch'
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/ppg-nearest.py b/config/ppg-nearest.py
deleted file mode 100644
index 6c23ab0..0000000
--- a/config/ppg-nearest.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Configuration name
-CONFIG = 'ppg-nearest'
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/promonet-base.py b/config/promonet-base.py
deleted file mode 100644
index 83efcb0..0000000
--- a/config/promonet-base.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Configuration name
-CONFIG = 'ppg-nearest-pitch-periodicity-loudness-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 24
-
-# Number of training steps
-NUM_STEPS = 250000
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
diff --git a/config/promonet-ppgs-reference-small.py b/config/promonet-ppgs-reference-small.py
deleted file mode 100644
index 900962e..0000000
--- a/config/promonet-ppgs-reference-small.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-reference-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-senone-base-latent-small.py b/config/promonet-ppgs-senone-base-latent-small.py
deleted file mode 100644
index 85c226a..0000000
--- a/config/promonet-ppgs-senone-base-latent-small.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-senone-base-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 144
-
-# Type of PPGs to use
-PPG_MODEL = 'senone-base'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-senone-base-small.py b/config/promonet-ppgs-senone-base-small.py
deleted file mode 100644
index cfd5d86..0000000
--- a/config/promonet-ppgs-senone-base-small.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-senone-base-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 144
-
-# Type of PPGs to use
-PPG_TYPE = 'senone-base'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-senone-phoneme-latent-small.py b/config/promonet-ppgs-senone-phoneme-latent-small.py
deleted file mode 100644
index b839648..0000000
--- a/config/promonet-ppgs-senone-phoneme-latent-small.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-senone-phoneme-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 42
-
-# Type of PPGs to use
-PPG_MODEL = 'senone-phoneme'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-senone-phoneme-small.py b/config/promonet-ppgs-senone-phoneme-small.py
deleted file mode 100644
index faa0e51..0000000
--- a/config/promonet-ppgs-senone-phoneme-small.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-senone-phoneme-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 42
-
-# Type of PPGs to use
-PPG_TYPE = 'senone-phoneme'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-w2v2-base-latent-small.py b/config/promonet-ppgs-w2v2-base-latent-small.py
deleted file mode 100644
index 62e5362..0000000
--- a/config/promonet-ppgs-w2v2-base-latent-small.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-w2v2-base-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# PPG configuration
-INPUT_CHANNELS = 768  # dimensionality of wav2vec2 latents
-REPRESENTATION = 'w2v2'
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 768
-
-# Type of PPGs to use
-PPG_MODEL = 'w2v2-base'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-w2v2-base-small.py b/config/promonet-ppgs-w2v2-base-small.py
deleted file mode 100644
index 4c4818b..0000000
--- a/config/promonet-ppgs-w2v2-base-small.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-w2v2-base-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 768
-
-# Type of PPGs to use
-PPG_TYPE = 'w2v2-base'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-w2v2-phoneme-latent-small.py b/config/promonet-ppgs-w2v2-phoneme-latent-small.py
deleted file mode 100644
index 554fdd5..0000000
--- a/config/promonet-ppgs-w2v2-phoneme-latent-small.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-w2v2-phoneme-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# PPG configuration
-INPUT_CHANNELS = 768 #dimensionality of wav2vec2 latents
-REPRESENTATION = 'w2v2'
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 42
-
-# Type of PPGs to use
-PPG_MODEL = 'w2v2-phoneme'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-ppgs-w2v2-phoneme-small.py b/config/promonet-ppgs-w2v2-phoneme-small.py
deleted file mode 100644
index f104f61..0000000
--- a/config/promonet-ppgs-w2v2-phoneme-small.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-ppgs-w2v2-phoneme-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Number of channels in the phonetic posteriorgram features
-PPG_CHANNELS = 42
-
-# Type of PPGs to use
-PPG_TYPE = 'w2v2-phoneme'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet-small.py b/config/promonet-small.py
deleted file mode 100644
index 718d466..0000000
--- a/config/promonet-small.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'promonet'
-
-# Batch size (per gpu)
-BATCH_SIZE = 32
-
-# Number of training steps
-NUM_STEPS = 250000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promonet.py b/config/promonet.py
deleted file mode 100644
index 2def51c..0000000
--- a/config/promonet.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'promonet'
-
-# Batch size (per gpu)
-BATCH_SIZE = 24
-
-# Number of training steps
-NUM_STEPS = 250000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/promovits-noembed-small.py b/config/promovits-noembed-small.py
deleted file mode 100644
index 0f5024c..0000000
--- a/config/promovits-noembed-small.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Configuration name
-from promonet.config.defaults import PITCH_EMBEDDING
-
-
-CONFIG = 'promonet-noembed-small'
-
-# Whether to use an embedding layer for pitch
-PITCH_EMBEDDING = False
-
-
-###############################################################################
-# weighted-ppg-ratio-all-small
-###############################################################################
-
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/promovits-small.py b/config/promovits-small.py
deleted file mode 100644
index 959d661..0000000
--- a/config/promovits-small.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# Configuration name
-CONFIG = 'promonet-small'
-
-
-###############################################################################
-# weighted-ppg-ratio-all-small
-###############################################################################
-
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/promovoco-small.py b/config/promovoco-small.py
index a53a501..728a583 100644
--- a/config/promovoco-small.py
+++ b/config/promovoco-small.py
@@ -1,17 +1,10 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'promovoco-small'
 
-# Whether to omit latent generation
-VOCODER = True
-
-
-###############################################################################
-# promonet-small
-###############################################################################
-
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 128
+# Whether to use pitch augmentation
+AUGMENT_PITCH = True
 
 # Discriminator phoneme conditioning
 DISCRIM_PHONEME_CONDITION = True
@@ -19,39 +12,6 @@
 # Discriminator augmentation ratio conditioning
 DISCRIM_RATIO_CONDITION = True
 
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
 # Discriminator loudness conditioning
 DISCRIM_LOUDNESS_CONDITION = True
 
@@ -70,18 +30,18 @@
 # Pass periodicity through the latent
 LATENT_PERIODICITY_SHORTCUT = True
 
+# Pass the phonemes through the latent
+LATENT_PHONEME_SHORTCUT = True
+
 # Pass pitch through the latent
 LATENT_PITCH_SHORTCUT = True
 
+# Pass the augmentation ratio through the latent
+LATENT_RATIO_SHORTCUT = True
+
 # Loudness features
 LOUDNESS_FEATURES = True
 
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
 # Periodicity conditioning
 PERIODICITY_FEATURES = True
 
@@ -91,15 +51,11 @@
 # Phonemic posteriorgram conditioning
 PPG_FEATURES = True
 
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Whether to use snake activation in the audio generator
 SNAKE = True
 
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
+# Whether to omit latent generation
+VOCODER = True
 
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
diff --git a/config/promovoco.py b/config/promovoco.py
deleted file mode 100644
index f130cc1..0000000
--- a/config/promovoco.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# Configuration name
-CONFIG = 'promovoco'
-
-# Whether to omit latent generation
-VOCODER = True
-
-
-###############################################################################
-# promonet
-###############################################################################
-
-
-# Batch size (per gpu)
-BATCH_SIZE = 32
-
-# Number of training steps
-NUM_STEPS = 250000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/psola.py b/config/psola.py
index c004a94..ff74356 100644
--- a/config/psola.py
+++ b/config/psola.py
@@ -1,3 +1,5 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'psola'
 
diff --git a/config/spectral-bottleneck16-small.py b/config/spectral-bottleneck16-small.py
deleted file mode 100644
index 46bedff..0000000
--- a/config/spectral-bottleneck16-small.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Configuration name
-CONFIG = 'spectral-bottleneck16-small'
-
-# Only use spectral features
-SPECTROGRAM_ONLY = True
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 16
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/spectral-bottleneck32-small.py b/config/spectral-bottleneck32-small.py
deleted file mode 100644
index 2a3dd1e..0000000
--- a/config/spectral-bottleneck32-small.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Configuration name
-CONFIG = 'spectral-bottleneck32-small'
-
-# Only use spectral features
-SPECTROGRAM_ONLY = True
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 32
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/spectral-bottleneck64-small.py b/config/spectral-bottleneck64-small.py
deleted file mode 100644
index 8a55399..0000000
--- a/config/spectral-bottleneck64-small.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Configuration name
-CONFIG = 'spectral-bottleneck64-small'
-
-# Only use spectral features
-SPECTROGRAM_ONLY = True
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 64
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/spectral-bottleneck8-small.py b/config/spectral-bottleneck8-small.py
deleted file mode 100644
index ed23138..0000000
--- a/config/spectral-bottleneck8-small.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Configuration name
-CONFIG = 'spectral-bottleneck8-small'
-
-# Only use spectral features
-SPECTROGRAM_ONLY = True
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 8
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/spectral-small.py b/config/spectral-small.py
index c15fac4..f838a87 100644
--- a/config/spectral-small.py
+++ b/config/spectral-small.py
@@ -1,54 +1,19 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'spectral-small'
 
-# Only use spectral features
-SPECTROGRAM_ONLY = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
 # Whether to use pitch augmentation
 AUGMENT_PITCH = True
 
 # Whether to perform gradient clipping on the generator
 GRADIENT_CLIP_GENERATOR = 1000.
 
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Whether to use snake activation in the audio generator
 SNAKE = True
 
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
+# Only use spectral features
+SPECTROGRAM_ONLY = True
 
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
diff --git a/config/spectral-voco-small.py b/config/spectral-voco-small.py
index 8b8ddb3..aacb1e9 100644
--- a/config/spectral-voco-small.py
+++ b/config/spectral-voco-small.py
@@ -1,57 +1,22 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'spectral-voco-small'
 
-# Only use spectral features
-SPECTROGRAM_ONLY = True
-
-# Whether to omit latent generation
-VOCODER = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
 # Whether to use pitch augmentation
 AUGMENT_PITCH = True
 
 # Whether to perform gradient clipping on the generator
 GRADIENT_CLIP_GENERATOR = 1000.
 
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
 # Whether to use snake activation in the audio generator
 SNAKE = True
 
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
+# Only use spectral features
+SPECTROGRAM_ONLY = True
+
+# Whether to omit latent generation
+VOCODER = True
 
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
diff --git a/config/t5-ablate-mrd-ppg-latent-small.py b/config/t5-ablate-mrd-ppg-latent-small.py
deleted file mode 100644
index ae4d559..0000000
--- a/config/t5-ablate-mrd-ppg-latent-small.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Configuration name
-CONFIG = 't5-ablate-mrd-ppg-latent-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Whether to use a T5X stack for phoneme encoding
-T5_ENCODER = True
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/templates-residual-cos.py b/config/templates-residual-cos.py
deleted file mode 100644
index 9b6e3f5..0000000
--- a/config/templates-residual-cos.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Configuration name
-CONFIG = 'templates-residual-cos'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Whether to use template features and encoder
-TEMPLATE_FEATURES = True
-
-# Whether to pass residual sample-rate template features
-TEMPLATE_RESIDUAL = True
-
-
-###############################################################################
-# ablate-mrd-ppg-latent-small
-###############################################################################
-
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/templates-residual.py b/config/templates-residual.py
deleted file mode 100644
index 9afc86c..0000000
--- a/config/templates-residual.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Configuration name
-CONFIG = 'templates-residual'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Whether to use template features and encoder
-TEMPLATE_FEATURES = True
-
-# Whether to pass residual sample-rate template features
-TEMPLATE_RESIDUAL = True
-
-
-###############################################################################
-# ablate-mrd-ppg-latent-small
-###############################################################################
-
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/templates.py b/config/templates.py
deleted file mode 100644
index b5e6d1c..0000000
--- a/config/templates.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# Configuration name
-CONFIG = 'templates'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Whether to use template features and encoder
-TEMPLATE_FEATURES = True
-
-
-###############################################################################
-# ablate-mrd-ppg-latent-small
-###############################################################################
-
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = False
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/two-stage-long-msd-small.py b/config/two-stage-long-msd-small.py
deleted file mode 100644
index bc88be6..0000000
--- a/config/two-stage-long-msd-small.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Configuration name
-CONFIG = 'two-stage-long-msd-small'
-
-# First stage of two-stage model
-TWO_STAGE = True
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 200000
diff --git a/config/two-stage-long-small.py b/config/two-stage-long-small.py
deleted file mode 100644
index 27736ae..0000000
--- a/config/two-stage-long-small.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Configuration name
-CONFIG = 'two-stage-long-small'
-
-# First stage of two-stage model
-TWO_STAGE = True
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 200000
diff --git a/config/two-stage-small.py b/config/two-stage-small.py
index 6a5d365..7b6c788 100644
--- a/config/two-stage-small.py
+++ b/config/two-stage-small.py
@@ -1,33 +1,8 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'two-stage-small'
 
-# First stage of two-stage model
-TWO_STAGE = True
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
 # Whether to use pitch augmentation
 AUGMENT_PITCH = True
 
@@ -37,20 +12,35 @@
 # Discriminator periodicity conditioning
 DISCRIM_PERIODICITY_CONDITION = True
 
+# Discriminator phoneme conditioning
+DISCRIM_PHONEME_CONDITION = True
+
 # Discriminator pitch conditioning
 DISCRIM_PITCH_CONDITION = True
 
+# Discriminator augmentation ratio conditioning
+DISCRIM_RATIO_CONDITION = True
+
 # Whether to perform gradient clipping on the generator
 GRADIENT_CLIP_GENERATOR = 1000.
 
-# Loudness features
-LOUDNESS_FEATURES = True
+# Pass loudness through the latent
+LATENT_LOUDNESS_SHORTCUT = True
+
+# Pass periodicity through the latent
+LATENT_PERIODICITY_SHORTCUT = True
 
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
+# Pass the phonemes through the latent
+LATENT_PHONEME_SHORTCUT = True
 
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
+# Pass pitch through the latent
+LATENT_PITCH_SHORTCUT = True
+
+# Pass the augmentation ratio through the latent
+LATENT_RATIO_SHORTCUT = True
+
+# Loudness features
+LOUDNESS_FEATURES = True
 
 # Periodicity conditioning
 PERIODICITY_FEATURES = True
@@ -68,9 +58,9 @@
 # Whether to use snake activation in the audio generator
 SNAKE = True
 
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
+# Whether to use a two-stage model (text -> mels; mels -> waveform)
+TWO_STAGE = True
 
 # Reduce batch size and steps for development
 BATCH_SIZE = 16
-NUM_STEPS = 100000
+NUM_STEPS = 200000
diff --git a/config/vits.py b/config/vits.py
index a56f070..397232f 100644
--- a/config/vits.py
+++ b/config/vits.py
@@ -1,4 +1,4 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'vits'
-
-NUM_WORKERS = 0
diff --git a/config/weighted-bottleneck128-small.py b/config/weighted-bottleneck128-small.py
deleted file mode 100644
index 0b3a572..0000000
--- a/config/weighted-bottleneck128-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-bottleneck128-small'
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 128
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-bottleneck256-small.py b/config/weighted-bottleneck256-small.py
deleted file mode 100644
index c1d0f91..0000000
--- a/config/weighted-bottleneck256-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-bottleneck256-small'
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 256
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-bottleneck32-small.py b/config/weighted-bottleneck32-small.py
deleted file mode 100644
index c001d35..0000000
--- a/config/weighted-bottleneck32-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-bottleneck32-small'
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 32
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-bottleneck64-small.py b/config/weighted-bottleneck64-small.py
deleted file mode 100644
index 6ae2e5f..0000000
--- a/config/weighted-bottleneck64-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-bottleneck64-small'
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 64
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-discrim-ppg-small.py b/config/weighted-discrim-ppg-small.py
deleted file mode 100644
index d17122d..0000000
--- a/config/weighted-discrim-ppg-small.py
+++ /dev/null
@@ -1,84 +0,0 @@
-CONFIG = 'weighted-discrim-ppg-small'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-discrim-ratio-small.py b/config/weighted-discrim-ratio-small.py
deleted file mode 100644
index b9c9c8e..0000000
--- a/config/weighted-discrim-ratio-small.py
+++ /dev/null
@@ -1,84 +0,0 @@
-CONFIG = 'weighted-discrim-ratio-small'
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-latent-ppg-small.py b/config/weighted-latent-ppg-small.py
deleted file mode 100644
index eb504b6..0000000
--- a/config/weighted-latent-ppg-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-latent-ppg-small'
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-latent-ratio-small.py b/config/weighted-latent-ratio-small.py
deleted file mode 100644
index 9156576..0000000
--- a/config/weighted-latent-ratio-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-latent-ppg-small'
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-omit1-small.py b/config/weighted-omit1-small.py
deleted file mode 100644
index 9cc36e8..0000000
--- a/config/weighted-omit1-small.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-omit1-small'
-
-# Whether to omit the first activation of each discriminator
-FEATURE_MATCHING_OMIT_FIRST = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-ppg-ratio-all-bottleneck128-small.py b/config/weighted-ppg-ratio-all-bottleneck128-small.py
deleted file mode 100644
index ba42ee6..0000000
--- a/config/weighted-ppg-ratio-all-bottleneck128-small.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-ppg-ratio-all-bottleneck128-small'
-
-# The size of the latent bottleneck
-BOTTLENECK_SIZE = 128
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/weighted-ppg-ratio-all-small.py b/config/weighted-ppg-ratio-all-small.py
deleted file mode 100644
index 469df2f..0000000
--- a/config/weighted-ppg-ratio-all-small.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Configuration name
-CONFIG = 'weighted-ppg-ratio-all-small'
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
-
-# Reduce batch size and steps for development
-BATCH_SIZE = 16
-NUM_STEPS = 100000
diff --git a/config/world.py b/config/world.py
index 7e7bcc9..3ae955d 100644
--- a/config/world.py
+++ b/config/world.py
@@ -1,3 +1,5 @@
+MODULE = 'promonet'
+
 # Configuration name
 CONFIG = 'world'
 
diff --git a/promonet/__init__.py b/promonet/__init__.py
index 131fcbe..910bee1 100644
--- a/promonet/__init__.py
+++ b/promonet/__init__.py
@@ -1,23 +1,8 @@
-# Trainings
-# - sawtooth templates **
-# - template spectrogram
-# - cosine templates
-# - two-stage without MRD
-# - scale-up promonet
-# - scale-up promovoco
-# - scale-up spectral
-# - scale-up spectral + latent
-# - method ablations
-
 # Development
-# - xFormers **
-# - new ppgs **
+# - refactor*
 # - subjective evals
 # - Am I clipping pitch above fmax or below fmin? Error analysis
-# - HN-USFGAN baseline
-
-# Low priority
-# - address loudness-scaling acting as bias in V/UV F1 computation (by rescaling)
+# - Baselines
 
 
 ###############################################################################
@@ -30,7 +15,7 @@
 
 # Modify configuration
 import yapecs
-yapecs.configure(defaults)
+yapecs.configure('promonet', defaults)
 
 # Import configuration parameters
 from .config.defaults import *
@@ -56,6 +41,5 @@
 from . import model
 from . import partition
 from . import plot
-from . import preprocess
 from . import train
 from . import write
diff --git a/promonet/adapt/__init__.py b/promonet/adapt/__init__.py
new file mode 100644
index 0000000..a8ce586
--- /dev/null
+++ b/promonet/adapt/__init__.py
@@ -0,0 +1,1 @@
+from .core import *
\ No newline at end of file
diff --git a/promonet/adapt/__main__.py b/promonet/adapt/__main__.py
new file mode 100644
index 0000000..7b965e0
--- /dev/null
+++ b/promonet/adapt/__main__.py
@@ -0,0 +1,43 @@
+import argparse
+from pathlib import Path
+
+import promonet
+
+
+###############################################################################
+# TODO - Speaker adaptation
+###############################################################################
+
+
+def parse_args():
+    """Parse command-line arguments"""
+    parser = argparse.ArgumentParser(description='Perform speaker adaptation')
+    parser.add_argument(
+        '--config',
+        type=Path,
+        default=promonet.DEFAULT_CONFIGURATION,
+        help='The configuration file')
+    parser.add_argument(
+        '--name',
+        required=True,
+        help='The name of the speaker')
+    parser.add_argument(
+        '--directory',
+        type=Path,
+        required=True,
+        help='Directory containing speech audio for speaker adaptation')
+    parser.add_argument(
+        '--checkpoint',
+        type=Path,
+        default=promonet.DEFAULT_CHECKPOINT,
+        help='The checkpoint to use for adaptation')
+    parser.add_argument(
+        '--gpus',
+        type=int,
+        nargs='+',
+        help='The gpus to run training on')
+    return parser.parse_args()
+
+
+if __name__ == '__main__':
+    promonet.adapt.from_files_to_files(**vars(parse_args()))
diff --git a/promonet/adapt.py b/promonet/adapt/core.py
similarity index 58%
rename from promonet/adapt.py
rename to promonet/adapt/core.py
index 0ed5fcc..88bdca3 100644
--- a/promonet/adapt.py
+++ b/promonet/adapt/core.py
@@ -1,4 +1,3 @@
-import argparse
 import shutil
 from pathlib import Path
 
@@ -9,11 +8,11 @@
 
 
 ###############################################################################
-# Speaker adaptation
+# TODO - Speaker adaptation API
 ###############################################################################
 
 
-def speaker(
+def from_files_to_files(
     config,
     name,
     directory,
@@ -41,7 +40,7 @@ def speaker(
             torchaudio.save(f'{i:06d}.wav', audio, promonet.SAMPLE_RATE)
 
         # Preprocess features
-        promonet.preprocess.files(
+        promonet.data.preprocess.from_files_to_files(
             Path(),
             Path().rglob('*.wav'),
             features=['ppg', 'prosody', 'spectrogram'],
@@ -65,42 +64,3 @@ def speaker(
         adapt_directory,
         adapt=True,
         gpus=gpus)
-
-
-###############################################################################
-# Entry point
-###############################################################################
-
-
-def parse_args():
-    """Parse command-line arguments"""
-    parser = argparse.ArgumentParser(description='Perform speaker adaptation')
-    parser.add_argument(
-        '--config',
-        type=Path,
-        default=promonet.DEFAULT_CONFIGURATION,
-        help='The configuration file')
-    parser.add_argument(
-        '--name',
-        required=True,
-        help='The name of the speaker')
-    parser.add_argument(
-        '--directory',
-        type=Path,
-        required=True,
-        help='Directory containing speech audio for speaker adaptation')
-    parser.add_argument(
-        '--checkpoint',
-        type=Path,
-        default=promonet.DEFAULT_CHECKPOINT,
-        help='The checkpoint to use for adaptation')
-    parser.add_argument(
-        '--gpus',
-        type=int,
-        nargs='+',
-        help='The gpus to run training on')
-    return parser.parse_args()
-
-
-if __name__ == '__main__':
-    speaker(**vars(parse_args()))
diff --git a/promonet/config/defaults.py b/promonet/config/defaults.py
index 128d372..d6bad10 100644
--- a/promonet/config/defaults.py
+++ b/promonet/config/defaults.py
@@ -1,8 +1,5 @@
-import functools
 from pathlib import Path
 
-import torch
-
 
 ###############################################################################
 # Metadata
@@ -12,6 +9,9 @@
 # Configuration name
 CONFIG = 'promonet'
 
+# Module name
+MODULE = 'promonet'
+
 
 ###############################################################################
 # Audio parameters
@@ -25,9 +25,6 @@
 # Audio hopsize
 HOPSIZE = 256  # samples
 
-# Maximum sample value of 16-bit audio
-MAX_SAMPLE_VALUE = 32768
-
 # Number of melspectrogram channels
 NUM_MELS = 80
 
@@ -41,25 +38,45 @@
 WINDOW_SIZE = 1024
 
 
+###############################################################################
+# Data parameters
+###############################################################################
+
+
+# Number of buckets to partition training and validation data into based on
+# length to avoid excess padding
+# TODO
+BUCKETS = 8
+
+# Names of all datasets
+DATASETS = ['daps', 'vctk']
+
+
 ###############################################################################
 # Directories
 ###############################################################################
 
 
+# Root location for saving outputs
+ROOT_DIR = Path(__file__).parent.parent.parent
+
 # Location to save assets to be bundled with pip release
 ASSETS_DIR = Path(__file__).parent.parent / 'assets'
 
 # Location of preprocessed features
-CACHE_DIR = Path(__file__).parent.parent.parent / 'data' / 'cache'
+CACHE_DIR = ROOT_DIR / 'data' / 'cache'
 
 # Location of datasets on disk
-DATA_DIR = Path(__file__).parent.parent.parent / 'data' / 'datasets'
+DATA_DIR = ROOT_DIR / 'data' / 'datasets'
 
 # Location to save evaluation artifacts
-EVAL_DIR = Path(__file__).parent.parent.parent / 'eval'
+EVAL_DIR = ROOT_DIR / 'eval'
 
 # Location to save training and adaptation artifacts
-RUNS_DIR = Path(__file__).parent.parent.parent / 'runs'
+RUNS_DIR = ROOT_DIR / 'runs'
+
+# Location of compressed datasets on disk
+SOURCES_DIR = ROOT_DIR / 'data' / 'sources'
 
 
 ###############################################################################
@@ -71,7 +88,7 @@
 BENCHMARK = False
 
 # The model to use for evaluation.
-# One of ['promonet', 'promospec', 'qpcargan', 'clpcnet', 'psola', 'world].
+# One of ['promonet', 'psola', 'world].
 MODEL = 'promonet'
 
 
@@ -139,20 +156,16 @@
 
 # Type of interpolation method to use to scale PPG features
 # Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = None
+# TODO - deprecate in favor of aligned features
+PPG_INTERP_METHOD = 'nearest'
 
 # Type of PPGs to use
+# TODO - deprecate in favor of best model
 PPG_MODEL = None
 
 # Only use spectral features
 SPECTROGRAM_ONLY = False
 
-# Whether to use template features and encoder
-TEMPLATE_FEATURES = False
-
-# Whether to pass residual sample-rate template features
-TEMPLATE_RESIDUAL = False
-
 # Whether to use a two-stage model
 TWO_STAGE = False
 
@@ -190,10 +203,7 @@
 AR_OUTPUT_SIZE = 128
 
 # The size of the latent bottleneck
-BOTTLENECK_SIZE = 192
-
-# Whether to use causal layers
-CAUSAL = False
+HIDDEN_CHANNELS = 192
 
 # Hidden dimension channel size
 FILTER_CHANNELS = 768
@@ -228,18 +238,9 @@
 # Whether to use snake activation in the audio generator
 SNAKE = False
 
-# Whether to use exact filter values as BigVGan
-SNAKE_EXACT = False
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = False
-
 # Speaker embedding size
 SPEAKER_CHANNELS = 256
 
-# Whether to use a T5X stack for phoneme encoding
-T5_ENCODER = False
-
 # Initial channel size for upsampling layers
 UPSAMPLE_INITIAL_SIZE = 512
 
@@ -274,19 +275,6 @@
 MEL_LOSS_WEIGHT = 45.
 
 
-###############################################################################
-# Optimizers
-###############################################################################
-
-
-# Optimizer for training
-OPTIMIZER = functools.partial(
-    torch.optim.AdamW,
-    lr=2e-4,
-    betas=[0.8, 0.99],
-    eps=1e-9)
-
-
 ###############################################################################
 # Text parameters
 ###############################################################################
@@ -313,9 +301,6 @@
 # Whether to perform gradient clipping on the generator
 GRADIENT_CLIP_GENERATOR = None
 
-# Per-epoch decay rate of the learning rate
-LEARNING_RATE_DECAY = .999875
-
 # Number of training steps
 NUM_STEPS = 300000
 
@@ -327,6 +312,3 @@
 
 # Seed for all random number generators
 RANDOM_SEED = 1234
-
-# Aligner to use to evaluate training
-TRAIN_ALIGNER = 'p2fa'
diff --git a/promonet/config/static.py b/promonet/config/static.py
index cd1781b..6f15bb6 100644
--- a/promonet/config/static.py
+++ b/promonet/config/static.py
@@ -41,7 +41,7 @@
 TWO_STAGE_2 = False
 
 # Number of input features to the generator
-# 178 is len(promonet.preprocess.text.symbols())
+# 178 is len(promonet.data.preprocess.text.symbols())
 NUM_FEATURES = (
     178 if not promonet.PPG_FEATURES and not promonet.SPECTROGRAM_ONLY else (
         promonet.LOUDNESS_FEATURES +
@@ -51,8 +51,7 @@
         (
             (promonet.NUM_FFT // 2 + 1) if promonet.SPECTROGRAM_ONLY else
             promonet.PPG_FEATURES * promonet.PPG_CHANNELS
-        ) +
-        256 * promonet.TEMPLATE_FEATURES
+        )
     )
 )
 
@@ -63,8 +62,7 @@
     promonet.DISCRIM_PERIODICITY_CONDITION +
     promonet.DISCRIM_PITCH_CONDITION +
     promonet.DISCRIM_RATIO_CONDITION +
-    promonet.DISCRIM_PHONEME_CONDITION * promonet.PPG_CHANNELS +
-    promonet.TEMPLATE_RESIDUAL * 8)
+    promonet.DISCRIM_PHONEME_CONDITION * promonet.PPG_CHANNELS)
 
 # Number of additional input features to the latent-to-audio model
 ADDITIONAL_FEATURES_LATENT = (
@@ -86,6 +84,3 @@
 # Global input channels
 GLOBAL_CHANNELS = promonet.SPEAKER_CHANNELS + (
     promonet.AUGMENT_PITCH and not promonet.SPECTROGRAM_ONLY)
-
-# Hidden dimension channel sizes
-HIDDEN_CHANNELS = promonet.BOTTLENECK_SIZE
diff --git a/promonet/core.py b/promonet/core.py
index cbfd11c..4fc1dad 100644
--- a/promonet/core.py
+++ b/promonet/core.py
@@ -7,7 +7,7 @@
 
 
 ###############################################################################
-# promonet generation
+# Generation API
 ###############################################################################
 
 
@@ -72,7 +72,7 @@ def from_audio(
     # Get phonetic posteriorgrams
     with promonet.time.timer('features/ppgs'):
         if promonet.PPG_FEATURES or promonet.SPECTROGRAM_ONLY:
-            features = promonet.preprocess.ppg.from_audio(
+            features = promonet.data.preprocess.ppg.from_audio(
                 audio,
                 sample_rate,
                 gpu=gpu)
@@ -99,7 +99,7 @@ def from_audio(
     # Maybe get text features
     with promonet.time.timer('features/text'):
         if not promonet.PPG_FEATURES and not promonet.SPECTROGRAM_ONLY:
-            features = promonet.preprocess.text.from_string(text)
+            features = promonet.data.preprocess.text.from_string(text)
 
     # Setup model
     device = torch.device('cpu' if gpu is None else f'cuda:{gpu}')
diff --git a/promonet/data/__init__.py b/promonet/data/__init__.py
index be5a08b..c24c6d3 100644
--- a/promonet/data/__init__.py
+++ b/promonet/data/__init__.py
@@ -1,6 +1,8 @@
 from .core import *
+from . import augment
 from . import dataset
 from . import download
+from . import preprocess
 from . import sampler
 from .collate import collate
 from .dataset import Dataset
diff --git a/promonet/augment/__init__.py b/promonet/data/augment/__init__.py
similarity index 100%
rename from promonet/augment/__init__.py
rename to promonet/data/augment/__init__.py
diff --git a/promonet/augment/__main__.py b/promonet/data/augment/__main__.py
similarity index 90%
rename from promonet/augment/__main__.py
rename to promonet/data/augment/__main__.py
index 25b9964..81990ef 100644
--- a/promonet/augment/__main__.py
+++ b/promonet/data/augment/__main__.py
@@ -20,4 +20,4 @@ def parse_args():
 
 
 if __name__ == '__main__':
-    promonet.augment.datasets(**vars(parse_args()))
+    promonet.data.augment.datasets(**vars(parse_args()))
diff --git a/promonet/augment/core.py b/promonet/data/augment/core.py
similarity index 93%
rename from promonet/augment/core.py
rename to promonet/data/augment/core.py
index 7e994e8..6306ffc 100644
--- a/promonet/augment/core.py
+++ b/promonet/data/augment/core.py
@@ -1,6 +1,7 @@
 import functools
 import json
 import multiprocessing as mp
+import os
 
 import resampy
 import soundfile
@@ -67,7 +68,7 @@ def datasets(datasets):
                 from_file_to_file,
                 speaker_directory)
             augment_iterator = list(zip(audio_files, ratios))
-            with mp.get_context('spawn').Pool() as pool:
+            with mp.get_context('spawn').Pool(os.cpu_count() // 2) as pool:
                 pool.starmap(augment_fn, augment_iterator)
 
             # Save augmentation info
@@ -84,7 +85,7 @@ def datasets(datasets):
 def from_file_to_file(directory, audio_file, ratio):
     """Perform data augmentation on a file and save"""
     # Load audio
-    audio, sample_rate = soundfile.read(audio_file)
+    audio, sample_rate = soundfile.read(str(audio_file))
 
     # Scale audio
     scaled = resampy.resample(
@@ -99,5 +100,4 @@ def from_file_to_file(directory, audio_file, ratio):
     file = (
         directory /
         f'{audio_file.stem.split("-")[0]}-{int(ratio * 100):03d}.wav')
-    soundfile.write(file, scaled, promonet.SAMPLE_RATE)
-
+    soundfile.write(str(file), scaled, promonet.SAMPLE_RATE)
diff --git a/promonet/data/collate.py b/promonet/data/collate.py
index bfe4358..920c169 100644
--- a/promonet/data/collate.py
+++ b/promonet/data/collate.py
@@ -19,7 +19,6 @@ def collate(batch):
         loudness,
         spectrograms,
         audio,
-        templates,
         speakers,
         ratios
     ) = zip(*batch)
@@ -63,9 +62,6 @@ def collate(batch):
     padded_audio = torch.zeros(
         (len(batch), 1, max_length_samples),
         dtype=torch.float)
-    padded_templates = torch.zeros(
-        (len(batch), 1, max_length_frames * promonet.HOPSIZE),
-        dtype=torch.float)
     for i, index in enumerate(sorted_indices):
 
         # Get lengths
@@ -90,10 +86,6 @@ def collate(batch):
         # Prepare audio
         padded_audio[i, :, :lengths[index]] = audio[index]
 
-        # Prepare template
-        length = spectrogram_lengths[i] * promonet.HOPSIZE
-        padded_templates[i, :, :length] = templates[index]
-
     return (
         text,
         padded_phonemes,
@@ -105,5 +97,4 @@ def collate(batch):
         torch.tensor(ratios, dtype=torch.float),
         padded_spectrograms,
         spectrogram_lengths,
-        padded_audio,
-        padded_templates)
+        padded_audio)
diff --git a/promonet/data/dataset.py b/promonet/data/dataset.py
index 464175a..b74b0dc 100644
--- a/promonet/data/dataset.py
+++ b/promonet/data/dataset.py
@@ -1,8 +1,8 @@
 import functools
 import json
-import os
 
 import torch
+import torchaudio
 
 import promonet
 
@@ -31,16 +31,15 @@ def __init__(self, dataset, partition):
             self.stems.extend([f'{stem}-{ratios[stem]}' for stem in stems])
 
         # Store spectrogram lengths for bucketing
-        audio_files = list([self.cache / f'{stem}.wav' for stem in self.stems])
         self.spectrogram_lengths = [
-            os.path.getsize(audio_file) // (2 * promonet.HOPSIZE)
-            for audio_file in audio_files]
+            promonet.convert.samples_to_frames(
+                torchaudio.info(self.cache / f'{stem}.wav').num_frames)
+            for stem in self.stems]
 
     def __getitem__(self, index):
         stem = self.stems[index]
         text = promonet.load.text(self.cache / f'{stem[:-4]}.txt')
         audio = promonet.load.audio(self.cache / f'{stem}.wav')
-        template = promonet.load.audio(self.cache / f'{stem}-template.wav')
         pitch = promonet.load.pitch(self.cache / f'{stem}-pitch.pt')
         periodicity = torch.load(self.cache / f'{stem}-periodicity.pt')
         loudness = torch.load(self.cache / f'{stem}-loudness.pt')
@@ -71,7 +70,6 @@ def __getitem__(self, index):
             loudness,
             spectrogram,
             audio,
-            template,
             torch.tensor(speaker, dtype=torch.long),
             int(stem[-3:]) / 100.)
 
diff --git a/promonet/data/download/__main__.py b/promonet/data/download/__main__.py
index 7b37004..6d76388 100644
--- a/promonet/data/download/__main__.py
+++ b/promonet/data/download/__main__.py
@@ -14,7 +14,7 @@ def parse_args():
     parser.add_argument(
         '--datasets',
         nargs='+',
-        required=True,
+        default=promonet.DATASETS,
         help='The datasets to download')
     return parser.parse_args()
 
diff --git a/promonet/data/download/core.py b/promonet/data/download/core.py
index 1dcf1a3..1b5956e 100644
--- a/promonet/data/download/core.py
+++ b/promonet/data/download/core.py
@@ -32,7 +32,7 @@ def daps():
     """Download daps dataset"""
     # Download
     url = 'https://zenodo.org/record/4783456/files/daps-segmented.tar.gz?download=1'
-    file = promonet.DATA_DIR / 'daps.tar.gz'
+    file = promonet.SOURCES_DIR / 'daps.tar.gz'
     download_file(url, file)
 
     with promonet.data.chdir(promonet.DATA_DIR):
@@ -108,7 +108,7 @@ def vctk():
     """Download vctk dataset"""
     # Download
     url = 'https://datashare.ed.ac.uk/download/DS_10283_3443.zip'
-    file = promonet.DATA_DIR / 'vctk.zip'
+    file = promonet.SOURCES_DIR / 'vctk.zip'
     download_file(url, file)
 
     # Unzip
diff --git a/promonet/preprocess/__init__.py b/promonet/data/preprocess/__init__.py
similarity index 78%
rename from promonet/preprocess/__init__.py
rename to promonet/data/preprocess/__init__.py
index 77722ca..c4fb1b4 100644
--- a/promonet/preprocess/__init__.py
+++ b/promonet/data/preprocess/__init__.py
@@ -1,5 +1,4 @@
 from .core import *
 from . import ppg
 from . import spectrogram
-from . import template
 from . import text
diff --git a/promonet/preprocess/__main__.py b/promonet/data/preprocess/__main__.py
similarity index 68%
rename from promonet/preprocess/__main__.py
rename to promonet/data/preprocess/__main__.py
index 3229d8e..8a5138b 100644
--- a/promonet/preprocess/__main__.py
+++ b/promonet/data/preprocess/__main__.py
@@ -10,6 +10,10 @@
 
 def parse_args():
     parser = argparse.ArgumentParser(description='Preprocess a dataset')
+    parser.add_argument(
+        '--config',
+        nargs='+',
+        help='The name of the datasets to use')
     parser.add_argument(
         '--datasets',
         nargs='+',
@@ -17,15 +21,19 @@ def parse_args():
         help='The name of the datasets to use')
     parser.add_argument(
         '--features',
-        default=promonet.preprocess.ALL_FEATURES,
+        default=promonet.data.preprocess.ALL_FEATURES,
         nargs='+',
         help='The features to preprocess')
     parser.add_argument(
         '--gpu',
         type=int,
         help='The index of the gpu to use')
-    return parser.parse_args()
+
+    # Delete config files
+    args = parser.parse_args()
+    del args.config
+    return args
 
 
 if __name__ == '__main__':
-    promonet.preprocess.datasets(**vars(parse_args()))
+    promonet.data.preprocess.datasets(**vars(parse_args()))
diff --git a/promonet/data/preprocess/core.py b/promonet/data/preprocess/core.py
new file mode 100644
index 0000000..e3b39d3
--- /dev/null
+++ b/promonet/data/preprocess/core.py
@@ -0,0 +1,105 @@
+import pysodic
+
+import promonet
+
+
+###############################################################################
+# Constants
+###############################################################################
+
+
+ALL_FEATURES = ['ppg', 'prosody', 'phonemes', 'spectrogram']
+
+
+###############################################################################
+# Data preprocessing
+###############################################################################
+
+
+def datasets(datasets, features=ALL_FEATURES, gpu=None):
+    """Preprocess a dataset"""
+    for dataset in datasets:
+
+        # Get cache directory
+        directory = promonet.CACHE_DIR / dataset
+
+        # Get text and audio files for this speaker
+        text_files = sorted(list(directory.rglob('*.txt')))
+        audio_files = sorted(list(directory.rglob('*-100.wav')))
+
+        # Preprocess files
+        from_files_to_files(audio_files, text_files, features, gpu)
+
+
+def from_files_to_files(
+    audio_files,
+    text_files=None,
+    features=ALL_FEATURES,
+    gpu=None):
+    """Preprocess from files"""
+    # Preprocess phonemes from text
+    if 'phonemes' in features:
+        phoneme_files = [
+            file.parent / f'{file.stem}-text.pt' for file in text_files]
+        promonet.data.preprocess.text.from_files_to_files(
+            text_files,
+            phoneme_files)
+
+    # Preprocess spectrograms
+    if 'spectrogram' in features:
+        spectrogram_files = [
+            file.parent / f'{file.stem}-spectrogram.pt'
+            for file in audio_files]
+        promonet.data.preprocess.spectrogram.from_files_to_files(
+            audio_files,
+            spectrogram_files)
+
+    # Preprocess phonetic posteriorgrams
+    if 'ppg' in features:
+        ppg_files = [
+            file.parent / f'{file.stem}-ppg.pt' for file in audio_files]
+        promonet.data.preprocess.ppg.from_files_to_files(
+            audio_files,
+            ppg_files,
+            gpu)
+
+    # Preprocess prosody features
+    if 'prosody' in features:
+        prefixes = [file.parent / file.stem for file in audio_files]
+        pysodic.from_files_to_files(
+            audio_files,
+            prefixes,
+            text_files,
+            promonet.HOPSIZE / promonet.SAMPLE_RATE,
+            promonet.WINDOW_SIZE / promonet.SAMPLE_RATE,
+            gpu=gpu)
+
+
+def prosody(audio, sample_rate=promonet.SAMPLE_RATE, text=None, gpu=None):
+    """Preprocess prosody from audio to retrieve features for editing"""
+    hopsize = promonet.HOPSIZE / promonet.SAMPLE_RATE
+    window_size = promonet.WINDOW_SIZE / promonet.SAMPLE_RATE
+
+    # Get prosody features including alignment
+    if text:
+        output = pysodic.from_audio_and_text(
+            audio,
+            sample_rate,
+            text,
+            hopsize,
+            window_size,
+            gpu=gpu)
+
+        # Pitch, loudness and alignment
+        return output[0], output[2], output[5]
+
+    # Get prosody features without alignment
+    output = pysodic.from_audio(
+        audio,
+        sample_rate,
+        hopsize,
+        window_size,
+        gpu=gpu)
+
+    # Pitch and loudness
+    return output[0], output[2]
diff --git a/promonet/preprocess/ppg/__init__.py b/promonet/data/preprocess/ppg/__init__.py
similarity index 100%
rename from promonet/preprocess/ppg/__init__.py
rename to promonet/data/preprocess/ppg/__init__.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/__init__.py b/promonet/data/preprocess/ppg/conformer_ppg_model/__init__.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/__init__.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/__init__.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/build_ppg_model.py b/promonet/data/preprocess/ppg/conformer_ppg_model/build_ppg_model.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/build_ppg_model.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/build_ppg_model.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/__init__.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/__init__.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/__init__.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/__init__.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/attention.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/attention.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/attention.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/attention.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/conformer_encoder.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/conformer_encoder.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/conformer_encoder.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/conformer_encoder.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/convolution.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/convolution.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/convolution.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/convolution.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/embedding.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/embedding.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/embedding.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/embedding.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/encoder.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/encoder.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/encoder.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/encoder.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/encoder_layer.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/encoder_layer.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/encoder_layer.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/encoder_layer.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/layer_norm.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/layer_norm.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/layer_norm.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/layer_norm.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/multi_layer_conv.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/multi_layer_conv.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/multi_layer_conv.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/multi_layer_conv.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/positionwise_feed_forward.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/positionwise_feed_forward.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/positionwise_feed_forward.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/positionwise_feed_forward.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/repeat.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/repeat.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/repeat.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/repeat.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/subsampling.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/subsampling.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/subsampling.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/subsampling.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/swish.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/swish.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/swish.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/swish.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoder/vgg.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoder/vgg.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoder/vgg.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoder/vgg.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/encoders.py b/promonet/data/preprocess/ppg/conformer_ppg_model/encoders.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/encoders.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/encoders.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/frontend.py b/promonet/data/preprocess/ppg/conformer_ppg_model/frontend.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/frontend.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/frontend.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/log_mel.py b/promonet/data/preprocess/ppg/conformer_ppg_model/log_mel.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/log_mel.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/log_mel.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/nets_utils.py b/promonet/data/preprocess/ppg/conformer_ppg_model/nets_utils.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/nets_utils.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/nets_utils.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/stft.py b/promonet/data/preprocess/ppg/conformer_ppg_model/stft.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/stft.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/stft.py
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/utterance_mvn.py b/promonet/data/preprocess/ppg/conformer_ppg_model/utterance_mvn.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/utterance_mvn.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/utterance_mvn.py
diff --git a/promonet/preprocess/ppg/core.py b/promonet/data/preprocess/ppg/core.py
similarity index 54%
rename from promonet/preprocess/ppg/core.py
rename to promonet/data/preprocess/ppg/core.py
index d52fc3e..a1f0b64 100644
--- a/promonet/preprocess/ppg/core.py
+++ b/promonet/data/preprocess/ppg/core.py
@@ -38,49 +38,49 @@ def from_audio(
     checkpoint_file=CHECKPOINT_FILE,
     gpu=None):
     """Compute PPGs from audio"""
-    device = torch.device('cpu' if gpu is None else f'cuda:{gpu}')
-
-    # Cache model
-    if not hasattr(from_audio, 'model'):
-        from_audio.model = promonet.preprocess.ppg.conformer_ppg_model.build_ppg_model.load_ppg_model(
-            config,
-            checkpoint_file,
-            device)
-
-    # Maybe resample
-    audio = promonet.resample(audio, sample_rate, SAMPLE_RATE)
-
-    # Setup features
-    audio = audio.to(device)
-    length = torch.tensor([audio.shape[-1]], dtype=torch.long, device=device)
-
-    # Infer ppgs
-    with torch.no_grad():
-        return from_audio.model(audio, length)[0].T
-
-    # Resolve model argument
-    # if promonet.PPG_MODEL == 'senone-base':
-    #     name = 'basemodel'
-    #     preprocess_only = True
-    # elif promonet.PPG_MODEL == 'senone-phoneme':
-    #     name = 'basemodel'
-    #     preprocess_only = False
-    # elif promonet.PPG_MODEL == 'w2v2-base':
-    #     name = 'basemodelW2V2'
-    #     preprocess_only = True
-    # elif promonet.PPG_MODEL == 'w2v2-phoneme':
-    #     name = 'basemodelW2V2'
-    #     preprocess_only = False
-    # else:
-    #     raise ValueError(f'Model {promonet.PPG_MODEL} is not defined')
+    if promonet.PPG_MODEL is None:
+        device = torch.device('cpu' if gpu is None else f'cuda:{gpu}')
+
+        # Cache model
+        if not hasattr(from_audio, 'model'):
+            from_audio.model = promonet.data.preprocess.ppg.conformer_ppg_model.build_ppg_model.load_ppg_model(
+                config,
+                checkpoint_file,
+                device)
+
+        # Maybe resample
+        audio = promonet.resample(audio, sample_rate, SAMPLE_RATE)
+
+        # Setup features
+        audio = audio.to(device)
+        length = torch.tensor([audio.shape[-1]], dtype=torch.long, device=device)
+
+        # Infer ppgs
+        with torch.no_grad():
+            return from_audio.model(audio, length)[0].T
+
+    elif promonet.PPG_MODEL == 'senone-base':
+        name = 'basemodel'
+        preprocess_only = True
+    elif promonet.PPG_MODEL == 'senone-phoneme':
+        name = 'basemodel'
+        preprocess_only = False
+    elif promonet.PPG_MODEL == 'w2v2-base':
+        name = 'basemodelW2V2'
+        preprocess_only = True
+    elif promonet.PPG_MODEL == 'w2v2-phoneme':
+        name = 'basemodelW2V2'
+        preprocess_only = False
+    else:
+        raise ValueError(f'Model {promonet.PPG_MODEL} is not defined')
 
     # Infer ppgs
-    # return ppgs.from_audio(
-    #     audio,
-    #     sample_rate,
-    #     preprocess_only=preprocess_only,
-    #     checkpoint=PPG_DIR / 'checkpoints' / f'{name}.pt',
-    #     gpu=gpu)
+    return ppgs.from_audio(
+        audio,
+        sample_rate,
+        preprocess_only=preprocess_only,
+        checkpoint=PPG_DIR / 'checkpoints' / f'{name}.pt',
+        gpu=gpu)
 
 
 def from_file(audio_file, gpu=None):
diff --git a/promonet/preprocess/spectrogram.py b/promonet/data/preprocess/spectrogram.py
similarity index 92%
rename from promonet/preprocess/spectrogram.py
rename to promonet/data/preprocess/spectrogram.py
index 818aabe..3d8c3c4 100644
--- a/promonet/preprocess/spectrogram.py
+++ b/promonet/data/preprocess/spectrogram.py
@@ -1,5 +1,6 @@
 import functools
 import multiprocessing as mp
+import os
 
 import torch
 import librosa
@@ -69,12 +70,9 @@ def from_file_to_file(audio_file, output_file, mels=False):
 
 def from_files_to_files(audio_files, output_files, mels=False):
     """Compute spectrogram from audio files and save to disk"""
-    # TODO - multiprocessing fails
-    # with mp.get_context('spawn').Pool() as pool:
-    #     pool.starmap(preprocess_fn, zip(audio_files, output_files))
     preprocess_fn = functools.partial(from_file_to_file, mels=mels)
-    for item in zip(audio_files, output_files):
-        preprocess_fn(*item)
+    with mp.get_context('spawn').Pool(os.cpu_count() // 2) as pool:
+        pool.starmap(preprocess_fn, zip(audio_files, output_files))
 
 
 ###############################################################################
diff --git a/promonet/preprocess/text.py b/promonet/data/preprocess/text.py
similarity index 90%
rename from promonet/preprocess/text.py
rename to promonet/data/preprocess/text.py
index 9bd24f2..89d70af 100644
--- a/promonet/preprocess/text.py
+++ b/promonet/data/preprocess/text.py
@@ -1,9 +1,8 @@
 import multiprocessing as mp
+import os
 import re
 
 import torch
-import tqdm
-
 import phonemizer
 import unidecode
 
@@ -32,16 +31,8 @@ def from_file_to_file(text_file, output_file):
 
 def from_files_to_files(text_files, output_files):
     """Convert text files to sequences of integer indices and save to disk"""
-    # TODO - multiprocessing deadlocks
-    # with mp.get_context('spawn').Pool() as pool:
-    #     pool.starmap(from_file_to_file, zip(text_files, output_files))
-    iterator = tqdm.tqdm(
-        zip(text_files, output_files),
-        total=len(text_files),
-        desc='Text preprocessing',
-        dynamic_ncols=True)
-    for text_file, output_file in iterator:
-        from_file_to_file(text_file, output_file)
+    with mp.get_context('spawn').Pool(os.cpu_count() // 2) as pool:
+        pool.starmap(from_file_to_file, zip(text_files, output_files))
 
 
 ###############################################################################
diff --git a/promonet/data/sampler.py b/promonet/data/sampler.py
index 49da889..ae75677 100644
--- a/promonet/data/sampler.py
+++ b/promonet/data/sampler.py
@@ -4,7 +4,7 @@
 
 
 ###############################################################################
-# Samplers
+# TODO - variable batch size sampler
 ###############################################################################
 
 
diff --git a/promonet/evaluate/core.py b/promonet/evaluate/core.py
index 5ba7b18..45be096 100644
--- a/promonet/evaluate/core.py
+++ b/promonet/evaluate/core.py
@@ -17,7 +17,6 @@
                 └── <speaker>
                     └── <stem>-<modification>-<ratio>.wav
 """
-
 import functools
 import json
 import shutil
@@ -385,7 +384,7 @@ def speaker(
         # Ignore warnings when MFA fails, as we retry failures with P2FA
         with warnings.catch_warnings():
             warnings.simplefilter('ignore')
-        promonet.preprocess.from_files_to_files(
+        promonet.data.preprocess.from_files_to_files(
             objective_directory / file.parent.name,
             value,
             text_files,
diff --git a/promonet/model/__init__.py b/promonet/model/__init__.py
index 924ec6f..c5a1f74 100644
--- a/promonet/model/__init__.py
+++ b/promonet/model/__init__.py
@@ -1,12 +1,9 @@
-from .constants import *
 from .core import *
 from .discriminator import Discriminator
 from .generator import Generator
 from .modules import Snake
-from .t5 import T5
 from . import attention
 from . import generator
 from . import modules
-from . import template
 from . import transform
 # from . import monotonic_align
diff --git a/promonet/model/attention.py b/promonet/model/attention.py
index e9e4c94..c2744be 100644
--- a/promonet/model/attention.py
+++ b/promonet/model/attention.py
@@ -71,10 +71,10 @@ def __init__(
         # Setup layers
         self.n_heads = n_heads
         self.window_size = window_size
-        self.conv_q = promonet.model.CONV1D(channels, channels, 1)
-        self.conv_k = promonet.model.CONV1D(channels, channels, 1)
-        self.conv_v = promonet.model.CONV1D(channels, channels, 1)
-        self.conv_o = promonet.model.CONV1D(channels, out_channels, 1)
+        self.conv_q = torch.nn.Conv1d(channels, channels, 1)
+        self.conv_k = torch.nn.Conv1d(channels, channels, 1)
+        self.conv_v = torch.nn.Conv1d(channels, channels, 1)
+        self.conv_o = torch.nn.Conv1d(channels, out_channels, 1)
         self.dropout = torch.nn.Dropout(p_dropout)
 
         # Setup relative positional embedding
diff --git a/promonet/model/constants.py b/promonet/model/constants.py
deleted file mode 100644
index e69ae5b..0000000
--- a/promonet/model/constants.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import torch
-
-import promonet
-from .modules import CausalConv1d, CausalTransposeConv1d
-
-
-###############################################################################
-# Model parameters
-###############################################################################
-
-
-# Whether to use causal or non-causal convolutions
-CONV1D = CausalConv1d if promonet.CAUSAL else torch.nn.Conv1d
-TRANSPOSECONV1D = \
-    CausalTransposeConv1d if promonet.CAUSAL else torch.nn.ConvTranspose1d
diff --git a/promonet/model/core.py b/promonet/model/core.py
index 539b26a..ed9ced2 100644
--- a/promonet/model/core.py
+++ b/promonet/model/core.py
@@ -1,6 +1,6 @@
 import torch
 
-from .constants import CONV1D
+import promonet
 
 
 ###############################################################################
@@ -86,7 +86,8 @@ def slice_segments(segments, start_indices, segment_size, fill_value=0.):
 
 def causal_weight_norm_conv1d(*args, **kwargs):
     """Construct Conv1d layer with weight normalization"""
-    return torch.nn.utils.weight_norm(CONV1D(*args, **kwargs))
+    return torch.nn.utils.weight_norm(
+        promonet.model.modules.CausalConv1d(*args, **kwargs))
 
 
 def weight_norm_conv1d(*args, **kwargs):
diff --git a/promonet/model/discriminator.py b/promonet/model/discriminator.py
index b7e560b..ae04380 100644
--- a/promonet/model/discriminator.py
+++ b/promonet/model/discriminator.py
@@ -27,8 +27,6 @@ def __init__(self, period, kernel_size=5, stride=3):
             conv_fn(512, 1024, (kernel_size, 1), (stride, 1), padding),
             conv_fn(1024, 1024, (kernel_size, 1), 1, padding)])
         self.conv_post = conv_fn(1024, 1, (3, 1), 1, (1, 0))
-        if promonet.TEMPLATE_RESIDUAL:
-            self.template_encoder = torch.nn.Conv1d(1, 8, 7, padding='same')
 
     def forward(
         self,
@@ -37,8 +35,7 @@ def forward(
         periodicity,
         loudness,
         phonemes,
-        ratios=None,
-        template=None):
+        ratios=None):
         # Maybe add pitch conditioning
         if promonet.DISCRIM_PITCH_CONDITION:
             pitch = torch.nn.functional.interpolate(
@@ -82,10 +79,6 @@ def forward(
                 (x, ratios.repeat(x.shape[2], 1, 1).permute(2, 1, 0)),
                 dim=1)
 
-        # Maybe add templates
-        if promonet.TEMPLATE_RESIDUAL:
-            x = torch.cat((x, self.template_encoder(template)), dim=1)
-
         feature_maps = []
 
         # 1d to 2d
@@ -130,8 +123,7 @@ def forward(
         periodicity,
         loudness,
         phonemes,
-        ratios=None,
-        template=None):
+        ratios=None):
         # Compute spectral features
         features = self.spectrogram(audio)
 
@@ -179,10 +171,6 @@ def forward(
                 (features, ratios.repeat(*shape).permute(3, 2, 1, 0)),
                 dim=2)
 
-        # Maybe add templates
-        if promonet.TEMPLATE_RESIDUAL:
-            x = torch.cat((x, self.spectrogram(template)), dim=2)
-
         # Forward pass and save activations
         fmap = []
         x = features
@@ -228,8 +216,6 @@ def __init__(self):
             conv_fn(1024, 1024, 41, 4, groups=256, padding=20),
             conv_fn(1024, 1024, 5, 1, padding=2), ])
         self.conv_post = conv_fn(1024, 1, 3, 1, padding=1)
-        if promonet.TEMPLATE_RESIDUAL:
-            self.template_encoder = torch.nn.Conv1d(1, 8, 7, padding='same')
 
     def forward(
         self,
@@ -238,8 +224,7 @@ def forward(
         periodicity,
         loudness,
         phonemes,
-        ratios=None,
-        template=None):
+        ratios=None):
         # Maybe add pitch conditioning
         if promonet.DISCRIM_PITCH_CONDITION:
             pitch = torch.nn.functional.interpolate(
@@ -286,10 +271,6 @@ def forward(
                 ),
                 dim=1)
 
-        # Maybe add templates
-        if promonet.TEMPLATE_RESIDUAL:
-            x = torch.cat((x, self.template_encoder(template)), dim=1)
-
         # Forward pass and save activations
         feature_maps = []
         for layer in self.convs:
@@ -325,8 +306,7 @@ def forward(
         periodicity,
         loudness,
         phonemes,
-        ratios=None,
-        template=None):
+        ratios=None):
         logits_real = []
         logits_fake = []
         feature_maps_real = []
@@ -338,8 +318,7 @@ def forward(
                 periodicity=periodicity,
                 loudness=loudness,
                 phonemes=phonemes,
-                ratios=ratios,
-                template=template)
+                ratios=ratios)
             logit_real, feature_map_real = discriminator_fn(y)
             logit_fake, feature_map_fake = discriminator_fn(y_hat)
             logits_real.append(logit_real)
diff --git a/promonet/model/generator.py b/promonet/model/generator.py
index 6c8e6ab..7ba28e0 100644
--- a/promonet/model/generator.py
+++ b/promonet/model/generator.py
@@ -125,7 +125,7 @@ def __init__(self):
 
     channels = promonet.HIDDEN_CHANNELS
     if promonet.PPG_FEATURES or promonet.SPECTROGRAM_ONLY:
-        self.input_layer = promonet.model.CONV1D(
+        self.input_layer = torch.nn.Conv1d(
             promonet.NUM_FEATURES,
             channels,
             promonet.KERNEL_SIZE,
@@ -135,23 +135,20 @@ def __init__(self):
         self.input_layer = torch.nn.Embedding(
             promonet.NUM_FEATURES,
             channels)
-    if promonet.T5_ENCODER:
-        self.encoder = promonet.model.T5()
-    else:
-        self.encoder = promonet.model.attention.Encoder(
-            channels,
-            promonet.FILTER_CHANNELS)
+    self.encoder = promonet.model.attention.Encoder(
+        channels,
+        promonet.FILTER_CHANNELS)
 
     self.channels = \
         promonet.NUM_FFT // 2 + 1 if promonet.TWO_STAGE else 2 * channels
-    self.projection = promonet.model.CONV1D(
+    self.projection = torch.nn.Conv1d(
         channels,
         self.channels,
         1)
     self.scale = math.sqrt(self.channels)
 
     # Speaker conditioning
-    self.cond = promonet.model.CONV1D(
+    self.cond = torch.nn.Conv1d(
         promonet.GLOBAL_CHANNELS,
         channels,
         1)
@@ -220,7 +217,7 @@ class SpectrogramEncoder(torch.nn.Module):
     def __init__(self, kernel_size=5, dilation_rate=1, n_layers=16):
         super().__init__()
         self.channels = promonet.HIDDEN_CHANNELS
-        self.pre = promonet.model.CONV1D(
+        self.pre = torch.nn.Conv1d(
             promonet.NUM_FFT // 2 + 1,
             self.channels,
             1)
@@ -230,7 +227,7 @@ def __init__(self, kernel_size=5, dilation_rate=1, n_layers=16):
             dilation_rate,
             n_layers,
             gin_channels=promonet.GLOBAL_CHANNELS)
-        self.proj = promonet.model.CONV1D(
+        self.proj = torch.nn.Conv1d(
             self.channels,
             2 * self.channels,
             1)
@@ -257,7 +254,7 @@ def __init__(self, initial_channel, gin_channels):
         self.sampling_rates = rates.flip([0]).to(torch.int).tolist()
 
         # Initial convolution
-        self.conv_pre = promonet.model.CONV1D(
+        self.conv_pre = torch.nn.Conv1d(
             initial_channel,
             promonet.UPSAMPLE_INITIAL_SIZE,
             7,
@@ -283,7 +280,7 @@ def __init__(self, initial_channel, gin_channels):
 
             # Upsampling layer
             self.ups.append(torch.nn.utils.weight_norm(
-                promonet.model.TRANSPOSECONV1D(
+                torch.nn.ConvTranspose1d(
                     input_channels,
                     output_channels,
                     kernel_size,
@@ -308,7 +305,7 @@ def __init__(self, initial_channel, gin_channels):
             torch.nn.LeakyReLU(promonet.LRELU_SLOPE))
 
         # Final conv
-        self.conv_post = promonet.model.CONV1D(
+        self.conv_post = torch.nn.Conv1d(
             output_channels,
             1,
             7,
@@ -320,7 +317,7 @@ def __init__(self, initial_channel, gin_channels):
         self.ups.apply(promonet.model.init_weights)
 
         # Speaker conditioning
-        self.cond = promonet.model.CONV1D(
+        self.cond = torch.nn.Conv1d(
             gin_channels,
             promonet.UPSAMPLE_INITIAL_SIZE,
             1)
@@ -421,10 +418,6 @@ def __init__(self, n_speakers=109):
         if promonet.AUTOREGRESSIVE:
             self.autoregressive = Autoregressive()
 
-        # Template features
-        if promonet.TEMPLATE_FEATURES:
-            self.template_encoder = promonet.model.template.Encoder()
-
         # Pitch embedding
         if promonet.PITCH_FEATURES and promonet.PITCH_EMBEDDING:
             self.pitch_embedding = torch.nn.Embedding(
@@ -502,8 +495,7 @@ def forward(
             ratios=None,
             spectrograms=None,
             spectrogram_lengths=None,
-            audio=None,
-            template=None):
+            audio=None):
         """Generator entry point"""
         # Default augmentation ratio is 1
         if ratios is None and promonet.AUGMENT_PITCH:
@@ -529,8 +521,7 @@ def forward(
             speakers,
             ratios,
             spectrograms,
-            spectrogram_lengths,
-            template
+            spectrogram_lengths
         )
 
         # Use different speaker embedding for two-stage models
@@ -601,7 +592,6 @@ def latents(
             ratios=None,
             spectrograms=None,
             spectrogram_lengths=None,
-            template=None,
             noise_scale=.667,
             length_scale=1,
             noise_scale_w=.8):
@@ -626,11 +616,6 @@ def latents(
         if promonet.PERIODICITY_FEATURES:
             features = torch.cat((features, periodicity[:, None]), dim=1)
 
-        # Maybe add template features
-        if promonet.TEMPLATE_FEATURES:
-            template_encoding = self.template_encoder(template)
-            features = torch.cat((features, template_encoding), dim=1)
-
         # Maybe just use the spectrogram
         if promonet.SPECTROGRAM_ONLY:
             features = spectrograms
@@ -780,13 +765,6 @@ def latents(
                 slice_indices,
                 slice_size)
 
-            # Maybe slice template features
-            if promonet.TEMPLATE_RESIDUAL:
-                template = promonet.model.slice_segments(
-                    template,
-                    slice_indices * promonet.HOPSIZE,
-                    promonet.CHUNK_SIZE)
-
         # Generation
         else:
 
@@ -912,7 +890,7 @@ def latents(
 
         # Maybe remove latents and keep other features
         if promonet.VOCODER:
-            latents = latents[:, promonet.BOTTLENECK_SIZE:]
+            latents = latents[:, promonet.HIDDEN_CHANNELS:]
 
         # Two-stage models do not use the flow, just the feature encoder
         if promonet.TWO_STAGE:
@@ -929,8 +907,7 @@ def latents(
             prior,
             predicted_mean,
             predicted_logstd,
-            true_logstd,
-            template)
+            true_logstd)
 
 
 class Autoregressive(torch.nn.Module):
diff --git a/promonet/model/modules.py b/promonet/model/modules.py
index dd51aba..518b07f 100644
--- a/promonet/model/modules.py
+++ b/promonet/model/modules.py
@@ -42,43 +42,6 @@ def forward(self, input):
         return result
 
 
-class CausalTransposeConv1d(torch.nn.ConvTranspose1d):
-    """Causal transpose convolution"""
-
-    def __init__(
-            self,
-            in_channels,
-            out_channels,
-            kernel_size,
-            stride=1,
-            padding=0,
-            output_padding=0,
-            groups=1,
-            bias=True,
-            dilation=1):
-
-        # Omit padding
-        super().__init__(
-            in_channels,
-            out_channels,
-            kernel_size=kernel_size,
-            stride=stride,
-            padding=0,
-            output_padding=output_padding,
-            groups=groups,
-            bias=bias,
-            dilation=dilation)
-
-        # Number of non-causal elements to be removed
-        self.causal_padding = dilation * (kernel_size - 1) + 1 - stride
-
-    def forward(self, input):
-        result = super().forward(input)
-        if self.causal_padding != 0:
-            result = result[:, :, :-self.causal_padding]
-        return result
-
-
 class LayerNorm(torch.nn.Module):
 
     def __init__(self, channels, eps=1e-5):
@@ -508,30 +471,13 @@ def __init__(self, channels, scale_factor=2):
             torch.ones(1, channels, 1),
             requires_grad=True)
 
-        # Maybe initialize Kaiser window
-        if promonet.SNAKE_FILTER:
-            self.kernel = torch.nn.Parameter(
-                self.filter(),
-                requires_grad=False)
+        # Initialize Kaiser window
+        self.kernel = torch.nn.Parameter(
+            self.filter(),
+            requires_grad=False)
 
     def filter(self):
         """Compute anti-aliasing low-pass filter"""
-        if promonet.SNAKE_EXACT:
-            return torch.tensor([
-                0.0020,
-                0.0094,
-                -0.0255,
-                -0.0577,
-                0.1286,
-                0.4432,
-                0.4432,
-                0.1286,
-                -0.0577,
-                -0.0255,
-                0.0094,
-                0.0020
-            ])[None, None]
-
         # Create kaiser window
         length = 12
         window = torch.kaiser_window(
@@ -551,60 +497,54 @@ def filter(self):
         return aliasing_filter[None, None]
 
     def forward(self, x):
-        # Maybe apply anti-aliasing filter
-        if promonet.SNAKE_FILTER:
-
-            # Zero-insertion interpolation
-            y = torch.zeros(
-                (x.shape[0], x.shape[1], self.scale_factor * x.shape[2]),
-                dtype=x.dtype,
-                device=x.device)
-            y[..., ::2] = x * self.scale_factor
-
-            # Treat each channel as a new batch
-            shape = y.shape
-            y = y.view(shape[0] * shape[1], 1, shape[2])
-
-            # Replication padding
-            padding = promonet.model.get_padding(self.kernel.shape[2])
-            x = torch.nn.functional.pad(
-                y,
-                (padding, padding + 1),
-                mode='replicate')
-
-            # Lowpass filter
-            x = torch.nn.functional.conv1d(x, self.kernel)
-
-            # Recover channel dimension
-            x = x.reshape(shape)
+        # Zero-insertion interpolation
+        y = torch.zeros(
+            (x.shape[0], x.shape[1], self.scale_factor * x.shape[2]),
+            dtype=x.dtype,
+            device=x.device)
+        y[..., ::2] = x * self.scale_factor
+
+        # Treat each channel as a new batch
+        shape = y.shape
+        y = y.view(shape[0] * shape[1], 1, shape[2])
+
+        # Replication padding
+        padding = promonet.model.get_padding(self.kernel.shape[2])
+        x = torch.nn.functional.pad(
+            y,
+            (padding, padding + 1),
+            mode='replicate')
+
+        # Lowpass filter
+        x = torch.nn.functional.conv1d(x, self.kernel)
+
+        # Recover channel dimension
+        x = x.reshape(shape)
 
         # Apply snake activation
         x = x + (1. / (self.alpha + 1e-9)) * torch.sin(self.alpha * x) ** 2
 
-        # Maybe apply anti-aliasing filter
-        if promonet.SNAKE_FILTER:
-
-            # Treat each channel as a new batch
-            shape = x.shape
-            x = x.view(shape[0] * shape[1], 1, shape[2])
-
-            # Replication padding
-            padding = promonet.model.get_padding(
-                self.kernel.shape[2],
-                1,
-                self.scale_factor)
-            x = torch.nn.functional.pad(
-                x,
-                (padding, padding),
-                mode='replicate')
-
-            # Filter and downsample
-            x = torch.nn.functional.conv1d(
-                x,
-                self.kernel,
-                stride=self.scale_factor)
-
-            # Recover channel dimension
-            x = x.reshape(shape[0], shape[1], shape[2] // self.scale_factor)
+        # Treat each channel as a new batch
+        shape = x.shape
+        x = x.view(shape[0] * shape[1], 1, shape[2])
+
+        # Replication padding
+        padding = promonet.model.get_padding(
+            self.kernel.shape[2],
+            1,
+            self.scale_factor)
+        x = torch.nn.functional.pad(
+            x,
+            (padding, padding),
+            mode='replicate')
+
+        # Filter and downsample
+        x = torch.nn.functional.conv1d(
+            x,
+            self.kernel,
+            stride=self.scale_factor)
+
+        # Recover channel dimension
+        x = x.reshape(shape[0], shape[1], shape[2] // self.scale_factor)
 
         return x
diff --git a/promonet/model/t5.py b/promonet/model/t5.py
deleted file mode 100644
index 6f72fa2..0000000
--- a/promonet/model/t5.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from typing import Optional, Tuple, Union
-
-import torch
-from transformers.modeling_outputs import BaseModelOutput
-from transformers.models.t5.configuration_t5 import T5Config
-from transformers.models.t5.modeling_t5 import T5PreTrainedModel, T5Stack
-from transformers.utils.model_parallel_utils import (
-    assert_device_map,
-    get_device_map)
-
-import promonet
-
-
-T5_1_1_CONFIG = T5Config(
-    d_ff=promonet.FILTER_CHANNELS,
-    d_kv=promonet.HIDDEN_CHANNELS,
-    d_model=promonet.HIDDEN_CHANNELS,
-    dropout_rate=promonet.P_DROPOUT,
-    is_decoder=False,
-    is_encoder_decoder=False,
-    num_heads=promonet.N_HEADS,
-    is_gated_act=True,
-    dense_act_fn='gelu',
-    use_cache=False
-)
-
-
-class T5(T5PreTrainedModel):
-    authorized_missing_keys = [
-        r"encoder.embed_tokens.weight",
-    ]
-
-    def __init__(self):
-        super().__init__(T5_1_1_CONFIG)
-        self.encoder = T5Stack(T5_1_1_CONFIG)
-        self.post_init()
-        self.model_parallel = False
-        self.device_map = None
-
-    def parallelize(self, device_map=None):
-        self.device_map = (
-            get_device_map(
-                len(self.encoder.block),
-                range(torch.cuda.device_count()))
-            if device_map is None else device_map)
-        assert_device_map(self.device_map, len(self.encoder.block))
-        self.encoder.parallelize(self.device_map)
-        self.model_parallel = True
-
-    def deparallelize(self):
-        self.encoder.deparallelize()
-        self.encoder = self.encoder.to("cpu")
-        self.model_parallel = False
-        self.device_map = None
-        torch.cuda.empty_cache()
-
-    def forward(
-        self,
-        inputs: torch.FloatTensor,
-        mask: torch.FloatTensor,
-        output_attentions: Optional[bool] = None,
-        output_hidden_states: Optional[bool] = None,
-        return_dict: Optional[bool] = False
-    ) -> Union[Tuple[torch.FloatTensor], BaseModelOutput]:
-        return self.encoder(
-            attention_mask=(mask.unsqueeze(2) * mask.unsqueeze(-1))[:, 0],
-            inputs_embeds=(inputs * mask).permute(0, 2, 1),
-            output_attentions=output_attentions,
-            output_hidden_states=output_hidden_states,
-            return_dict=return_dict)
diff --git a/promonet/model/template.py b/promonet/model/template.py
deleted file mode 100644
index 6a1e73b..0000000
--- a/promonet/model/template.py
+++ /dev/null
@@ -1,58 +0,0 @@
-import functools
-
-import torch
-
-import promonet
-
-
-class Encoder(torch.nn.Module):
-
-    def __init__(self):
-        super().__init__()
-        self.input_layer = torch.nn.Conv1d(1, 8, 7, padding='same')
-        self.downsample_fn = functools.partial(
-            torch.nn.functional.interpolate,
-            mode='linear',
-            align_corners=False)
-        self.blocks = torch.nn.ModuleList([
-            ResidualBlock(8, 8),
-            ResidualBlock(8, 16),
-            ResidualBlock(16, 128),
-            ResidualBlock(128, 256)])
-
-    def forward(self, template):
-        activation = torch.nn.functional.leaky_relu(
-            self.input_layer(template),
-            promonet.LRELU_SLOPE)
-        for i in range(len(self.blocks)):
-            ratio = 2 if i < 2 else 8
-            activation = self.downsample_fn(
-                activation,
-                size=activation.shape[-1] // ratio)
-            activation = self.blocks[i](activation)
-            if i < len(self.blocks) - 1:
-                activation = torch.nn.functional.leaky_relu(
-                    activation,
-                    promonet.LRELU_SLOPE)
-
-        return activation
-
-
-class ResidualBlock(torch.nn.Module):
-
-    def __init__(self, input_channels, output_channels, kernel_size=7):
-        super().__init__()
-        conv_fn = functools.partial(
-            torch.nn.Conv1d,
-            kernel_size=kernel_size,
-            padding='same')
-        self.input_layer = conv_fn(input_channels, output_channels)
-        self.model = torch.nn.Sequential(
-            torch.nn.LeakyReLU(promonet.LRELU_SLOPE),
-            conv_fn(output_channels, output_channels),
-            torch.nn.LeakyReLU(promonet.LRELU_SLOPE),
-            conv_fn(output_channels, output_channels))
-
-    def forward(self, x):
-        x = self.input_layer(x)
-        return x + self.model(x)
diff --git a/promonet/partition/__init__.py b/promonet/partition/__init__.py
new file mode 100644
index 0000000..bb67a43
--- /dev/null
+++ b/promonet/partition/__init__.py
@@ -0,0 +1,1 @@
+from .core import *
diff --git a/promonet/partition/__main__.py b/promonet/partition/__main__.py
new file mode 100644
index 0000000..7870055
--- /dev/null
+++ b/promonet/partition/__main__.py
@@ -0,0 +1,22 @@
+import argparse
+
+import promonet
+
+
+###############################################################################
+# Partition datasets
+###############################################################################
+
+
+def parse_args():
+    """Parse command-line arguments"""
+    parser = argparse.ArgumentParser(description='Partition datasets')
+    parser.add_argument(
+        '--datasets',
+        nargs='+',
+        help='The datasets to partition')
+    return parser.parse_args()
+
+
+if __name__ == '__main__':
+    promonet.partition.datasets(**vars(parse_args()))
diff --git a/promonet/partition.py b/promonet/partition/core.py
similarity index 79%
rename from promonet/partition.py
rename to promonet/partition/core.py
index b4cb3d7..b50b5cf 100644
--- a/promonet/partition.py
+++ b/promonet/partition/core.py
@@ -16,7 +16,6 @@
 * test_adapt_{:02d} - Test dataset for speaker adaptation
     (10 speakers; 10 examples per speaker; 4-10 seconds)
 """
-import argparse
 import functools
 import itertools
 import json
@@ -83,18 +82,25 @@
 ###############################################################################
 
 
-def dataset(name):
-    """Partition datasets and save partitions to disk"""
-    # Handle vctk
-    if name == 'vctk':
-        return vctk()
+def datasets(datasets):
+    """Partition datasets and save to disk"""
+    for name in datasets:
 
-    # Handle daps
-    if name == 'daps':
-        return daps()
+        # Partition
+        if name == 'vctk':
+            partition = vctk()
+        elif name == 'daps':
+            partition = daps()
 
-    # All other datasets are assumed to be for speaker adaptation
-    return adaptation(name)
+        # All other datasets are assumed to be for speaker adaptation
+        else:
+            partition = adaptation(name)
+
+        # Save to disk
+        file = promonet.PARTITION_DIR / f'{name}.json'
+        file.parent.mkdir(exist_ok=True, parents=True)
+        with open(file, 'w') as file:
+            json.dump(partition, file, ensure_ascii=False, indent=4)
 
 
 def adaptation(name):
@@ -112,7 +118,7 @@ def daps():
     directory = promonet.CACHE_DIR / 'daps'
     stems = [
         f'{file.parent.name}/{file.stem}'
-        for file in directory.rglob('*.json')]
+        for file in directory.rglob('*.TextGrid')]
 
     # Create speaker adaptation partitions
     return adaptation_partitions(
@@ -127,7 +133,7 @@ def vctk():
     directory = promonet.CACHE_DIR / 'vctk'
     stems = {
         f'{file.parent.name}/{file.stem[:-4]}'
-        for file in directory.rglob('*.json')}
+        for file in directory.rglob('*.TextGrid')}
 
     # Create speaker adaptation partitions
     adapt_partitions = adaptation_partitions(
@@ -194,43 +200,3 @@ def meets_length_criteria(directory, stem):
     """Returns True if the audio file duration is within the length criteria"""
     size = (directory / f'{stem}-100.wav').stat().st_size
     return MIN_TEST_SAMPLE_LENGTH_BYTES <= size <= MAX_TEST_SAMPLE_LENGTH_BYTES
-
-
-###############################################################################
-# Entry point
-###############################################################################
-
-
-def main(datasets, overwrite):
-    """Partition datasets and save to disk"""
-    for name in datasets:
-
-        # Check if partition already exists
-        file = promonet.PARTITION_DIR / f'{name}.json'
-        if file.exists():
-            if not overwrite:
-                print(f'Not overwriting existing partition {file}')
-                continue
-
-        # Save to disk
-        file.parent.mkdir(exist_ok=True, parents=True)
-        with open(file, 'w') as file:
-            json.dump(dataset(name), file, ensure_ascii=False, indent=4)
-
-
-def parse_args():
-    """Parse command-line arguments"""
-    parser = argparse.ArgumentParser(description='Partition datasets')
-    parser.add_argument(
-        '--datasets',
-        nargs='+',
-        help='The datasets to partition')
-    parser.add_argument(
-        '--overwrite',
-        action='store_true',
-        help='Whether to overwrite existing partitions')
-    return parser.parse_args()
-
-
-if __name__ == '__main__':
-    main(**vars(parse_args()))
diff --git a/promonet/plot.py b/promonet/plot.py
index 87e9adc..532921d 100644
--- a/promonet/plot.py
+++ b/promonet/plot.py
@@ -39,5 +39,5 @@ def spectrogram(x):
 
 def spectrogram_from_audio(audio):
     """Plot spectrogram given audio signal"""
-    mels = promonet.preprocess.spectrogram.from_audio(audio.float(), True)
+    mels = promonet.data.preprocess.spectrogram.from_audio(audio.float(), True)
     return spectrogram(mels.cpu().numpy())
diff --git a/promonet/preprocess/core.py b/promonet/preprocess/core.py
deleted file mode 100644
index 038bfe9..0000000
--- a/promonet/preprocess/core.py
+++ /dev/null
@@ -1,119 +0,0 @@
-from pathlib import Path
-
-import pysodic
-
-import promonet
-
-
-###############################################################################
-# Constants
-###############################################################################
-
-
-ALL_FEATURES = ['ppg', 'prosody', 'phonemes', 'spectrogram']
-
-
-###############################################################################
-# Data preprocessing
-###############################################################################
-
-
-def datasets(datasets, features=ALL_FEATURES, gpu=None):
-    """Preprocess a dataset"""
-    for dataset in datasets:
-
-        # Get cache directory
-        directory = promonet.CACHE_DIR / dataset
-
-        # Iterate over speakers
-        for speaker_directory in directory.glob('*'):
-
-            # Get text and audio files for this speaker
-            text_files = sorted(list(speaker_directory.rglob('*.txt')))
-            audio_files = sorted(list(speaker_directory.rglob('*.wav')))
-            audio_files = [
-                file for file in audio_files if '-template' not in file.stem]
-
-            # Preprocess files
-            from_files_to_files(
-                speaker_directory,
-                audio_files,
-                text_files,
-                features,
-                gpu)
-
-
-def from_files_to_files(
-    output_directory,
-    audio_files,
-    text_files=None,
-    features=ALL_FEATURES,
-    gpu=None):
-    """Preprocess from files"""
-    # Change directory
-    with promonet.data.chdir(output_directory):
-
-        # Preprocess phonemes from text
-        if 'phonemes' in features:
-            phoneme_files = [
-                f'{file.stem}-text.pt' for file in text_files]
-            promonet.preprocess.text.from_files_to_files(
-                text_files,
-                phoneme_files)
-
-        # Preprocess spectrograms
-        if 'spectrogram' in features:
-            spectrogram_files = [
-                f'{file.stem}-spectrogram.pt' for file in audio_files]
-            promonet.preprocess.spectrogram.from_files_to_files(
-                audio_files,
-                spectrogram_files)
-
-        # Preprocess phonetic posteriorgrams
-        if 'ppg' in features:
-            ppg_files = [f'{file.stem}-ppg.pt' for file in audio_files]
-            promonet.preprocess.ppg.from_files_to_files(
-                audio_files,
-                ppg_files,
-                gpu)
-
-        # Preprocess prosody features
-        if 'prosody' in features:
-            prefixes = [Path(file.stem) for file in audio_files]
-            pysodic.from_files_to_files(
-                audio_files,
-                prefixes,
-                text_files,
-                promonet.HOPSIZE / promonet.SAMPLE_RATE,
-                promonet.WINDOW_SIZE / promonet.SAMPLE_RATE,
-                gpu)
-
-        # Template waveform
-        if 'template' in features:
-            prefixes = [Path(file.stem) for file in audio_files]
-            promonet.preprocess.template.from_files_to_files(prefixes)
-
-
-def prosody(audio, sample_rate=promonet.SAMPLE_RATE, text=None, gpu=None):
-    """Preprocess prosody from audio to retrieve features for editing"""
-    hopsize = promonet.HOPSIZE / promonet.SAMPLE_RATE
-    window_size = promonet.WINDOW_SIZE / promonet.SAMPLE_RATE
-
-    # Get prosody features including alignment
-    if text:
-        output = pysodic.from_audio_and_text(
-            audio,
-            sample_rate,
-            text,
-            hopsize,
-            window_size,
-            gpu)
-
-        # Pitch, loudness and alignment
-        return output[0], output[2], output[5]
-
-    # Get prosody features without alignment
-    output = pysodic.from_audio(audio, sample_rate, hopsize, window_size, gpu)
-
-    # Pitch and loudness
-    return output[0], output[2]
diff --git a/promonet/preprocess/template.py b/promonet/preprocess/template.py
deleted file mode 100644
index 8ebbaa3..0000000
--- a/promonet/preprocess/template.py
+++ /dev/null
@@ -1,115 +0,0 @@
-import functools
-import math
-import multiprocessing as mp
-
-import numba
-import torch
-import torchaudio
-import tqdm
-
-import promonet
-
-
-###############################################################################
-# Constants
-###############################################################################
-
-
-# Computed billions of times, so worthwhile to cache
-SAMPLE_RATE_RADIANS = 2 * math.pi / promonet.SAMPLE_RATE
-
-
-###############################################################################
-# Templating
-###############################################################################
-
-
-def from_prosody(pitch, periodicity, loudness):
-    """Compute waveform template from features"""
-    # Interpolate prosody
-    interp_fn = functools.partial(
-        torch.nn.functional.interpolate,
-        scale_factor=promonet.HOPSIZE,
-        mode='linear',
-        align_corners=False)
-    pitch = 2 ** interp_fn(torch.log2(pitch)[:, None]).squeeze()
-    periodicity = interp_fn(periodicity[:, None]).squeeze()
-
-    # Autoregressively generate phase
-    result = torch.tensor(loop(pitch.cpu().numpy()))
-
-    # Convert phase to pitched waveform
-    # result = torch.cos(result)[None]
-    result = sawtooth(result)[None]
-
-    # Add some noise
-    result += (1 - periodicity.cpu()) * (2 * torch.rand_like(result) - 1)
-
-    # Apply loudness scaling
-    result = promonet.baseline.loudness.scale(result, loudness.cpu())
-
-    return result.to(pitch.device)
-
-
-def from_file_to_file(prefix):
-    """Compute waveform template from cached files"""
-    pitch = promonet.load.pitch(f'{prefix}-pitch.pt')
-    periodicity = torch.load(f'{prefix}-periodicity.pt')
-    loudness = torch.load(f'{prefix}-loudness.pt')
-    template = from_prosody(pitch, periodicity, loudness)
-    torchaudio.save(f'{prefix}-template.wav', template, promonet.SAMPLE_RATE)
-
-
-def from_files_to_files(prefixes):
-    """Compute waveform templates from cached files"""
-    with mp.get_context('spawn').Pool() as pool:
-        pool.map(from_file_to_file, prefixes)
-    # iterator = tqdm.tqdm(prefixes)
-    # for prefix in prefixes:
-    #     from_file_to_file(prefix)
-    #     print(prefix.resolve())
-
-
-###############################################################################
-# Utilities
-###############################################################################
-
-
-@numba.njit
-def loop(pitch):
-    """Run autoregressive loop with numba"""
-    # Create template
-    result = numba.typed.List()
-    result.append(0.)
-    for i in range(1, len(pitch)):
-
-        # Autoregressively generate unwrapped phase
-        sample = result[i - 1] + SAMPLE_RATE_RADIANS * pitch[i]
-        result.append(sample)
-
-    return result
-
-
-def sawtooth(phase):
-    """Compute sawtooth wave from unwrapped values"""
-    result = torch.zeros_like(phase)
-
-    # Wrap phase
-    phase %= 2 * math.pi
-
-    # Map phase to sawtooth values
-    quadrants = [
-        (phase < math.pi / 2).to(torch.bool),
-        (math.pi / 2 < phase).to(torch.bool) &
-            (phase < math.pi).to(torch.bool),
-        (math.pi < phase).to(torch.bool) &
-            (phase < 3 * math.pi / 2).to(torch.bool),
-        (3 * math.pi / 2 < phase).to(torch.bool) &
-            (phase < 2 * math.pi).to(torch.bool)]
-
-    result[quadrants[0]] = 2 * result[quadrants[0]] / math.pi
-    result[quadrants[1]] = 1 - 2 * (result[quadrants[1]] - math.pi / 2) / math.pi
-    result[quadrants[2]] = - 2 * (result[quadrants[2]] - math.pi) / math.pi
-    result[quadrants[3]] = -1 + 2 * (result[quadrants[3]] - 3 * math.pi / 2) / math.pi
-
-    return result
diff --git a/promonet/train/__main__.py b/promonet/train/__main__.py
index d959c86..81dc18e 100644
--- a/promonet/train/__main__.py
+++ b/promonet/train/__main__.py
@@ -44,7 +44,8 @@ def parse_args():
     parser.add_argument(
         '--config',
         type=Path,
-        default=promonet.DEFAULT_CONFIGURATION,
+        nargs='+',
+        default=[promonet.DEFAULT_CONFIGURATION],
         help='The configuration file')
     parser.add_argument(
         '--dataset',
@@ -67,7 +68,11 @@ def parse_args():
         type=int,
         nargs='+',
         help='The gpus to run training on')
-    return parser.parse_args()
+
+    # Delete config files
+    args = parser.parse_args()
+    args.config = args.config[0]
+    return args
 
 
 if __name__ == '__main__':
diff --git a/promonet/train/core.py b/promonet/train/core.py
index 50f5473..342d137 100644
--- a/promonet/train/core.py
+++ b/promonet/train/core.py
@@ -119,8 +119,8 @@ def train(
     # Create optimizers #
     #####################
 
-    discriminator_optimizer = promonet.OPTIMIZER(discriminators.parameters())
-    generator_optimizer = promonet.OPTIMIZER(generator.parameters())
+    discriminator_optimizer = torch.optim.AdamW(discriminators.parameters())
+    generator_optimizer = torch.optim.AdamW(generator.parameters())
 
     ##############################
     # Maybe load from checkpoint #
@@ -162,17 +162,6 @@ def train(
         # Train from scratch
         step = 0
 
-    #####################
-    # Create schedulers #
-    #####################
-
-    scheduler_fn = functools.partial(
-        torch.optim.lr_scheduler.ExponentialLR,
-        gamma=promonet.LEARNING_RATE_DECAY,
-        last_epoch=step // len(train_loader.dataset) if step else -1)
-    generator_scheduler = scheduler_fn(generator_optimizer)
-    discriminator_scheduler = scheduler_fn(discriminator_optimizer)
-
     #########
     # Train #
     #########
@@ -247,7 +236,6 @@ def train(
                 spectrograms,
                 spectrogram_lengths,
                 audio,
-                template
             ) = (item.to(device) for item in batch[1:])
 
             # Bundle training input
@@ -261,11 +249,10 @@ def train(
                 ratios,
                 spectrograms,
                 spectrogram_lengths,
-                audio,
-                template)
+                audio)
 
             # Convert to mels
-            mels = promonet.preprocess.spectrogram.linear_to_mel(
+            mels = promonet.data.preprocess.spectrogram.linear_to_mel(
                 spectrograms)
 
             with torch.cuda.amp.autocast():
@@ -324,7 +311,7 @@ def train(
                     # See Github issue https://github.com/jaywalnut310/vits/issues/15
                     # For progress, see https://github.com/pytorch/pytorch/issues/74537
                     generated = generated.float()
-                    generated_mels = promonet.preprocess.spectrogram.from_audio(
+                    generated_mels = promonet.data.preprocess.spectrogram.from_audio(
                         generated,
                         True)
                     audio = promonet.model.slice_segments(
@@ -547,20 +534,12 @@ def train(
 
                 if step % promonet.EVALUATION_INTERVAL == 0:
 
-                    # This context manager changes which forced aligner is
-                    # used. MFA is slow and less robust to errors than P2FA,
-                    # and works better with speaker adaptation, which we don't
-                    # perform here. However, the installation of P2FA is
-                    # more complicated. Therefore, we allow either aligner
-                    # to be used to evaluate training.
-                    with pyfoal.backend(promonet.TRAIN_ALIGNER):
-
-                        evaluate(
-                            log_directory,
-                            step,
-                            generator,
-                            valid_loader,
-                            gpu)
+                    evaluate(
+                        log_directory,
+                        step,
+                        generator,
+                        valid_loader,
+                        gpu)
 
                 ###################
                 # Save checkpoint #
@@ -603,10 +582,6 @@ def train(
             if not rank:
                 progress.update()
 
-        # Update learning rate every epoch
-        generator_scheduler.step()
-        discriminator_scheduler.step()
-
     # Close progress bar
     if not rank:
         progress.close()
@@ -674,8 +649,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                 _,
                 spectrogram,
                 _,
-                audio,
-                template
+                audio
             ) = (item.to(device) for item in batch[1:])
 
             # Ensure audio and generated are same length
@@ -689,7 +663,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                 waveforms[f'original/{i:02d}-audio'] = audio[0]
 
                 # Log original melspectrogram
-                mels = promonet.preprocess.spectrogram.linear_to_mel(
+                mels = promonet.data.preprocess.spectrogram.linear_to_mel(
                     spectrogram[0]).cpu().numpy()
                 figures[f'original/{i:02d}-mels'] = \
                     promonet.plot.spectrogram(mels)
@@ -723,8 +697,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                 loudness,
                 lengths,
                 speakers,
-                spectrograms=spectrogram,
-                template=template)
+                spectrograms=spectrogram)
 
             # Get prosody features
             (
@@ -776,15 +749,6 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                     # Shift pitch
                     shifted_pitch = ratio * pitch
 
-                    # Maybe make template
-                    if promonet.TEMPLATE_FEATURES:
-                        template = promonet.preprocess.template.from_prosody(
-                            shifted_pitch,
-                            periodicity,
-                            loudness)[None]
-                    else:
-                        template = None
-
                     # Generate pitch-shifted speech
                     shifted, *_ = generator(
                         phonemes,
@@ -792,8 +756,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                         periodicity,
                         loudness,
                         lengths,
-                        speakers,
-                        template=template)
+                        speakers)
 
                     # Get prosody features
                     (
@@ -874,15 +837,6 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                         dtype=torch.long,
                         device=device)
 
-                    # Maybe make template
-                    if promonet.TEMPLATE_FEATURES:
-                        template = promonet.preprocess.template.from_prosody(
-                            stretched_pitch,
-                            stretched_periodicity,
-                            stretched_loudness)[None]
-                    else:
-                        template = None
-
                     # Generate
                     stretched, *_ = generator(
                         stretched_phonemes,
@@ -890,8 +844,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                         stretched_periodicity,
                         stretched_loudness,
                         stretched_length,
-                        speakers,
-                        template=template)
+                        speakers)
 
                     # Get prosody features
                     (
@@ -947,15 +900,6 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                     # Scale loudness
                     scaled_loudness = loudness + 10 * math.log2(ratio)
 
-                    # Maybe make template
-                    if promonet.TEMPLATE_FEATURES:
-                        template = promonet.preprocess.template.from_prosody(
-                            pitch,
-                            periodicity,
-                            scaled_loudness)[None]
-                    else:
-                        template = None
-
                     # Generate loudness-scaled speech
                     scaled, *_ = generator(
                         phonemes,
@@ -963,8 +907,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
                         periodicity,
                         scaled_loudness,
                         lengths,
-                        speakers,
-                        template=template)
+                        speakers)
 
                     # Get prosody features
                     (
@@ -1040,7 +983,7 @@ def evaluate(directory, step, generator, valid_loader, gpu):
 
 def ppgs(audio, size, gpu=None):
     """Extract aligned PPGs"""
-    predicted_phonemes = promonet.preprocess.ppg.from_audio(
+    predicted_phonemes = promonet.data.preprocess.ppg.from_audio(
         audio[0],
         gpu=gpu)
     mode = promonet.PPG_INTERP_METHOD
diff --git a/run.sh b/run.sh
index 1903534..cdc887d 100755
--- a/run.sh
+++ b/run.sh
@@ -1,5 +1,31 @@
-python -m promonet.data.download --datasets daps && \
-python -m promonet.preprocess --datasets daps --gpu 0 && \
-python -m promonet.partition --datasets daps --overwrite
-# python -m promonet.partition --datasets daps --overwrite && \
-# python -m promonet.train --config config/test.py --dataset vctk --gpus 0
+# Runs all experiments in the paper
+# "Adaptive Neural Speech Prosody Editing"
+
+# Args
+# $1 - list of indices of GPUs to use
+
+# Download datasets
+python -m promonet.data.download
+
+# Setup experiments
+python -m promonet.data.augment --gpu $1
+python -m promonet.data.preprocess --features spectrogram ppg prosody --gpu $1
+python -m promonet.partition
+
+# First pass experiments trainings and evaluations
+# python -m promonet.train --config config/base-small.py --gpus $1
+# python -m promonet.train --config config/conddisc-small.py --gpus $1
+# python -m promonet.train --config config/conddisc-condgen-small.py --gpus $1
+# python -m promonet.train --config config/conddisc-condgen-augment-small.py --gpus $1
+python -m promonet.train --config config/conddisc-condgen-augment-snake-small.py --gpus $1
+
+# Baseline trainings and evaluations
+# python -m promonet.train --config config/promovoco-small.py --gpus $1
+# python -m promonet.train --config config/spectral-small.py --gpus $1
+# python -m promonet.train --config config/spectral-voco-small.py --gpus $1
+# python -m promonet.train --config config/two-stage-small.py --gpus $1
+# python -m promonet.train --config config/vits.py --gpus $1
+
+# DSP-based baseline evaluations
+python -m promonet.evaluate --config config/psola.py
+python -m promonet.evaluate --config config/world.py
diff --git a/run_ppgs.py b/run_ppgs.py
index 05fdac9..a25b467 100644
--- a/run_ppgs.py
+++ b/run_ppgs.py
@@ -11,6 +11,7 @@
 ###############################################################################
 
 
+# TODO - remove hard coding
 PPG_DIR = Path.home() / 'ppgs' / 'ppgs' / 'assets'
 
 
@@ -38,8 +39,6 @@ def main(model, gpu=None):
 
     # Get audio files
     audio_files = sorted(list(promonet.CACHE_DIR.rglob('*.wav')))
-    audio_files = [
-            file for file in audio_files if '-template' not in file.stem]
 
     # Get output file paths
     output_files = [
diff --git a/scripts/profile.sh b/scripts/profile.sh
deleted file mode 100755
index 5537f0c..0000000
--- a/scripts/profile.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-# Runs Python profiling
-# Results are saved to profile.out as well as printed to standard output
-# Usage profile.sh <script>.py <args>
-#    OR profile.sh <module>.<entry_point> <args>
-
-# Run profiling and save results to disk
-python -m cProfile -o profile.out $@
-
-# Parse results to a text file
-echo -e 'sort cumtime\nstats' | python -m pstats profile.out > profile.txt
-
-# Print some of the text file
-head -n 64 profile.txt


Test patch:
diff --git a/config/test-ablate-mrd-small.py b/config/test-ablate-mrd-small.py
deleted file mode 100644
index e7e10a7..0000000
--- a/config/test-ablate-mrd-small.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Configuration name
-CONFIG = 'test-ablate-mrd-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the phonemes through the latent
-LATENT_PHONEME_SHORTCUT = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = True
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = False
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/config/test-speaker-small.py b/config/test-speaker-small.py
deleted file mode 100644
index 499b8e0..0000000
--- a/config/test-speaker-small.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Configuration name
-CONFIG = 'test-speaker-small'
-
-# Batch size (per gpu)
-BATCH_SIZE = 16
-
-# Number of training steps
-NUM_STEPS = 100000
-
-# Discriminator phoneme conditioning
-DISCRIM_PHONEME_CONDITION = True
-
-# Discriminator augmentation ratio conditioning
-DISCRIM_RATIO_CONDITION = True
-
-# Pass the augmentation ratio through the latent
-LATENT_RATIO_SHORTCUT = True
-
-
-###############################################################################
-# Loss parameters
-###############################################################################
-
-
-# Weight applied to the discriminator loss
-ADVERSARIAL_LOSS_WEIGHT = 2.
-
-# Weight applied to the KL divergence loss
-KL_DIVERGENCE_LOSS_WEIGHT = 1.
-
-# Weight applied to the feature matching loss
-FEATURE_MATCHING_LOSS_WEIGHT = 2.
-
-# Weight applied to the melspectrogram loss
-MEL_LOSS_WEIGHT = 45.
-
-
-###############################################################################
-# condition-both-mrd-snake-filter-clip-augment-small
-###############################################################################
-
-
-# Whether to use pitch augmentation
-AUGMENT_PITCH = True
-
-# Discriminator loudness conditioning
-DISCRIM_LOUDNESS_CONDITION = True
-
-# Discriminator periodicity conditioning
-DISCRIM_PERIODICITY_CONDITION = True
-
-# Discriminator pitch conditioning
-DISCRIM_PITCH_CONDITION = True
-
-# Whether to perform gradient clipping on the generator
-GRADIENT_CLIP_GENERATOR = 1000.
-
-# Pass loudness through the latent
-LATENT_LOUDNESS_SHORTCUT = True
-
-# Pass periodicity through the latent
-LATENT_PERIODICITY_SHORTCUT = True
-
-# Pass pitch through the latent
-LATENT_PITCH_SHORTCUT = True
-
-# Loudness features
-LOUDNESS_FEATURES = True
-
-# Whether to use the multi-resolution spectrogram discriminator from UnivNet
-MULTI_RESOLUTION_DISCRIMINATOR = False
-
-# Whether to use the multi-scale waveform discriminator from MelGAN
-MULTI_SCALE_DISCRIMINATOR = True
-
-# Periodicity conditioning
-PERIODICITY_FEATURES = True
-
-# Pitch conditioning
-PITCH_FEATURES = True
-
-# Phonemic posteriorgram conditioning
-PPG_FEATURES = True
-
-# Type of interpolation method to use to scale PPG features
-# Available method are ['nearest', 'linear']
-PPG_INTERP_METHOD = 'nearest'
-
-# Whether to use snake activation in the audio generator
-SNAKE = True
-
-# Whether to use a low-pass filter when using snake
-SNAKE_FILTER = True
diff --git a/promonet/preprocess/ppg/conformer_ppg_model/e2e_asr_common.py b/promonet/data/preprocess/ppg/conformer_ppg_model/e2e_asr_common.py
similarity index 100%
rename from promonet/preprocess/ppg/conformer_ppg_model/e2e_asr_common.py
rename to promonet/data/preprocess/ppg/conformer_ppg_model/e2e_asr_common.py
diff --git a/test/conftest.py b/test/conftest.py
deleted file mode 100644
index 6e19399..0000000
--- a/test/conftest.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from pathlib import Path
-
-import pytest
-
-import promonet
-
-
-###############################################################################
-# Testing fixtures
-###############################################################################
-
-
-@pytest.fixture(scope='session')
-def audio():
-    """Retrieve the test audio"""
-    return promonet.load.audio(path('test.wav'))
-
-
-###############################################################################
-# Utilities
-###############################################################################
-
-
-def path(file):
-    """Retrieve the path to the test file"""
-    return Path(__file__).parent / 'assets' / file
diff --git a/test/test_core.py b/test/test_core.py
deleted file mode 100644
index 9baf376..0000000
--- a/test/test_core.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import promonet
-
-
-###############################################################################
-# Test generation
-###############################################################################
-
-
-def test_core(audio):
-    """Test generation"""
-    # Preprocess
-    features = promonet.preprocess.spectrogram.from_audio(audio)
-
-    # Vocode
-    vocoded_from_features = promonet.from_features(features)
-    vocoded_from_audio = promonet.from_audio(audio, promonet.SAMPLE_RATE)
-
-    # Should be deterministic
-    assert (vocoded_from_audio == vocoded_from_features).all()
-
-    # Should be correct length
-    assert vocoded_from_audio.shape[-1] == features.shape[-1] * promonet.HOPSIZE
diff --git a/test/test_preprocess.py b/test/test_preprocess.py
deleted file mode 100644
index 74b61e9..0000000
--- a/test/test_preprocess.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import promonet
-
-
-###############################################################################
-# Test preprocessing
-###############################################################################
-
-
-def test_mels(audio, true_mels):
-    """Test melspectrogram preprocessing"""
-    # Preprocess
-    spectrogram = promonet.preprocess.spectrogram.from_audio(audio, mels=True)
-
-    # Should be correct shape
-    correct_shape = (promonet.NUM_MELS, audio.shape[1] // promonet.HOPSIZE)
-    assert spectrogram.shape == correct_shape
-
-    # Should be correct value
-    assert (spectrogram == true_mels).all()
-
-
-def test_spectrogram(audio, true_spectrogram):
-    """Test spectrogram preprocessing"""
-    # Preprocess
-    spectrogram = promonet.preprocess.spectrogram.from_audio(audio)
-
-    # Should be correct shape
-    correct_shape = (
-        promonet.NUM_FFT // 2 + 1,
-        audio.shape[1] // promonet.HOPSIZE)
-    assert spectrogram.shape == correct_shape
-
-    # Should be correct value
-    assert (spectrogram == true_spectrogram).all()
-
-
-def test_text(text, true_features):
-    """Test text preprocessing"""
-    # Preprocess
-    features = promonet.preprocess.text(text)
-
-    # Should be correct shape
-    correct_shape = (promonet.NUM_PHONEMES, len(text))
-    assert features.shape == correct_shape
-
-    # Should be correct value
-    assert (features == true_features).all()