СОВЕРШЕНИЕ ЗАДАЧИ БЕЗ МОНИТОРА В ЦИФРОВОМ ПЕРСОНАЛЬНОМ ПОМОЩНИКЕ
PERFORMING TASK WITHOUT MONITOR IN DIGITAL PERSONAL ASSISTANT

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0001] По мере развития вычислительной технологии, стали доступны все более мощные вычислительные устройства. Например, вычислительные устройства все чаще добавляют функции, такие как распознавание речи. Речь может быть эффективным способом общения пользователя с вычислительным устройством, и разрабатываются приложения с речевым управлением, такие как цифровые персональные помощники с речевым управлением.
[0002] Цифровой персональный помощник может быть использован, чтобы выполнять задачи или услуги для индивидуума. Например, цифровой персональный помощник может быть модулем программного обеспечения, работающим на мобильном устройстве или настольном компьютере. Примеры задач и услуг, которые могут быть выполнены посредством цифрового персонального помощника, могут включать в себя извлечение погодных условий и прогнозов, спортивных результатов, дорожных направлений и условий, местных и/или национальных новостных материалов, и цен на акции; администрирование расписания пользователя посредством создания новых записей расписания, и напоминания о предстоящих событиях; и хранение и извлечение напоминаний.
[0003] Тем не менее, вполне вероятно, что цифровой персональный помощник не может выполнять каждую задачу, которую пользователь может захотеть, чтобы она была выполнена. Вследствие этого, существует достаточная возможность для улучшения технологий, связанных с цифровыми персональными помощниками с речевым управлением.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] Это краткое изложение сущности изобретения приведено для ознакомления с подборкой концепций в упрощенной форме, которые дополнительно описываются ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначена ни для того, чтобы идентифицировать ключевые или неотъемлемые признаки заявленного изобретения, ни для того, чтобы быть использованной для ограничения объема заявленного изобретения.
[0005] Описываются методики и инструменты для совершения без монитора задачи приложения в фоне цифрового персонального помощника. Например, способ может быть реализован посредством вычислительного устройства, содержащего микрофон. Способ может содержать этап, на котором принимают, посредством цифрового персонального помощника с голосовым управлением, цифровой голосовой ввод, сгенерированный пользователем. Цифровой голосовой ввод может быть принят через микрофон. Обработка естественного языка может быть выполнена, используя цифровой голосовой ввод, чтобы выявить голосовую команду пользователя. Голосовая команда пользователя может содержать запрос на выполнение предварительно определенной функции стороннего приложения с голосовой поддержкой. Предварительно определенная функция может быть идентифицирована, используя структуру данных, которая определяет функции, поддерживаемые доступными сторонними приложениями с голосовой поддержкой, используя голосовой ввод. Стороннему приложению с голосовой поддержкой может быть предписано исполнить предварительно определенную функцию в качестве фонового процесса без появления пользовательского интерфейса стороннего приложения с голосовой поддержкой на дисплее вычислительного устройства. Ответ может быть принят от стороннего приложения с голосовой поддержкой, указывающий состояние, ассоциированное с предварительно определенной функцией. Пользовательский интерфейс цифрового персонального помощника с голосовым управлением может предоставлять пользователю ответ на основе принятого состояния, ассоциированного с предварительно определенной функцией, так что ответ происходит в контексте пользовательского интерфейса цифрового персонального помощника с голосовым управлением, без демонстрации пользовательского интерфейса стороннего приложения с голосовой поддержкой.
[0006] В качестве другого примера, вычислительные устройства, содержащие блоки обработки, память и один или более микрофонов, могут быть предоставлены для выполнения операций, описываемых в данном документе. Например, способ, выполняемый посредством вычислительного устройства, может включать в себя этап, на котором принимают речевой ввод, сгенерированный пользователем через один или более микрофонов. Распознавание речи может быть выполнено, используя речевой ввод, чтобы выявить произносимую команду. Произносимая команда может содержать запрос на выполнение задачи стороннего приложения. Задача может быть идентифицирована используя структуру данных, которая определяет задачи сторонних приложений, которые могут быть задействованы произносимой командой. Может быть установлено, является ли задача стороннего приложения приспособленной для исполнения без монитора. Может быть предписано исполнение стороннего приложения в качестве фонового процесса, чтобы исполнять без монитора задачу, когда установлено, что задача стороннего приложения приспособлена для исполнения без монитора. Может быть принят ответ от стороннего приложения, указывающий состояние, ассоциированное с задачей. Пользовательский интерфейс цифрового персонального помощника с речевым управлением может предоставлять пользователю ответ на основе принятого состояния, ассоциированного с задачей, так что ответ происходит в контексте пользовательского интерфейса цифрового персонального помощника с речевым управлением без демонстрации пользовательского интерфейса стороннего приложения.
[0007] В качестве другого примера, могут быть предоставлены вычислительные устройства, содержащие блоки обработки и память, для выполнения операций, описываемых в данном документе. Например, вычислительное устройство может выполнять операции для совершения задачи приложения с голосовой поддержкой в контексте цифрового персонального помощника с голосовым управлением. Операции могут содержать прием цифрового голосового ввода, сгенерированного пользователем в цифровом персональном помощнике с голосовым управлением. Цифровой голосовой ввод может быть принят через микрофон. Обработка естественного языка может быть выполнена, используя цифровой голосовой ввод, чтобы выявить голосовую команду пользователя. Голосовая команда пользователя может содержать запрос на выполнение задачи приложения с голосовой поддержкой. Задача может быть идентифицирована используя расширяемую структуру данных, которая соотносит голосовые команды пользователя с задачами приложений с голосовой поддержкой. Может быть установлено, является ли задача приложения с голосовой поддержкой приоритетной задачей или фоновой задачей. Когда установлено, что задача является фоновой задачей, приложению с голосовой поддержкой может быть предписано исполнить задачу в качестве фоновой задачи и в контексте цифрового персонального помощника с голосовым управлением без демонстрации пользовательского интерфейса приложения с голосовой поддержкой. Может быть принят ответ от приложения с голосовой поддержкой. Ответ может указывать состояние, ассоциированное с задачей. Ответ может быть предоставлен пользователю на основе принятого состояния, ассоциированного с задачей. Ответ может быть предоставлен в контексте цифрового персонального помощника с голосовым управлением без демонстрации пользовательского интерфейса приложения с голосовой поддержкой, когда установлено, что задача является фоновой задачей.
[0008] Как описано в данном документе, многообразие других признаков и преимуществ может быть включено в технологии по желанию.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] Фиг. 1 является схемой, изображающей пример системы для совершения без монитора задачи приложения в фоне цифрового персонального помощника.
[0010] Фиг. 2 является схемой, изображающей примерную архитектуру программного обеспечения для совершения без монитора задачи приложения в фоне цифрового персонального помощника.
[0011] Фиг. 3 является схемой примерного конечного автомата для приложения, взаимодействующего с цифровым персональным помощником.
[0012] Фиг. 4 является примером определения команды, которое может быть использовано, чтобы создавать структуру данных для обеспечения интерфейса между приложением и цифровым персональным помощником.
[0013] Фиг. 5 является примерной циклограммой, иллюстрирующей связь нескольких потоков, чтобы выполнять без монитора задачу приложения в цифровом персональном помощнике.
[0014] Фиг. 6 является блок-схемой примерного способа для совершения без монитора задачи приложения в фоне цифрового персонального помощника.
[0015] Фиг. 7 является блок-схемой примерного способа для установления того, прогревать ли приложение в то время как пользователь говорит с цифровым персональным помощником.
[0016] Фиг. 8 является схемой примерной компьютерной системы, в которой могут быть реализованы некоторые описываемые варианты осуществления.
[0017] Фиг. 9 является примерным мобильным устройством, которое может быть использовано совместно с описываемыми в данном документе технологиями.
[0018] Фиг. 10 является примерной средой с облачной поддержкой, которая может быть использована совместно с описываемыми в данном документе технологиями.
ПОДРОБНОЕ ОПИСАНИЕ
Обзор
[0019] По мере того, как для пользователя становится все более удобным использование цифрового персонального помощника, пользователь может предпочитать выполнять больше действий в контексте цифрового персонального помощника. Тем не менее, поставщик цифрового персонального помощника не может предсказать или тратить время на разработку каждого приложения, которое пользователь может пожелать использовать. Следовательно, применительно к цифровому персональному помощнику может быть желательным, чтобы он был выполнен с возможностью вызова или запуска сторонних приложений, которые создаются субъектами, отличными от поставщика цифрового персонального помощника.
[0020] В типичном решении, демонстрируется пользовательский интерфейс приложения, когда цифровой персональный помощник запускает приложение, и управление программой переходит от цифрового персонального помощника к приложению. Как только демонстрируется пользовательский интерфейс приложения, пользователь может верифицировать статус запроса и пользователь может выполнять дополнительные задачи из приложения. Чтобы вернуться к пользовательскому интерфейсу цифрового персонального помощника, пользователь должен выйти из приложения до того, как управление может быть возращено цифровому персональному помощнику.
[0021] В качестве одного конкретного примера использования цифрового персонального помощника мобильного телефона, пользователь может запрашивать, чтобы фильм был добавлен в очередь пользователя, используя приложение для просмотра фильмов, инсталлированное на мобильном телефоне. Например, пользователь может сказать «Приложение для Просмотра Фильмов, добавить Фильм-X в мою очередь» пользовательскому интерфейсу цифрового персонального помощника. После того, как команда произносится и распознается помощником, помощник может запускать приложение для просмотра фильмов, которое будет представлять пользовательский интерфейс приложения для просмотра фильмов. Фильм может быть добавлен в очередь пользователя и очередь может быть представлена пользователю в качестве верификации того, что фильм был добавлен. Пользователь может продолжить использовать приложение для просмотра фильмов или пользователь может закрыть приложение для просмотра фильмов, чтобы вернуться к интерфейсу пользователя цифрового персонального помощника.
[0022] Когда цифровой персональный помощник переводит управление приложению, загрузка приложения и его пользовательского интерфейса в память может занимать ощутимое количество времени. Задержка может потенциально оказывать влияние на производительность пользователя, как, например, задерживая пользователя от выполнения последующей задачи и/или прерывая ход мысли пользователя. Например, внимание пользователя может быть направлено на закрытие приложения перед возвратом к интерфейсу пользователя цифрового персонального помощника. Кроме того, посредством перевода управления приложению, контекстно-зависимая информация, доступная цифровому персональному помощнику, может быть недоступна приложению. Например, цифровой персональный помощник может понимать личность и контактную информацию супруга(и) пользователя, местоположения дома или офиса пользователя, или местоположение воспитателя детского сада пользователя, но приложение может не иметь доступа к контекстно-зависимой информации.
[0023] В методиках и решениях, описываемых в данном документе, цифровой персональный помощник может выяснять, может ли задача стороннего приложения быть выполнена в фоне так, что операции для выполнения задачи выполняются в контексте цифрового персонального помощника без демонстрации пользовательского интерфейса приложения с голосовой поддержкой. Следовательно, пользователь может воспринимать, что заданный набор задач выполняется в контексте цифрового персонального помощника, в отличие от контекста приложения, которое осуществляет задачу пользователя. Кроме того, энергопотребление устройства может быть потенциально уменьшено (и увеличено время работы от батареи), поскольку пользовательский интерфейс приложения не загружается в память, когда задача приложения выполняется в фоне.
[0024] Приложения могут регистрироваться в цифровом персональном помощнике, чтобы расширять список собственных возможностей, которые предоставляет помощник. Приложения могут быть инсталлированы в устройство или вызываться через сеть (такую как Интернет) в качестве услуги. Определение схемы может позволять приложениям регистрировать голосовую команду с запросом, чтобы запускаться без монитора, когда пользователь запрашивает ту команду/задачу. Например, приложения могут включать в себя файл определения голосовых команд (VCD), доступный цифровому персональному помощнику, где файл VCD идентифицирует задачи, которые могут быть запущены без монитора. Определение может указывать, что задача приложения всегда должна запускаться без монитора, или определение может указывать, что задача приложения должна запускаться без монитора в конкретных обстоятельствах. Например, приложение может выбирать совершать нечто без монитора, если пользователь запрашивает задачу, которая должна быть выполнена на устройстве, которое не имеет поверхности отображения (таком как беспроводной фитнес-браслет), или когда пользователь осуществляет управление в режиме «свободные руки» (как например, когда пользователь соединен с гарнитурой Bluetooth).
[0025] Приложения могут предоставлять ответ о ходе выполнения, сбое и успешном совершении запрошенной задачи и вывод, связанный с состояниями, может быть предоставлен посредством пользовательского интерфейса цифрового персонального помощника. Приложения могут предоставлять много разных типов данных обратно цифровому персональному помощнику, включая текст для отображения, текст, который может быть прочитан вслух, внешнюю ссылку обратно на приложение, ссылку на web-страницу или web-сайт, и основанный на Языке Гипертекстовой Разметки (HTML) web-контент, например. Данные от приложения к помощнику могут быть представлены, как приходящие от собственной функции помощника через пользовательский интерфейс помощника.
[0026] Если пользователь предоставляет запрос приложению, который может иметь несколько значений или результатов, приложение может предоставлять цифровому персональному помощнику список выбора и пользовательский интерфейс помощника может быть использован, чтобы устранять неоднозначность выбора. Если пользователь предоставляет запрос приложению, который может быть деструктивным или является важным (как например, когда пользователь запрашивает, чтобы приложение банковского обслуживания выполнило перенос сальдо), интерфейс подтверждения помощника может быть использован, чтобы подтверждать запрос, перед совершением деструктивной или важной задачи.
[0027] Приложения могут быть упреждающе загружены или прогреты по мере того, как произносятся команды. Например, когда пользователь завершает фразу «Приложение для Просмотра Фильмов» из команды «Приложение для Просмотра Фильмов, добавить Фильм-X в мою очередь», может быть распределена память, и разнообразные подпрограммы инсталлированного приложения для просмотра фильмов могут быть извлечены из хранилища и загружены в распределенную память в подготовке к использованию подпрограмм, когда команда совершается. Когда приложение является web-услугой, прогрев может включать в себя создание сеанса связи и извлечение информации для конкретного пользователя из базы данных на удаленном сервере, например. Посредством прогрева приложения, время на ответ пользователю может быть потенциально уменьшено так, что взаимодействие является более естественным и так, что пользователь может перемещаться к следующей задаче быстрее, добавляя производительности пользователю.
[0028] Используя технологии данного документа, пользователь, желающий добавить фильм в очередь пользователя с помощью приложения для просмотра фильмов, может иметь восприятие, отличное от того, что при использовании типичного решения в виде запуска приложения для просмотра фильмов и передачи управления этому приложению. В данном примере, команда добавить-фильм-в-очередь Приложения для Просмотра Фильмов может быть определена в качестве без монитора в структуре данных команд, такой как файл VCD. Когда пользователь говорит «Приложение для Просмотра Фильмов» из команды «Приложение для Просмотра Фильмов, добавить Фильм-X в мою очередь», приложение для просмотра фильмов может быть прогрето с тем, чтобы время ответа пользователю могло быть уменьшено. Когда команда совершается, фильм может быть добавлен в очередь пользователя, используя приложение для просмотра фильмов, но без демонстрации пользовательского интерфейса приложения для просмотра фильмов. Фильм может быть добавлен в очередь пользователя и цифровой персональный помощник может подтвердить (используя пользовательский интерфейс помощника), что фильм был добавлен. Пользователь может воспринимать более быстрое время ответа и может выполнять меньшее число этапов, чтобы совершить команду (например, не требуется закрывать приложение для просмотра фильмов).
Примерная система, включающая в себя цифровой персональный помощник
[0029] Фиг. 1 является схемой системы, изображающей пример системы 100 для совершения без монитора задачи 112 приложения 110 с голосовой поддержкой в фоне цифрового персонального помощника 120. Приложение 110 с голосовой поддержкой и цифровой персональный помощник 120 могут быть модулями программного обеспечения, инсталлированными на вычислительном устройстве 130. Вычислительное устройство 130 может быть настольным компьютером, лэптопом, мобильным телефоном, интеллектуальным телефоном, носимым устройством (таким как наручные часы или беспроводной электронный браслет), или планшетным компьютером, например. Вычислительное устройство 130 может включать в себя структуру 140 данных команд для идентификации приложений и задач приложения, которые могут быть запущены посредством цифрового персонального помощника 120. Приложения могут быть запущены посредством цифрового персонального помощника 120 в приоритете (как например, где пользовательский интерфейс приложения появляется, когда приложение запускается) и/или в фоне (как например, где пользовательский интерфейс приложения не появляется, когда приложение запускается). Например, некоторые задачи приложения могут быть запущены в приоритете, а другие задачи того же самого приложения могут быть запущены в фоне. Структура 140 данных команд может определять, каким образом приложение и/или задачи приложения должны быть запущены из цифрового персонального помощника 120.
[0030] Вычислительное устройство 130 может включать в себя микрофон 150 для преобразования звука в электрический сигнал. Микрофон 150 может быть динамическим, конденсаторным, или пьезоэлектрическим микрофоном, использующим электромагнитную индукцию, изменение емкости, или пьезоэлектричество, соответственно, чтобы создавать электрический сигнал из изменения давления воздуха. Микрофон 150 может включать в себя усилитель, один или более аналоговые или цифровые фильтры, и/или аналого-цифровой преобразователь, чтобы создавать цифровой звуковой ввод. Цифровой звуковой ввод может содержать воспроизведение голоса пользователя, как когда пользователь выдает цифровому персональному помощнику 120 команду выполнить задачу. Вычислительное устройство 130 может включать в себя сенсорный экран или клавиатуру (не показано) для предоставления пользователю возможности введения текстового ввода.
[0031] Цифровой звуковой ввод и/или текстовый ввод может быть обработан посредством модуля 122 обработки естественного языка цифрового персонального помощника 120. Например, модуль 122 обработки естественного языка может принимать цифровой звуковой ввод и переводить слова, произнесенные пользователем, в текст. Извлеченный текст может быть семантически проанализирован, чтобы выявить голосовую команду пользователя. Посредством анализа цифрового звукового ввода и предпринимая действия в ответ на произносимые команды, цифровой персональный помощник 120 может быть с голосовым управлением. Например, цифровой персональный помощник 120 может сопоставлять извлеченный текст со списком потенциальных команд пользователя, чтобы выявить команду, наиболее вероятно совпадающую с намерением пользователя. Сопоставление может быть основано на статистических или вероятностных способах, деревьях решений или других правилах, других пригодных критериях сопоставления, или их сочетаниях. Потенциальные команды пользователя могут быть собственными командами цифрового персонального помощника 120 и/или командами, определенными в структуре 140 данных команд. Таким образом, посредством определения команд в структуре 140 данных команд, диапазон задач, которые могу быть выполнены от лица пользователя посредством цифрового персонального помощника 120, может быть расширен. Потенциальные команды могут включать в себя выполнение задачи 112 приложения 110 с голосовой поддержкой, которые могут быть определены чтобы быть без монитора или фоновой задачей в структуре 140 данных команд.
[0032] Модуль 122 обработки естественного языка может генерировать поток текста по мере того, как обрабатывается речь, так, что промежуточные строки текста могут быть проанализированы до того, как завершается высказывание пользователя. Следовательно, если пользователь начинает команду с имени приложения, приложение может быть идентифицировано раньше в высказывании, и приложение может быть прогрето перед тем, как пользователь завершает команду. Прогрев приложения может включать в себя извлечение инструкций приложения из относительно более медленной энергонезависимой памяти (такой как накопитель на жестком диске или Флэш-память) и сохранение инструкций в относительно более быстрой энергозависимой памяти (такой как основная память или кэш-память).
[0033] Когда цифровой персональный помощник 120 устанавливает, что команда ассоциирована с задачей приложения, задача приложения может быть исполнена. Если цифровой персональный помощник 120 выявляет, что задача приложения должна быть исполнена в качестве фонового процесса (как например посредством анализа определения в структуре 140 данных команд), приложение может исполняться в фоне. Приложение, такое как приложение 110 с голосовой поддержкой, может осуществлять связь с цифровым персональным помощником 120. Например, приложение может проходить по последовательности набора состояний, ассоциированных с совершением задачи, и состояние приложения может быть сообщено цифровому персональному помощнику 120. Например, приложение может начинаться в «начальном» состоянии, переходить в состояние «хода выполнения», в то время как задача выполняется, и затем переходить в «итоговое» состояние, когда задача завершена.
[0034] Цифровой персональный помощник 120 может представлять отчет о ходе задачи через интерфейс 124 пользователя. Интерфейс 124 пользователя может сообщать информацию пользователю разнообразными путями, как например, посредством представления текста, графики или гиперссылок на дисплее вычислительного устройства 130, генерирования аудио выводов из громкоговорителя вычислительного устройства 130, или генерирования других сенсорных выводов, таких как вибрации от электрического мотора, соединенного с эксцентрическим грузом вычислительного устройства 130. Например, интерфейс 124 пользователя может вызывать представление вращающегося колеса на экране отображения вычислительного устройства 130, когда задача находится в состоянии хода выполнения. В качестве другого примера, интерфейс 124 пользователя может генерировать имитируемую речь, указывающую успешное совершение задачи, когда задача находится в итоговом состоянии и задача была успешно завершена. Посредством использования интерфейса 124 пользователя цифрового персонального помощника 120, чтобы представлять отчет о статусе задачи, ответ может происходить в контексте интерфейса 124 пользователя без демонстрации пользовательского интерфейса приложения.
[0035] Следует отметить, что приложение 110 с голосовой поддержкой может быть создано производителем цифрового персонального помощника 120 или сторонним производителем, который отличается от производителя. Взаимодействие цифрового персонального помощника 120 и приложения 110 с голосовой поддержкой может быть достигнуто соблюдая соглашение по программному обеспечению вида приложение-приложение и посредством определения функциональности в структуре 140 данных команд. Приложение 110 с голосовой поддержкой может быть выполнено с возможностью работы в качестве стационарного приложения или только в качестве компонента цифрового персонального помощника. Как стационарное приложение, приложение 110 с голосовой поддержкой может быть запущено вне цифрового персонального помощника 120 в качестве приоритетного процесса, как например, посредством легкого удара или двойного щелчка по пиктограмме, ассоциированной с приложением 110 с голосовой поддержкой, и отображено на экране отображения вычислительного устройства 130. Приложение 110 с голосовой поддержкой может представлять пользовательский интерфейс, когда оно запускается, и пользователь может взаимодействовать с пользовательским интерфейсом, чтобы выполнять задачи. Взаимодействие может быть только с помощью голосового ввода, или также могут быть использованы другие режимы ввода, такие как текстовый ввод или с помощью жестов. Приложения, вызываемые цифровым персональным помощником 120, могут быть инсталлированы на вычислительном устройстве 130 или могут быть web-услугами.
[0036] Цифровой персональный помощник 120 может вызывать web-услуги, такие как как web-услуга 162, исполняемая на удаленном серверном компьютере 160. Web-услуги являются функциями программного обеспечения, предоставляемыми по сетевому адресу через сеть, такую как сеть 170. Сеть 170 может включать в себя локальную сеть (LAN), Глобальную Сеть (WAN), Интернет, интрасеть, проводную сеть, беспроводную сеть, сотовую сеть, их сочетание, или любую сеть пригодную для обеспечения канала для связи между вычислительным устройством 130 и удаленным серверным компьютером 160. Следует иметь в виду, что топология сети, иллюстрируемая на Фиг. 1, была упрощена и что несколько сетей и сетевых устройств может быть использовано, чтобы взаимно соединять разнообразные вычислительные системы, раскрываемые в данном документе. Web-услуга 162 может быть вызвана как часть ядра или основная часть цифрового персонального помощника 120. Например, web-услуга 162 может быть вызвана в качестве подпрограммы модуля 122 обработки естественного языка. Дополнительно или в качестве альтернативы, web-услуга 162 может быть приложением, определенным в структуре 140 данных команд, и может быть выполнена с возможностью запуска без монитора из цифрового персонального помощника 120.
Примерная архитектура программного обеспечения, включающая в себя цифровой персональный помощник
[0037] Фиг. 2 является схемой, изображающей примерную архитектуру 200 программного обеспечения для совершения без монитора задачи приложения в фоне цифрового персонального помощника 120. При выполнении задачи приложения без монитора, задача может быть исполнена в фоне и пользовательский интерфейс приложения не демонстрируется как результат выполняемой задачи. Наоборот, пользовательский интерфейс цифрового персонального помощника 120 может быть использован, чтобы обеспечивать вывод для и/или ввод от пользователя так, что пользователь взаимодействует с контекстом цифрового персонального помощника 120, а не с контекстом приложения. Таким образом, исполняемая без монитора задача приложения может исполняться в фоне в течение продолжительности исполнения задачи, и пользовательский интерфейс приложения никогда не демонстрируется. Вычислительное устройство, такое как вычислительное устройство 130, может исполнять программное обеспечение для цифрового персонального помощника 120, ядра 210 операционной системы (OS), и приложения 230 организованного в соответствии с архитектурой 200.
[0038] Ядро 210 OS в целом предоставляет интерфейс между компонентами программного обеспечения и компонентами аппаратного обеспечения вычислительного устройства 130. Ядро 210 OS может включать в себя компоненты для рендеринга (например, рендеринга визуального вывода на дисплей, генерирования голосового вывода и других звуков для громкоговорителя, и генерирования вибрирующего вывода для электрического мотора), компоненты для подключения к сети, компоненты для администрирования процессов, компоненты для администрирования памяти, компоненты для отслеживания местоположения, и компоненты для распознавания речи и другой обработки ввода. Ядро 210 OS может осуществлять администрирование функций ввода пользователя, функций вывода, функций доступа к хранилищу, функций сетевой связи, функций администрирования памяти, функций администрирования процессов, и других функций для вычислительного устройства 130. Ядро 210 OS может предоставлять доступ к таким функциям для цифрового персонального помощника 120 и приложения 230, как например, через разнообразные вызовы системы.
[0039] Пользователь может генерировать ввод пользователя (такой как голосовой, тактильный, и движением), чтобы взаимодействовать с цифровым персональным помощником 120. Цифровой персональный помощник 120 может быть осведомлен о вводе пользователя через ядро 210 OS, которое может включать в себя функциональность для создания сообщений в ответ на ввод пользователя. Сообщения могут быть использованы цифровым персональным помощником 120 или другим программным обеспечением. Ввод пользователя может включать в себя тактильный ввод, такой как ввод сенсорного экрана, нажатия кнопки, или нажатия клавиши. Ядро 210 OS может включать в себя функциональность для распознавания легких ударов, жестов пальцем, и т.д. по сенсорному экрану из тактильного ввода, ввода кнопкой, или ввода нажатием клавиши. Ядро 210 OS может принимать ввод от микрофона 150 и может включать в себя функциональность для распознавания произносимых команд и/или слов из голосового ввода. Ядро 210 OS может принимать ввод от акселерометра и может включать в себя функциональность для распознавания ориентации или движения, такого как тряска.
[0040] Машина 222 обработки ввода пользовательского интерфейса (UI) цифрового персонального помощника 120 может ожидать сообщений события ввода пользователя от ядра 210 OS. Сообщения события UI могут указывать распознанное слово из голосового ввода, жест проводки, жест быстрой проводки, жест перетаскивания, или другой жест по сенсорному экрану устройства, легкий удар по сенсорному экрану, ввод нажатием клавиши, жест тряски, или другое событие UI (например, ввод клавишами направлений или шаровым манипулятором). Машина 222 обработки ввода UI может переводить сообщения события UI от ядра 210 OS в информацию, отправляемую логике 224 управления цифрового персонального помощника 120. Например, машина 222 обработки ввода UI может включать в себя возможности обработки естественного языка и может указывать, что конкретное имя приложения было произнесено или напечатано, или что голосовая команда была выдана пользователем. В качестве альтернативы, возможности обработки естественного языка могут быть включены в логику 224 управления.
[0041] Логика 224 управления может принимать информацию от разнообразных модулей цифрового персонального помощника 120, таких как машина 222 обработки ввода UI, хранилище 226 персонализированной информации, и структуры 140 данных команд, и логика 224 управления может принимать решения и выполнять операции на основе принятой информации. Например, логика 224 управления может установить, должен ли цифровой персональный помощник 120 выполнять задачу от лица пользователя, как например, посредством синтаксического анализа потока произносимого текста, чтобы установить, была ли выдана голосовая команда.
[0042] Логика 224 управления может ожидать, чтобы была произнесена вся команда пользователя перед тем, как действовать по команде, или логика 224 управления может начинать действовать по команде по мере того, как она еще произносится и до того, как она завершена. Например, логика 224 управления может анализировать промежуточные строки произносимой команды и пытаться сопоставить строки с одним или более приложениями, определенными в структуре 140 данных команды. Когда вероятность того, что приложение будет вызвано, превышает пороговую величину, приложение может быть прогрето с тем, чтобы приложение могло отвечать пользователю более быстро. Несколько приложений и/или функций могут быть упреждающе прогреты в ожидании вызова, и приложения могут быть остановлены, если установлено, что приложение не будет вызвано. Например, когда пользователь начинает произносимую команду с имени конкретного приложения, существует высокая вероятность того, что конкретное приложение будет вызвано, и таким образом приложение может быть прогрето. В качестве другого примера, некоторые частичные строки команды могут быть ограничены небольшим набором приложений, определенных в структуре 140 данных команд, и набор приложений может быть прогрет параллельно, когда сопоставлена частичная строка команды. В частности, структура 140 данных команд может иметь только два приложения с командами со словом «сделать», как например приложение камеры с командой «сделать снимок», и приложение пометок с командой «сделать пометку». Логика 224 управления может начинать прогревать как приложение камеры, так и приложение пометок, когда распознается слово «сделать», и затем приложение пометок может быть остановлено, когда распознается полная команда «сделать снимок». Прогрев приложения может включать в себя распределение памяти, упреждающую выборку инструкций, создание сеанса связи, извлечение информации из базы данных, пуск нового потока исполнения, повышение прерывания, или другие пригодные операции для конкретного приложения. Услуги ядра 210 OS могут быть вызвана во время прогрева, такая как услуга администрирования процессов, услуга администрирования памяти, и сетевая услуга, например.
[0043] Произносимый текст может включать в себя контекстно-зависимую информацию и логика 224 управления может разрешать контекстно-зависимую информацию таким образом, что голосовая команда пользователя является контекстно-независимой. Контекстно-зависимая информация может включать в себя текущее местоположение, текущее время, ориентацию вычислительного устройства 130, и персональную информацию, хранящуюся в хранилище 226 персонализированной информации. Персональная информация может включать в себя: пользовательские связи, такие как имя пользователя, супруга(и), или ребенка; местоположения для конкретного пользователя, такие как адреса дома, школы, детского сада, или врача; информацию из списка контактов или календаря пользователя; любимый цвет пользователя, ресторан, или способ транспортировки; важные дни рождения, юбилеи, или другие даты; и другую информацию для конкретного пользователя. Пользователь может давать команду с контекстно-зависимой информацией и логика 224 управления может переводить команду в контекстно-независимую команду. Например, пользователь может давать команду, «Приложение Автобусов, скажи автобусы домой в течение следующего часа». В данном примере, контекстно-зависимой информацией в команде является текущая дата и время, текущее местоположение, и местоположение дома пользователя.
[0044] Логика 224 управления может получать текущее время от ядра 210 OS, которое может поддерживать или иметь доступ к часам реального времени. Логика 224 управления может получать данные текущего местоположения для вычислительного устройства 130 от ядра 210 OS, которое может получать данные текущего местоположения от локального компонента вычислительного устройства 130. Например, данные местоположения могут быть определены на основе данных от глобальной системы позиционирования (GPS), посредством триангуляции между вышками сотовой сети, обращаясь к физическим местоположениям маршрутизаторов Wi-Fi в непосредственной близости, или посредством другого механизма. Логика 224 управления может получать местоположение дома пользователя из хранилища 226 персонализированной информации. Хранилище 226 персонализированной информации может храниться во вспомогательном или другом энергонезависимом хранилище вычислительного устройства 130. Следовательно, логика 224 управления может принимать персонализированную информацию через ядро 210 OS, которое может осуществлять доступ к ресурсу хранения (например, хранилищу 226 персонализированной информации). Когда контекстно-зависимая информация может быть разрешена, команда может быть переведена в контекстно-независимую команду. Например, если сейчас Пятница 18:00, пользователь находится по адресу Главная Улица 444, а дом пользователя находится по адресу Приятная Аллея 123, тогда контекстно-независимой командой может быть «Приложение Автобусов, скажи автобусы прибывающие рядом с Главной Улицей 444 и проходящие рядом с Приятной Аллеей 123 между 18:00 и 19:00 в Пятницу».
[0045] Команда пользователя может быть выполнена посредством логики 224 управления (как когда команда является собственной командой цифрового персонального помощника 120), приложения 230, инсталлированного на вычислительном устройстве 130 (как когда команда ассоциирована с приложением 230), или web-услуги 162 (как когда команда ассоциирована с web-услугой 162). Структура 140 данных команд может указывать, какие команды являются ассоциированными с приложениями и могут ли команды быть выполнены в приоритете или фоне. Например, структура 140 данных команд может соотносить голосовые команды пользователя с функциями, поддерживаемыми доступными сторонними приложениями с голосовой поддержкой.
[0046] Логика 224 управления может предписывать исполнение предварительно определенной функции 232 приложения 230, когда логика 224 управления устанавливает, что команда пользователя ассоциирована с предварительно определенной функцией 232 приложения 230. Если логика 224 управления устанавливает, что предварительно определенная функция 232 приложения 230 должна быть исполнена в качестве фонового процесса, предварительно определенная функция 232 может исполняться в фоне. Например, логика 224 управления может отправлять запрос 240 к предварительно определенной функции 232 поднимая прерывание, записывая в совместно используемую память, записывая в очередь сообщений, пропуская сообщение, или пуская новый поток исполнения (как через компонент администрирования процессов ядра 210 OS). Приложение 230 может выполнять предварительно определенную функцию 232 и возвращать ответ 242 логике 224 управления поднимая прерывание, записывая в совместно используемую память, записывая в очередь сообщений, или пропуская сообщение. Ответ может включать в себя состояние приложения 230 и/или другую информацию, отвечающую на команду пользователя.
[0047] Логика 224 управления может предписывать вызов web-услуги 162, когда логика 224 управления устанавливает, что команда ассоциирована с web-услугой 162. Например, запрос 260 может быть отправлен к web-услуге 162 через компонент подключения к сети ядра 210 OS. Компонент подключения к сети может форматировать и переадресовывать запрос через сеть 170 (как посредством инкапсуляции запроса в сетевой пакет в соответствии с протоколом сети 170) к web-услуге 162, чтобы выполнять команду пользователя. Запрос 260 может включать в себя несколько этапов, таких как открытие канала связи (например, сокета) между логикой 224 управления и web-услугой 162, и отправка информации, связанной с командой пользователя. Web-услуга 162 может отвечать на запрос 260 с помощью ответа, который может быть передан через сеть 170 и переадресован посредством компонента подключения к сети логике 224 управления в качестве ответа 262. Ответ от web-услуги 162 может включать в себя состояние web-услуги 162 и другую информацию, отвечающую на команду пользователя.
[0048] Логика 224 управления может генерировать вывод (с помощью машины 228 рендеринга вывода UI и компонента рендеринга ядра 210 OS), который должен быть представлен пользователю на основе ответов от приложений. Например, структура 140 данных команды может соотносить состояния, принятые от функций, с ответами, предоставленными пользователю от цифрового персонального помощника 120 с голосовым управлением. В целом, логика 224 управления может предоставлять высокоуровневые выходные команды машине 228 рендеринга вывода UI, которая может создавать низкоуровневые выходные примитивы для компонента рендеринга ядра 210 OS для визуального вывода на дисплее, аудио и/или голосового вывода через громкоговоритель или головные телефоны, и вибрирующего вывода от электрического мотора. Например, логика 224 управления может отправлять команду текста-в-речь со строкой текста машине 228 рендеринга вывода UI, которая может генерировать цифровые аудио данные, имитирующие произносимый голос.
[0049] Логика 224 управления может выяснять, какую информацию предоставлять пользователю, на основе состояния приложения. Состояния могут соответствовать началу, обработке, подтверждению, устранению неоднозначности или завершению команды пользователя. Структура 140 данных команд может соотносить состояния приложения с разными ответами, которые должны быть предоставлены пользователям. Типы информации, которые могут быть предоставлены, включают в себя отображаемый текст, имитируемую речь, внешнюю ссылку обратно на приложение, ссылку на web-страницу или web-сайт, и основанный на Языке Гипертекстовой Разметки (HTML) web-контент, например.
Примерные состояния приложения
[0050] Фиг. 3 является схемой примерного конечного автомата 300 для приложения, взаимодействующего с цифровым персональным помощником 120 в режим без монитора. Приложение может начинаться либо в прогретом состоянии 310, либо в начальном состоянии 320. Переход в прогретое состояние 310 может быть осуществлен, когда цифровой персональный помощник 120 предписывает приложению осуществить прогрев, как когда известно имя приложения, но произносимая команда не завершена. Приложение будет оставаться в прогретом состоянии 310 до тех пор, пока не завершаются операции прогрева. Когда операции прогрева завершаются, приложение может переходить в начальное состояние 320.
[0051] Переход в начальное состояние 320 может быть осуществлен после того, как завершается прогретое состояние 310 или после того, как команда пользователя предоставляется приложению посредством цифрового персонального помощника 120. Во время начального состояния 320, команда пользователя обрабатывается приложением. Если команда является однозначной, но потребует больше предварительно установленного количества времени для совершения (как, например, пять секунд), может быть осуществлен переход состояния в состояние 330 хода выполнения, в то время как команда выполняется. Если команда является однозначной и может привести к выполнению важной или деструктивной операции, может быть осуществлен переход состояния в состояние 340 подтверждения. Если команда является отчасти неоднозначной, но неоднозначность может быть разъяснена посредством выбора из небольшого числа опций, может быть осуществлен переход состояния в состояние 350 устранения неоднозначности. Если команда является неоднозначной и устранение неоднозначности невозможно с помощью небольшого числа опций, может быть осуществлен переход в итоговое состояние 360, такое как состояние сбоя или состояние перенаправления. Если команда не может быть выполнена, может быть осуществлен переход состояния в итоговое состояние 360, такое как состояние сбоя. Если команда может быть совершена менее чем за предварительно установленное количество времени на совершение и не требуется запрашивать подтверждение от пользователя, может быть осуществлен переход состояния в итоговое состояние 360, такое как успешное состояние. Следует отметить, что итоговое состояние 360 может быть одним состоянием с несколькими условиями (как например, где условия являются успехом, сбоем, перенаправлением, или превышением лимита времени) или группой итоговых состояний (как например где состояния являются успехом, сбоем, перенаправлением, или превышением лимита времени).
[0052] Состояние 330 хода выполнения может указывать операции команды пользователя, которые выполняются или предпринимаются. Приложение может предоставлять информацию пользователю во время состояния 330 хода выполнения посредством отправки строки текста-в-речь (TTS) или строки графического пользовательского интерфейса (GUI) цифровому персональному помощнику 120, с тем чтобы информация могла быть представлена пользователю, используя пользовательский интерфейс цифрового персонального помощника 120. Дополнительно или в качестве альтернативы, информация по умолчанию (такая как вращающееся колесо, песочные часы и/или кнопка отмены) может быть представлена пользователю во время состояния 330 хода выполнения, используя пользовательский интерфейс цифрового персонального помощника 120.
[0053] Во время состояния 330 хода выполнения, приложение может осуществлять текущий контроль хода операций и устанавливать, может ли приложение оставаться в состоянии 330 хода выполнения или переходить в итоговое состояние 360. В одном варианте осуществления, приложение может запускать таймер (как, например, на пять секунд) и если приложение не достигает достаточного хода выполнения до истечения таймера, может быть осуществлен переход состояния в итоговое состояние 360, такое как состояние превышения лимита времени. Если приложение достигает достаточного хода выполнения, таймер может быть повторно запущен и ход выполнения может быть вновь проанализирован в следующее истечение таймера. Приложение может иметь максимальный лимит времени, чтобы оставаться в состоянии 330 хода выполнения, если превышается максимальный лимит времени, может быть осуществлен переход состояния в итоговое состояние 360, такое как состояние превышения лимита времени. Операции, ассоциированные с командой пользователя, могут завершаться (либо успешно, либо неуспешно) и может быть осуществлен переход состояния в соответствующее итоговое состояние 360. Пользователь может прекращать приложение, когда оно находится в состоянии 330 хода выполнения посредством выдачи команды интерфейсу пользователя цифрового персонального помощника 120. Например, пользователь может нажимать или щелкать кнопку «отмена» или «назад» на дисплее или говорить «отмена». Отмена команды может предписывать персональному цифровому помощнику 120 останавливать приложение, и отображать главный экран персонального цифрового помощника 120 или осуществлять выход.
[0054] Состояние 340 подтверждения может указывать на то, что приложение ожидает подтверждения от пользователя перед совершением задачи. Когда цифровой персональный помощник 120 обнаруживает, что приложение находится в состоянии 340 подтверждения, приглашение в отношении ответа да/нет может быть представлено пользователю, используя пользовательский интерфейс цифрового персонального помощника 120. Приложение может предоставлять цифровому персональному помощнику 120 строку TTS, которая является вопросом с ответом да или нет. Цифровой персональный помощник 120 может говорить предоставленную приложением строку TTS и может слушать ответ «Да\Нет». Если ответ пользователя не дает решения в виде ответа да или нет, цифровой персональный помощник 120 может продолжать задавать пользователю вопрос вплоть до предварительно определенного количества раз (как например три раза). Если все попытки были израсходованы, цифровой персональный помощник 120 может говорить фразу по умолчанию, такую как «Прошу прощения, я не понимаю. Выполните легкий удар ниже для выбора ответа» и цифровой персональный помощник 120 может останавливать прослушивание. Если пользователь осуществляет легкий удар по да или нет, цифровой персональный помощник 120 может отправлять выбор пользователя приложению. Если пользователь осуществляет легкий удар по пиктограмме микрофона, цифровой персональный помощник 120 может вновь попытаться распознать произносимый ответ (как например посредством сброса счетчика, который подсчитывает количество попыток ответить вербально). Цифровой персональный помощник 120 может входить в цикл до тех пор, пока не будет сопоставления или пользователь не отменит или не ударит по кнопке назад на экране отображения. Если приложение принимает утвердительный ответ от цифрового персонального помощника 120, приложение может попытаться совершить задачу. Если задача завершается успешно, состояние может переходить в итоговое состояние 360 с условием успеха. Если задача терпит неудачу в успешном завершении или приложение отменяется, состояние может переходить в итоговое состояние 360 с условием сбоя. Если задача будет занимать больше предварительно установленного количества времени на совершение, может быть осуществлен переход состояния в состояние 330 хода выполнения, в то время как задача выполняется.
[0055] Состояние 350 устранения неоднозначности может указывать на то, что приложение ожидает от пользователя разъяснения среди ограниченного количества (такого как десять или меньше) опций перед совершением задачи. Приложение может предоставлять цифровому персональному помощнику 120 строку TTS, строку GUI и/или список элементов, из которого выбирает пользователь. Список элементов может быть предоставлен в качестве шаблона с одним или более фрагментами информации, чтобы предоставить пользователю каждый элемент, такой как название, описание и/или пиктограмма. Цифровой персональный помощник 120 может представлять список элементов пользователю, используя информацию, предоставленную приложением. Цифровой персональный помощник 120 может осуществлять приглашение и прослушивать выбор от пользователя. Пользователь может выбирать из списка, используя гибкий или негибкий выбор. Негибкий выбор означает, что пользователь может выбирать только из списка одним путем, тогда как гибкий выбор означает, что пользователь может выбирать из списка несколькими разными путями. Например, пользователь может выбирать из списка на основе числового порядка, в котором перечислены элементы, например говоря «первый» или «второй», чтобы выбрать первый элемент или второй элемент, соответственно. В качестве другого примера, пользователь может выбирать из списка на основе пространственных отношений между элементами, такими как «нижний», «верхний», «правый» или «второй снизу». В качестве другого примера, пользователь может выбирать из списка, говоря название элемента.
[0056] В качестве конкретного примера устранения неоднозначности, пользователь может говорить цифровому помощнику 120, «Приложение для Просмотра Фильмов, добавить Фильм-X в мою очередь». Тем не менее, может присутствовать три версии Фильма-X, такие как исходная и два продолжения: Фильм-X, Фильм-X II и Фильм-X III. В ответ на произносимую команду, цифровой персональный помощник 120 может запускать Приложение для Просмотра Фильмов в фоне с командой добавить Фильм-X в очередь. Приложение для Просмотра Фильмов может осуществлять поиск Фильма-X и установить, что присутствуют три версии. Следовательно, Приложение для Просмотра Фильмов может переходить в состояние 350 устранения неоднозначности и отправлять три альтернативных выбора цифровому персональному помощнику 120. Цифровой персональный помощник 120, через свой пользовательский интерфейс, может представлять пользователю три выбора и пользователь может выбирать один из списка. Когда пользователем сделан надлежащий выбор, цифровой персональный помощник 120 может отправлять ответ Приложению для Просмотра Фильмов и корректный фильм может быть добавлен в очередь.
[0057] Если ответ пользователя не может быть разрешен для элемента в списке, цифровой персональный помощник 120 может продолжать задавать пользователю вопрос вплоть до предварительно определенного количества раз. Если все попытки были исчерпаны, цифровой персональный помощник 120 может говорить фразу по умолчанию, такую как «Прошу прощений, я не понимаю. Выполните легкий удар ниже для выбора ответа» и цифровой персональный помощник 120 может останавливать прослушивание. Если пользователь осуществляет легкий удар по одному из элементов в отображаемом списке, цифровой персональный помощник 120 может отправлять выбор пользователя приложению. Если пользователь осуществляет легкий удар по пиктограмме микрофона, цифровой персональный помощник 120 может вновь пытаться распознать произносимый ответ (как например посредством сброса счетчика, который подсчитывает количество попыток, чтобы ответить вербально). Цифровой персональный помощник 120 может входить в цикл до тех пор, пока не будет сопоставления или пользователь не отменит или не ударит по кнопке назад на экране отображения. Если приложение принимает действительный ответ от цифрового персонального помощника 120, приложение может попытаться совершить задачу. Если задаче требуется подтверждение пользователя перед тем, как предпринять действие, состояние может переходить в состояние 340 подтверждения. Если задача завершается успешно, состояние может переходить в итоговое состояние 360 с условием успеха. Если задача терпит неудачу в успешном завершении или приложение отменяется, состояние может переходить в итоговое состояние 360 с условием сбоя. Если задача будет занимать больше предварительно установленного количества времени на совершение, может быть осуществлен переход состояния в состояние 330 хода выполнения, в то время как задача выполняется.
[0058] Должно быть понятно, что примерный конечный автомат 300 может быть расширен дополнительными или альтернативными состояниями, чтобы обеспечивать разнообразные многооборотные разговоры между пользователем и приложением. Устранение неоднозначности (через состояние 350 устранения неоднозначности) и подтверждение (через состояние 340 подтверждения) являются конкретными примерами многооборотного разговора. Как правило, в многооборотном разговоре, приложение без монитора может запрашивать дополнительную информацию у пользователя без демонстрации своего пользовательского интерфейса. Наоборот, информация может быть получена от пользователя посредством цифрового персонального помощника 120 от лица приложения. Следовательно, цифровой персональный помощник 120 может выступать в качестве проводника между пользователем и приложением.
[0059] Итоговое состояние 360 может указывать, что приложение успешно завершило задачу, ему не удалось завершить задачу, оно превысило лимит времени, или предлагается, что приложение должно быть запущено в приоритетном режиме (перенаправление). Как описано выше, итоговое состояние 360 может быть одним состоянием с несколькими условиями (например, успех, сбой, перенаправление или превышение лимита времени) или группой итоговых состояний (например, успех, сбой, перенаправление, или превышение лимита времени). Приложение может предоставлять цифровому персональному помощнику 120 строку TTS, строку GUI, список элементов (предоставляемый через шаблон), и/или параметр запуска. Цифровой персональный помощник 120 может представлять информацию, предоставленную посредством приложения, пользователю, используя пользовательский интерфейс цифрового персонального помощника 120. Дополнительно или в качестве альтернативы, цифровой персональный помощник 120 может представлять предварительно определенные или заготовленные ответы, ассоциированные с разными условиями. Например, если происходит превышение лимита времени или сбой задачи, цифровой персональный помощник 120 может говорить «Прошу прощения! Я не могу это сделать для Вас. Не могли бы Вы попытаться вновь позже?». В качестве другого примера, если приложение запрашивает перенаправление, цифровой персональный помощник 120 может говорить «Прошу прощения. <appName> не отвечает. Запуск <appName>» и цифровой персональный помощник 120 может пытаться запустить приложение в приоритете с исходной голосовой командой и параметром запуска (если параметр запуска предоставляется приложением). В качестве другого примера, если приложение завершает задачу успешно, цифровой персональный помощник 120 может говорить «Я сделал это для Вас».
Примерное определение команды
[0060] Фиг. 4 является примером определения 400 команды в соответствии со схемой, которая может быть использована, чтобы создавать структуру данных, такую как структура 140 данных команд, для обеспечения интерфейса между сторонним приложением и цифровым персональным помощником 120. Определение 400 команды может быть написано на разнообразных языках, таких как Расширяемый Язык Разметки (XML) или подмножество XML, которое определяется схемой. Например, схема может определять структуру определения команды, как, например, допустимые элементы, иерархия элементов, допустимые и опциональные атрибуты для каждого элемента, и другие пригодные критерии. Определение 400 команды может быть использовано цифровым персональным помощником 120, чтобы способствовать синтаксическому разбору высказывания пользователя на разные компоненты, такие как приложение, команда или задача, и элемент или слот данных, является ли элемент данных опциональным. Например, команда «MovieAppService, добавить MovieX в мою очередь», может быть разобрана на приложение («MovieAppService»), команду («Добавить») и элемент данных («MovieX»). Определение 400 команды может включать в себя элементы для определения имени приложения, задач или команд приложения, альтернативную формулировку для обработки естественного языка, и ответы, ассоциированные с разными состояниями приложения.
[0061] Одно или более приложений могут быть определены в определении 400 команды. Приложения могут быть сторонними или другими приложениями, которые инсталлированы на вычислительном устройстве или web-услугах. Информация, связанная с приложением, может быть разграничена с помощью элемента, определяющего приложение. Например, имя приложения может быть определено посредством элемента <AppName> (имя приложения), а элементы между элементами <AppName> могут быть ассоциированы с головным элементом <AppName>. В определении 400 команды, имя приложения является «MovieAppService», а элементы, которые следуют за элементом <AppName>, ассоциированы с приложением «MovieAppService».
[0062] Команды, следующие за именем приложения, являются командами приложения. Команды могут быть идентифицированы с помощью элемента <Command> (команда). Атрибуты элемента команды могут включать в себя имя (например, «Name») команды и тип активации (например, «ActivationType») команды. Например, тип активации может быть «приоритетный» для команд, которые должны быть запущены в приоритете, и тип активации может быть «фоновый» для команд, которые должны быть запущены в фоне. Атрибут «ActivationType» может быть опциональным, с типом активации по умолчанию соответствующим приоритетному.
[0063] Элемент <ListenFor> (слушать) может быть вложен в элемент <Command> и может быть использован, чтобы определять один или более способов, которыми команда может быть произнесена. Опциональные или слова-носители могут быть предоставлены в качестве подсказок цифровому персональному помощнику 120 при выполнении обработки естественного языка. Слова-носители могут быть идентифицированы внутри квадратных скобок: []. Элементы данных могут быть идентифицированы внутри фигурных скобок или символов: {}. В определении 400 команды, в целом присутствует два альтернативных способа вызова команды «Добавить», как определено двумя элементами <ListenFor>. Например, словесное выражение либо «добавить MovieX в мою очередь», либо «добавить MovieX в мою MovieAppService очередь» может быть использовано, чтобы заставить цифровой персональный помощник 120 запускать команда «Добавить» у MovieAppService в фоне. Следует отметить, что предварительно определенные фразы могут быть идентифицированы с помощью ключевого слова «builtIn:» внутри набора фигурных скобок: (builtIn:<идентификатор фразы>}.
[0064] Элемент <Feedback> (отклик) может быть вложен в элемент <Command> и может быть использован, чтобы определять фразу, которая должна быть произнесена пользователю, когда цифровой персональный помощник 120 успешно распознал произносимую команду пользователя. Дополнительно или в качестве альтернативы, элемент <Feedback> может определять текстовую строку, которая должна быть отображена пользователю, когда произносимая команда подвергается синтаксическому анализу посредством цифрового персонального помощника 120.
[0065] Элемент <Response> (ответ) может быть вложен в элемент <Command> и может быть использован, чтобы определять один или более ответы, предоставляемые цифровым персональным помощником 120 пользователю. Каждый ответ ассоциирован с состоянием приложения, как определяется атрибутом «State» (состояние). Состояния могут быть для итоговых состояний, таких как успех или сбой, или для промежуточных состояний, таких как ход выполнения. Может быть несколько определенных типов ответов, таких как <DisplayString> для отображения текста на экране, <TTSString> для текста, который будет произнесен пользователю, <AppDeepLink> для внешней ссылки на web-сайт, и <WebLink> для менее внешней ссылки на web-сайт, например. Ответы, определяемые элементом <Response> могут быть дополнены дополнительной информацией ответа, предоставляемой приложением.
Примерная циклограмма
[0066] Фиг. 5 является примерной циклограммой 500, иллюстрирующей связь нескольких потоков исполнения (510, 520, и 530), чтобы выполнять функцию без монитора стороннего приложения из цифрового персонального помощника 120. Поток 510 UI и поток 520 управления могут быть параллельными потоками многопотокового варианта осуществления цифрового персонального помощника 120. Поток 510 UI может быть в основном отвечающим за захват ввода от и отображение вывода в пользовательском интерфейсе цифрового персонального помощника 120. Например, речевой ввод, тактильный ввод и/или текстовый ввод могут быть захвачены потоком 510 UI. В одном варианте осуществления, поток 510 UI может выполнять обработку естественного языка над вводом и может сопоставлять произносимые команды пользователя с командами в структуре 140 данных команд. Когда установлено, что произносимая команда сопоставлена с командой в структуре 140 данных команд, команда может быть сообщена потоку 520 управления для дальнейшей обработки. В альтернативном варианте осуществления, поток 510 UI может захватывать ввод текста в речь, отдельные слова могут быть сообщены потоку 520 управления, который может выполнять обработку естественного языка над вводом и может сопоставлять произносимые команды пользователя с командами в структуре 140 данных команд.
[0067] Поток 520 управления может быть в основном отвечающим за связь с и отслеживание хода выполнения приложения и взаимодействие с потоком 510 UI. Например, поток 520 управления может уведомлять поток 510 UI о том, что пользователь разговаривает с пользовательским интерфейсом цифрового персонального помощника 120. Слова и команды могут быть приняты потоком 520 управления и поток 520 управления может уведомлять поток 510 UI, когда команда пользователя была распознана потоком 520 управления. Поток 510 UI может указывать пользователю, через пользовательский интерфейс цифрового персонального помощника 120, что идет ход выполнения команды. Поток 510 UI или поток 520 управления может устанавливать, что команда должна быть запущена без монитора, посредством извлечения атрибутов команды из структуры 140 данных команд. Поток 520 управления может запускать новый поток или осуществлять связь с существующим потоком, таким как поток 530 AppService, когда команда должна быть запущена без монитора. Чтобы сократить время ответа пользователю, может быть желательным, чтобы поток 530 AppService был существующим потоком, вместо того чтобы поток 520 управления запускал новый поток. Например, поток 530 AppService может быть запущен при прогреве приложения или во время загрузки вычислительного устройства 130.
[0068] Поток 530 AppService может быть исполнен на вычислительном устройство 130 или может быть исполнен на удаленном сервере, таком как удаленный серверный компьютер 160. Поток 530 AppService может быть в основном отвечающим за совершение функции, указанной командой пользователя. Поток 530 AppService может поддерживать конечный автомат (такой как конечный автомат 300), чтобы отслеживать ход исполнения функции, и может предоставлять обновления по статусу потока 520 управления. Посредством предоставления обновлений статуса потоку 520 управления, поток 530 AppService может быть без монитора, где вывод пользователю предоставляется цифровым персональным помощником 120, а не пользовательским интерфейсом потока 530 AppService.
[0069] Поток 520 управления может отслеживать ход выполнения приложения (например, потока 530 AppService) посредством приема обновлений статуса от приложения и проверки, продвигается ли приложение вперед. Например, поток 520 управления может пускать таймер предварительно определенной продолжительности (такой как пять секунд) всякий раз, когда он осуществляет связь с потоком 530 AppService (либо отправляя информацию к потоку 530 AppService, либо принимая информацию от потока 530 AppService). Если таймер истекает до того, как отвечает поток 530 AppService, поток 520 управления может указывать потоку 510 UI, что приложение не смогло ответить и поток 510 UI может представлять сообщение о сбое пользователю через пользовательский интерфейс цифрового персонального помощника 120. Поток 530 AppService может быть прекращен или проигнорирован потоком 520 управления после того, как истекает таймер. В качестве альтернативы, если поток 530 AppService отвечает до того, как таймер истекает, таймер может быть сброшен, если другой ответ ожидается от приложения (как например, когда приложение отвечает состоянием хода выполнения), или таймер может быть отменен (как например, когда приложение осуществило функцию (итоговое состояние) или когда запрашивается ответ пользователя (состояние подтверждения или устранения неоднозначности).
[0070] Когда поток 520 управления принимает состояние подтверждения или устранения неоднозначности от потока 530 AppService, поток 520 управления может указывать потоку 510 UI, что подтверждение или устранение неоднозначности запрашивается у пользователя. Поток 510 UI может представлять выборы подтверждения или устранения неоднозначности пользователю через пользовательский интерфейс цифрового персонального помощника 120. Когда пользователь отвечает, или не может ответить, поток 510 UI может предоставлять ответ пользователя, или окончательное его отсутствие, потоку 520 управления. Поток 520 управления может пропускать ответ пользователя к потоку 530 AppService с тем, чтобы поток 530 AppService мог выполнить функцию. Если пользователь не смог ответить, поток 520 управления может прекращать поток 530 AppService.
[0071] Поток 510 UI может отображать разнообразные типы вывода через пользовательский интерфейс цифрового персонального помощника 120. Например, поток 510 UI может генерировать аудио вывод, такой как цифровой имитированный речевой вывод из текста. Цифровая имитированная речь может быть отправлена чипу аудио обработки, который может преобразовывать цифровую имитированную речь в аналоговый сигнал (как например с помощью цифро-аналогового преобразователя), который может быть выведен в качестве звука через громкоговоритель или головные телефоны. В качестве другого примера, поток 510 UI может предоставлять визуальный вывод, такой как изображения, анимация, текстовый вывод, и гиперссылки для просмотра пользователем на экране отображения вычислительного устройства 130. Если осуществляется легкий удар или щелчок по гиперссылкам, поток 510 UI может пускать приложение браузера, чтобы просматривать web-сайт, соответствующий выбранной гиперссылке. В качестве другого примера, поток 510 UI может генерировать тактильный вывод, как например посредством отправки сигнала вибрации электрическому мотору, который может заставлять вибрировать вычислительное устройство 130.
Примерный способ для совершения задачи без монитора
[0072] Фиг. 6 является блок-схемой примерного способа 600 для совершения без монитора задачи приложения в фоне цифрового персонального помощника 120. На этапе 610, голосовой ввод, сгенерированный пользователем, может быть принят цифровым персональным помощником 120. Голосовой ввод может быть захвачен локально на вычислительном устройстве 130 или удаленно от вычислительного устройства 130. В качестве одного примера, голосовой ввод, генерируемый пользователем, может быть локально захвачен посредством микрофона 150 вычислительного устройства 130 и преобразован в цифровую форму посредством аналого-цифрового преобразователя. В качестве другого примера, голосовой ввод, генерируемый пользователем, может быть удаленно захвачен посредством микрофона (как например, посредством вспомогательного устройства Bluetooth), беспроводным образом соединенного с вычислительным устройством 130. Управление цифровым персональным помощником 120 осуществляется посредством голоса и/или текста, вводимого в пользовательский интерфейс цифрового персонального помощника 120.
[0073] На этапе 620 может быть выполнена обработка естественного языка голосового ввода, чтобы выявить голосовую команду пользователя. Голосовая команда пользователя может включать в себя запрос на выполнение предварительно определенной функции приложения, такого как стороннее приложение с голосовой поддержкой. Предварительно определенная функция может быть идентифицирована, используя структуру данных, которая определяет приложения и функции приложений, которые поддерживаются цифровым персональным помощником 120. Например, совместимые приложения могут быть идентифицированы в файле определения команды, таком как определение 400 команды. Посредством использования расширяемого файла определения команды, чтобы определять функции сторонних приложений, которые могут быть выполнены без монитора цифровым персональным помощником 120, цифровой персональный помощник 120 может позволять пользователю выполнять больше задач с помощью интерфейса цифрового персонального помощника 120.
[0074] На этапе 630 цифровой персональный помощник 120 может предписывать приложению исполнять без монитора предварительно определенную функцию без появления пользовательского интерфейса приложения на дисплее вычислительного устройства 130. Цифровой персональный помощник 120 может устанавливать, что нужно исполнять приложение без монитора, так как приложение определяется в качестве без монитора в структуре 140 данных команд или так как пользователь использует вычислительное устройство в режиме «свободные руки» и исполнение приложения в приоритете может быть потенциально отвлекающим для пользователя. Например, цифровой персональный помощник 120 может вызывать web-услугу, чтобы исполнять предварительно определенную функцию приложения. В качестве другого примера, цифровой персональный помощник 120 может запускать новый поток на вычислительном устройстве 130, чтобы исполнять предварительно определенную функцию приложения после того, как выявлена команда пользователя. В качестве другого примера, цифровой персональный помощник 120 может осуществлять связь с существующим потоком, таким как поток, пущенный во время прогрева приложения, чтобы исполнять предварительно определенную функцию приложения. Предварительно определенная функция может быть исполнена в качестве фонового процесса. Приложение может осуществлять мониторинг хода выполнения предварительно определенной функции, как например посредством отслеживания состояния предварительно определенной функции.
[0075] На этапе 640, от приложения может быть принят ответ, указывающий состояние, ассоциированное с предварительно определенной функцией. Например, состояния могут включать в себя прогрев, начальное, ход выполнения, подтверждение, устранение неоднозначности и итоговое состояние. Ответ может включать в себя дополнительную информацию, такую как шаблонный список, текстовую строку, строку текста-в-речь, изображение, гиперссылка, или другая пригодная информация, которая может быть отображена пользователю через пользовательский интерфейс цифрового персонального помощника 120.
[0076] На этапе 650 пользовательский интерфейс цифрового персонального помощника 120 может предоставлять ответ пользователю на основе принятого состояния, ассоциированного с предварительно определенной функцией. Таким образом, ответ может происходить в контексте пользовательского интерфейса цифрового персонального помощника 120 без демонстрации пользовательского интерфейса приложения. Кроме того, возможности подтверждения и устранения неоднозначности цифрового персонального помощника 120 могут быть использованы, чтобы подтверждать и/или разъяснять команду пользователя для приложения.
Примерный способ для установления того, прогревать ли приложение
[0077] Фиг. 7 является блок-схемой примерного способа 700 для установления того, прогревать ли приложение в то время как пользователь говорит с цифровым персональным помощником 120. На этапе 710 пользователь может печатать, высказывать или говорить с цифровым персональным помощником 120. Текст или речь пользователя может быть проанализирована, используя методики обработки естественного языка, и отдельные слова могут быть распознаны из речи. Отдельные слова могут быть проанализированы поодиночке и в рамках промежуточной фразы, где они произносятся. Например, пользователь может говорить, «Эй, Помощник, MyApp, сделай…». Слово «Эй» может быть словом-носителем и отброшено. Слово «Помощник» может быть использовано для того, чтобы позволить цифровому персональному помощнику 120 знать, что пользователь запрашивает у него выполнение действия. Слово «MyApp» может быть интерпретировано в качестве приложения.
[0078] На этапе 720 напечатанные или произносимые слова могут быть сравнены с собственными функциями цифрового персонального помощника 120 и функциями, предоставленными в расширяемых определениях команды. Собирательно, собственные функции и функции, определенные в файле определения команды, могут именоваться «известными AppServices». Произносимые слова могут быть проанализированы и сравнены с известными AppServices по мере того, как слова высказываются. Другими словами, анализ речи может происходить до того, как фраза произнесена или напечатана пользователем целиком. Если не сопоставлено ни одно из известных AppServices, тогда на этапе 730, цифровой персональный помощник 120 может открывать web-браузер, чтобы извлекать web-страницу поисковой машины с поисковой строкой, соответствующей нераспознанной произносимой фразе. Управление программы может быть перенесено к web-браузеру, так что пользователь может уточнять web-поиск и/или просматривать результаты. Тем не менее, если известные AppServices сопоставлены, тогда способ 700 может продолжаться на этапе 740.
[0079] На этапе 740 может быть выяснено, является или приложение AppService приоритетной или фоновой задачей. Например, определение команды может включать в себя атрибут, который определяет приложение AppService в качестве приоритетного или фонового приложения. Если приложение AppService является приоритетной задачей, на этапе 750 приложение AppService может быть запущено в приоритете и управление может быть перенесено к приложению AppService, чтобы совершать команду. Если приложение AppService является фоновой задачей, тогда способ 700 может продолжаться параллельными этапами 760 и 770.
[0080] На этапе 760 цифровой персональный помощник может предоставлять пользователю информацию касательно анализа речи. В частности, цифровой персональный помощник 120 может генерировать вывод для экрана хода выполнения пользовательского интерфейса цифрового персонального помощника 120. Вывод может быть определен в элементе <Feedback>, вложенном в элемент <Command>, определения команды, например. Вывод может быть текстовой строкой и может непрерывно обновляться по мере того, как пользователь продолжает говорить.
[0081] На этапе 770 цифровой персональный помощник 120 может прогревать приложение AppService, не ожидая окончания высказывания пользователя. Прогрев приложения AppService может включать в себя распределение памяти, упреждающую выборку инструкций, создание сеанса связи, извлечение информации из базы данных, пуск нового потока исполнения, повышение прерывания или другие пригодные операции для конкретного приложения. Приложение может быть прогрето на основе упреждающей функции. Например, инструкции, соответствующие упреждающей функции, могут быть выбраны даже если функция достоверно неизвестна. Посредством прогрева приложения до того, как пользователь завершает произносимую команду, потенциально может быть уменьшено время ответа пользователю.
[0082] На этапе 780 цифровой персональный помощник 120 может продолжать осуществлять синтаксический разбор частичного результата распознавания речи до тех пор, пока не завершится высказывание. Конец высказывания может быть обнаружен на основе синтаксически разобранной команды и/или на основе паузы пользователя в течение более чем предварительно установленного количества времени. Например, конец команды «MovieAppService, добавить MovieX в мою очередь» может быть обнаружен, когда распознается слово «очередь». В качестве другого примера, конец команды, «TextApp, отправить текстовое сообщение моей жене о том, что я опоздаю домой на ужин», может быть более сложно обнаружить, так как команда заканчивается элементом данных неизвестной длины. Следовательно, пауза может быть использована, чтобы указывать цифровому персональному помощнику 120 о том, что команда заершена.
[0083] На этапе 790, конец произносимой команды может быть обнаружен и итоговый результат распознавания речи может быть пропущен к приложению. Приложение и цифровой персональный помощник 120 могут осуществлять связь друг с другом, чтобы совершать произносимую команду, как описано со ссылкой на более ранние Фигуры.
Вычислительные системы
[0084] Фиг. 8 изображает обобщенный пример пригодной вычислительной системы 800, в которой могут быть реализованы описываемые нововведения. Вычислительная система 800 не предполагает каких-либо ограничений в отношении объема использования или функциональности, поскольку нововведения могут быть реализованы в различных общего назначения или особого назначения вычислительных системах.
[0085] Со ссылкой на Фиг. 8, вычислительная система 800 включает в себя один или более блоки 810, 815 обработки и память 820, 825. На Фиг. 8, данная базовая конфигурация 830 включена внутри пунктирной линии. Блоки 810, 815 обработки исполняют исполняемые компьютером инструкции. Блок обработки может быть центральным блоком обработки (CPU) общего назначения, процессором в проблемно-ориентированно интегральной микросхеме (ASIC), или любым другим типом процессора. В многопроцессорной системе, несколько блоков обработки исполняют исполняемые компьютером инструкции, чтобы увеличить мощность обработки. Например, Фиг. 8 показывает центральный блок 810 обработки, как впрочем и блок обработки графики или блок 815 совместной обработки. Вещественная память 820, 825 может быть энергозависимой памятью (например, регистрами, кэшем, RAM), энергонезависимой памятью (например, ROM, EEPROM, флэш-памятью, и т.д.), или некоторым сочетанием двух видов, доступ к которой может быть осуществлен посредством блока(ов) обработки. Память 820, 825 хранит программное обеспечение 880, реализующее одно или более нововведения, описываемые в данном документе, в форме исполняемых компьютером инструкций, пригодных для исполнения посредством блока(ов) обработки.
[0086] Вычислительная система может иметь дополнительные признаки. Например, вычислительная система 800 включает в себя хранилище 840, одно или более устройства 850 ввода, одно или более устройства 860 вывода, и одно или более соединения 870 связи. Механизм взаимного соединения (не показано), такой как шина, контроллер, или сеть осуществляет взаимное соединение компонентов вычислительной системы 800. Как правило, программное обеспечение операционной системы (не показано) обеспечивает рабочую среду для другого программного обеспечения, исполняемого на вычислительной системе 800, и координирует активности компонентов вычислительной системы 800.
[0087] Вещественное хранилище 840 может быть съемным или несъемным, и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, DVD, или любой другой носитель информации, который может быть использован, чтобы хранить информацию, и доступ к которому может быть осуществлен внутри вычислительной системы 800. Хранилище 840 хранит инструкции для программного обеспечения 880, реализующего одно или более нововведения, описываемые в данном документе.
[0088] Устройство(а) 850 ввода может быть устройством сенсорного ввода, таким как клавиатура, мышь, перо, или шаровой манипулятор, устройством голосового ввода, сканирующим устройством, или другим устройством, которое обеспечивает ввод в вычислительную систему 800. Применительно к кодированию видео, устройство(а) 850 ввода может быть камерой, видеокартой, картой TV-тюнера, или сходным устройством, которое осуществляет принятие видео ввода в аналоговой или цифровой форме, или CD-ROM или CD-RW, который считывает образцы видео в вычислительную систему 800. Устройство(а) 860 вывода может быть дисплеем, принтером, громкоговорителем, устройством записи CD, или другим устройством, которое обеспечивает вывод из вычислительной системы 800.
[0089] Соединение(я) 870 связи обеспечивают связь через средство связи с другим вычислительным объектом. Средство связи переправляет информацию, такую как исполняемые компьютером инструкции, аудио или видео ввод или вывод, или другие данные в модулированном сигнале данных. Модулированный сигнал данных является сигналом, одна или более характеристики которого установлены или изменены таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, средства связи могут использовать электрический, оптический, RF, или другой носитель.
[0090] Нововведения могут быть описаны в общем контексте исполняемых компьютером инструкций, таких как те, что включаются в программные модули, исполняемые в вычислительной системе на целевом действительном или виртуальном процессоре. В целом, программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных, и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функциональность программных модулей может быть объединена или разбита между программными модулями, как того требуется в разнообразных вариантах осуществления. Исполняемые компьютером инструкции для программных модулей, могут быть исполнены внутри локальной или распределенной вычислительной системы.
[0091] Понятия «система» и «устройство» используются взаимозаменяемо в данном документе. За исключением того, когда контекст четко не указывает обратного, ни одно из понятий не накладывает какого-либо ограничения на тип вычислительной системы или вычислительного устройства. В целом, вычислительная система или вычислительное устройство может быть локальным или распределенным, и может включать в себя любое сочетание аппаратного обеспечения особого назначения и/или аппаратного обеспечения общего назначения с программным обеспечением, реализующим описываемую в данном документе функциональность.
[0092] В целях представления, подробное описание использует понятия, подобные «устанавливать» и «использовать», чтобы описывать компьютерные операции в вычислительной системе. Эти понятия являются высокоуровневыми абстракциями для операций, выполняемых компьютером, и их не следует путать с действиями, которые выполняет человек. Фактические компьютерные операции, соответствующие этим понятиям, варьируются в зависимости от реализации.
Мобильное устройство
[0093] Фиг. 9 является схемой системы, изображающей примерное мобильное устройство 900, включающее в себя многообразие опциональных компонентов аппаратного и программного обеспечения, показанных в целом в позиции 902. Любые компоненты 902 в мобильном устройстве могут осуществлять связь с любым другим компонентом, несмотря на то, что не все соединения показаны, для простоты иллюстрации. Мобильное устройство может быть любым из многообразия вычислительных устройств (например, сотовым телефоном, интеллектуальным телефоном, переносным компьютером, Персональным Цифровым Помощником (PDA), и т.д.) и может обеспечивать беспроводную двухстороннюю связь с одной или более сетями 904 мобильной связи, такой как сотовая, спутниковая, или другая сеть.
[0094] Иллюстрируемое мобильное устройство 900 может включать в себя контроллер или процессор 910 (например, сигнальный процессор, микропроцессор, ASIC, или другую схему логики управления и обработки) для выполнения таких задач как кодирование сигнала, обработка данных, обработка ввода/вывода, управление питанием, и/или другие функции. Операционная система 912 может управлять распределением и использование компонентов 902 и поддерживать цифровой персональный помощник 120 и одну или более прикладные программы 914. Прикладные программы могут включать в себя общие мобильные вычислительные приложения (например, приложения работы с электронной почтой, календари, средства администрирования контактов, web-браузеры, приложения обмена сообщениями, приложения для просмотра фильмов, приложения банковского обслуживания), или любое другое вычислительное приложение. Прикладные программы 914 могут включать в себя приложения с задачами, которые могут быть исполнены без монитора посредством цифрового персонального помощника 120. Например, задачи могут быть определены в структуре 140 данных команд. Функциональность 913 для осуществления доступа к магазину приложений, также может быть использована для получения и обновления прикладных программ 914.
[0095] Иллюстрируемое мобильное устройство 900 может включать в себя память 920. Память 920 может включать в себя несъемную память 922 и/или съемную память 924. Несъемная память 922 может включать в себя RAM, ROM, флэш-память, жесткий диск, или другие общеизвестные технологии хранилища памяти. Съемная память 924 может включать в себя флэш-память или карту Модуля Идентификации Абонента (SIM), которая хорошо известна в системах связи GSM, или другие общеизвестные технологии хранилища памяти, такие как «интеллектуальные карты». Память 920 может быть использована для хранения данных и/или кода для выполнения операционной системы 912 и приложений 914. Примерные данные могут включать в себя web-страницы, текст, изображения, звуковые файлы, видеоданные, или другие наборы данных, которые должны быть отправлены к и/или приняты от одного или более сетевых серверов или других устройств через одну или более проводную или беспроводную сети. Память 920 может быть использована, чтобы хранить идентификатор абонента, такой как Международный Идентификационный Номер Оборудования Подвижного Абонента (IMSI), и идентификатор оборудования, такой как Международный Идентификатор Мобильного Оборудования (IMEI). Такие идентификаторы могут быть переданы сетевому серверу, чтобы идентифицировать пользователей и оборудование.
[0096] Мобильное устройство 900 может поддерживать одно или более устройства 930 ввода, такие как сенсорный экран 932, микрофон 934, камера 936, физическая клавиатура 938 и/или шаровой манипулятор 940, и одно или более устройства 950 вывода, такие как громкоговоритель 952 и дисплей 954. Другие возможные устройства вывода (не показано) могут включать в себя пьезоэлектрические или другие тактильные устройства вывода. Некоторые устройства могут обслуживать более чем одну функцию ввода/вывода. Например, сенсорный экран 932 и дисплей могут быть объединены в единое устройство ввода/вывода.
[0097] Устройства 930 ввода могут включать в себя Естественный Пользовательский интерфейс (NUI). NUI является любой технологией интерфейса, которая позволяет пользователю взаимодействовать с устройством «естественным» образом, свободно от искусственных ограничения, накладываемых устройствами ввода, такими как мыши, клавиатуры, пульты дистанционного управления, и подобное. Примеры способов NUI включают в себя те, что основаны на распознавании речи, распознавании касания и стилуса, распознавании жеста как по экрану, так и смежно с экраном, жестами по воздуху, отслеживании головы или глаза, голосе и речи, зрении, касании, жестах, и машинном интеллекте. Другие примеры NUI включают в себя обнаружение жеста движением, используя акселерометры/гироскопы, распознавание лица, 3D дисплеи, отслеживание головы, глаза, и взгляда, системы многонаправленной дополненной реальности и виртуальной реальности, все из чего обеспечивает более естественный интерфейс, как впрочем и технологии для регистрации активности мозга, используя электроды регистрации электрического поля (EEG и связанные способы). Следовательно, в одном конкретном примере, операционная система 912 или приложения 914 могут содержать программное обеспечение распознавания речи как часть голосового пользовательского интерфейса, который позволяет пользователю оперировать устройством 900 через голосовые команды. Кроме того, устройство 900 может содержать устройства вывода и программное обеспечение, которые обеспечивают взаимодействие пользователя через пространственные жесты пользователя, как например обнаружение и интерпретацию жестов, чтобы предоставлять ввод в игровое приложение.
[0098] Беспроводной модем 960 может быть соединен с антенной (не показано) и может обеспечивать двухстороннюю связь между процессором 910 и внешними устройства, как будет понятно в области техники. Модем 960 показан в общем и может включать в себя сотовый модем для осуществления связи с сетью 904 мобильной связи и/или другие основанные на радиосвязи модемы (например, Bluetooth 964 или Wi-Fi 962). Беспроводной модем 960, как правило, выполнен с возможностью осуществления связи с одной или более сотовыми сетями, такими как сеть GSM, для голосовой связи и связи передачи данных, внутри единой сотовой сети, между сотовыми сетями, или между мобильным устройством и телефонной коммутируемой сетью общего пользования (PSTN).
[0099] Мобильное устройство может дополнительно включать в себя, по меньшей мере, один порт 980 ввода/вывода, источник 982 питания, приемник 984 спутниковой навигационной системы, такой как приемник Глобальной Системы Позиционирования (GPS), акселерометр 986, и/или физический соединитель 990, который может быть портом USB, портом IEEE 1394 (FireWire), и/или портом RS-232. Иллюстрируемые компоненты 902 не являются требуемыми или включающими все, поскольку любые компоненты могут быть удалены или другие компоненты могут быть добавлены.
Среда с облачной поддержкой
[0100] Фиг. 10 иллюстрирует обобщенный пример пригодной среды 1000 с облачной поддержкой, в которой могут быть реализованы описываемые варианты осуществления, методики, и технологии. В примерной среде 1000, разнообразные типы услуг (например, вычислительные услуги) предоставляются облаком 1010. Например, облако 1010 может содержать совокупность вычислительных устройств, которые могут быть расположены центрально или распределено, которая предоставляет основанные на облаке услуги разнообразных типов пользователям и устройствам, соединенным через сеть, такую как Интернет. Среда 1000 реализации может быть использована разнообразными путями, чтобы выполнять вычислительные задачи. Например, некоторые задачи (например, обработка ввода пользователя и представление пользовательского интерфейса) могут быть выполнены на локальных вычислительных устройствах (например, соединенных устройствах 1030, 1040, 1050), тогда как другие задачи (например, хранение данных, которые должны быть использованы в последующей обработке), могут быть выполнены в облаке 1010.
[0101] В примерной среде 1000, облако 1010 предоставляет услуги для соединенных устройств 1030, 1040, 1050 с многообразием возможностей экрана. Соединенное устройство 1030 представляет собой устройство с экраном 1035 компьютера (например, экраном среднего размера). Например, соединенное устройство 1030 может быть персональным компьютером, таким как настольный компьютер, лэптоп, ноутбук, нетбук, или подобное. Соединенное устройство 1040 представляет собой устройство с экраном 1045 мобильного устройства (например, экраном небольшого размера). Например, соединенное устройство 1040 может быть мобильным телефоном, интеллектуальным телефоном, персональным цифровым помощником, планшетным компьютером, и подобным. Соединенное устройство 1050 может быть экраном телевизора (например, интеллектуального телевизора) или другим устройством, соединенным с телевизором (например, абонентской телевизионной приставкой или игровой консолью) или подобным. Одно или более соединенные устройства 1030, 1040, 1050 могут включать в себя возможности сенсорного экрана. Сенсорные экраны могут осуществлять принятие ввода разными способами. Например, емкостные сенсорные экраны обнаруживают сенсорный ввод, когда объект (например, кончик пальца или стилус) нарушает или прерывает электрический ток, протекающий по поверхности. В качестве другого примера, сенсорные экраны могут использовать оптические датчики, чтобы обнаруживать сенсорный ввод, когда прерываются лучи от оптических датчиков. Физический контакт с поверхностью экрана необязателен для того, чтобы ввод был обнаружен некоторыми сенсорными экранами. Устройства без возможностей экрана также могут быть использованы в примерной среде 1000. Например, облако 1010 может предоставлять услуги одному или более компьютерам (например, серверным компьютерам) без дисплеев.
[0102] Услуги могут быть предоставлены облаком 1010 через поставщиков 1020 услуги, или через других поставщиков онлайновых услуг (не изображено). Например, облачные услуги могут быть подогнаны под размер экрана, возможность дисплея, и/или возможность сенсорного экрана конкретного соединенного устройства (например, соединенных устройств 1030, 1040, 1050).
[0103] В примерной среде 1000, облако 1010 предоставляет технологии и решения, описываемые в данном документе, разнообразным соединенным устройствам 1030, 1040, 1050, используя, по меньшей мере частично, поставщиков 1020 услуги. Например, поставщики 1020 услуги могут предоставлять централизованное решение для разнообразных основанных на облаке услуг. Поставщики 1020 услуги могут осуществлять администрирование подписок на услугу для пользователей и/или устройств (например, для соединенных устройств 1030, 1040, 1050 и/или их соответствующих пользователей).
Примерные реализации
[0104] Несмотря на то, что операции некоторых раскрываемых способов описываются в конкретном, последовательном порядке для удобного представления, должно быть понятно, что данный способ описания охватывает перестановку, за исключением того, когда конкретная очередность не требуется конкретным языком, изложенным ниже. Например, операции, описанные последовательно, могут в некоторых случаях быть переставлены или выполнены параллельно. Более того, для простоты, приложенные фигуры могут не показывать разнообразные пути, которыми раскрываемые способы могут быть использованы совместно с другими способами.
[0105] Любой из раскрываемых способов может быть реализован в качестве реализуемых компьютером инструкций или компьютерного программного продукта, хранящегося на одном или более машиночитаемых запоминающих носителях информации и исполняемых на вычислительном устройстве (например, любом доступном вычислительном устройстве, включая интеллектуальные телефоны или другие мобильные устройства, которые включают в себя вычислительное аппаратное обеспечение). Машиночитаемые запоминающие носители информации являются любыми доступными вещественными носителями информации, доступ к которым может быть осуществлен внутри вычислительной среды (например, одним или более оптическими мультимедийными дисками, такими как DVD или CD, компонентами энергозависимой памяти (такой как DRAM или SRAM), или компонентами энергонезависимой памяти (такой как флэш-память или накопители на жестком диске)). В качестве примера и со ссылкой на Фиг. 8, машиночитаемые запоминающие носители информации включают в себя память 820 и 825, и хранилище 840. В качестве примера и со ссылкой на Фиг. 9, машиночитаемые запоминающие носители информации включают в себя память и хранилище 920, 922, и 924. Понятие машиночитаемые запоминающие носители информации не включает в себя сигналы и несущие волны. В дополнение, понятие машиночитаемые запоминающие носители информации не включает в себя соединения связи (например, 870, 960, 962, и 964).
[0106] Любая из машиночитаемых инструкций для реализации раскрываемых методик, как впрочем и любые данные, создаваемые и используемые во время реализации раскрываемых вариантов осуществления, могут быть сохранены на одном или более машиночитаемых запоминающих носителях информации. Исполняемые компьютером инструкции могут быть частью, например, выделенного приложения программного обеспечения или приложения программного обеспечения, доступ к которому осуществляется или которое загружается через web-браузер или другое приложение программного обеспечения (такое как приложения удаленного вычисления). Такое программное обеспечение может быть исполнено, например, на одном локальном компьютере (например, любом пригодном имеющемся на рынке компьютере) или в сетевой среде (например, через Интернет, глобальную сеть, локальную сеть, сеть типа клиент-сервер (такая как сеть облачных вычислений), или другую такую сеть), используя один или более сетевые компьютеры.
[0108] Кроме того, любой из основанных на программном обеспечении вариантов осуществления (содержащий, например, исполняемые компьютером инструкции для предписания компьютеру выполнять любой из раскрываемых способов) может быть выгружен, загружен, или к нему может быть осуществлен удаленный доступ через пригодное средство связи. Такое пригодное средство связи включает в себя, например, Интернет, Глобальную Паутину, интрасеть, приложения программного обеспечения, кабель (включая оптоволоконный кабель), магнитную связь, электромагнитную связь (включая RF, микроволновую, и инфракрасную связь), электронную связь, или другое такое средство связи.
[0109] Раскрываемые способы, устройство, и системы не должны толковаться в качестве ограничивающих любым образом. Вместо этого, настоящее раскрытие направлено на новые и неочевидные признаки и аспекты разнообразных раскрываемых вариантов осуществления, отдельно или в разнообразных сочетаниях и суб-сочетаниях с другими. Раскрываемые способы, устройство, и системы как не ограничиваются каким-либо конкретным аспектом или признаком или их сочетанием, так и не требуется раскрываемыми вариантами осуществления того, чтобы присутствовало любое одно или более конкретные преимущества или решались проблемы.
[0110] Технологии из любого примера могут быть объединены с технологиями, описанными в любом одном или более других примерах. В виду множества возможных вариантов осуществления, к которым могут быть применены принципы раскрываемой технологии, следует понимать, что иллюстрируемые варианты осуществления являются примерами раскрываемой технологии и не должны рассматриваться в качестве ограничения объема раскрываемой технологии.