Как мне представить аудиофайл для использования в нейронной сети? - PullRequest
0 голосов
/ 12 января 2019

Я хочу создать базовый сверточный автоэнкодер в Keras (tenorflow, python) для использования с аудиофайлами (MP3, WAV и т. Д.).

По сути, вот что я делаю:

1) преобразовать mp3 в массив

    def mp3_to_array(original_mp3):
        blah blah blah
        return original_array

2) запустить массив через автоэнкодер, вывести аналогичный (но с потерями, из-за операций автоэнкодера) массив

    def autoencoder(original_array):
        autoencoder stuff
        return new_array

3) преобразовать массив в mp3

    def array_to_mp3(new_array):
        halb halb halb
        return new_mp3

Я знаю, что спектрограммы Мела и кепстральные коэффициенты Мель-частоты (mfcc's) обычно используются в системах классификации. Насколько я знаю, я не могу использовать их, потому что они не могут быть преобразованы обратно в mp3 без значительных потерь.

Существует ли основанный на массиве , без потерь * (или почти без потерь) метод преобразования представлений, который подходит для использования в сверточной нейронной сети для преобразования mp3 в массив, и наоборот?

РЕДАКТИРОВАТЬ: В частности, я спрашиваю о шагах 1 и 3. Я знаю, что шаг 2 будет изначально с потерями.

Заранее спасибо!

1 Ответ

0 голосов
/ 12 января 2019

Я бы сказал, что это не столько вопрос о представлении необработанного звука, сколько вопрос о том, есть ли сверточное преобразование без потерь, на которое я бы сказал, нет

... кроме того, существует множество преобразований, которые без потерь (или почти без потерь), например, когда вы отправляете аудио в преобразование Фурье, чтобы преобразовать его из временной области в представление его частотной области, а затем выполнить второе преобразование с помощью отправив представление домена freq в обратное преобразование Фурье, теперь у вас будет нормальное аудио во временной области, которое будет соответствовать исходному исходному аудио с произвольной степенью точности ... Я знаю это после написания проекта golang, которому дана входная фотография в оттенках серого который анализируется для синтеза информации об уровне интенсивности света на пиксель в одноканальный аудиосигнал (обратное преобразование Фурье), который затем прослушивается (преобразование Фурье) для синтеза выходного фото, которое соответствует входному фото

Если вас интересует точность на уровне битов (без потерь), вам следует избегать использования mp3 и использовать кодек без потерь или просто для начала использовать формат WAV ... любой аудио CD использует WAV, который является просто кривой звука в PCM ... это всего лишь точки на кривой звука (сэмплы для обоих каналов) ... в предыдущем шаге 2) если вы просто подадите аудио кривую прямо в свою нейронную сеть, ей будут переданы ваши аудиоданные без потерь ... точка типичного Автоопределители по определению являются преобразованием с потерями, поскольку они отбрасывают информацию об уровне битов

Существует несколько проблем при использовании звука в качестве входного сигнала в нейронной сети

1) аудио имеет аспект времени, поэтому в зависимости от того, что вам нужно, вы можете собирать куски аудиосэмплов (чтобы создать серию окон сэмплов) и подавать каждое окно как единицу данных в NN или возможно нет

2) Как и в случае с изображениями, аудио имеет огромное количество точек данных ... то есть каждая точка на исходной кривой звука была сэмплирована в восходящем направлении, и теперь у вас обычно есть 44,100 выборок на канал в секунду, где часто используется семантическое значение групп этих сэмплов ... например, одно произнесенное слово является совокупным понятием, легко охватывающим тысячи и, возможно, 10 тысяч точек данных аудиосэмплов ... поэтому очень важно правильно создавать эти окна сэмплов аудиосигналов ... объединенные в создание окна сэмплов - это проектное решение о том, как будет создано следующее окно: содержит ли следующее окно несколько сэмплов из предыдущего окна или все сэмплы являются новыми ... количество сэмплов в каждом окне одинаковое или оно совпадает? изменяются

Итак, откройте входной аудиофайл и прочитайте его в буфер ..., чтобы подтвердить, что этот буфер был создан, ОК, просто запишите его в файл, затем воспроизведите этот файл и убедитесь, что он воспроизводится, ОК ... используйте бесплатный открытый исходный код аудио инструмент под названием Audacity, чтобы открыть аудио файл и просмотреть его аудио кривую

...