2010-05-11 2 views
10

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

Лучшее, что я могу себе представить, это разделить поток, используя молчание в звуке, а затем использовать некоторое распознавание образов для кодирования каждого из них в виде списка токенов, сохраняя новые, когда вы их встретите. Хешируя последовательности токенов и подсчитывая появления в базе данных, вы могли бы создать изображение наиболее часто произносимых фраз. Но учитывая огромное разнообразие фраз, как вы мешаете этому просто стать огромным списком? И огромное количество пар для соответствия, несомненно, создало бы массу ложных срабатываний из комбинаторной природы соответствия.

Вы бы использовали нейронную сеть, так как это управляет этим реальным попугаем? Или есть другой, более умный способ сопоставления крупномасштабных шаблонов в аналоговых данных?

+1

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

ответ

0

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

, если входящий звук не соответствует ни одному сохраненному - выброси это.

бутстраповская будет жесткая часть - различая начальное число целевых фраз ...

во всяком случае - с верхней части моей головы. hth

3

It's been done, sorta.

Редактировать: OK, поскольку furbys отсутствуют, я собираюсь предложить решение типа Gordian-knot. Подключите коробку с динамиком и микрофоном и вставьте в нее фактический попугай. Он отлично подойдет для демонстрации, а затем, когда у вас появятся какие-то венчурные капиталы, вы можете начать работу над версией нейронной сети. Нейронные сети (как они были реализованы до этого момента) практически бесполезны, но они должны быть достаточно хороши, чтобы вы прошли через демоверсию второго раунда, и к этому моменту вы будете слишком велики, чтобы потерпеть неудачу.

+0

Из статьи: «Было распространенное заблуждение, что они повторяли слова, которые были произнесены вокруг них» – interjay

+1

@interjay: ключевым словом является «общий», то есть я не единственный идиот, который думал, что furbys повторил то, что было сказано вокруг их. Наверное * мой * furby получил все эти ругательные слова из другого места - вот! – MusiGenesis

2

Я бы, вероятно, использовал цепи Маркова, чтобы подражать этому.

Если вы не используете марковские цепи для генерации естественного случайного текста (или речи), почитайте Fun With Markov Chains

2

как предотвратить это просто становится огромным список?

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

+2

Или вместо очистки используйте кеш FIFO, где повторение фразы подталкивает его в конец списка, поэтому оно остается в кеше дольше. –

Смежные вопросы