| import os | |
| from pathlib import Path | |
| ############################################################################### | |
| # Metadata | |
| ############################################################################### | |
| # Configuration name | |
| CONFIG = 'ppgs' | |
| ############################################################################### | |
| # Audio parameters | |
| ############################################################################### | |
| # Audio hopsize | |
| HOPSIZE = 160 # samples | |
| # Number of spectrogram channels | |
| NUM_FFT = 1024 | |
| # Number of mel channels | |
| NUM_MELS = 80 | |
| # Audio sample rate | |
| SAMPLE_RATE = 16000 | |
| # Number of spectrogram channels | |
| WINDOW_SIZE = 1024 | |
| ############################################################################### | |
| # Data parameters | |
| ############################################################################### | |
| # Input and output | |
| ALL_FEATURES = ['audio', 'phonemes'] | |
| # All supported input representations | |
| ALL_REPRESENTATIONS = ['bottleneck', 'w2v2fb', 'w2v2fc', 'mel', 'encodec'] | |
| # All datasets used by this codebase | |
| DATASETS = ['commonvoice', 'arctic', 'timit', 'aishell3_train', 'aishell3_test'] | |
| # Best representation | |
| BEST_REPRESENTATION = 'mel' | |
| # Default representation | |
| REPRESENTATION = BEST_REPRESENTATION | |
| # representation kind | |
| # One of ['ppg', 'latents']. | |
| REPRESENTATION_KIND = 'ppg' | |
| # Datasets used for training | |
| TRAINING_DATASET = 'aishell3_train' | |
| ############################################################################### | |
| # 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 initial downloads before processing into DATA_DIR | |
| SOURCES_DIR = Path(__file__).parent.parent.parent / 'data' / 'sources' | |
| # Location of preprocessed features | |
| CACHE_DIR = ROOT_DIR / 'data' / 'cache' | |
| # Location of datasets on disk | |
| DATA_DIR = ROOT_DIR / 'data' / 'datasets' | |
| # Location to save evaluation artifacts | |
| EVAL_DIR = ROOT_DIR / 'eval' | |
| # Location to save training and adaptation artifacts | |
| RUNS_DIR = ROOT_DIR / 'runs' | |
| # Location of initial downloads before processing into DATA_DIR | |
| SOURCES_DIR = ROOT_DIR / 'data' / 'sources' | |
| # Location of similarity matrix | |
| SIMILARITY_MATRIX_PATH = ASSETS_DIR / 'balanced_similarity.pt' | |
| # Location of checkpoints | |
| CHECKPOINT_DIR = ASSETS_DIR / 'checkpoints' | |
| # Location of similarity matrix | |
| SIMILARITY_MATRIX_PATH = ASSETS_DIR / 'balanced_similarity.pt' | |
| ############################################################################### | |
| # Logging parameters | |
| ############################################################################### | |
| # Number of steps between saving checkpoints | |
| CHECKPOINT_INTERVAL = 25000 # steps | |
| # Number of batches to perform during evaluation | |
| DEFAULT_EVALUATION_STEPS = 16 | |
| # Number of steps between evaluation | |
| EVALUATION_INTERVAL = 1000 # steps | |
| ############################################################################### | |
| # Model parameters | |
| ############################################################################### | |
| # Local checkpoint to use | |
| # If None, Huggingface will be used unless a checkpoint is given in the CLI | |
| LOCAL_CHECKPOINT = None | |
| # Number of attention heads | |
| ATTENTION_HEADS = 2 | |
| # Attention window size | |
| ATTENTION_WINDOW_SIZE = 4 | |
| # Use causal masking/methods | |
| IS_CAUSAL = False | |
| # This function takes as input a torch.Device and returns a callable frontend | |
| FRONTEND = None | |
| # Network width | |
| HIDDEN_CHANNELS = 256 | |
| # Dimensionality of input representation | |
| INPUT_CHANNELS = 80 | |
| # Kernel width | |
| KERNEL_SIZE = 5 | |
| # Model architecture. | |
| # One of ['convolution', 'transformer', 'W2V2FC', 'Wav2Vec2.0']. | |
| MODEL = 'transformer' | |
| # Number of hidden layers | |
| NUM_HIDDEN_LAYERS = 5 | |
| # Dimensionality of output representation English(40) | |
| OUTPUT_CHANNELS = 187 | |
| # Additional context overlap between chunks | |
| CHUNK_OVERLAP = 50 | |
| # Maximum number of frames in a chunk | |
| CHUNK_LENGTH = 500 | |
| ############################################################################### | |
| # Training parameters | |
| ############################################################################### | |
| # Number of buckets to partition training examples to minimize padding | |
| BUCKETS = 1 | |
| # Whether to use class-balanced loss weights | |
| CLASS_BALANCED = False | |
| # Infinity norm gradient clipping threshold | |
| GRADIENT_CLIP_THRESHOLD_INF = None | |
| # L2 norm gradient clipping threshold | |
| GRADIENT_CLIP_THRESHOLD_L2 = None | |
| # Optimizer step size | |
| LEARNING_RATE = 2e-4 | |
| # Maximum number of frames in a batch | |
| MAX_TRAINING_FRAMES = 150000 | |
| # Maximum number of frames in a batch during preprocessing | |
| MAX_PREPROCESS_FRAMES = 10000 | |
| # Number of training steps | |
| STEPS = 100000 | |
| # Number of data loading worker threads | |
| # TEMPORARY | |
| # try: | |
| # NUM_WORKERS = int(os.cpu_count() / max(1, len(GPUtil.getGPUs()))) | |
| # except ValueError: | |
| # NUM_WORKERS = os.cpu_count() | |
| NUM_WORKERS = 8 | |
| # Seed for all random number generators | |
| RANDOM_SEED = 1234 | |
| ############################################################################### | |
| # Distance parameters | |
| ############################################################################### | |
| # A hyperparameter that weights the relative contribution of the acoustic | |
| # phoneme similarity matrix. The default value was tuned to maximize | |
| # correlation between word error rate (WER) and the average JS divergence | |
| # between PPGs. | |
| SIMILARITY_EXPONENT = None | |