diff --git a/README.md b/README.md index cf7b461..56cdb11 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,39 @@ -# Timbre Conditioned (Variational) Auto Encoder - -## Training +# Timbre Conditioned Auto Encoder TBD -## Dataset +## Data Preparation TBD +## Training + +Use a `LocalConfig` instance to control architecture and training parameters + +```python +from tcae import localconfig, train + +conf = localconfig.LocalConfig() + +conf.batch_size = 8 + +conf.simple_encoder = True +conf.simple_decoder = True + +conf.mt_outputs["mag_env"]["enabled"] = True +conf.mt_outputs["h_freq_shifts"]["enabled"] = True +conf.mt_outputs["f0_shifts"]["enabled"] = True +conf.mt_outputs["h_mag_dist"]["enabled"] = True +conf.mt_outputs["h_phase_diff"]["enabled"] = False + +conf.save_config() + +train.train(conf) +``` + ## Sound Generator -Get audio prediction +Deploy a trained model as a `SoundGenerator` ```python from sound_generator import SoundGenerator @@ -18,6 +41,9 @@ from sound_generator import SoundGenerator sg = SoundGenerator() +sg.config_path = "/path/to/config" +sg.checkpoint_path = "/path/to/checkpoint.h5" + success, audio = sg.get_prediction({ "input_pitch": 40, "pitch": 40, @@ -25,7 +51,9 @@ success, audio = sg.get_prediction({ # A list of sg.conf.num_measures values between 0 and 1 "heuristic_measures": [0.1] * sg.conf.num_measures, # A list of sg.conf.latent_dim values between 0 and 1 - "latent_sample": [0.5] * sg.conf.latent_dim + "latent_sample": [0.5] * sg.conf.latent_dim, + # A list of words describing timbre qualities + "qualities": ["dark", "soft"] }) ``` @@ -40,6 +68,8 @@ Required keys in the input dictionary: **latent_sample**: Values for z input to decoder +**qualities**: Timbre qualities from use speech, used to find initial heuristic configurations + **heuristic_measures**: List of values for following measures used in decoder in the sequence shown: ```python ['inharmonicity', diff --git a/SOUND_GENERATOR.md b/SOUND_GENERATOR.md index 7977250..566e6b0 100644 --- a/SOUND_GENERATOR.md +++ b/SOUND_GENERATOR.md @@ -4,19 +4,17 @@ Requires python >= 3.6 Clone repository -`git clone https://github.com/TheSoundOfAIOSR/rg_sound_generation.git` - -Go to the right directory - -`cd rg_sound_generation\timbre_conditioned_vae` +``` +git clone https://github.com/TheSoundOfAIOSR/rg_sound_generation.git +cd rg_sound_generation +``` Create virtual environment -`python -m venv env` - -Activate the environment - -`env\Scripts\activate` +``` +python -m venv env +env\Scripts\activate +``` Install required packages diff --git a/heuristic_analysis.ipynb b/heuristic_analysis.ipynb index d8128e6..002d373 100644 --- a/heuristic_analysis.ipynb +++ b/heuristic_analysis.ipynb @@ -11,7 +11,7 @@ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", - "from tcvae.compute_measures import heuristic_names\n", + "from tcae.compute_measures import heuristic_names\n", "\n", "plt.style.use(\"dark_background\")" ] diff --git a/predict.ipynb b/predict.ipynb index 59851c9..73c18b9 100644 --- a/predict.ipynb +++ b/predict.ipynb @@ -34,8 +34,8 @@ "import numpy as np\n", "import soundfile as sf\n", "import tsms\n", - "from tcvae import dataset, localconfig, model, train\n", - "from tcvae.compute_measures import heuristic_names\n", + "from tcae import dataset, localconfig, model, train\n", + "from tcae.compute_measures import heuristic_names\n", "from IPython.display import Audio" ] }, diff --git a/predict.py b/predict.py index 02cf685..ada684d 100644 --- a/predict.py +++ b/predict.py @@ -1,6 +1,6 @@ import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1" -from tcvae import predict, dataset, localconfig +from tcae import predict, dataset, localconfig from matplotlib import pyplot as plt conf = localconfig.LocalConfig() diff --git a/sound_generator.py b/sound_generator.py index d4e111e..bc39bcd 100644 --- a/sound_generator.py +++ b/sound_generator.py @@ -7,8 +7,8 @@ from pprint import pprint import warnings from typing import Dict, Any -from tcvae import model, localconfig, train -from tcvae.compute_measures import heuristic_names +from tcae import model, localconfig, train +from tcae.compute_measures import heuristic_names warnings.simplefilter("ignore") diff --git a/tcvae/__init__.py b/tcae/__init__.py similarity index 100% rename from tcvae/__init__.py rename to tcae/__init__.py diff --git a/tcvae/compute_measures.py b/tcae/compute_measures.py similarity index 100% rename from tcvae/compute_measures.py rename to tcae/compute_measures.py diff --git a/tcvae/data_handler.py b/tcae/data_handler.py similarity index 100% rename from tcvae/data_handler.py rename to tcae/data_handler.py diff --git a/tcvae/dataset.py b/tcae/dataset.py similarity index 100% rename from tcvae/dataset.py rename to tcae/dataset.py diff --git a/tcvae/heuristics/__init__.py b/tcae/heuristics/__init__.py similarity index 100% rename from tcvae/heuristics/__init__.py rename to tcae/heuristics/__init__.py diff --git a/tcvae/heuristics/core.py b/tcae/heuristics/core.py similarity index 100% rename from tcvae/heuristics/core.py rename to tcae/heuristics/core.py diff --git a/tcvae/heuristics/test_dahdr_envelope.py b/tcae/heuristics/test_dahdr_envelope.py similarity index 100% rename from tcvae/heuristics/test_dahdr_envelope.py rename to tcae/heuristics/test_dahdr_envelope.py diff --git a/tcvae/heuristics/test_synth.py b/tcae/heuristics/test_synth.py similarity index 100% rename from tcvae/heuristics/test_synth.py rename to tcae/heuristics/test_synth.py diff --git a/tcvae/localconfig.py b/tcae/localconfig.py similarity index 100% rename from tcvae/localconfig.py rename to tcae/localconfig.py diff --git a/tcvae/losses.py b/tcae/losses.py similarity index 100% rename from tcvae/losses.py rename to tcae/losses.py diff --git a/tcvae/model.py b/tcae/model.py similarity index 100% rename from tcvae/model.py rename to tcae/model.py diff --git a/tcvae/multi_head_attention.py b/tcae/multi_head_attention.py similarity index 100% rename from tcvae/multi_head_attention.py rename to tcae/multi_head_attention.py diff --git a/tcvae/predict.py b/tcae/predict.py similarity index 100% rename from tcvae/predict.py rename to tcae/predict.py diff --git a/tcvae/tfrecord_provider.py b/tcae/tfrecord_provider.py similarity index 100% rename from tcvae/tfrecord_provider.py rename to tcae/tfrecord_provider.py diff --git a/tcvae/train.py b/tcae/train.py similarity index 100% rename from tcvae/train.py rename to tcae/train.py diff --git a/train_from_cli.py b/train_from_cli.py index 5e0ed74..f4b0d1d 100644 --- a/train_from_cli.py +++ b/train_from_cli.py @@ -1,4 +1,4 @@ -from tcvae import localconfig, train +from tcae import localconfig, train if __name__ == "__main__": diff --git a/train_on_colab.ipynb b/train_on_colab.ipynb index c2364af..31ab790 100644 --- a/train_on_colab.ipynb +++ b/train_on_colab.ipynb @@ -105,7 +105,7 @@ }, "source": [ "import json\n", - "from tcvae import localconfig, train\n", + "from tcae import localconfig, train\n", "\n", "data_handler_type = \"data_handler\"\n", "conf = localconfig.LocalConfig(data_handler_type)"