Какой алгоритм я должен использовать для сигнала (звук) одну классификацию классов?

Я предлагаю запустить ваш ответ JSON через jsonutils.com и использовать этот сгенерированный класс в качестве модели на этапе десериализации. Обычно это дурак и устраняет потенциальную человеческую ошибку при попытке вручную определить классы.

12
задан Matt J 27 January 2009 в 16:33
поделиться

10 ответов

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

Возможно, более простой подход должен был бы сделать FFT образца и определить, если Ваше насекомое какие-то конкретные частоты, которые могут быть фильтрованы на.

На более сложной стороне, но не совсем нейронной сети, инструментарии SVM как libsvm и svmlight, в который можно бросить данные.

Независимо от пути Вы пытаетесь, я провел бы время, исследуя природу звука, Ваше насекомое делает инструменты использования как FFT. В конце концов, это будет более легкое обучение компьютера классифицировать звук, если можно сделать это сами.

11
ответ дан 2 December 2019 в 05:42
поделиться

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

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

Между прочим, потому что Ваш необработанный звуковой сигнал является цифровым (иначе обрабатывающий с компьютером, не будет работать ;-)) свертка является соответствующей. Необходимо выполнить свертку между опорным сигналом и образцом равной длины от необработанного входа, начинающего с каждого образца. Так, если Ваш опорный сигнал имеет длину N, и Ваш необработанный образец имеет длину M, где M> =N затем необходимо выполнить M-N+1=P свертки между опорным сигналом и образцами P от необработанного входа, запускающегося в 1.. P. Лучшая возможность для местоположения ссылочного звука в необработанном образце является образцом с самым высоким счетом свертки. Обратите внимание, что это становится безумно трудоемким очень быстро.

Основанное на преобразовании Фурье соответствие как я объяснил выше использования 50%-х перекрывающихся образцов от Ваших необработанных данных дважды продолжительности Вашего ссылочного образца, по крайней мере, будет быстрее (хотя не обязательно лучше)

3
ответ дан 2 December 2019 в 05:42
поделиться

Еще некоторая информация необходима.

Когда Вы говорите, что сигнал с шумами, каков фоновый шум? Это, в первом приближении, стационарное (в статистическом смысле, т.е. постоянный), или действительно ли это является неустановившимся (т.е. вероятно содержать другие звуки, такие как другие вызовы животных и т.д.?)

Если фоновый шум является неустановившимся затем, Ваш лучший выбор мог бы состоять в том, чтобы использовать что-то названное Независимым Анализом Компонентов, который пытается разделить данную звуковую смесь на ее источники компонента, Вам даже не была бы нужна исходная запись самого насекомого. Много программного обеспечения ICA связано от страницы Wikipedia.

(Редактирование: ICA является случаем слепого разделения источников (BSS), существует много других способов сделать BSS, и это могло бы помочь искать их также.)

Если однако, фоновый шум является стационарным затем, проблема намного легче (хотя все еще очень трудно):

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

Можно затем попытаться сравнить разделы отфильтрованного сигнала, которые содержат "больше энергии", чем среднее число с (фильтрованным) вызовом насекомого. Возможно при помощи алгоритмов подобия изображения, предложенных A. Король.

Править: Так как Ваш фоновый шум является неустановившимся затем, я могу только предположить, что поиск слепого разделения источников негауссовых источников может привести Вас еще к некоторым алгоритмам. Я боюсь, что ответ - то, что нет никакого простого алгоритма, который сделает то, что Вы хотите.

3
ответ дан 2 December 2019 в 05:42
поделиться

На вашем месте начал бы читать немного о Функциях Окна как окно Хэмминга, это - хорошая начальная точка для распознавания звука. (Это, конечно, объединено с Fourier Преобразованием),

2
ответ дан 2 December 2019 в 05:42
поделиться

Можно попробовать Подобранный Фильтр. Хотя я на самом деле никогда не использовал один, я услышал хорошие вещи.

Кроме того, хотя не простой, я думаю скрытая марковская модель (HMM, я знаю, что Вы сказали, что никакое распознавание речи, но выслушивают меня!) предоставил бы лучшие результаты Вам. Снова, я на самом деле никогда не использовал один, но существуют реализации с открытым исходным кодом, доступные повсеместно. Необходимо было бы просто обучаться, это с помощью exisiting "чистит" запись насекомого. Вот одна реализация с открытым исходным кодом: Общая Библиотека скрытой марковской модели.

2
ответ дан 2 December 2019 в 05:42
поделиться

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

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

2
ответ дан 2 December 2019 в 05:42
поделиться

Можно интересоваться Панель инструментов MA, реализация Matlab меры (мер) подобия.

Я лично нашел данную статью, Общую звуковую классификацию и подобие в MPEG-7, интересном. Однако это могло бы быть позади paywall (я не знаю), и это не могло бы быть настолько полезно на практике.

Платформа GPLed Marsyas имеет инструмент для классификации машинного обучения, названной kea. Мое предположение - то, что это, вероятно, не делает то, что Вы хотите, или слишком много усилия сцепиться до.

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

1
ответ дан 2 December 2019 в 05:42
поделиться

Наивный классификатор Байеса может стоить здесь, классифицируя звуковые образцы в, которые содержат Ваши разновидности интереса и, которые не делают. Это работает вполне хорошо на сложные явления; я когда-то использовал его, чтобы решить, содержал ли данный РАДАРНЫЙ набор данных миллиметровых волн препятствие, такое как кисть, прерывание корпуса, и т.д. Что касается того, как разбить Ваши текущие данные в дискретные блоки для байесовского классификатора, Вы могли бы просто скользить вдоль набора текущих данных и прервать блоки, равные по длине к Вашему образцу насекомого. Например, если образец, с которым Вы выдерживаете сравнение, 2 секунды длиной, Вы могли бы подать 02 различителя, 0.5-2.5s, 13, и т.д. Необходимо будет обучить различитель, но это - общее требование любого основанного на машинном обучении решения.

Эти виды подходов о единственном способе пойти, если Ваш вид насекомых не имеет единственного, относительно отличного звука, который Вы ищете. Взаимная корреляция/свертка имеет ограниченную утилиту при поиске чего-то более сложного, чем единственный звук, который может быть в более высокой или пониженной громкости.

Существуют реализации наивного классификатора Байеса для нескольких языков, таких как NBC.

1
ответ дан 2 December 2019 в 05:42
поделиться

Можно хотеть Wiener подход фильтра.

1
ответ дан 2 December 2019 в 05:42
поделиться

Goertzel - Можно использовать его любой для простого обнаружения шаблона, и для сложного разделения частот. Вы видите образец моей реализации в C#

0
ответ дан 2 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: