Какой алгоритм вы использовали бы для кодирования попугая?

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

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

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

Ответ 1

Это было сделано, sorta.

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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

так или иначе - от головы. HTH