Exemplo n.º 1
0
def main():
    os.environ["CUDA_VISIBLE_DEVICES"] = ''
    print("Num GPUs Available: ",
          len(tf.config.experimental.list_physical_devices('GPU')))

    raw_maestro = waveform_dataset.get_waveform_dataset(MAESTRO_PATH)

    generator = ls_conditional_wave_spec_gan.Generator()

    checkpoint_path = '_results/conditioning/LSC_WaveSpecGAN_HR_8192/training_checkpoints/ckpt-2'

    checkpoint = tf.train.Checkpoint(generator=generator)
    checkpoint.restore(checkpoint_path).expect_partial()

    seed = raw_maestro[SEED_INDEX]

    sequence = [np.reshape(seed, (GENERATION_LENGTH))]
    for i in range(N_GENERATIONS):
        z_in = tf.random.uniform((1, Z_DIM), -1, 1)
        seed_in = sequence[i][CONDITIONING_START_INDEX:]
        seed_in = np.expand_dims(seed_in, 0)

        gen = generator(seed_in, z_in)
        sequence.append(np.squeeze(gen))

    audio = np.reshape(sequence, (-1))
    sf.write('babble.wav', audio, SAMPLE_RATE)
Exemplo n.º 2
0
def main():
    os.environ["CUDA_VISIBLE_DEVICES"] = '2'
    print("Num GPUs Available: ",
          len(tf.config.experimental.list_physical_devices('GPU')))

    raw_maestro = waveform_dataset.get_waveform_dataset(MAESTRO_PATH)
    raw_maestro_conditioning = waveform_dataset.get_waveform_dataset(
        MAESTRO_MIDI_PATH).astype(np.float32)

    generator = conditional_wave_spec_gan.Generator()
    discriminator = conditional_wave_spec_gan.WaveformDiscriminator(
        input_shape=WAVEFORM_SHAPE, weighting=CRITIC_WEIGHTINGS[0])
    spec_discriminator = conditional_wave_spec_gan.SpectogramDiscriminator(
        input_shape=MAGNITUDE_IMAGE_SHAPE, weighting=CRITIC_WEIGHTINGS[1])

    generator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                   beta_1=0.5,
                                                   beta_2=0.9)
    discriminator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                       beta_1=0.5,
                                                       beta_2=0.9)

    get_waveform = lambda waveform: waveform

    save_examples = lambda epoch, real, generated:\
        save_helper.save_wav_data(
            epoch, real, generated, SAMPLING_RATE, RESULT_DIR, get_waveform
        )

    wave_gan_model = conditional_wgan.ConditionalWGAN(
        raw_maestro,
        raw_maestro_conditioning,
        generator, [discriminator, spec_discriminator],
        Z_DIM,
        generator_optimizer,
        discriminator_optimizer,
        discriminator_training_ratio=D_UPDATES_PER_G,
        batch_size=BATCH_SIZE,
        epochs=EPOCHS,
        checkpoint_dir=CHECKPOINT_DIR,
        fn_save_examples=save_examples,
        fn_get_discriminator_input_representations=
        _get_discriminator_input_representations)

    wave_gan_model.train()
Exemplo n.º 3
0
def main():
    raw_maestro = waveform_dataset.get_waveform_dataset(MAESTRO_PATH)
    raw_maestro_conditioning = waveform_dataset.get_waveform_dataset(
        MAESTRO_CONDITIONING_PATH)

    generator = ls_conditional_wave_spec_gan.Generator()
    discriminator = ls_conditional_wave_spec_gan.WaveformDiscriminator(
        input_shape=WAVEFORM_SHAPE, weighting=CRITIC_WEIGHTINGS[0])
    spec_discriminator = ls_conditional_wave_spec_gan.SpectogramDiscriminator(
        input_shape=MAGNITUDE_IMAGE_SHAPE, weighting=CRITIC_WEIGHTINGS[1])

    generator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                   beta_1=0.5,
                                                   beta_2=0.9)
    discriminator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                       beta_1=0.5,
                                                       beta_2=0.9)

    get_waveform = lambda waveform: waveform

    save_examples = lambda epoch, real, generated:\
        save_helper.save_wav_data(
            epoch, real, generated, SAMPLE_RATE, RESULT_DIR, get_waveform
        )

    wave_gan_model = conditional_wgan.ConditionalWGAN(
        raw_maestro,
        raw_maestro_conditioning,
        generator, [discriminator, spec_discriminator],
        Z_DIM,
        generator_optimizer,
        discriminator_optimizer,
        discriminator_training_ratio=D_UPDATES_PER_G,
        batch_size=BATCH_SIZE,
        epochs=EPOCHS,
        checkpoint_dir=CHECKPOINT_DIR,
        fn_save_examples=save_examples,
        fn_get_discriminator_input_representations=
        _get_discriminator_input_representations)

    wave_gan_model.train()
