Как сделать авто-кодировщик в Keras для аудио файлов wav - PullRequest
0 голосов
/ 03 мая 2019

В последнее время я изучал нейронные сети с автоматическим кодировщиком, и я наткнулся на этот урок, описывающий, как создать автоматический кодировщик для файлов изображений в Keras: https://blog.keras.io/building-autoencoders-in-keras.html

Прочитав эту статью, я удивилсякак этот код может быть изменен для кодирования аудио файлов WAV.Моя цель - иметь возможность кодировать аудиофайлы, брать закодированный файл, перемещать его в другое место, а затем декодировать, чтобы получить исходное аудио (или, по крайней мере, что-то довольно близкое).Я провел некоторые исследования, но не могу найти авто-кодировщики для файлов wav, которые позволили бы вам извлечь закодированный файл из алгоритма и позже подключить его к алгоритму декодера.Код на сайте выше выглядел многообещающе, но он предназначен для файлов изображений, а не аудио.Код, который я просматривал, был таким:

    from keras.layers import Input, Dense
    from keras.models import Model

    # this is the size of our encoded representations
    encoding_dim = 32  # 32 floats -> compression of factor 24.5,     assuming the input is 784 floats

    # this is our input placeholder
    input_img = Input(shape=(784,))
    # "encoded" is the encoded representation of the input
    encoded = Dense(encoding_dim, activation='relu')(input_img)
    # "decoded" is the lossy reconstruction of the input
    decoded = Dense(784, activation='sigmoid')(encoded)

    # this model maps an input to its reconstruction
    autoencoder = Model(input_img, decoded)

    # this model maps an input to its encoded representation
    encoder = Model(input_img, encoded)

    # create a placeholder for an encoded (32-dimensional) input
    encoded_input = Input(shape=(encoding_dim,))
    # retrieve the last layer of the autoencoder model
    decoder_layer = autoencoder.layers[-1]
    # create the decoder model
    decoder = Model(encoded_input, decoder_layer(encoded_input))

    autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')

    from keras.datasets import mnist
    import numpy as np
    (x_train, _), (x_test, _) = mnist.load_data()
    x_train = x_train.astype('float32') / 255.
    x_test = x_test.astype('float32') / 255.
    x_train = x_train.reshape((len(x_train),   np.prod(x_train.shape[1:])))
    x_test = x_test.reshape((len(x_test),  np.prod(x_test.shape[1:])))
    print x_train.shape
    print x_test.shape

    autoencoder.fit(x_train, x_train,
            epochs=50,
            batch_size=256,
            shuffle=True,
            validation_data=(x_test, x_test))
    # encode and decode some digits
    # note that we take them from the *test* set
    encoded_imgs = encoder.predict(x_test)
    decoded_imgs = decoder.predict(encoded_imgs)

    # use Matplotlib (don't ask)
    import matplotlib.pyplot as plt

    n = 10  # how many digits we will display
    plt.figure(figsize=(20, 4))
    for i in range(n):
         # display original
         ax = plt.subplot(2, n, i + 1)
         plt.imshow(x_test[i].reshape(28, 28))
         plt.gray()
         ax.get_xaxis().set_visible(False)
         ax.get_yaxis().set_visible(False)

         # display reconstruction
         ax = plt.subplot(2, n, i + 1 + n)
         plt.imshow(decoded_imgs[i].reshape(28, 28))
         plt.gray()
         ax.get_xaxis().set_visible(False)
         ax.get_yaxis().set_visible(False)
    plt.show()

Можно ли было бы отредактировать этот код, чтобы он кодировал файлы WAV?Если нет, есть ли другие программы, которые позволили бы мне кодировать файл wav, извлекать закодированный файл, а затем подключить его обратно в программу декодирования, чтобы получить звук, максимально приближенный к оригиналу?Любая помощь будет принята с благодарностью!Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...