Вступление
Последние пару дней, возвращаясь домой на автобусе, я размышлял об окружающих нас технологиях, и о том, что будет дальше. Как хорошо бы позвонить домой и попросить разогреть ужин, подумал я и позвонил жене )) А у кого-то кроме компа дома никого нету, и попросить некого. А было бы здорово попросить комп.
Итак, делюсь своими соображениями.
Конечно, до «умного» дома обычному человеку далеко, так как цены на такое удовольствие не то что бы кусаются, а зверски отгрызают все что смогут. А вот управление компом уже ближе к реальности.
Что у нас есть на данный момент? Microsoft (ну или кто-то для них) сделал отличную распознавалку голоса, с которой многие знакомы по системе активации винды по телефону, а некоторые уже познакомились с голосовыми функциями Exchange 2010. К сожалению, на данный момент нету какй-либо реализации «распознавалки», которая имела бы API, и была бы достойной по функционалу. Значит, самое время написать текстовый вариант программы, отработать логику, чтобы когда появится достойная реализация распознавания, просто прикрутить ее и получить готовый продукт.
Основная идея состоит в том, чтобы, во-первых, были плагины, а, во-вторых, была возможность отсылать данные обучения на сервер, где происходила бы их обработка (аппрув или что-то подобное), и раздавались обновления всем остальным. Я к сожалению не программер, но очень неплохо представляю себе логику подобной программы.
Принципы
Основной принцип алгоритма — разбивка команды на части, и сопоставление части команды отдельной функции. То есть у нас есть типы «Действие», «время», «место» — по сути, как в обычном планировщике. Действия — начиная от «открыть», «запустить» заканчивая произвольными командами, которые ассоциированы с определенным действием, например я люблю говорить «дропнуть» вместе «удалить», и путем обучения можно легко объяснить программе что это значит. Время — «через час», «недавно», «блин, не помню когда». Где — «в документах», «в торрентах», в письме".
Кол-во типов функций естественно будет больше, но все равно останется в разумных пределах.
Примеры
Приведу несколько примеров как я вижу работу с программой на этапе раннего тестирования и обучения:
— Открой хабр
— Что Вы имеете ввиду под словом хабр? #программа знает действие открыть, но не знает что
— Какие варианты? #по желанию запрашиваем, с чем можно ассоциировать хабр
— Документ, музыка, видео, что-то еще? #про сайт она не знает
— Что-то еще…
— Пожалуйста, охарактиризуйте слово хабр, оно будет добавлено на рассмотрение в базу
— Это сайт.
— Спасибо.
Тут на сервер улетает что хабр — это сайт, разработчик видит, что он забыл про веб-сайты, вносит изменения, и при следующем обновлении программа умеет оперировать словом «сайт» и его синонимами.
Следующий разговор:
— Открой хабр
— Что Вы имеете ввиду под словом хабр?
— Сайт
— Пожалуйста, введите имя сайта в форму, которую вы видите на экране #всплывает форма
— habr.ru
— Спасибо, если вы не возражаете, эта информация будет передана на рассмотрение в базу.
Ну и открывается хабр в дефолтном браузере. При следующей просьбе программа молча выполняет поручение.
Будущее
Пишутся плагины под популярные плееры, чтобы прогамма умела работать с из библиотеками, плагины для поиска (это вообще отдельная тема, можно научить программу команде «Скачай Аватар в ХД») и т.д.
Выходит реализация распознавания голоса, программа начинает понимать голосовые команды. При наличии нормального синтезатора голоса, еще и разговаривать с пользователем.
Если пойти дальше, то можно добавить ей человечности, например пользователь садится с утра за комп, а программа ему говорит, что сегодня он что-то рано — плохо спалось?
На вопрос программе как дела можно выводить информацию о погоде, состоянии компа и кол-ве непрочитанных писем в почте.
Ну и главное, подобных программ я не видел. Если успеть занять нишу — можно вполне успешно продавать.
P.S. Не пишите пожалуйста «бред», а дайте здоровую критику, почему именно «бред».
P.S. Ну и если я остал от жизни, и все уже давно с компами беседуют, дайте сцылочку.