Сопоставление аудио-паттернов в Matlab
Может кто-нибудь, пожалуйста, дайте мне представление об этой проблеме в Matlab,
У меня есть 4. WAV файлы, которые содержат щебетание птиц. Каждый файл.wav представляет отдельную птицу. Учитывая входной файл.wav, мне нужно решить, какая это птица. Я знаю, что должен сделать сравнение частотного спектра, чтобы найти решение. но не совсем знаю, как мне использовать спектрограмму, чтобы помочь мне туда добраться.
PS Я знаю, как работает спектрограмма, и с ее помощью подготовил довольно много WAV-файлов.
3 ответа
Есть несколько способов решения проблемы распознавания, как тот, о котором вы говорите.
Вы можете использовать частотный анализ как FFT с функцией MatlabS = SPECTROGRAM(X,WINDOW,NOVERLAP)
В SPECTROGRAM
вам нужно определить временное окно анализируемого сигнала в переменной WINDOW
, Вы можете использовать прямоугольное окно (пример WINDOW = [1 1 1 1 1 1 1 ... 1]
) с количеством значений, равным требуемой длине. Есть много окон для использования: Ханнинг, Хэмминг, Блэкман. Вы должны использовать тот, который лучше для вашей проблемы. NOVERLAP
это количество точек, которые ваши окна перемещают за один шаг.
Помимо этого подхода, вейвлет-преобразование также является хорошим методом для решения вашей проблемы. Matlab также имеет хороший набор инструментов для применения дискретных и непрерывных вейвлетов.
Вы можете попытаться решить проблему с Deep Belief Networks
Вот несколько статей, которые могут быть полезны:
- Извлечение аудио функций с помощью машин Больцмана с ограничениями
- Необучаемая функция обучения для аудио классификации
Чтобы подвести итог идеи, вместо ручной настройки функций, используйте RBM или Autoencoder для извлечения функций (баз), которые представляют наблюдаемые аудиосэмплы, а затем запустите алгоритм обучения.
Вам понадобится более 4 аудиосэмплов, чтобы обучить DBN, но это стоит попробовать, так как этот подход показал многообещающие результаты в прошлом.
Этот учебник может быть также полезным.
Это может оказаться сложной проблемой. В качестве отправной точки я советую вам разделить каждую запись на некоторую фиксированную длину кадров, например, 20 мс с перекрытием 10 мс, затем извлечь fft этих кадров и получить некоторую частоту максимальной энергии. значения для каждого кадра. В качестве последнего шага сравните частоты кадров друг с другом и определите результат, выбрав максимальную корреляцию.