Напишите программу, которая распознает звук и выполняет действие - PullRequest
10 голосов
/ 08 мая 2009

Я хотел бы написать программу, которая способна хранить звуковую картину, такую ​​как свист поезда, гудок (звуковой сигнал) ... прослушивание звука через микрофон ... и затем предпринять некоторые действия, когда звук слышен. Я немного знаю питона и давно программировал на VB. В основном я парень из Oracle, PLSQL. Программа потребует скромного интерфейса.

Какова наилучшая комбинация решений (язык, сторонние дополнения и т. Д.) Для решения этой проблемы?

Ответы [ 4 ]

3 голосов
/ 08 мая 2009

Я предполагаю, что путь наименьшего сопротивления в этом случае заключается в использовании сторонней библиотеки распознавания звука в сочетании с языком высокого уровня (например, Java или одним из языков семейства .NET, таким как C # или VB). NET).

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

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

См. MARF (библиотека Java) и, возможно, работа Microsoft в этой области с пространством имен System.Speech.Recognition (которое, если я правильно помню, было интегрировано с более новой Windows операционные системы)

РЕДАКТИРОВАТЬ - Настольный ПК или Запуск из Интернета

В комментариях, которые вы спрашивали об использовании Flash или Silverlight, чтобы ваше решение могло работать как на рабочем столе, так и в Интернете.

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

Если это то, что вам нужно (т. Е. Пользователю не нужно устанавливать приложение), тогда вы можете взглянуть на Flash, Silverlight или Java Web Start . На самом деле JAVA Web Start, вероятно, будет хорошим кандидатом, потому что вы можете использовать MARF framework .

Однако, если вы решили использовать Flash, Silverlight или Java Web Start, есть некоторые проблемы с безопасностью, с которыми вам, возможно, придется столкнуться, поскольку доступ к ресурсам клиентской системы обязательно требует некоторых привилегий, которые большинство "веб-приложений" обычно не требуется.

2 голосов
/ 08 мая 2009

Сфинкс - это система распознавания речи. Он может быть изменен или даже обучен работать так, как вы ожидаете.

1 голос
/ 08 мая 2009

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

Классифицировать новый звук, который программа не слышала раньше (звучит как гудок, как свисток поезда и т. Д.), Гораздо сложнее.

В любом случае алгоритмы идентификации звука обычно смотрят на частотный спектр записанного звука (см. Ссылку Miky D о цифровой обработке звука) и выполняют некоторое распознавание образов на этих данных, а не на сам записанный сигнал.

Что касается языковых и сторонних библиотек, перейдите на что-то, что позволяет вам получать записанные аудиоданные с минимальными усилиями. Java кажется хорошим в этом отношении (см. Также алгоритм машинного обучения Java WEKA ). Хотя существуют программы / библиотеки для анализа речи и музыки, я не знаю ни одной, предназначенной для произвольных звуков, поэтому вам может понадобиться написать алгоритм анализа самостоятельно.

0 голосов
/ 09 мая 2009

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

Аспект ваших звуков, который может сделать их легче отличить от речи, заключается в том, что они, вероятно, будут иметь четкую гармоническую структуру (то есть больше похожи на скрипку, чем на голос в ссылке в википедии). Эта гармоническая структура может быть очень полезна при различении звуков и может помочь в вашей проблеме. Это наводит на мысль о другом месте, которое нужно искать: много работы по выделению песен птиц, которые имеют четкую гармоническую структуру, и множество опубликованных алгоритмов, хотя я не знаю свободного программного обеспечения, которое можно расширить для ваших нужд. Тем не менее, может быть полезно использовать программное обеспечение для анализа пения птиц, чтобы просто взглянуть на ваши звуковые файлы. См., Например, проект Raven , хотя существует много других бесплатных пакетов спектрограмм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...