Я искал возможность классифицировать звук (например, звуки животных), используя спектрограммы. Идея состоит в том, чтобы использовать глубоко сверточные нейронные сети, чтобы распознавать сегменты в спектрограмме и выводить одну (или несколько) меток классов. Это не новая идея (см., Например, классификацию звуков китов или распознавание музыкального стиля ).
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть звуковые файлы разной длины и, следовательно, спектрограммы разных размеров. Пока что каждый подход, который я видел, использует сэмпл фиксированного размера, но я не могу этого сделать, потому что мой звуковой файл может быть 10 секунд или 2 минуты.
Например, со звуком птицы в начале и звуком лягушки в конце (вывод должен быть «Птица, лягушка»). Моим текущим решением было бы добавить временный компонент в нейронную сеть (создавая больше повторяющейся нейронной сети), но я хотел бы пока сделать его простым. Есть идеи, ссылки, учебники, ...?
Ответы:
Для автоматического распознавания речи (ASR) функции банка фильтров работают так же хорошо, как CNN на спектрограммах. Таблица 1 . Вы можете обучить систему DBN-DNN на fbank для классификации звуков животных.
На практике более длинные речевые высказывания делятся на более короткие, поскольку декодирование Витерби не подходит для более длинных высказываний. Вы могли бы сделать то же самое.
Вы можете разделить более длинные высказывания на меньшие высказывания фиксированной длины. Разделить более длинные высказывания на более мелкие легко. Проблема заключается в увеличении длины меньших высказываний до фиксированной длины.
Вы можете деформировать частотную ось спектрограммы для увеличения меньших высказываний. Было показано, что это увеличение данных улучшает улучшение производительности ASR .
Для более длинного высказывания с несколькими звуками в нем вы можете использовать алгоритмы сегментации музыки, чтобы разделить его на несколько высказываний. Эти высказывания могут быть сделаны фиксированной длины путем деления или увеличения.
источник
RNN не давали достаточно хороших результатов, и их также трудно тренировать, поэтому я пошел с CNN.
Поскольку звук конкретного животного длится всего несколько секунд, мы можем разделить спектрограмму на куски. Я использовал длину 3 секунды. Затем мы выполняем классификацию каждого куска и усредняем результаты, чтобы создать единый прогноз для каждого аудиофайла. Это работает очень хорошо, а также просто реализовать.
Более подробное объяснение можно найти здесь: http://ceur-ws.org/Vol-1609/16090547.pdf
источник