Глубокое обучение с помощью спектрограмм для распознавания звука

12

Я искал возможность классифицировать звук (например, звуки животных), используя спектрограммы. Идея состоит в том, чтобы использовать глубоко сверточные нейронные сети, чтобы распознавать сегменты в спектрограмме и выводить одну (или несколько) меток классов. Это не новая идея (см., Например, классификацию звуков китов или распознавание музыкального стиля ).

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть звуковые файлы разной длины и, следовательно, спектрограммы разных размеров. Пока что каждый подход, который я видел, использует сэмпл фиксированного размера, но я не могу этого сделать, потому что мой звуковой файл может быть 10 секунд или 2 минуты.

Например, со звуком птицы в начале и звуком лягушки в конце (вывод должен быть «Птица, лягушка»). Моим текущим решением было бы добавить временный компонент в нейронную сеть (создавая больше повторяющейся нейронной сети), но я хотел бы пока сделать его простым. Есть идеи, ссылки, учебники, ...?

user667804
источник
1
Самый простой способ - использовать БПФ фиксированной длины вместо STFT (спектрограмма). Это устранит вашу проблему переменной длины. Почему бы вам просто не применить рекуррентную нейронную сеть? Вам просто нужен проработанный пример? Если да, можете ли вы гибко выбрать программное обеспечение?
Эмре
1
Я думаю, что потерял бы много информации с БПФ фиксированной длины. Если бы я сделал это, я думаю, что сначала мне пришлось бы сделать сегментацию, где я ищу «интересные» части. Я мог бы сделать это или пойти в периодические нейронные сети (пример хорош, но не супер необходим, я хотел использовать Лазанье). Причина, по которой я пытался избежать этого, состоит в том, что с выходом периодической нейронной сети труднее иметь дело (на каждом временном шаге, но у меня есть только метки для всего файла). Поэтому я хотел начать с самой простой модели и постепенно сделать ее более сложной.
user667804 30.01.16
Не могли бы вы рассказать, что вы в итоге использовали и какой лучший подход вы нашли? @ user667804
nia
Проверьте этот документ для решения: ceur-ws.org/Vol-1609/16090547.pdf Использование CNN на кусках фиксированного размера спектрограммы, а затем усреднение выходных данных для генерации одного окончательного прогноза (среднее из индивидальных выходных данных, кажется, работает Лучший).
user667804

Ответы:

4

Для автоматического распознавания речи (ASR) функции банка фильтров работают так же хорошо, как CNN на спектрограммах. Таблица 1 . Вы можете обучить систему DBN-DNN на fbank для классификации звуков животных.

На практике более длинные речевые высказывания делятся на более короткие, поскольку декодирование Витерби не подходит для более длинных высказываний. Вы могли бы сделать то же самое.

Вы можете разделить более длинные высказывания на меньшие высказывания фиксированной длины. Разделить более длинные высказывания на более мелкие легко. Проблема заключается в увеличении длины меньших высказываний до фиксированной длины.

Вы можете деформировать частотную ось спектрограммы для увеличения меньших высказываний. Было показано, что это увеличение данных улучшает улучшение производительности ASR .

Для более длинного высказывания с несколькими звуками в нем вы можете использовать алгоритмы сегментации музыки, чтобы разделить его на несколько высказываний. Эти высказывания могут быть сделаны фиксированной длины путем деления или увеличения.

arduinolover
источник
4

RNN не давали достаточно хороших результатов, и их также трудно тренировать, поэтому я пошел с CNN.

Поскольку звук конкретного животного длится всего несколько секунд, мы можем разделить спектрограмму на куски. Я использовал длину 3 секунды. Затем мы выполняем классификацию каждого куска и усредняем результаты, чтобы создать единый прогноз для каждого аудиофайла. Это работает очень хорошо, а также просто реализовать.

Более подробное объяснение можно найти здесь: http://ceur-ws.org/Vol-1609/16090547.pdf

user667804
источник