Exemplo n.º 4
0
def main():
    os.environ["CUDA_VISIBLE_DEVICES"] = '1'
    print("Num GPUs Available: ",
          len(tf.config.experimental.list_physical_devices('GPU')))

    raw_maestro = waveform_dataset.get_stft_dataset(
        MAESTRO_PATH, frame_length=FFT_FRAME_LENGTH,
        frame_step=FFT_FRAME_STEP).astype(np.float32)
    raw_maestro_conditioning = waveform_dataset.get_waveform_dataset(
        MAESTRO_MIDI_PATH).astype(np.float32)

    generator = midi_conditional_spec_gan.Generator(channels=2)
    discriminator = midi_conditional_spec_gan.Discriminator(
        input_shape=STFT_IMAGE_SHAPE)
    spec_discriminator = midi_conditional_spec_gan.Discriminator(
        input_shape=MAGNITUDE_IMAGE_SHAPE)

    generator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                   beta_1=0.5,
                                                   beta_2=0.9)
    discriminator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                       beta_1=0.5,
                                                       beta_2=0.9)

    get_waveform = lambda stft:\
        spectral.stft_2_waveform(
            stft, FFT_FRAME_LENGTH, FFT_FRAME_STEP
        )[0]

    save_examples = lambda epoch, real, generated:\
        save_helper.save_wav_data(
            epoch, real, generated, SAMPLING_RATE, RESULT_DIR, get_waveform
        )

    stft_gan_model = conditional_wgan.ConditionalWGAN(
        raw_maestro,
        raw_maestro_conditioning,
        generator, [discriminator, spec_discriminator],
        Z_DIM,
        generator_optimizer,
        discriminator_optimizer,
        discriminator_training_ratio=D_UPDATES_PER_G,
        batch_size=BATCH_SIZE,
        epochs=EPOCHS,
        checkpoint_dir=CHECKPOINT_DIR,
        fn_save_examples=save_examples,
        fn_get_discriminator_input_representations=
        _get_discriminator_input_representations)

    stft_gan_model.train()
def main():
    os.environ["CUDA_VISIBLE_DEVICES"] = ''
    print("Num GPUs Available: ",
          len(tf.config.experimental.list_physical_devices('GPU')))

    raw_maestro = waveform_dataset.get_waveform_dataset(MAESTRO_PATH)

    for model in MODELS:
        n_basis_functions = MODELS[model]['num_basis_functions']
        basis_function_length = MODELS[model]['basis_function_legnth']

        encoder = learned_basis_function.Encoder(basis_function_length,
                                                 n_basis_functions)
        decoder = learned_basis_function.Decoder(basis_function_length)

        checkpoint = tf.train.Checkpoint(encoder=encoder, decoder=decoder)
        checkpoint.restore(MODELS[model]['checkpoint_path']).expect_partial()

        spectogram_like = encoder(
            raw_maestro[DECOMPOSITION_IDX:DECOMPOSITION_IDX + 1])
        reconstructed = decoder(spectogram_like)

        sf.write('{}_orig.wav'.format(model), raw_maestro[DECOMPOSITION_IDX],
                 SAMPLE_RATE)
        sf.write('{}_reconstructed.wav'.format(model),
                 tf.squeeze(reconstructed), SAMPLE_RATE)

        encoder_basis = tf.transpose(tf.squeeze(encoder.conv_layer.kernel))
        decoder_basis = tf.transpose(
            tf.squeeze(decoder.transpose_conv_layer.conv_2d.kernel))

        sorted_encoder_basis, sorted_encoder_ids = sort_basis_functions(
            encoder_basis)
        sorted_decoder_basis, _ = sort_basis_functions(decoder_basis)

        save_plot(sorted_encoder_basis, '{}_encoder.png'.format(model))
        save_plot(sorted_decoder_basis, '{}_decoder.png'.format(model))

        plot_basis_functions_frequency_domain(
            sorted_encoder_basis, '{}_encoder_frequency.png'.format(model))
        plot_basis_functions_frequency_domain(
            sorted_decoder_basis, '{}_decoder_frequency.png'.format(model))

        spectogram_like = tf.squeeze(spectogram_like)
        spectogram_like = np.array(spectogram_like)[:, sorted_encoder_ids]
        save_plot(spectogram_like, '{}_decomposition.png'.format(model))
Exemplo n.º 6
0
def main():
    os.environ['CUDA_VISIBLE_DEVICES'] = '1'
    print('Num GPUs Available: ',
          len(tf.config.experimental.list_physical_devices('GPU')))

    raw_dataset = waveform_dataset.get_waveform_dataset(DATASET_PATH)

    generator = wave_gan.Generator()
    discriminator = wave_gan.Discriminator(input_shape=WAVEFORM_SHAPE)

    generator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                   beta_1=0.5,
                                                   beta_2=0.9)
    discriminator_optimizer = tf.keras.optimizers.Adam(1e-4,
                                                       beta_1=0.5,
                                                       beta_2=0.9)

    get_waveform = lambda waveform: waveform

    save_examples = lambda epoch, real, generated:\
        save_helper.save_wav_data(
            epoch, real, generated, SAMPLING_RATE, RESULT_DIR, get_waveform
        )

    wave_gan_model = wgan.WGAN(raw_dataset,
                               generator, [discriminator],
                               Z_DIM,
                               generator_optimizer,
                               discriminator_optimizer,
                               discriminator_training_ratio=D_UPDATES_PER_G,
                               batch_size=BATCH_SIZE,
                               epochs=EPOCHS,
                               checkpoint_dir=CHECKPOINT_DIR,
                               fn_save_examples=save_examples)

    wave_gan_model.restore('ckpt-180', 1800)
    wave_gan_model.train()