Long-distance spread of digital assistant service

The system extends digital assistant services across multiple devices, allowing interaction at extended distances and addressing device capability limitations, thereby enhancing user interaction and service efficiency.

JP2025098070APending Publication Date: 2025-07-01APPLE INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2025038473
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2017-08-16
Filing Date
2025-03-11
Publication Date
2025-07-01

AI Technical Summary

Technical Problem

Existing digital assistant technologies require direct proximity to the electronic device for interaction, limiting their usability when users are separated by distance or when devices have capability limitations.

Method used

A system that extends digital assistant services by allowing voice inputs to be received and responses to be provided across multiple devices, using identification information to determine the most suitable device for response delivery based on user location, movement, and device capabilities.

Benefits of technology

Enhances user interaction by enabling digital assistant services at extended distances, overcoming device capability limitations, and improving efficiency and continuity of service delivery.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025098070000001_ABST
    Figure 2025098070000001_ABST
Patent Text Reader

Abstract

To provide an art for long-distance spread of digital assistant service.SOLUTION: A method for providing digital assistant service includes: receiving at a first electronic device (device 810A) a first voice input from a first user (user 804); detecting a location of or tracking a movement of the first user by the first electronic device while a reply is being provided to the first user; determining whether or not a predetermined condition is satisfied based on at least one of them; determining that the reply is to be uninterruptedly provided in another electronic device (device 830) according to a determination that the predetermined condition is satisfied; and allowing the reply to be uninterruptedly provided by the other electronic device according to a determination that the reply is to be uninterruptedly provided in the other electronic device.SELECTED DRAWING: Figure 14
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application generally relates to intelligent automatic assistants, and more specifically, to remote extensions of digital assistant services. (Cross-reference to Related Applications)

[0002] This application claims priority to U.S. Provisional Patent Application No. 62 / 507,151, filed May 16, 2017, entitled "FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES"; Danish Patent Application No. PA2017 70434, filed Jun. 2, 2017, entitled "FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES"; Danish Patent Application No. PA2017 70435, filed Jun. 2, 2017, entitled "FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES"; and U.S. Non-Provisional Patent Application No. 15 / 679,108, filed Aug. 16, 2017, entitled "FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES", the entire contents of each of which are hereby incorporated by reference.

Background Art

[0003] Intelligent automatic assistants (or digital assistants) can provide a useful interface between human users and electronic devices. Such assistants enable users to interact with a device or system using natural language in voice and / or text form. For example, a user can provide voice input including a user request to a digital assistant operating on an electronic device. The digital assistant can interpret the user's intent from the voice input and make the user's intent operable to a task. The task can then be executed by performing one or more services of the electronic device and return a related output response to the user request to the user.

[0004] Using a digital assistant typically requires a direct two-way interaction between the user and the digital assistant. For example, the user may be required to be in proximity to (e.g., in the same room as) the electronic device on which the digital assistant operates. Thus, the digital assistant can directly receive the user's voice input via its microphone and provide a response to the user via its speaker. Under certain circumstances, requiring the user to be in proximity to the electronic device can make it difficult and inconvenient for the user to interact with the digital assistant. For example, when the user and the electronic device on which the digital assistant operates are separated by a distance (e.g., in different rooms) such that the electronic device cannot receive or has difficulty receiving the user's voice input, the digital assistant may not be able to provide the digital assistant service to the user. Therefore, a technology for extending the digital assistant service over a long distance is desired.

[0005] Furthermore, different types of electronic devices may have different capabilities. As a result, the digital assistant services provided on different devices may be different. A certain digital assistant service may not be provided on a certain device due to device capability limitations. For example, while a digital assistant operating on a smartphone device can output a voice reading of a text message, a digital assistant operating on a television set-top box may not be able to do the same due to device limitations. Therefore, it is desirable to provide a digital assistant service that uses multiple devices to mitigate device capability limitations. SUMMARY OF THE INVENTION

[0006] A system and process for providing a digital assistant service are provided.

[0007] Exemplary methods are disclosed herein. One example method includes receiving, at an electronic device having one or more processors, a first voice input representing a user request from a first user. The method further includes obtaining identification information of the first user and providing, according to the user's identification information, a representation of the user request to at least one of a second electronic device or a third electronic device. The method further includes receiving, from the second electronic device or the third electronic device, or both, a response to the user request based on a determination of whether the second electronic device or the third electronic device, or both, provides a response to the first electronic device. The method further includes providing a representation of the response to the first user.

[0008] An example of a non-transitory computer-readable medium is disclosed herein. One example non-transitory computer-readable storage medium stores one or more programs. The one or more programs, when executed by one or more processors of an electronic device, cause the electronic device to receive a first voice input representing a user request from a first user. The one or more programs further cause the electronic device to obtain identification information of the first user and provide, according to the user's identification information, a representation of the user request to at least one of a second electronic device or a third electronic device. The one or more programs further cause the electronic device to receive, from the second electronic device or the third electronic device, or both, a response to the user request based on a determination of whether the second electronic device or the third electronic device, or both, provides a response to the first electronic device. The one or more programs further cause the electronic device to provide a representation of the response to the first user.

[0009] An example of an electronic device is disclosed herein. An example of an electronic device includes one or more processors, a memory, and one or more programs. The one or more programs are stored in the memory and configured to be executed by the one or more processors. The one or more programs include instructions to receive a first voice input representing a user request from a first user. The one or more programs further include instructions to obtain identification information of the first user and, according to the user's identification information, provide an expression of the user request to at least one of a second electronic device or a third electronic device. The one or more programs further include instructions to receive a response to the user request from the second electronic device or the third electronic device, or both, based on a determination of whether the second electronic device or the third electronic device, or both, provide a response to the first electronic device. The one or more programs further include instructions to provide an expression of the response to the first user.

[0010] An example of an electronic device includes means for receiving a first voice input representing a user request from a first user. The electronic device further includes means for obtaining identification information of the first user and means for providing an expression of the user request to at least one of a second electronic device or a third electronic device according to the user's identification information. The electronic device further includes means for receiving a response to the user request from the second electronic device or the third electronic device, or both, based on a determination of whether the second electronic device or the third electronic device, or both, provide a response to the first electronic device. The electronic device further includes means for providing an expression of the response to the first user.

[0011] An example method is disclosed herein. An example method includes receiving a notification of an event associated with a first user in an electronic device having one or more processors. The method further includes outputting a suggestion of the notification in response to receiving the notification. The method further includes receiving one or more voice inputs and determining, according to the one or more voice inputs, whether the notification should be provided in the first electronic device. The method further includes providing the notification in the first electronic device according to the determination that the notification should be provided in the first electronic device.

[0012] An example non-transitory computer-readable medium is disclosed herein. An example non-transitory computer-readable storage medium stores one or more programs. The one or more programs, when executed by one or more processors of an electronic device, include instructions that cause the electronic device to receive a notification of an event associated with a first user. The one or more programs further include instructions that cause the electronic device to output a suggestion of the notification in response to receiving the notification. The one or more programs further include instructions that cause the electronic device to receive one or more voice inputs and determine, according to the one or more voice inputs, whether the notification should be provided in the first electronic device. The one or more programs further include instructions that cause the electronic device to provide the notification in the first electronic device according to the determination that the notification should be provided in the first electronic device.

[0013] An example of an electronic device is disclosed herein. An example of an electronic device includes one or more processors, a memory, and one or more programs. The one or more programs are stored in the memory and configured to be executed by the one or more processors. The one or more programs include instructions to receive a notification of an event associated with a first user. The one or more programs include instructions to output a suggestion of the notification in response to receiving the notification. The one or more programs include instructions to receive one or more voice inputs and, in accordance with the one or more voice inputs, determine whether the notification should be provided on the first electronic device. The one or more programs include instructions to provide the notification on the first electronic device in accordance with a determination that the notification should be provided on the first electronic device.

[0014] An example of an electronic device includes means for receiving a notification of an event associated with a first user. The electronic device further includes means for outputting a suggestion of the notification in response to receiving the notification. The electronic device further includes means for receiving one or more voice inputs and means for determining, in accordance with the one or more voice inputs, whether the notification should be provided on the first electronic device. The electronic device further includes means for providing the notification on the first electronic device in accordance with a determination that the notification should be provided on the first electronic device.

[0015] An exemplary method is disclosed herein. An example of the method includes receiving, at an electronic device having one or more processors, a first voice input representing a user request from a first user. The method further includes obtaining capability data associated with one or more electronic devices communicatively coupled to the first electronic device. The method further includes identifying, in accordance with the capability data, a second electronic device that provides at least a portion of a response to the user request from among the one or more electronic devices communicatively coupled to the first electronic device. The method further includes causing the second electronic device to provide at least a portion of a response to the first user.

[0016] One example of a non - transitory computer - readable medium is disclosed herein. One example of a non - transitory computer - readable storage medium stores one or more programs. When the one or more programs are executed by one or more processors of an electronic device, the one or more programs include instructions to cause the electronic device to receive a first voice input representing a user request from a first user. The one or more programs further include instructions to cause the electronic device to obtain capability data associated with one or more electronic devices that can be communicatively coupled to the first electronic device. The one or more programs further include instructions to cause the electronic device to identify a second electronic device that provides at least a portion of a response to the user request from one or more electronic devices that can be communicatively coupled to the first electronic device according to the capability data. The one or more programs further include instructions to cause the electronic device to provide at least a portion of a response to the first user.

[0017] An exemplary electronic device is disclosed herein. One example of an electronic device includes one or more processors, a memory, and one or more programs, the one or more programs being stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions to receive a first voice input representing a user request from a first user. The one or more programs further include instructions to obtain capability data associated with one or more electronic devices that can be communicatively coupled to the first electronic device. The one or more programs further include instructions to identify a second electronic device that provides at least a portion of a response to the user request from one or more electronic devices that can be communicatively coupled to the first electronic device according to the capability data. The one or more programs further include instructions to cause the second electronic device to provide at least a portion of a response to the first user.

[0018] One example of an electronic device includes means for receiving a first voice input representing a user request from a first user. The electronic device further includes means for obtaining capability data associated with one or more electronic devices that can be communicatively coupled to the first electronic device. The electronic device further includes means for identifying a second electronic device that provides at least a portion of a response to the user request from one or more electronic devices that can be communicatively coupled to the first electronic device according to the capability data. The electronic device further includes means for causing the second electronic device to provide at least a portion of a response to the first user.

[0019] The technology for remotely extending digital assistant services by one or more service extension devices can improve the user two-way interaction interface. For example, by using one or more service extension devices, the user no longer needs to be in proximity to (e.g., in the same room as) the electronic device to receive the digital assistant services provided by the digital assistant operating on the electronic device. Further, the service extension device can flexibly obtain responses to user requests from devices located in the vicinity of the user and / or remotely located devices, depending on the content of the user request. For example, when the user requests personal information (e.g., calendar events), the service extension device can obtain a response from a device located near the user (e.g., the user's smartphone) rather than a remote device, thereby reducing the time required to provide the service to the user. In some situations, obtaining a response from a local device can also alleviate privacy concerns because confidential or sensitive information may be included in the communication with the local device. Further, the ability to obtain responses from different devices enhances the service extension device's ability to provide a response to the user. For example, if the service extension device cannot obtain the information requested by the user from a device (e.g., the user's smartphone), it can obtain a response from another device (e.g., a server). As a result, the service extension device can dynamically obtain responses from one or more devices and efficiently extend digital assistant services from multiple devices.

[0020] One or more service extension devices can further extend the digital assistant service to enhance its continuity when providing the digital assistant service. For example, one or more service extension devices can determine whether a response to a user request (e.g., playing music) should be provided on any specific service extension device or another electronic device depending on the user's location, movement, preferences, etc. This ability to select the best device for providing the service extension enhances the continuity of providing the digital assistant service among multiple devices and further improves the user two-way interaction interface. Also, one or more service extension devices can be shared among multiple users (e.g., family members), and the operation of the device can be performed based on the authentication of multiple users. As a result, the same service extension device can extend the digital assistant service from multiple electronic devices associated with multiple users. This ability to share the service extension device improves the efficiency of providing the digital assistant extended service.

[0021] Furthermore, the technology of using one or more service extension devices to provide notifications to users can provide quick notifications to users at an extended distance. For example, the user may be away from the user device, and thus may not be able to directly receive the notifications provided by the user device. One or more service extension devices can receive notifications from the user device (e.g., the user's smartphone) and provide the user with the audio and / or visual output associated with the notifications. Therefore, the service extension device effectively expands the distance at which the user device can provide notifications to the user.

[0022] Furthermore, the technology of providing digital assistant services using multiple devices can mitigate the limitations of device capabilities. For example, a user device may not be able to provide services in response to user requests due to its limited capabilities (e.g., small screen size, lack of required information, etc.). The user device can identify another device that can provide the service and cause the other device to provide the requested service to the user. The ability to identify another device that can provide the requested service enhances the efficiency of the user interaction by leveraging the capabilities of a set of devices to provide digital assistant services and reducing the burden on the user to find an appropriate device.

[0023] Furthermore, these technologies improve the operability of the device, make the user device interface more efficient, and further reduce the power consumption of the device and improve the battery life by enabling the user to use the device more quickly and efficiently.

Brief Description of the Drawings

[0024]

Figure 1

[0025]

Figure 2A

[0026]

Figure 2B

[0027]

Figure 3

[0028]

Figure 4

[0029]

Figure 5A

[0030]

Figure 5B

[0031]

Figure 6A

[0032]

Figure 6B

[0033]

Figure 7A

[0034]

Figure 7B

[0035]

Figure 7C

[0036]

Figure 8A

Figure 8B

[0037]

Figure 9A

Figure 9B

Figure 9C

[0038]

Figure 10A

Figure 10B

Figure 10C

[0039]

Figure 11A

Figure 11B

Figure 11C

Figure 11D

[0040]

Figure 12A

Figure 12B

Figure 12C

[0041]

Figure 13A

Figure 13B

[0042]

Figure 14

[0043]

Figure 15A

Figure 15B

Figure 15C

Figure 15D

Figure 15E

Figure 15F

Figure 15G

[0044]

Figure 16A

Figure 16B

Figure 16C

Figure 16D

Figure 16E

Figure 16F

Figure 16G

Figure 16H

Figure 16I

[0045]

Figure 17A

Figure 17B

Figure 17C

Figure 17D

[0046]

Figure 18A

Figure 18B

Figure 18C

Figure 18D

Figure 18E

[0047]

Figure 19A

Figure 19B

Figure 19C

Figure 19D

[0048] In the following description of the embodiments, reference is made to the accompanying drawings which show specific examples that can be implemented. It should be understood that other examples can be used and structural changes can be made without departing from the scope of the various examples.

[0049] The present disclosure provides techniques for remote expansion of digital assistant services by one or more service expansion devices. As described, the use of service expansion devices can improve the user bi-directional interaction interface. In some examples, the first electronic device can be a service expansion device. The first electronic device can receive a voice input representing a user request. The first electronic device can obtain the user's identification information based on, for example, the authentication of the user by the second electronic device and / or the third electronic device. In some examples, the second electronic device can be a device remotely located from the first electronic device (e.g., a remote server), and the third electronic device can be a device located in the vicinity of the first electronic device (e.g., the user's smartphone). After being identified, the first electronic device can provide an expression of the user request to at least one of the second electronic device and the third electronic device. One or both of the second electronic device and the third electronic device can determine whether to provide a response to the first electronic device. The first electronic device (e.g., the service expansion device) can receive the response and provide an expression of the response to the user. In this way, the first electronic device effectively expands the digital assistant service provided by one or both of the second electronic device and the third electronic device.

[0050] The present disclosure further provides a technique for providing notifications using one or more service extension devices. As described above, in some examples where one or more service extension devices are used, immediate notifications can be provided to a user at an extended distance. For example, a first electronic device can receive notifications from other devices (e.g., a user's smartphone) and output an indication (e.g., a beep) of the notification. The first electronic device can inquire about the indication and receive one or more voice inputs that instruct the first electronic device to perform a notification operation (e.g., output a notification). The first electronic device can determine whether to provide the notification and provide the notification according to the determination.

[0051] The present disclosure further provides a technique for providing digital assistant services using multiple devices. As described above, providing digital assistant services using multiple devices can relax the capacity limitations of the devices. In some examples, a first electronic device receives a voice input representing a user request and obtains capability data associated with one or more electronic devices communicatively coupled to the first electronic device. The capability data can include device capabilities and information capabilities. According to the capability data, the first electronic device can identify a second electronic device to provide at least a part of the response to the user request and cause the second electronic device to provide at least a part of the response.

[0052] In the following description, terms such as "first", "second", etc. are used to describe various elements, but these elements should not be limited by the terms. These terms are only used to distinguish one element from another. For example, without departing from the scope of the various examples described, the first input can be called the second input, and similarly, the second input can be called the first input. Both the first input and the second input are inputs, and in some cases, they are individual and different inputs.

[0053] In the description of the various described examples in this specification, the terms used are for the purpose of describing only specific examples and are not intended to be limiting. As used in the various described examples and the description of the appended claims, the singular forms "a", "an", and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. Also, the term "and / or" as used herein refers to and is understood to cover any and all possible combinations of any one or more of the associated listed items. As used herein, the terms "includes", "including", "comprises", and / or "comprising" identify the presence of the described features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0054] The term "if" can be interpreted, depending on the context, to mean "when" or "then" or "in response to a determination" or "in response to a detection". Similarly, the phrases "when determined" or "when [a predetermined state or event] is detected" can be interpreted, depending on the context, to mean "when determined" or "in response to a determination" or "in response to the detection of [a predetermined state or event]" or "in response to the detection of [a predetermined state or event]".

[0055] 1. System and Environment FIG. 1 is a block diagram of a system 100 according to various examples. In some examples, system 100 executes a digital assistant. The terms “digital assistant,” “virtual assistant,” “intelligent automated assistant,” or “automated digital assistant” refer to any information processing system that interprets natural language input into speech and / or text form to infer a user's intent and performs an action based on the inferred user intent. For example, to determine the inferred user intent, the system may perform any one or more of: identifying a task flow with steps and parameters designed to realize the inferred user intent; entering specific requirements from the inferred user intent into the task flow; executing the task flow by executing a program, method, service, API, etc.; and generating an output response to the user in an audible (e.g., speech) and / or visual form.

[0056] Specifically, the digital assistant can receive user requests at least in part in the form of natural language commands, requests, statements, stories, and / or queries. Typically, the user request seeks either an information response or a characteristic of a task by the digital assistant. A satisfactory response to the user request includes providing the requested information response, performing the requested task, or a combination of the two. For example, the user may ask the digital assistant a question such as, "Where am I now?" Based on the user's current location, the digital assistant responds, "You are in Central Park near the West Gate." The user may also request the performance of a task such as, "Please invite my friends to my girlfriend's birthday party next week." In response, the digital assistant acknowledges by saying, "Yes, right away," and then can send suitable calendar invitations on behalf of the user to each of the user's friends listed in the user's email address book. During the performance of the requested task, the digital assistant may interact with the user in a continuous dialogue that includes the exchange of multiple pieces of information over an extended period. There are many other ways to interact with the digital assistant to request information or performance of various tasks. In addition to providing a verbal response and taking programmed actions, the digital assistant can also provide responses in other visual or audio formats such as text, alerts, music, video, animation, etc.

[0057] As shown in FIG. 1, in some examples, the digital assistant is executed according to a client-server model. The digital assistant includes a client-side portion 102 (hereinafter, "DA client 102") executed on the user device 104 and a server-side portion 106 (hereinafter, "DA server 106") executed on the server system 108. The DA client 102 communicates with the DA server 106 via one or more networks 110. The DA client 102 provides client-side functions such as user-responsive input / output processing and communication with the DA server 106. The DA server 106 provides server-side functions to any number of DA clients 102 that exist on each user device 104 respectively.

[0058] In some examples, the DA server 106 includes a client-responsive I / O interface 112, one or more processing modules 114, data and models 116, and an I / O interface 118 to external services. The client-responsive I / O interface 112 facilitates client-responsive input / output processing to the DA server 106. The one or more processing modules 114 process voice input using the data and models 116 and determine the user's intent based on the natural language input. Further, the one or more processing modules 114 execute task execution based on the estimated user intent. In some examples, the DA server 106 communicates with an external service 120 via the network 110 for task completion or information acquisition. The I / O interface 118 to external services facilitates such communication.

[0059] The user device 104 can be any suitable electronic device. In some examples, the user device is a portable multifunctional device (e.g., the device 200 described below in connection with FIG. 2A), a multifunctional device (e.g., the device 400 described below in connection with FIG. 4), or a personal electronic device (e.g., the device 600 described below in connection with FIGS. 6A - B). The portable multifunctional device is, for example, a cellular phone that also includes other functions such as a PDA and / or music player functionality. Specific examples of portable multifunctional devices include the Apple iPhone (registered trademark), iPod Touch (registered trademark), and iPad (registered trademark) devices of Cupertino, California. Other examples of portable multifunctional devices include, without limitation, laptop or tablet computers. Further, in some examples, the user device 104 is a non - portable multifunctional device. In particular, the user device 104 is a desktop computer, a game console, a television, or a television set - top box. In some examples, the user device 104 includes a touch - sensitive surface (e.g., a touch - screen display and / or a touch - pad). Additionally, the user device 104 optionally includes one or more other physical user interface devices such as a physical keyboard, a mouse, and / or a joystick. Various examples of electronic devices such as multifunctional devices are described in more detail below.

[0060] Examples of the communication network 110 include a local area network (LAN) and a wide area network (WAN), such as the Internet. The communication network 110 is implemented using various known network protocols, including, for example, Ethernet, Universal Serial Bus (USB), FIREWIRE (registered trademark), Global System for Mobile Communications (GSM (registered trademark)), Enhanced Data GSM Environment (EDGE), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Bluetooth (registered trademark), Wi-Fi (registered trademark), Voice over Internet Protocol (VOIP), Wi-MAX, or any other suitable communication protocol, such as various wired or wireless protocols.

[0061] The server system 108 is executed in a distributed network of one or more independent data processing devices or computers. In some examples, the server system 108 uses various virtual devices and / or services of a third-party service provider (e.g., a third-party cloud service provider) to provide the computing resources and / or infrastructure resources that underlie the server system 108.

[0062] In some examples, the user device 104 communicates with the DA server 106 via a second user device 122. The second user device 122 is similar or identical to the user device 104. For example, the second user device 122 is similar to the device 400, 600, or 600 described below in connection with FIGS. 2A, 4, and 6A - B. The user device 104 is configured to be communicatively coupled to the second user device 122 via a direct communication connection such as Bluetooth, NFC, BTLE, or via a wired or wireless network such as a local Wi-Fi network. In some examples, the second user device 122 is configured to operate as a proxy between the user device 104 and the DA server 106. For example, the DA client 102 of the user device 104 is configured to send information (e.g., a user request received at the user device 104) to the DA server 106 via the second user device 122. The DA server 106 processes the information and returns relevant data (e.g., data content in response to the user request) to the user device 104 via the second user device 122.

[0063] In some examples, the user device 104 is configured to communicate a shortened request to a second user device 122 to reduce the amount of information transmitted from the user device 104. The second user device 122 is configured to determine additional information to append to the shortened request and generate a complete request for transmission to the DA server 106. This system architecture advantageously allows a user device 104 having limited communication capabilities and / or limited battery power (e.g., a wristwatch or similar small electronic device) to access services provided by the DA server 106 by using a second user device 122 having higher communication capabilities and / or battery power (e.g., a mobile phone, laptop computer, tablet computer, etc.) as a proxy to the DA server 106. Although only two user devices 104 and 122 are shown in FIG. 1, it should be understood that in some examples, the system 100 may include any number and type of user devices configured to communicate with the DA server system 106 in this proxy configuration.

[0064] The digital assistant shown in FIG. 1 includes both a client-side portion (e.g., DA client 102) and a server-side portion (e.g., DA server 106), but in some examples, the functionality of the digital assistant is implemented as a stand-alone application installed on the user device. In addition to this, the division of functionality between the client and server portions of the digital assistant can vary in different implementations. For example, in some examples, the DA client is a thin client that provides only user-facing input / output processing functionality and delegates all other functionality of the digital assistant to a backend server. 2. Electronic Device

[0065] Focus on an embodiment of an electronic device that executes a client-side portion of a digital assistant. FIG. 2A is a block diagram showing a portable multifunctional device 200 equipped with a touch-sensing display system 212 according to some embodiments. The touch-sensing display 212 may be referred to as a "touch screen" for convenience, and may be known or referred to as a "touch-sensing display system". The device 200 includes a memory 202 (optionally including one or more computer-readable storage media), a memory controller 222, one or more processing units (CPUs) 220, a peripheral device interface 218, an RF circuit 208, an audio circuit 210, a speaker 211, a microphone 213, an input / output (I / O) subsystem 206, other input control devices 216, and an external port 224. The device 200 optionally includes one or more light sensors 264. The device 200 optionally includes one or more contact intensity sensors 265 that detect the intensity of contact with the device 200 (e.g., a touch-sensing surface such as the touch-sensing display system 212 of the device 200). The device 200 optionally includes one or more haptic output generators 267 that generate haptic output for the device 200 (e.g., generate haptic output on a touch-sensing surface such as the touch-sensing display system 212 of the device 200 or the touch pad 455 of the device 400). These components optionally communicate via one or more communication buses or signal lines 203.

[0066] As used in this specification and the claims, the term "intensity" of contact with a touch sensing surface refers to the force or pressure (force per unit area) of contact (e.g., finger contact) on the touch sensing surface, or an alternative (surrogate) for the force or pressure of contact on the touch sensing surface. The intensity of contact has a range of values that includes at least four distinct values, and more generally, hundreds (e.g., at least 256) of distinct values. The intensity of contact is optionally determined (or, measured) using a variety of techniques and a variety of sensors or combinations of sensors. For example, one or more force sensors under or adjacent to the touch sensing surface are optionally used to measure the force at various points on the touch sensing surface. In some implementations, the force measurements of multiple force sensors are combined (e.g., weighted average) to determine the estimated force of contact. Similarly, a pressure-sensitive tip of a stylus is optionally used to determine the pressure of the stylus on the touch sensing surface. Alternatively, the size and / or change thereof of the contact area detected on the touch sensing surface, the capacitance and / or change thereof of the touch sensing surface in proximity to the contact, and / or the resistance and / or change thereof of the touch sensing surface in proximity to the contact are optionally used as an alternative for the force or pressure of contact on the touch sensing surface. In some implementations, the alternative measurements of the force or pressure of contact are used directly to determine whether the intensity threshold is exceeded (e.g., the intensity threshold is described in units corresponding to the alternative measurements). In some implementations, the alternative measurements of the force or pressure of contact are converted to an estimated force or pressure, and this estimated force or pressure is used to determine whether the intensity threshold is exceeded (e.g., the intensity threshold is a pressure threshold measured in units of pressure). By using the intensity of contact as an attribute of user input, the user can access additional device functions that would otherwise be inaccessible to the user on a device with a limited, reduced-size area for displaying affordances (e.g., on a touch sensing display) and / or receiving user input (e.g., via a touch sensing display, a touch sensing surface, or a physical / mechanical control such as a knob or button).

[0067] As used in the claims and specification, the term "haptic output" refers to the physical displacement of a device relative to its previous position, the physical displacement of a component of a device (e.g., a touch-sensing surface) relative to other components of the device (e.g., the housing), or the displacement of a component relative to the center of gravity of the device that is detected by the user using the user's sense of touch. For example, in a situation where a device or a component of a device is in contact with a surface of a user that is sensitive to touch (e.g., a finger, palm, or other part of the user's hand), the haptic output generated by the physical displacement is interpreted by the user as a haptic sensation corresponding to the perceived change in the physical characteristics of the device or the component of the device. For example, the movement of a touch-sensing surface (e.g., a touch-sensing display or a trackpad) is optionally interpreted by the user as a "down click" or an "up click" of a physical actuator button. In some cases, even when there is no movement of a physical actuator button associated with a touch-sensing surface that is physically pressed (e.g., displaced) by the user's action, the user feels a haptic sensation such as a "down click" or an "up click". As another example, even when there is no change in the smoothness of the touch-sensing surface, the movement of the touch-sensing surface is optionally interpreted or perceived by the user as a "ripple" of the touch-sensing surface. Such an interpretation of the contact by the user is targeted at the user's individualized sensory perception, but there are many touch sensory perceptions that are common to the majority of users. Therefore, when a haptic output is described as corresponding to a particular sensory perception of the user (e.g., an "up click", a "down click", a "ripple"), unless otherwise specified, the generated haptic output corresponds to the physical displacement of the device or its component that generates the described sensory perception for a typical (or average) user.

[0068] Device 200 is merely an example of a portable multifunctional device, and it should be understood that device 200 may optionally have more or fewer components than shown, may optionally combine two or more components, or may have different configurations or arrangements of components. The various components shown in FIG. 2A are implemented in hardware, software, or a combination of both hardware and software, including one or more signal processing and / or application specific integrated circuits.

[0069] Memory 202 includes one or more computer-readable storage media. The computer-readable storage media is, for example, tangible and non-transitory. Memory 202 includes high-speed random access memory and also includes non-volatile memory, such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid memory devices. Memory controller 222 controls access to memory 202 by other components of device 200.

[0070] In some examples, the non-transitory computer-readable storage media of memory 202 is used to store instructions (e.g., for performing the aspects of the processes described below) that can be fetched by and executed by an instruction execution system, apparatus, or device, such as a computer-based system, a processor-integrated system, or other systems that can fetch and execute instructions from an instruction execution system, apparatus, or device. In other examples, the instructions (e.g., for performing the aspects of the processes described below) are stored in a non-transitory computer-readable storage media of server system 108 (not shown) or are divided between the non-transitory computer-readable storage media of memory 202 and the non-transitory computer-readable storage media of server system 108.

[0071] The peripheral device interface 218 is used to couple the input / output peripheral devices of the device to the CPU 220 and the memory 202. One or more processors 220 operate or execute various software programs and / or sets of instructions stored in the memory 202 to perform various functions in the device 200 to process data. In some embodiments, the peripheral device interface 218, the CPU 220, and the memory controller 222 are implemented on a single chip such as the chip 204. In some other embodiments, these are implemented on separate chips.

[0072] The RF (Radio Frequency) circuit 208 transmits and receives RF signals, also called electromagnetic signals. The RF circuit 208 converts electrical signals into electromagnetic signals and communicates with a communication network and other communication devices via the electromagnetic signals. The RF circuit 208 optionally includes well-known circuits for performing these functions, including but not limited to an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a codec chipset, a subscriber identity module (SIM) card, memory, and the like. The RF circuit 208 optionally communicates with networks such as the Internet, also called the World Wide Web (WWW), an intranet, and / or wireless networks such as a cellular telephone network, a wireless local area network (LAN) and / or a metropolitan area network (MAN), and other devices via wireless communication. The RF circuit 208 optionally includes well-known circuits for detecting a near field communication (NFC) field via near field communication wireless or the like.Wireless communication optionally uses any one of a plurality of communication standards, communication protocols, and communication technologies, and these communication standards, communication protocols, and communication technologies include Global System for Mobile Communications (GSM (registered trademark)) for mobile communication, Enhanced Data GSM Environment (EDGE), High-Speed Downlink Packet Access (HSDPA), High-Speed Uplink Packet Access (HSUPA), Evolution, Data-Only (EV-DO), HSPA, HSPA+, Dual Cell HSPA (DC-HSPDA), Long-Term Evolution (LTE), Near Field Communication (NFC), Wideband Code Division Multiple Access (W-CDMA), Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Bluetooth (registered trademark), Bluetooth Low Energy (BTLE), Wireless Fidelity (Wi-Fi) (registered trademark) (for example, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, and / or IEEE 802.11ac), Voice over Internet Protocol (VoIP), WiMAX, protocols for email (for example, Internet Message Access Protocol (IMAP) and / or Post Office Protocol (POP)), instant messaging (for example, Extensible Messaging and Presence Protocol (XMPP), Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions (SIMPLE), Instant Messaging and Presence Service (IMPS)), and / or Short Message Service (SMS), or any other suitable communication protocol including communication protocols not yet developed as of the filing date of this document, but not limited thereto.

[0073] The audio circuit 210, speaker 211, and microphone 213 provide an audio interface between the user and the device 200. The audio circuit 210 receives audio data from the peripheral device interface 218, converts the audio data into an electrical signal, and sends the electrical signal to the speaker 211. The speaker 211 converts the electrical signal into human audible sound waves. Also, the audio circuit 210 receives the electrical signal converted by the microphone 213 from the sound waves. The audio circuit 210 converts the electrical signal into audio data and transmits the audio data to the peripheral device interface 218 for processing. The audio data is acquired and / or transmitted by the peripheral device interface 218 from and / or to the memory 202 and / or the RF circuit 208. In some embodiments, the audio circuit 210 also includes a headset jack (e.g., 312 of FIG. 3). The headset jack provides an interface between the audio circuit 210 and a detachable audio input / output peripheral device such as an output-only headset or a headset having both an output (e.g., headphones for one or both ears) and an input (e.g., a microphone).

[0074] The I / O subsystem 206 couples input / output peripheral devices on the device 200, such as the touch screen 212 and other input control devices 216, to the peripheral device interface 218. The I / O subsystem 206 optionally includes a display controller 256, a light sensor controller 258, an intensity sensor controller 259, a haptic feedback controller 261, and one or more input controllers 260 for other input or control devices. The one or more input controllers 260 receive / transmit electrical signals from / to other input control devices 216. The other input control devices 216 optionally include physical buttons (such as push buttons, rocker buttons, etc.), dials, slider switches, joysticks, and click wheels. In some alternative embodiments, the input controller 260 is optionally connected to (or not connected to any of) a pointer device such as a keyboard, an infrared port, a USB port, and a mouse. One or more buttons (such as 308 in FIG. 3) optionally include up / down buttons for volume control of the speaker 211 and / or the microphone 213. One or more buttons optionally include push buttons (such as 306 in FIG. 3).

[0075] Quickly pressing a push button unlocks the touch screen 212 or initiates a process of using gestures on the touch screen to unlock the device, as described in U.S. Patent Application No. 11 / 322,549, filed on December 23, 2005, and U.S. Patent No. 7,657,849, "Unlocking a Device by Performing Gestures on an Unlock Image", the entire contents of which are incorporated herein by reference. Pressing a push button (such as 306) for a long time turns the power of the device 200 on or off. The user can customize the functions of one or more buttons. The touch screen 212 is used to implement virtual or soft buttons and one or more soft keyboards.

[0076] The touch-sensitive display 212 provides an input interface and an output interface between the device and the user. The display controller 256 receives and / or transmits electrical signals from / to the touch screen 212. The touch screen 212 displays visual output to the user. The visual output includes graphics, text, icons, videos, and any combination thereof (collectively referred to as "graphics"). In some embodiments, some or all of the visual output corresponds to user interface objects.

[0077] The touch screen 212 has a touch-sensitive surface, sensor, or set of sensors that receive input from the user based on tactile and / or haptic contacts. The touch screen 212 and the display controller 256 (along with any associated modules and / or instruction sets in the memory 202) detect contacts (and any movement or interruption of the contacts) on the touch screen 212 and convert the detected contacts into interactions with user interface objects (e.g., one or more soft keys, icons, web pages, or images) displayed on the touch screen 212. In an exemplary embodiment, the point of contact between the touch screen 212 and the user corresponds to the user's finger.

[0078] The touch screen 212 uses LCD (Liquid Crystal Display) technology, LPD (Light Emitting Polymer Display) technology, or LED (Light Emitting Diode) technology, although in other embodiments other display technologies may be used. The touch screen 212 and the display controller 256 detect contact and its movement or break using any of a plurality of touch sensing technologies currently known or later developed, including but not limited to capacitive, resistive, infrared and surface acoustic wave technologies, and other proximity sensor arrays or other elements for determining one or more contact points using the touch screen 212. In an exemplary embodiment, projective mutual capacitance sensing technology as seen in, for example, the Apple iPhone (registered trademark), iPod Touch (registered trademark) of Cupertino, California is used.

[0079] The touch sensing display of some embodiments of the touch screen 212 is similar to the multi-touch sensing touch pads described in U.S. Patent Nos. 6,323,846 (Westerman et al.), 6,570,557 (Westerman et al.) and / or 6,677,932 (Westerman) and / or U.S. Patent Publication 2002 / 0015024 (A1), each of which is hereby incorporated by reference in its entirety. However, the touch screen 212 displays visual output from the device 200, while the touch sensing touch pad does not provide visual output.

[0080] The touch sensing display of some embodiments of the touch screen 212 is described in the following applications. (1) "Multipoint Touch Surface Controller" of U.S. Patent Application No. 11 / 381,313, filed May 2, 2006 (2) " "Multipoint Touchscreen" (3) U.S. Patent Application No. 10 / 903,964, filed July 30, 2004, "Gestures For Touch Sensitive Input Devices" (4) U.S. Patent Application No. 11 / 048,264, filed January 31, 2005, "Gestures For Touch Sensitive Input Devices" (5) U.S. Patent Application No. 11 / 038,590, filed January 18, 2005, "Mode-Based Graphical User Interfaces For Touch Sensitive Input Devices" (6) U.S. Patent Application No. 11 / 228,758, filed September 16, 2005, "Virtual Input Device Placement On A Touch Screen User Interface" (7) U.S. Patent Application No. 11 / 228,700, filed September 16, 2005, "Operation Of A Computer With A Touch Screen Interface", (8) U.S. Patent Application No. 11 / 228,737, filed September 16, 2005, "Activating Virtual Keys Of A Touch-Screen Virtual Keyboard", and (9) U.S. Patent Application No. 11 / 367,749, filed March 3, 2006, "Multi-Functional Hand-Held Device". All of these applications are hereby incorporated by reference in their entirety into this specification.

[0081] The touch screen 212 has, for example, a video resolution exceeding 100 dpi. In some embodiments, the touch screen has a video resolution of about 160 dpi. The user touches the touch screen 212 using a suitable object or appendage such as a stylus, finger, etc. In some embodiments, the user interface is designed to operate primarily with finger-based contacts and gestures, which may be less accurate than stylus-based input due to the large finger contact area on the touch screen. In some embodiments, the device converts rough finger-based input into an accurate pointer / cursor position or command for performing the operation desired by the user.

[0082] In some embodiments, in addition to the touch screen, the device 200 includes a touch pad (not shown) that activates or deactivates specific functions. In some embodiments, the touch pad, unlike the touch screen, is the touch-sensing area of the device that does not display visual output. The touch pad is a separate touch-sensing surface from the touch screen 212 or an extension of the touch-sensing surface formed by the touch screen.

[0083] The device 200 also includes a power system 262 for powering various components. The power system 262 includes a power management system, one or more power sources (e.g., battery, alternating current (AC)), a charging system, a power outage detection circuit, a power converter or inverter, a power status indicator (e.g., light-emitting diode (LED)), and any other components associated with the generation, management, and distribution of power in a portable device.

[0084] Device 200 also includes one or more optical sensors 264. FIG. 2A shows an optical sensor coupled to an optical sensor controller 258 in the I / O subsystem 206. The optical sensor 264 includes a charge-coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) phototransistor. The optical sensor 264 receives light from the environment projected through one or more lenses and converts the light into data representing an image. In connection with an imaging module 243 (also referred to as a camera module), the optical sensor 264 captures still images or video. In some embodiments, the optical sensor is disposed on the back of the device 200 opposite the touch screen display 212 on the front of the device such that the touch screen display is used as a viewfinder for still image and / or video capture. In some embodiments, the optical sensor is disposed on the front of the device such that an image of the user for a video conference is captured while the user views other video conference participants on the touch screen display. In some embodiments, the position of the optical sensor 264 can be changed by the user (e.g., by rotating the lens and sensor within the device housing) such that a single optical sensor 264 is used with the touch screen display for both video conferencing and still image and / or video capture.

[0085] Device 200 also optionally includes one or more contact intensity sensors 265. FIG. 2A shows a contact intensity sensor coupled to an intensity sensor controller 259 within I / O subsystem 206. Contact intensity sensor 265 optionally includes one or more piezoresistive strain gauges, capacitive force sensors, electro-force sensors, piezoelectric force sensors, optical force sensors, capacitive touch sensing surfaces, or other intensity sensors (e.g., sensors used to measure the force (or pressure) of contact on a touch sensing surface). Contact intensity sensor 265 receives contact intensity information (e.g., pressure information or surrogate information for pressure information) from the environment. In some embodiments, at least one contact intensity sensor is disposed on or proximate to a touch sensing surface (e.g., touch sensing display system 212). In some embodiments, at least one contact intensity sensor is located on the back of device 200, which is opposite the touch screen display 212 located on the front of device 200.

[0086] Device 200 also includes one or more proximity sensors 266. FIG. 2A shows a proximity sensor 266 coupled to the peripheral device interface 218. Alternatively, the proximity sensor 266 is coupled to an input controller 260 within the I / O subsystem 206. The proximity sensor 266 operates as described in U.S. Patent Application Nos. 11 / 241,839, "Proximity Detector In Handheld Device", 11 / 240,788, "Proximity Detector In Handheld Device", 11 / 620,702, "Using Ambient Light Sensor To Augment Proximity Sensor Output", 11 / 586,862, "Automated Response To And Sensing Of User Activity In Portable Devices", and 11 / 638,251, "Methods And Systems For Automatic Configuration Of Peripherals", all of which are hereby incorporated by reference in their entirety. In some embodiments, when the multifunctional device is placed near the user's ear (e.g., when the user is on a phone call), the touch screen 212 is turned off and disabled.

[0087] Device 200 also optionally includes one or more haptic output generators 267. FIG. 2A shows a haptic output generator coupled to a haptic feedback controller 261 within I / O subsystem 206. The haptic output generator 267 optionally includes one or more electroacoustic devices, such as speakers or other audio components, and / or electromechanical devices that convert energy into linear movement, such as motors, solenoids, electroactive polymers, piezoelectric actuators, electrostatic actuators, or other haptic output generating components (e.g., components that convert an electrical signal into a haptic output) on the device. The contact intensity sensor 265 receives haptic feedback generation instructions from the haptic feedback module 233 and generates a haptic output on device 200 that can be sensed by a user of device 200. In some embodiments, at least one haptic output generator is disposed on or proximate to a touch sensing surface (e.g., touch sensing display system 212) and optionally generates a haptic output by moving the touch sensing surface in a vertical direction (e.g., in / out of the surface of device 200) or a lateral direction (e.g., back and forth within the same plane as the surface of device 200). In some embodiments, at least one haptic output generator sensor is located on the back surface of device 200, which is opposite the touch screen display 212 located on the front surface of device 200.

[0088] Device 200 also includes one or more accelerometers 268. FIG. 2A shows an accelerometer 268 coupled to the peripheral device interface 218. Alternatively, the accelerometer 268 is coupled to the input controller 260 within the I / O subsystem 206. The accelerometer 268 operates, for example, as described in "Acceleration-based Theft Detection for Portable Electronic Devices" of U.S. Patent Publication No. 20050190059 and "Methods and Apparatus for Operating a Portable Device Based on an Accelerometer" of U.S. Patent Publication No. 20060017692, both of which are hereby incorporated by reference in their entirety. In some embodiments, information is displayed on the touch screen in portrait view or landscape view based on analysis of data received from one or more accelerometers. In addition to the accelerometer 268, device 200 optionally includes a magnetometer (not shown) and a GPS (or GLONASS or other global navigation system) receiver (not shown) that obtain information regarding the location and orientation (e.g., portrait or landscape) of device 200.

[0089] In some embodiments, the software components stored in memory 202 include an operating system 226, a communication module (or set of instructions) 228, a touch / motion module (or set of instructions) 230, a graphics module (or set of instructions) 232, a text input module (or set of instructions) 234, a global positioning system (GPS) module (or set of instructions) 235, a digital assistant client module 229, and an application (or set of instructions) 236. Further, memory 202 stores data and models such as user data and model 231. Also, in some embodiments, memory 202 (FIG. 2A) or 470 (FIG. 4) stores a device / global internal state 257 as shown in FIGS. 2A and 4. The device / global internal state 257 includes, if any, an active application state indicating which application is currently active, a display state indicating which application, view, or other information occupies various regions of the touch screen display 212, a sensor state including information obtained from various sensors and input control devices 216 of the device, and position information regarding the position and / or orientation of the device, any one or more of which.

[0090] The operating system 226 (e.g., an embedded operating system such as Darwin, RTXC, LINUX (trademark), UNIX (registered trademark), OS X, iOS, WINDOWS (registered trademark), or VxWorks (trademark)) includes various software components and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and facilitates communication between various hardware components and software components.

[0091] The communication module 228 facilitates communication with other devices through one or more external ports 224 and also includes various software components for processing data received by the RF circuit 208 and / or the external ports 224. The external ports 224 (e.g., Universal Serial Bus (USB), FireWire, etc.) are configured to couple to other devices either directly or indirectly through a network (e.g., the Internet, a wireless LAN, etc.). In some embodiments, the external port is the same as, similar to, and / or compatible with the 30-pin connector used on iPod (registered trademark of Apple Inc.) devices and is a multi-pin (e.g., 30-pin) connector.

[0092] The contact / motion module 230 optionally detects contact with the touch screen 212 (in cooperation with the display controller 256) and contact with other touch-sensing devices (e.g., a touch pad or a physical click wheel). The contact / motion module 230 includes various software components that perform various operations related to the detection of contact, such as determining whether contact has occurred (e.g., detecting the event of a finger being lowered), determining the intensity of the contact (e.g., the force or pressure of the contact, or an alternative to the force or pressure of the contact), determining whether there is movement of the contact, tracking movement across the touch-sensing surface (e.g., detecting one or more events of a finger being dragged), and determining whether the contact has stopped (e.g., detecting the event of a finger being raised or an interruption of the contact). The contact / motion module 230 receives contact data from the touch-sensing surface. Determining the movement of the contact point represented by a series of contact data optionally includes determining the speed (magnitude), velocity (magnitude and direction), and / or acceleration (change in magnitude and / or direction) of the contact point. These operations are optionally applied to a single contact (e.g., contact with one finger) or multiple simultaneous contacts (e.g., "multi-touch" / contact with multiple fingers). In some embodiments, the contact / motion module 230 and the display controller 256 detect contact on the touch pad.

[0093] In some embodiments, the contact / motion module 230 uses a set of one or more intensity thresholds to determine whether an operation has been performed by a user (e.g., whether the user has "clicked" on an icon). In some embodiments, at least a subset of the intensity thresholds are determined according to software parameters (e.g., the intensity thresholds are not determined by the activation thresholds of specific physical actuators and can be adjusted without changing the physical hardware of the device 200). For example, the "click" threshold of a mouse for a trackpad or touch screen display can be set to any of a wide range of default thresholds without changing the trackpad or touch screen display hardware. Further, in some implementations, the user of the device is provided with software settings to adjust any one or more of the set of intensity thresholds (e.g., by adjusting individual intensity thresholds and / or by adjusting multiple intensity thresholds at once with a system-level click "intensity" parameter).

[0094] The contact / motion module 230 optionally detects gestures input by a user. Different gestures on the touch-sensing surface have different contact patterns (e.g., different motions, timings, and / or intensities of detected contacts). Thus, gestures are optionally detected by detecting a specific contact pattern. For example, detecting a finger tap gesture includes detecting a finger down event and subsequently detecting a finger up (lift off) event at the same position (or substantially the same position) as the finger down event (e.g., the position of an icon). As another example, detecting a finger swipe gesture on the touch-sensing surface includes detecting a finger down event, subsequently detecting one or more finger drag events, and subsequently detecting a finger up (lift off) event.

[0095] The graphics module 232 includes various known software components that render and display graphics on the touch screen 212 or other display, including components that change the visual impact of the displayed graphics (e.g., brightness, transparency, saturation, contrast, or other visual characteristics). As used herein, the term "graphics" includes, but is not limited to, text, web pages, icons (such as user interface objects including soft keys), digital images, videos, animations, etc., and any object that can be displayed to the user.

[0096] In some embodiments, the graphics module 232 stores data representing the graphics used. Each graphic is optionally assigned a corresponding code. The graphics module 232 receives from an application, etc., one or more codes that specify the graphics to be displayed, along with coordinate data and other graphic characteristic data as needed, generates screen image data, and outputs it to the display controller 256.

[0097] The haptic feedback module 233 includes various software components that generate instructions used by the haptic output generator 267 to generate haptic output at one or more locations on the device 200 in response to user interaction with the device 200.

[0098] The text input module 234, which is a component of the graphics module 232, in some examples provides a soft keyboard for entering text in various applications (e.g., contacts 237, email 240, IM 241, browser 247, and any other application that requires text input).

[0099] The GPS module 235 determines the location of the device and provides this information for use in various applications (e.g., to the phone 238 for use in location-based dialing; to the camera 243 as photo / video metadata; and to applications that provide location-based services such as weather widgets, local yellow page widgets, and map / navigation widgets).

[0100] The digital assistant client module 229 includes various client-side digital assistant instructions for providing client-side functionality of the digital assistant. For example, the digital assistant client module 229 can receive voice input (e.g., voice commands), text input, touch input, and / or gesture input via various user interfaces of the portable multifunctional device 200 (e.g., the microphone 213, the accelerometer 268, the touch sensing display system 212, the light sensor 229, other input control devices 216, etc.). The digital assistant client module 229 can also provide outputs such as audio (e.g., voice output), visual, and / or tactile outputs via various output interfaces of the portable multifunctional device 200 (e.g., the speaker 211, the touch sensing display system 212, the tactile output generator 267, etc.). For example, the outputs are provided as voice, sound, alerts, text messages, menus, graphics, videos, animations, vibrations, and / or combinations of two or more of the above. During operation, the digital assistant client module 229 communicates with the DA server 106 using the RF circuit 208.

[0101] The user data and model 231 include various data associated with the user (e.g., user-specific vocabulary data, user preference data, user-specified name pronunciations, data from the user's email address book, TODO lists, shopping lists, etc.) and provide client-side functionality for the digital assistant. Further, the user data and model 231 include various models (e.g., speech recognition models, statistical language models, natural language processing models, ontologies, task flow models, service models, etc.) for processing user input and determining the user's intent.

[0102] In some examples, the digital assistant client module 229 utilizes various sensors, subsystems, and peripheral devices of the portable multifunctional device 200 to collect additional information from the surrounding environment of the portable multifunctional device 200 and establish context associated with the user, the current user interaction, and / or the current user input. In some examples, the digital assistant client module 229 provides user input to the DA server 106 with respect to context information or a subset thereof to assist in inferring the user's intent. In some examples, the digital assistant also uses the context information to determine how to prepare and deliver output to the user. The context information is referred to as context data.

[0103] In some examples, the context information associated with the user input includes sensor information, such as lighting, ambient noise, ambient temperature, images or videos of the surrounding environment, etc. In some examples, the context information may also include the physical state of the device, such as the device's orientation, location, temperature, power level, speed, acceleration, movement pattern, cellular signal, etc. In some examples, information regarding the software state of the DA server 106 and the portable multifunctional device 200, such as running processes, installed programs, past and current network activity, background services, error logs, resource usage, etc., is provided to the DA server 106 as context information related to the user input.

[0104] In some examples, the digital assistant client module 229 selectively provides information (e.g., user data 231) stored in the portable multifunctional device 200 in response to a request from the DA server 106. In some examples, the digital assistant client module 229 also extracts additional input from the user via a natural language dialog or other user interface in response to a request by the DA server 106. The digital assistant client module 229 passes the additional input to the DA server 106 to assist the DA server 106 in inferring and / or executing the user's intent expressed in the user request.

[0105] Further detailed description of the digital assistant is provided below with reference to FIGS. 7A - C. It should be recognized that the digital assistant client module 229 may include any number of sub - modules of the digital assistant module 726 described below.

[0106] The application 236 includes the following modules (or sets of instructions), or subsets or supersets thereof. ● Contact module 237 (which may also be referred to as an address book or contact list), ● Phone module 238, ● Video conference module 239, ● Email client module 240, ● Instant message (IM) module 241, ● Training support module 242, ● Camera module 243 for still and / or video, ● Image management module 244, ● Video player module, ● Music player module, ● Browser module 247, ● Calendar module 248, ● In some examples, the widget module 249 includes any one or more of other widgets obtained by the user, such as a weather widget 249-1, a stock widget 249-2, a calculator widget 249-3, an alarm clock widget 249-4, a dictionary widget 249-5, and a user-created widget 249-6. ● A widget creator module 250 for creating the user-created widget 249-6; ● A search module 251; ● A video and music player module 252 that combines a video player module and a music player module; ● A memo module 253; ● A map module 254; and / or ● An online video module 255

[0107] Examples of other applications 236 stored in the memory 202 include other word processing applications, other image editing applications, drawing applications, presentation applications, JAVA (registered trademark)-compatible applications, encryption, digital rights management, voice recognition, and voice replication.

[0108] In conjunction with the touch screen 212, the display controller 256, the contact / motion module 230, the graphic module 232, and the text input module 234, the contact module 237 is used to manage an address book or contact list (e.g., stored in the application internal state 292 of the contact module 237 in the memory 202 or the memory 470), including adding a name to the address book, deleting a name from the address book, associating a phone number, email address, physical address, or other information with a name, associating an image with a name, classifying and sorting names, providing a phone number or email address to initiate and / or facilitate communication by phone 238, video conferencing module 239, email 240, or IM 241, and so on.

[0109] In conjunction with RF circuit 208, audio circuit 210, speaker 211, microphone 213, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, and text input module 234, the telephone module 238 is used to input a string corresponding to a telephone number, access one or more telephone numbers in the contact module 237, modify the input telephone number, dial each telephone number, conduct a conversation, and disconnect or hang up the phone when the conversation is completed. Thus, wireless communication uses any of a plurality of communication standards, protocols, and technologies.

[0110] In conjunction with RF circuit 208, audio circuit 210, speaker 211, microphone 213, touch screen 212, display controller 256, optical sensor 264, optical sensor controller 258, contact / motion module 230, graphic module 232, text input module 234, contact module 237, and telephone module 238, the video conferencing module 239 includes executable instructions for starting, conducting, and ending a video conference between the user and one or more other participants according to the user's instructions.

[0111] In conjunction with RF circuit 208, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, and text input module 234, the email client module 240 includes executable instructions for creating, sending, receiving, and managing emails in response to the user's instructions. In conjunction with the image management module 244, the email client module 240 makes it very easy to create and send emails with still or video images captured by the camera module 243.

[0112] In conjunction with RF circuit 208, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, and text input module 234, instant messaging module 241 includes executable instructions for entering a series of characters corresponding to an instant message, modifying previously entered characters, and transmitting, receiving, and viewing received instant messages (e.g., using the Short Message Service (SMS) or Multimedia Messaging Service (MMS) protocol for phone-based instant messages, or XMPP, SIMPLE, or IMPS for Internet-based instant messages). In some embodiments, the transmitted and / or received instant messages include graphics, photos, audio files, video files, and / or other attachments supported by MMS and / or Enhanced Messaging Service (EMS). As used herein, "instant messaging" refers to both phone-based messages (e.g., messages sent using SMS or MMS) and Internet-based messages (e.g., messages sent using XMPP, SIMPLE, or IMPS).

[0113] In conjunction with RF circuit 208, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, text input module 234, GPS module 235, map module 254, and music player module, training support module 242 includes executable instructions for creating a training (e.g., with goals for time, distance, and / or calorie burn), communicating with a training sensor (sports device), receiving training sensor data, calibrating sensors used to monitor the training, selecting and playing music for the training, and displaying, storing, and transmitting training data.

[0114] In conjunction with the touch screen 212, display controller 256, light sensor 264, light sensor controller 258, touch / motion module 230, graphic module 232, and image management module 244, the camera module 243 includes executable instructions for capturing a still image or video image (including a video stream), storing it in the memory 202, modifying the characteristics of the still image or video image, or deleting the still image or video image from the memory 202.

[0115] In conjunction with the touch screen 212, display controller 256, touch / motion module 230, graphic module 232, text input module 234, and camera module 243, the image management module 244 includes executable instructions for organizing, modifying (e.g., editing), otherwise processing, labeling, deleting, presenting (e.g., in a digital slide show or album), and saving still images and / or video images.

[0116] In conjunction with the RF circuit 208, touch screen 212, display controller 256, touch / motion module 230, graphic module 232, and text input module 234, the browser module 247 includes executable instructions for browsing the Internet in accordance with the user's instructions, including searching for, linking to, receiving, and displaying a web page or a portion thereof, as well as attached files and other files linked to the web page.

[0117] In conjunction with the RF circuit 208, touch screen 212, display controller 256, touch / motion module 230, graphic module 232, text input module 234, email client module 240, and browser module 247, the calendar module 248 includes executable instructions for creating, displaying, modifying, and storing a calendar and calendar-related data (e.g., calendar entries, TODO lists, etc.) in accordance with the user's instructions.

[0118] In combination with the RF circuit 208, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, text input module 234, and browser module 247, the widget module 249 is a mini-application that is downloaded and used by the user (e.g., weather widget 249-1, stock widget 249-2, calculator widget 249-3, alarm clock widget 249-4, and dictionary widget 249-5), or created by the user (e.g., user-created widget 249-6). In some embodiments, the widget includes an HTML (HyperText Markup Language) file, a CSS (Cascading Style Sheet) file, and a JavaScript file. In some embodiments, the widget includes an XML (Extensible Markup Language) file and a JavaScript file (e.g., Yahoo! widget).

[0119] In combination with the RF circuit 208, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, text input module 234, and browser module 247, the widget creation module 250 is used by the user to create a widget (e.g., changing a user-specified portion of a web page into a widget).

[0120] In combination with the touch screen 212, display controller 256, contact / motion module 230, graphic module 232, and text input module 234, the search module 251 includes executable instructions for searching the memory 202 for text, music, sound, images, video, and / or other files that match one or more search criteria (e.g., one or more user-specified search terms) according to the user's instructions.

[0121] In conjunction with touch screen 212, display controller 256, contact / motion module 230, graphic module 232, audio circuit 210, speaker 211, RF circuit 208, and browser module 247, video and music player module 252 includes executable instructions that enable a user to download and play recorded music and other sound files stored in one or more file formats such as MP3 or AAC files, and executable instructions to display, present, or otherwise play video (e.g., on touch screen 212 or on an externally connected display via external port 224). In some embodiments, device 200 optionally includes the functionality of an MP3 player such as an iPod (registered trademark of Apple).

[0122] In conjunction with touch screen 212, display controller 256, contact / motion module 230, graphic module 232, and text input module 234, memo module 253 includes executable instructions for creating and managing memos, TODO lists, etc. according to a user's instructions.

[0123] In conjunction with RF circuit 208, touch screen 212, display controller 256, contact / motion module 230, graphic module 232, text input module 234, GPS module 235, and browser module 247, map module 254 is used to receive, display, modify, and store maps and map-related data (e.g., driving directions, data about stores, specific locations or other locations near a particular location, and other location-based data) according to a user's instructions.

[0124] In conjunction with touch screen 212, display controller 256, contact / motion module 230, graphic module 232, audio circuit 210, speaker 211, RF circuit 208, text input module 234, e-mail client module 240, and browser module 247, online video module 255 includes instructions that enable a user to access, browse, receive (e.g., by streaming and / or downloading), play (e.g., on the touch screen or on an external connected display via external port 224), send, and otherwise manage online videos in one or more file formats such as H.264. In some embodiments, instant messaging module 241 is used to send links to particular online videos more than e-mail client module 240. Additional description of the online video application can be found in U.S. Provisional Patent Application No. 60 / 936,562, filed Jun. 20, 2007, entitled “Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos,” and U.S. Patent Application No. 11 / 968,067, filed Dec. 31, 2007, entitled “Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos,” the contents of which are hereby incorporated by reference in their entirety.

[0125] Each of the modules and applications identified above corresponds to a set of executable instructions that perform one or more of the above functions and the methods described in this application (e.g., the computer-executable methods and other information processing methods described herein). Since these modules (e.g., sets of instructions) need not be implemented as separate software programs, procedures, or modules, various subsets of these modules can be combined or otherwise reconfigured in various embodiments. For example, a video player module can be combined with a music player module into a single module (e.g., video and music player module 252, FIG. 2A). In some embodiments, memory 202 stores a subset of the modules and data structures identified above. Further, memory 202 stores additional modules and data structures not described above.

[0126] In some embodiments, device 200 is a device in which the operation of a set of predetermined functions on the device is performed exclusively via a touch screen and / or a touch pad. By using a touch screen and / or a touch pad as the primary input control device for the operation of device 200, the number of physical input control devices (push buttons, dials, etc.) on device 200 is reduced.

[0127] The set of predetermined functions performed exclusively via the touch screen and / or the touch pad optionally includes navigation between user interfaces. In some embodiments, when the user touches the touch pad, the touch pad navigates device 200 from any user interface displayed on device 200 to the main, home, or root menu. In such embodiments, the "menu button" is implemented using the touch pad. In some other embodiments, the menu button is a physical push button or other physical input control device instead of the touch pad.

[0128] FIG. 2B is a block diagram showing exemplary components for event processing according to some embodiments. In some embodiments, memory 202 (FIG. 2A) or 470 (FIG. 4) includes an event sorter 270 (e.g., within operating system 226) and corresponding applications 236-1 (e.g., any of applications 237-251, 255, 480-490 described above).

[0129] Event sorter 270 receives event information and determines application 236-1 that distributes the event information and application view 291 of application 236-1. Event sorter 270 includes event monitor 271 and event dispatcher module 274. In some embodiments, application 236-1 includes application internal state 292 that indicates the current application view displayed on touch-sensitive display 212 when the application is active or running. In some embodiments, device / global internal state 257 is used by event sorter 270 to determine which application is currently active, and application internal state 292 is used by event sorter 270 to determine application view 291 to which the event information is to be distributed.

[0130] In some embodiments, application internal state 292 includes additional information such as resume information used when application 236-1 resumes execution, user interface state information indicating whether information is being displayed or is ready for display by application 236-1, a state queue that enables the user to return to a previous state or view of application 236-1, and a redo / undo queue of previous actions taken by the user, among any one or more of them.

[0131] The event monitor 271 receives event information from the peripheral device interface 218. The event information includes information regarding sub-events (e.g., a user touch on the touch-sensitive display 212 as part of a multi-touch gesture). The peripheral device interface 218 transmits information received from the I / O subsystem 206, or sensors such as the proximity sensor 266, the accelerometer 268, and / or the microphone 213 (via the audio circuitry 210). The information received by the peripheral device interface 218 from the I / O subsystem 206 includes information from the touch-sensitive display 212 or the touch-sensitive surface.

[0132] In some embodiments, the event monitor 271 transmits requests to the peripheral device interface 218 at predetermined intervals. In response, the peripheral device interface 218 transmits event information. In other embodiments, the peripheral device interface 218 transmits event information only when there is a significant event (e.g., receiving an input that exceeds a predetermined noise threshold and / or exceeds a predetermined period).

[0133] In some embodiments, the event sorter 270 also includes a hit view determination module 272 and / or an active event recognition unit determination module 273.

[0134] The hit view determination module 272 provides software procedures for determining where a sub-event has occurred within one or more views when the touch-sensitive display 212 displays multiple views. The views are composed of the control unit and other elements that the user can view on the display.

[0135] Another aspect of the user interface associated with the application is a set of views, which in this specification may be referred to as application views or user interface windows where information is displayed and touch-based gestures occur. The application view (of the corresponding application) where a touch is detected corresponds to the program level within the program of the application or the view hierarchy. For example, the lowest-level view where a touch is detected is called the hit view, and the set of events recognized as valid input is determined based at least in part on the hit view of the initial touch that starts the touch-based gesture.

[0136] The hit view determination module 272 receives information regarding sub-events of the touch-based gesture. If the application has multiple views organized in a hierarchy, the hit view determination module 272 identifies the hit view as the lowest view within the hierarchy where the sub-events are to be processed. In most situations, the hit view is the lowest-level view where the start sub-event (e.g., the first sub-event in a sequence of sub-events that form an event or potential event) occurs. Once the hit view is identified by the hit view determination module 272, the hit view typically receives all sub-events related to the same touch or input source that was identified as the hit view.

[0137] The active event recognition unit determination module 273 determines which view within the view hierarchy should receive a particular sequence of sub-events. In some embodiments, the active event recognition unit determination module 273 determines that only the hit view should receive a particular sequence of sub-events. In other embodiments, the active event recognition unit determination module 273 determines that all views including the physical location of the sub-event are views that are actively involved, and thus determines that all views that are actively involved should receive a particular sequence of sub-events. In other embodiments, even if a touch sub-event is completely restricted to an area associated with one particular view, the upper-level views in the hierarchy remain views that are actively involved.

[0138] The event dispatcher module 274 sends event information to the event recognition unit (e.g., event recognition unit 280). In embodiments including the active event recognition unit determination module 273, the event dispatcher module 274 distributes event information to the event recognition unit determined by the active event recognition unit determination module 273. In some embodiments, the event dispatcher module 274 stores the event information obtained by each event receiver 282 in the event queue.

[0139] In some embodiments, the operating system 226 includes the event sorter 270. Alternatively, the application 236-1 includes the event sorter 270. In still other embodiments, the event sorter 270 is a stand-alone module or part of another module stored in the memory 202, such as the touch / motion module 230.

[0140] In some embodiments, application 236-1 includes a plurality of event handlers 290 and one or more application views 291, each including instructions to process touch events that occur within respective views of the application's user interface. Each application view 291 of application 236-1 includes one or more event recognition units 280. Typically, each application view 291 includes a plurality of event recognition units 280. In other embodiments, one or more of the event recognition units 280 are part of an individual module such as a user interface kit (not shown) or a higher-level object from which application 236-1 inherits methods and other properties. In some embodiments, each event handler 290 includes any one or more of event data 279 received from data updater 276, object updater 277, GUI updater 278, and / or event sorter 270. The event handler 290 utilizes or calls data updater 276, object updater 277, or GUI updater 278 to update the application internal state 292. Alternatively, any one or more of the application views 291 include one or more corresponding event handlers 290. Also, in some embodiments, any one or more of data updater 276, object updater 277, and GUI updater 278 include corresponding application views 291.

[0141] The corresponding event recognition unit 280 receives event information (e.g., event data 279) from event sorter 270 and identifies the event from the event information. The event recognition unit 280 includes an event receiving unit 282 and an event comparing unit 284. In some embodiments, the event recognition unit 280 includes at least a subset of metadata 283 and event distribution instructions 288 (including sub-event distribution instructions).

[0142] The event receiving unit 282 receives event information from the event sorter 270. The event information includes sub-events, for example, information on touch or touch movement. Depending on the sub-event, the event information also includes additional information such as the position of the sub-event. When the sub-event is related to the movement of a touch, the event information also includes the speed and direction of the sub-event. In some embodiments, the event includes a rotation of the device from one orientation to another (e.g., from portrait orientation to landscape orientation, or vice versa), and the event information includes corresponding information regarding the current orientation of the device (also referred to as the device posture).

[0143] The event comparison unit 284 compares the event information with a predetermined event or sub-event definition, and based on the comparison, determines an event or sub-event, or determines or updates the state of an event or sub-event. In some embodiments, the event comparison unit 284 includes an event definition 286. The event definition 286 includes definitions of events (e.g., a sequence of predetermined sub-events), for example, event 1 (287-1), event 2 (287-2), etc. In some embodiments, the sub-events within an event (287) include, for example, touch start, touch end, touch movement, touch cancellation, and multi-touch. In one example, the definition of event 1 (287-1) is a double-tap on a displayed object. The double-tap includes, for example, a first touch (touch start) on the displayed object at a predetermined stage, a first lift-off (touch end) at a predetermined stage, a second touch (touch start) on the displayed object at a predetermined stage, and a second lift-off (touch end) at a predetermined stage. In another example, the definition of event 2 (287-2) is a drag on a displayed object. The drag includes, for example, a touch (or contact) on the displayed object at a predetermined stage, a movement of the touch across the touch-sensitive display 212, and a lift-off of the touch (touch end). In some embodiments, the event includes information for one or more associated event handlers 290.

[0144] In some embodiments, event definition 287 includes the definition of events for each user interface object. In some embodiments, event comparison unit 284 performs a hit test to determine which user interface object is associated with the sub - event. For example, in an application view where three user interface objects are displayed on touch - sensitive display 212, when a touch is detected on touch - sensitive display 212, event comparison unit 284 performs a hit test to determine which of the three user interface objects is associated with the touch (sub - event). If each of the displayed objects is associated with a respective event handler 290, the event comparison unit uses the result of the hit test to determine which event handler 290 should be activated. For example, event comparison unit 284 selects the event handler associated with the sub - event and the object that triggered the hit test.

[0145] In some embodiments, the definition for each event (287) also includes a delay action that delays the delivery of event information until it is determined whether the sequence of sub - events corresponds to the event type of the event recognition unit.

[0146] When each event recognition unit 280 determines that a series of sub - events does not match any of the events in event definition 286, each event recognition unit 280 enters an event - impossible, event - failed, or event - ended state and then ignores subsequent sub - events of the touch - based gesture. In this situation, if there are other event recognition units that remain active for the hit view, that event recognition unit continues to track and process the sub - events of the ongoing touch - based gesture.

[0147] In some embodiments, each event recognition unit 280 includes metadata 283 having configurable properties, flags, and / or lists indicating how the event delivery system should perform sub - event delivery for the event recognition units actively involved. In some embodiments, the metadata 283 includes configurable properties, flags, and / or lists indicating how the event recognition units interact with each other or are allowed to interact. In some embodiments, the metadata 283 includes configurable properties, flags, and / or lists indicating at what various levels in the view hierarchy or program hierarchy sub - events are to be delivered.

[0148] In some embodiments, each event recognition unit 280 activates an event handler 290 associated with the event when any one or more specific sub - events of the event are recognized. In some embodiments, each event recognition unit 280 delivers event information associated with the event to the event handler 290. Activating the event handler 290 is separate from sending (and deferring sending) sub - events to each hit view. In some embodiments, the event recognition unit 280 throws a flag associated with the recognized event, and the event handler 290 associated with the flag catches the flag and executes a predetermined process.

[0149] In some embodiments, the event delivery instruction 288 includes a sub - event delivery instruction that delivers event information regarding sub - events without activating an event handler. Instead, the sub - event delivery instruction delivers event information to an event handler associated with a series of sub - events or to a view actively involved. The event handler associated with the series of sub - events or the view actively involved receives the event information and executes a predetermined process.

[0150] In some embodiments, data updater 276 creates and updates data used in application 236-1. For example, data updater 276 updates a phone number used in contact module 237 or stores a video file used in a video playback module. In some embodiments, object updater 277 creates and updates objects used in application 236-1. For example, object updater 277 creates a new user interface object or updates the position of a user interface object. GUI updater 278 updates the GUI. For example, GUI updater 278 prepares display information and sends the display information to graphic module 232 for display on a touch-sensitive display.

[0151] In some embodiments, event handler 290 includes or has access to data updater 276, object updater 277, and GUI updater 278. In some embodiments, data updater 276, object updater 277, and GUI updater 278 are included in a single module of respective application 236-1 or application view 291. In other embodiments, they are included in two or more software modules.

[0152] The foregoing discussion regarding event handling of a user's touch on a touch-sensitive display also applies to other forms of user input for operating the multifunctional device 200 with an input device, but it should be understood that not all of them are initiated on the touch screen. For example, movement of a mouse and pressing of a mouse button optionally associated with pressing or holding of a single or multiple keyboards, contact movements such as taps, drags, and scrolls on a touch pad, pen stylus input, movement of the device, spoken commands, detected eye movements, biometric input, and / or any combination thereof are optionally utilized as input corresponding to sub-events that define events to be recognized.

[0153] FIG. 3 shows a portable multifunctional device 200 having a touch screen 212 according to some embodiments. The touch screen optionally displays one or more graphics within a user interface (UI) 300. In this embodiment, as with others described below, the user can select any one or more of the graphics by performing gestures on the graphics, for example, using one or more fingers 302 (not drawn to scale in the figure) or one or more styli 303 (not drawn to scale in the figure). In some embodiments, when the user releases contact with one or more graphics, a selection of the one or more graphics occurs. In some embodiments, the gestures optionally include one or more taps of a finger in contact with the device 200, one or more swipes (from left to right, right to left, upward, and / or downward), and / or rolling (from right to left, left to right, upward, and / or downward). In some implementations or situations, inadvertent contact with a graphic does not select the graphic. For example, a swipe gesture that sweeps across an application icon does not optionally select the corresponding application if the gesture corresponding to selection is a tap.

[0154] Device 200 also includes one or more physical buttons, such as a "Home" or menu button 304. As described above, menu button 304 is used to navigate to any application 236 within a set of applications running on device 200. Alternatively, in some embodiments, the menu button is implemented as a soft key within a GUI displayed on touch screen 212.

[0155] In one embodiment, device 200 includes touch screen 212, menu button 304, a push button 306 for turning the device on / off and locking the device, volume adjustment buttons 308, a subscriber identity module (SIM) card slot 310, a headset jack 312, and a docking / charging external port 224. Push button 306 turns the device on / off by pressing the button and holding it down for a predetermined time interval, locks the device by releasing the button before a predetermined time interval has elapsed after pressing the button, and / or is optionally used to unlock the device or initiate an unlock process. In an alternative embodiment, device 200 also accepts verbal input to activate or deactivate some functions through microphone 213. Device 200 also optionally includes one or more contact intensity sensors 265 for detecting the intensity of contact on touch screen 212, and / or one or more haptic output generators 267 for generating haptic output for a user of device 200.

[0156] Figure 4 is a block diagram of an exemplary multifunctional device having a display and a touch sensing surface, according to some embodiments. Device 400 need not be portable. In some embodiments, device 400 is a laptop computer, desktop computer, tablet computer, multimedia playback device, navigation device, educational device (such as a child's learning toy), game system, or control device (e.g., a home or industrial controller). Device 400 typically includes one or more processing units (CPUs) 410, one or more networks or other communication interfaces 460, memory 470, and one or more communication buses 420 interconnecting these components. Communication bus 420 optionally includes circuitry (sometimes called a chipset) that interconnects and controls communication between system components. Device 400 typically includes an input / output (I / O) interface 430 that includes a display 440, which is a touch screen display. I / O interface 430 also optionally includes a keyboard and / or mouse (or other pointing device) 450, as well as a touch pad 455, a haptic output generator 457 that generates haptic output on device 400 (similar to haptic output generator 267 described above with reference to FIG. 2A), and a sensor 459 (e.g., a light sensor, an acceleration sensor, a proximity sensor, a touch sensing sensor, and / or a contact intensity sensor similar to contact intensity sensor 265 described above with reference to FIG. 2A). Memory 470 includes high-speed random access memory such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices, and optionally includes non-volatile memory such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. Memory 470 optionally includes one or more storage devices remotely located from CPU 410. In some embodiments, memory 470 stores programs, modules, and data structures, or subsets thereof, similar to the programs, modules, and data structures stored in memory 202 of portable multifunctional device 200 (FIG. 2A).Furthermore, the memory 470 optionally stores additional programs, modules, and data structures that do not exist in the memory 202 of the portable multifunctional device 200. For example, the memory 470 of the device 400 optionally stores a drawing module 480, a presentation module 482, a word processing module 484, a website creation module 486, a disk authoring module 488, and / or a spreadsheet module 490, while the memory 202 of the portable multifunctional device 200 (FIG. 2A) does not optionally store these modules.

[0157] Each element identified above in FIG. 4 is, in some examples, stored in any one or more of the memory devices mentioned above. Each module identified above corresponds to a set of instructions for performing the functions described above. The modules or programs (e.g., sets of instructions) identified above need not be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise reconfigured in various embodiments. In some embodiments, the memory 470 stores a subset of the modules and data structures identified above. Furthermore, the memory 470 stores additional modules and data structures not described above.

[0158] Here, for example, attention is drawn to an embodiment of a user interface that can be implemented on the portable multifunctional device 200.

[0159] FIG. 5A shows an exemplary user interface of a menu of an application on the portable multifunctional device 200 according to some embodiments. A similar user interface is implemented on the device 400. In some embodiments, the user interface 500 includes the following elements, or a subset or superset thereof.

[0160] A signal strength indicator 502 for wireless communication such as cellular and Wi-Fi signals, ● Time 504, ● Bluetooth indicator 505, ● Battery status indicator 506, ● Tray 508 having icons for frequently used applications such as the following, ○ Icon 516 for the phone module 238, labeled "Phone", optionally including an indicator 514 for the number of missed calls or voicemail messages, ○ Icon 518 for the email client module 240, labeled "Mail", optionally including an indicator 510 for the number of unread emails, ○ Icon 520 for the browser module 247, labeled "Browser", and ○ Icons 522 for the video and music player module 252, also referred to as the iPod (registered trademark of Apple) module 252, labeled "iPod" and ● Icons for other applications such as the following, ○ Icon 524 for the IM module 241, labeled "Message", ○ Icon 526 for the calendar module 248, labeled "Calendar", ○ Icon 528 for the image management module 244, labeled "Photos", ○ Icon 530 for the camera module 243, labeled "Camera", ○ Icon 532 for the online video module 255, labeled "Online Video", ○ Icon 534 for the stock price widget 249-2, labeled "Stock Price", ○ Icon 536 for the map module 254, labeled "Map", ○ Icon 538 for the weather widget 249-1, labeled "Weather", ○ Icon 540 for the alarm clock widget 249-4, labeled "Clock", ○ An icon 542 for the training support module 242 labeled "Training Support", ○ An icon 544 for the memo module 253 labeled "Memo", and ○ An icon 546 for the settings application or module labeled "Settings" that provides access to the settings of the device 200 and its various applications 236

[0161] It should be understood that the labels of the icons shown in FIG. 5A are merely exemplary. For example, the icon 522 for the video and music player module 252 is optionally labeled "Music" or "Music Player". Other labels are optionally used for the various application icons. In some embodiments, the label for each application icon includes the name of the application corresponding to each application icon. In some embodiments, the label for a particular application icon is separate from the name of the application corresponding to the particular application icon.

[0162] FIG. 5B shows an exemplary user interface on a device (e.g., device 400, FIG. 4) having a touch sensing surface 551 (e.g., a tablet or touch pad 455, FIG. 4) separate from the display 550 (e.g., a touch screen display 212). The device 400 also optionally includes one or more contact intensity sensors (e.g., any one or more of the sensors 457) that detect the intensity of contact on the touch sensing surface 551, and / or one or more haptic output generators 459 that generate haptic output for the user of the device 400.

[0163] Some of the following examples are described with reference to input on touch screen display 212 (when the touch sensing surface and the display are combined), but in some embodiments, the device detects input on a touch sensing surface separate from the display, as shown in FIG. 5B. In some embodiments, the touch sensing surface (e.g., 551 in FIG. 5B) has a major axis (e.g., 552 in FIG. 5B) corresponding to the major axis (e.g., 553 in FIG. 5B) on the display (e.g., 550). In accordance with these embodiments, the device detects contact with the touch sensing surface 551 (e.g., 560 and 562 in FIG. 5B) at positions corresponding to respective positions on the display (e.g., in FIG. 5B, 560 corresponds to 568 and 562 corresponds to 570). Thus, when the touch sensing surface is separate from the display, user input (e.g., contacts 560 and 562 and their movement) detected by the device on the touch sensing surface (e.g., 551 in FIG. 5B) is used by the device to operate the user interface on the display (e.g., 550 in FIG. 5B) of the multifunctional device. It should be understood that a similar method is optionally used for other user interfaces described herein.

[0164] Additionally, although the following examples are mainly described with reference to finger inputs (e.g., finger contact, finger tap gesture, finger swipe gesture), it should be understood that in some embodiments, any one or more of those finger inputs may be replaced by inputs from another input device (e.g., mouse-based input or stylus input). For example, a swipe gesture may be optionally replaced by a mouse click (instead of contact, for example), and then the cursor is moved along the path of the swipe (instead of the movement of contact, for example). As another example, a tap gesture may be optionally replaced by a mouse click while the cursor is positioned over the location of the tap gesture (instead of detecting contact and then stopping detecting contact, for example). Similarly, it should be understood that when multiple user inputs are detected simultaneously, multiple computer mice may be optionally used simultaneously, or a mouse and finger contact may be optionally used simultaneously.

[0165] FIG. 6A shows an exemplary personal electronic device 600. The device 600 includes a body 602. In some embodiments, the device 600 includes some or all of the features described in connection with devices 200 and 400 (e.g., FIGS. 2A-4B). In some embodiments, the device 600 has a touch-sensitive display screen 604, hereinafter referred to as touch screen 604. Alternatively, or in addition to touch screen 604, the device 600 has a display and a touch-sensitive surface. Along with devices 200 and 400, in some embodiments, the touch screen 604 (or touch-sensitive surface) has one or more intensity sensors that detect the intensity of an applied contact (e.g., touch). The one or more intensity sensors of the touch screen 604 (or touch-sensitive surface) provide output data representing the intensity of the touch. The user interface of the device 600 means that different intensity touches can invoke different user interface operations on the device 600 in response to touches based on that intensity.

[0166] Techniques for detecting and processing touch intensity can be found, for example, in the related applications: "Device, Method, and Graphical User Interface for Displaying User Interface Objects Corresponding to an Application" of International Patent Application No. PCT / US2013 / 040061 filed on May 8, 2013, and "Device, Method, and Graphical User Interface for Transitioning Between Touch Input to Display Output Relationships" of International Patent Application No. PCT / US2013 / 069483 filed on November 11, 2013, each of which is hereby incorporated by reference in its entirety.

[0167] In some embodiments, device 600 has one or more input mechanisms 606 and 608. Input mechanisms 606 and 608, if included, are physical. Examples of physical input mechanisms include push buttons and rotatable mechanisms. In some embodiments, device 600 has one or more attachment mechanisms. Such attachment mechanisms, if included, can enable device 600 to be attached to, for example, hats, eyewear, earrings, necklaces, shirts, jackets, bracelets, watch straps, chains, pants, belts, shoes, wallets, backpacks, etc. These attachment mechanisms enable a user to wear device 600.

[0168] FIG. 6B shows an exemplary personal electronic device 600. In some embodiments, device 600 includes some or all of the components described in connection with FIGS. 2A, 2B, and 4. Device 600 has a bus 612 that operably couples to an I / O section 614 along with one or more computer processors 616 and a memory 618. The I / O section 614 is connected to a display 604 that may have a touch sensing component 622 and optionally a touch intensity sensing component 624. In addition to this, the I / O section 614 is connected to a communication unit 630 that receives application and operating system data using Wi-Fi, Bluetooth, near field communication (NFC), cellular, and / or other wireless communication technologies. Device 600 includes input mechanisms 606 and / or 608. Input mechanism 606 is, for example, a rotatable input device or a pressable and rotatable input device. Input mechanism 608 is, in some examples, a button.

[0169] Input mechanism 608 is, in some examples, a microphone. The personal electronic device 600 includes various sensors such as, for example, a GPS sensor 632, an accelerometer 634, a direction sensor 640 (e.g., a compass), a gyroscope 636, a motion sensor 638, and / or combinations thereof, all of which are operably connected to the I / O section 614.

[0170] The memory 618 of the personal electronic device 600 is a non-transitory computer-readable storage medium that stores computer-executable instructions. For example, when executed by one or more computer processors 616, the computer-executable instructions cause the computer processor to perform the following techniques and processes. For example, the computer-executable instructions can be used by or associated with an instruction execution system, apparatus, or device, such as a computer-based system, a system including a processor, or other systems that can fetch instructions from an instruction execution system, apparatus, or device and execute the instructions, and are stored and / or transported in any non-transitory computer-readable storage medium. The personal electronic device 600 is not limited to the components and configurations of FIG. 6B, but can include other components or additional components in a plurality of configurations.

[0171] As used herein, the term "affordance" refers to, for example, user-interactive graphical user interface objects displayed on the display screens of devices 200, 400, 600, 810A - C, 820, 830, 840, 1182, 1186, 1880, and / or 1882 (FIGS. 2, 4, 6, 8A - 8B, 9A - 9C, 10A - 10C, 11A - 11D, 12A - 12C, 13A - 13B, 14, 15A - 15G, and 18A - 18E). For example, images (e.g., icons), buttons, and text (e.g., hyperlinks) each constitute an affordance.

[0172] As used herein, the term "focus selector" refers to an input element that indicates the current part of the user interface with which the user is interacting. In some embodiments that include a cursor or other position marker, the cursor, while on a particular user interface element (e.g., a button, window, slider, or other user interface element), acts as a "focus selector" such that when an input (e.g., a press input) is detected on a touch-sensitive surface (e.g., touchpad 455 of FIG. 4 or touch-sensitive surface 551 of FIG. 5B), the particular user interface element is adjusted according to the detected input. In some implementations that include a touch screen display that enables direct two-way interaction with user interface elements on the touch screen display (e.g., touch-sensitive display system 212 of FIG. 2A or touch screen 212 of FIG. 5A), a detected contact on the touch screen acts as a "focus selector" such that when an input (e.g., a press input by contact) is detected on the touch screen display at the location of a particular user interface element (e.g., a button, window, slider, or other user interface element), the particular user interface element is adjusted according to the detected input. In some embodiments, the focus moves from one region of the user interface to another region of the user interface without corresponding to a movement of the cursor or a movement of the contact on the touch screen display (e.g., by using a tab key or arrow keys to move the focus from one button to another). In these embodiments, the focus selector moves according to the movement of the focus between different regions of the user interface. Regardless of the particular form the focus selector takes, the focus selector is generally a user interface element (or a contact on the touch screen display) that is controlled by the user to communicate the user's intended interaction to the user interface (e.g., by indicating to the device the element of the user interface with which the user is attempting to interact).For example, while a press input is detected on a touch sensing surface (e.g., a touch pad or a touch screen), the position of a focus selector (e.g., a cursor, a contact, or a selection box) for each button indicates that the user is attempting to activate each button (as contrasted with other user interface elements shown on the device's display).

[0173] The term "characteristic strength" of a contact as used in the specification and claims refers to the characteristics of the contact based on the strength of one or more contacts. In some embodiments, the characteristic strength is based on a plurality of strength samples. The characteristic strength is optionally based on a predetermined number of strength samples for a predetermined event (e.g., after detecting the contact, before detecting the lift-off of the contact, before or after detecting the start of movement of the contact, before detecting the end of the contact, before or after detecting an increase in the strength of the contact, and / or before or after detecting a decrease in the strength of the contact), or a set of strength samples collected during a predetermined time period (e.g., 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10 seconds). The characteristic strength of the contact is optionally based on any one or more of the maximum value of the contact strength, the mean value of the contact strength, the average value of the contact strength, the top 10 percent value of the contact strength, half of the maximum value of the contact strength, 90 percent of the maximum value of the contact strength, etc. In some embodiments, the duration of the contact is used (e.g., when the characteristic strength is the average of the contact strength over time) in determining the characteristic strength. In some embodiments, the characteristic strength is compared to a set of one or more strength thresholds to determine whether an operation has been performed by a user. For example, the set of one or more strength thresholds includes a first strength threshold and a second strength threshold. In this example, a contact having a characteristic strength that does not exceed the first threshold results in a first operation, a contact having a characteristic strength that exceeds the first threshold and does not exceed the second threshold results in a second operation, and a contact having a characteristic strength that exceeds the second threshold results in a third operation. In some embodiments, the comparison of the characteristic strength with one or more thresholds is not used to determine whether to perform a first or second operation, but is used to determine whether to perform one or more operations (e.g., whether to perform each operation or refrain from performing each operation).

[0174] In some embodiments, portions of the gesture are identified for the purpose of determining characteristic strength. For example, the touch sensing surface receives a continuous swipe contact that transitions from a start position point where the contact strength increases to an end position point. In this example, the characteristic strength of the contact at the end position is based on only a portion of the continuous swipe contact, rather than the entire swipe contact (e.g., only the portion of the swipe contact at the end position). In some embodiments, a smoothing algorithm is applied to the strength of the swipe contact before determining the characteristic strength of the contact. For example, the smoothing algorithm optionally includes any one or more of an unweighted moving average smoothing algorithm, a triangular smoothing algorithm, a median filter smoothing algorithm, and / or an exponential smoothing algorithm. In some situations, these smoothing algorithms eliminate narrow spikes or dips in the strength of the swipe contact for determining the characteristic strength.

[0175] The strength of a contact on the touch sensing surface is characterized relative to one or more strength thresholds, such as a contact detection strength threshold, a light press strength threshold, a deep press strength threshold, and / or one or more other strengths. In some embodiments, the light press strength threshold corresponds to the strength at which the device typically performs an operation associated with a click of a button on a physical mouse or trackpad. In some embodiments, the deep press strength threshold corresponds to the strength at which the device typically performs an operation different from an operation associated with a click of a button on a physical mouse or trackpad. In some embodiments, if a contact is detected with a characteristic strength below the light press strength threshold (e.g., above a nominal contact detection strength threshold below which the contact is no longer detected), the device moves the focus selector in accordance with the movement of the contact on the touch sensing surface without performing an operation associated with the light press strength threshold or the deep press strength threshold. Generally, unless otherwise specified, these strength thresholds are consistent across different sets of user interface shapes.

[0176] An increase in the characteristic strength of contact from a strength below the light pressing strength threshold to a strength between the light pressing strength threshold and the deep pressing strength threshold may be referred to as a "light pressing" input. An increase in the characteristic strength of contact from a strength below the deep pressing strength threshold to a strength above the deep pressing strength threshold may be referred to as a "deep pressing" input. An increase in the characteristic strength of contact from a strength below the contact detection strength threshold to a strength between the contact detection strength threshold and the light pressing strength threshold may be referred to as the detection of contact on the touch surface. A decrease in the characteristic strength of contact from a strength above the contact detection strength threshold to a strength below the contact detection strength threshold may be referred to as the detection of lift-off of contact from the touch surface. In some embodiments, the contact detection strength threshold is zero. In some embodiments, the contact detection strength threshold is greater than zero.

[0177] In some embodiments described herein, one or more operations are performed in response to detecting a gesture that includes respective pressing inputs, or in response to detecting respective pressing inputs performed at respective contacts (or multiple contacts), and each pressing input is detected based at least in part on detecting an increase in the strength of a contact (or multiple contacts) above a pressing input strength threshold. In some embodiments, the corresponding operation is performed in response to detecting an increase in the strength of the corresponding contact (e.g., the "downstroke" of the corresponding pressing input) above the pressing input strength threshold. In some embodiments, the pressing input includes an increase in the strength of the corresponding contact above the pressing input strength threshold and a subsequent decrease in the strength of the contact below the pressing input strength threshold, and the corresponding operation is performed in response to detecting the subsequent decrease in the strength of the corresponding contact below the pressing input threshold (e.g., the "upstroke" of the corresponding pressing input).

[0178] In some embodiments, the device employs hysteresis to avoid unpredictable inputs sometimes referred to as "jitter", and the device defines or selects a hysteresis intensity threshold having a predetermined relationship with the pressing input intensity threshold (e.g., the hysteresis intensity threshold is X intensity units lower than the pressing input intensity threshold, or the hysteresis intensity threshold is 75%, 90% or some reasonable ratio of the pressing input intensity threshold). Thus, in some embodiments, a pressing input includes an increase in the intensity of the corresponding contact above the pressing input intensity threshold, and a subsequent decrease in the intensity of the contact below the hysteresis intensity threshold corresponding to the pressing input intensity threshold, and the corresponding operation is executed in response to detecting a subsequent decrease in the intensity of the corresponding contact below its hysteresis intensity threshold (e.g., the "upstroke" of the corresponding pressing input). Similarly, in some embodiments, a pressing input is detected only when the device detects an increase in the intensity of a contact from an intensity below the hysteresis intensity threshold to an intensity above the pressing input intensity threshold, and optionally, a subsequent decrease in the intensity of the contact to an intensity below the hysteresis intensity, and the corresponding operation is executed in response to detecting that pressing input (e.g., an increase in the intensity of the contact or a decrease in the intensity of the contact, depending on the situation).

[0179] For ease of explanation, the description of an operation performed in response to a pressing input associated with a pressing input intensity threshold or a gesture including that pressing input is optionally triggered in response to detecting any of an increase in the intensity of a contact above the pressing input intensity threshold, an increase in the intensity of a contact from an intensity below the hysteresis intensity threshold to an intensity above the pressing input intensity threshold, a decrease in the intensity of a contact below the pressing input intensity threshold, and / or a decrease in the intensity of a contact below the hysteresis intensity threshold corresponding to the pressing input intensity threshold. Further, in examples described as having an operation executed in response to detecting a decrease in the intensity of a contact below the pressing input intensity threshold, the operation is optionally executed in response to detecting a decrease in the intensity of a contact corresponding to and below a hysteresis intensity threshold lower than the pressing input intensity threshold.

[0180] 3. Digital Assistant System FIG. 7A shows a block diagram of a digital assistant system 700 according to various examples. In some examples, the digital assistant system 700 is implemented on a stand-alone computer system. In some examples, the digital assistant system 700 is distributed across multiple computers. In some examples, some of the modules and functions of the digital assistant are divided into a server portion and a client portion, and the client portion is located on one or more user devices (e.g., device 104, 122, 200, 400, 600, 810A-C, 830, 840, 1182, 1186, 1880, and / or 1882) as shown in FIG. 1, for example, and communicates with the server portion (e.g., server system 108) via one or more networks. In some examples, the digital assistant system 700 is an implementation of the server system 108 (and / or DA server 106) shown in FIG. 1. It should be noted that the digital assistant system 700 is merely an example of a digital assistant system, and the digital assistant system 700 can have more or fewer components than shown, can combine two or more components, or can have different settings or arrangements of components. The various components shown in FIG. 7A are implemented in hardware, software instructions executed by one or more processors, firmware including one or more signal processing and / or application-specific integrated circuits, or a combination thereof.

[0181] The digital assistant system 700 includes a memory 702, one or more processors 704, an input / output (I / O) interface 706, and a network communication interface 708. These components can communicate with each other via one or more communication buses or signal lines 710.

[0182] In some examples, memory 702 includes a non-transitory computer-readable medium, such as a high-speed random access memory and / or a non-volatile computer-readable storage medium (e.g., one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices).

[0183] In some examples, I / O interface 706 couples input / output devices 716 of digital assistant system 700, such as a display, keyboard, touch screen, and microphone, to user interface module 722. I / O interface 706, in conjunction with user interface module 722, receives user inputs (e.g., voice input, keyboard input, touch input, etc.) and processes them appropriately. In some examples, for instance, when the digital assistant is executed on a stand-alone user device, digital assistant system 700 includes any of the components and I / O communication interfaces described with respect to devices 200, 400, 600, 810A-C, 820, 830, 840, 1182, 1186, 1880, and / or 1882 in FIGS. 2, 4, 6A-6B, 8A-8B, 9A-9C, 10A-10C, 11A-11D, 12A-12C, 13A-13B, 14, 15A-15G, and 18A-18E, respectively. In some examples, digital assistant system 700 represents the server portion of a digital assistant implementation and can interact with a user via a client-side portion on a user device (e.g., devices 104, 200, 400, 600, 810A-C, 830, 840, 1182, 1186, 1880, and / or 1882).

[0184] In some examples, the network communication interface 708 includes a wired communication port 712 and / or a wireless transmission and reception circuit 714. The wired communication port receives and transmits communication signals via one or more wired interfaces, such as, for example, Ethernet, Universal Serial Bus (USB), FireWire, etc. The wireless circuit 714 receives and transmits RF signals and / or optical signals to / from a communication network and other communication devices. The wireless communication uses any one of a plurality of communication standards, protocols, and technologies, such as GSM, EDGE, CDMA, TDMA, Bluetooth, Wi-Fi, VoIP, Wi-MAX, or any other suitable communication protocol. The network communication interface 708 enables communication between the digital assistant system 700 having a network, such as the Internet, an intranet, and / or a wireless network such as a cellular telephone network, a wireless local area network (LAN), and / or a metropolitan area network (MAN), and other devices.

[0185] In some examples, the memory 702, or the computer-readable storage medium of the memory 702, stores programs, modules, instructions, and data structures including all or a subset of the following: an operating system 718, a communication module 720, a user interface module 722, one or more applications 724, and a digital assistant module 726. Specifically, the memory 702, or the computer-readable storage medium of the memory 702, stores instructions for executing the processes described below. One or more processors 704 execute these programs, modules, and instructions and perform reading from / writing to the data structures.

[0186] The operating system 718 (e.g., an embedded operating system such as Darwin, RTXC, LINUX, UNIX, iOS, OSX, WINDOWS, or VxWorks) includes various software components and / or drivers that control and manage general system tasks (e.g., memory management, storage device control, power management, etc.), and facilitate communication between various hardware, firmware, and software components.

[0187] The communication module 720 facilitates communication between the digital assistant system 700 and other devices via the network communication interface 708. For example, the communication module 720 communicates with the RF circuits 208 of electronic devices such as the devices 200, 400, and 600 shown in FIGS. 2A, 4, and 6A - B, respectively. The communication module 720 also includes various components that process data received by the wireless circuit 714 and / or the wired communication port 712.

[0188] The user interface module 722 receives commands and / or inputs from a user (e.g., from a keyboard, touch screen, pointing device, controller, and / or microphone) via the I / O interface 706, and generates user interface objects on the display. The user interface module 722 also prepares (e.g., via the display, audio channel, speaker, touch pad, etc.) and delivers outputs (e.g., speech, sound, animation, text, icons, vibration, tactile feedback, light, etc.) to the user via the I / O interface 706.

[0189] Application 724 includes programs and / or modules configured to be executed by one or more processors 704. For example, when the digital assistant system is executed on a stand-alone user device, application 724 includes user applications such as games, calendar applications, navigation applications, or email applications. When the digital assistant system 700 is executed on a server, application 724 includes, for example, resource management applications, diagnostic applications, or scheduling applications.

[0190] Memory 702 also stores the digital assistant module 726 (or the server portion of the digital assistant). In some examples, the digital assistant module 726 includes the following sub-modules, or a subset or superset thereof: input / output processing module 728, speech-to-text (STT) processing module 730, natural language processing module 732, dialog flow processing module 734, task flow processing module 736, service processing module 738, and speech synthesis module 740. Each of these modules can access one or more of the following systems or data and models of the digital assistant module 726, or a subset or superset thereof: ontology 760, vocabulary index 744, user data 748, task flow model 754, service model 756, and ASR system.

[0191] In some examples, the digital assistant can perform at least some of the following using processing modules, data, and models implemented in the digital assistant module 726: convert voice input to text, identify the user's intent expressed in the natural language input received from the user, actively elicit and obtain the information necessary to adequately infer the user's intent (e.g., by resolving ambiguities in words, games, intents, etc.), determine a task flow to satisfy the inferred intent, and execute the task flow to satisfy the inferred intent.

[0192] In some examples, as shown in FIG. 7B, the I / O processing module 728 interacts with the user via the I / O device 716 of FIG. 7A or with a user device (e.g., device 104, 200, 400, or 600) via the network communication interface 708 of FIG. 7A to obtain user input (e.g., voice input) and provide a response to the user input (e.g., as a voice output). The I / O processing module 728 optionally obtains context information associated with the user input from the user device upon or immediately after receiving the user input. The context information includes user-specific data, vocabulary, and / or preferences related to the user input. In some examples, the context information also includes the software and hardware state of the user device when the user request is received and / or information about the user's surrounding environment when the user request is received. In some examples, the I / O processing module 728 also sends follow-up questions to the user regarding the user request and receives answers. When the user request is received by the I / O processing module 728 and the user request includes voice input, the I / O processing module 728 transfers the voice input to the STT processing module 730 (or voice recognition device) that performs voice-to-text conversion.

[0193] The STT processing module 730 includes one or more ASR systems. The one or more ASR systems can process the voice input received via the I / O processing module 728 to generate a recognition result. Each ASR system includes a front-end voice preprocessor. The front-end voice preprocessor extracts representative features from the voice input. For example, the front-end voice preprocessor performs a Fourier transform on the voice input and extracts spectral features that characterize the voice input as a sequence of representative multi-dimensional vectors. Further, each ASR system includes one or more voice recognition models (e.g., an acoustic model and / or a language model) and implements one or more voice recognition engines. Examples of voice recognition models include hidden Markov models, Gaussian mixture models, deep neural network models, n-gram language models, and other statistical models. Examples of voice recognition engines include a dynamic time warping-based engine and a weighted finite-state transducer (WFST)-based engine. The one or more voice recognition models and the one or more voice recognition engines are used to process the extracted representative features of the front-end voice preprocessor to generate an intermediate recognition result (e.g., phonemes, phoneme sequences, sub-words). In some examples, the voice input is processed, at least in part, by a third-party service or on the user's device (e.g., devices 104, 200, 400, 600) to generate a recognition result. When the STT processing module 730 generates a recognition result that includes a character string (e.g., a word, a sequence of words, or a sequence of tokens), the recognition result is passed to the natural language processing module 732 for intent inference. In some examples, the STT processing module 730 generates a plurality of candidate character representations of the voice input. Each candidate character representation is a sequence of words or tokens corresponding to the voice input. In some examples, each candidate character representation is associated with a voice recognition confidence score.The STT processing module 730 ranks candidate character expressions based on the speech recognition confidence score and provides the n best (e.g., top n) candidate character expressions to the natural language processing module 732 that performs intent inference, where n is a predetermined integer greater than zero. For example, in one example, only the top (n = 1) candidate character expression is passed to the natural language processing module 732 that performs intent inference. In another example, the five top (n = 5) candidate character expressions are passed to the natural language processing module 732 that performs intent inference.

[0194] For more details regarding the speech text conversion process, reference is made to U.S. Utility Application No. 13 / 236,942, filed on September 20, 2011, entitled "Consolidating Speech Recognition Results", the entire disclosure of which is incorporated herein by reference.

[0195] In some examples, the STT processing module 730 includes and / or accesses a vocabulary of recognizable words via the speech alphabet conversion module 731. Each vocabulary word is associated with one or more candidate pronunciations of the word represented in the speech recognition phonetic alphabet. Specifically, the vocabulary of recognizable words includes words associated with multiple candidate pronunciations. For example, this vocabulary includes the word "tomato (トマト)" associated with the candidate pronunciation of

Number

[0196] In some examples, candidate pronunciations are ranked based on the commonality of the candidate pronunciations. For example, for candidate pronunciations

Number

Number

Number

Number

Number

[0197] When receiving an audio input, the STT processing module 730 uses it to determine the phonemes corresponding to the audio input (e.g., using an acoustic model), and then determines the words that match the phonemes (e.g., using a language model). For example, the STT processing module 730 first determines a sequence of phonemes corresponding to a part of the audio input

Number

[0198] In some examples, the STT processing module 730 uses an approximate matching technique to determine the words in the utterance. Thereby, for example, even if a particular sequence of phonemes is not one of the candidate sequences of phonemes for that word, the sequence of phonemes

Number

[0199] The natural language processing module 732 (the "natural language processor") of the digital assistant takes in the n-best candidate character representations (the "sequence of words" or "token sequence") generated by the STT processing module 730 and associates each candidate character representation with one or more "executable intents" recognized by the digital assistant. An "executable intent" (or "user intent") represents a task that can be performed by the digital assistant and can have an associated task flow that is implemented in the task flow model 754. The associated task flow is a series of programmed actions and steps that the digital assistant takes in order to execute the task. The scope of the digital assistant's capabilities depends on the number and variety of task flows implemented and stored in the task flow model 754, i.e., on the number and variety of "executable intents" recognized by the digital assistant. However, the effectiveness of the digital assistant depends on the assistant's ability to infer the correct "executable intent" from the user request expressed in natural language.

[0200] In some examples, the natural language processing module 732 also receives context information associated with the user request, for example from the I / O processing module 728, in addition to the sequence of words or tokens obtained from the STT processing module 730. The natural language processing module 732 optionally uses the context information to clarify, complement, and / or further define the information contained in the candidate character representations received from the STT processing module 730. Context information includes, for example, user preferences, the hardware and / or software state of the user device, sensor information collected before, during, or immediately after the user request, and prior conversations (e.g., utterances) between the digital assistant and the user. As described herein, context information is, in some examples, dynamic and changes in relation to the time, location, content, and other factors of the utterance.

[0201] In some examples, natural language processing is based on, for example, ontology 760. Ontology 760 is a hierarchical structure that includes a number of nodes, and each node represents an "actionable intent" or an "attribute" or other "attributes" related to one or more of the "actionable intents". As described above, an "actionable intent" represents a task that a digital assistant can perform, that is, a task that the digital assistant can "execute" or act on. An "attribute" represents a parameter associated with a secondary aspect of an actionable intent or another attribute. The link between the actionable intent node and the attribute node in ontology 760 defines how the parameter represented by the attribute node relates to the task represented by the actionable intent node.

[0202] In some examples, ontology 760 consists of actionable intent nodes and attribute nodes. Within ontology 760, each actionable intent node is linked to one or more attribute nodes either directly or through one or more intermediate attribute nodes. Similarly, each attribute node is linked to one or more actionable intent nodes either directly or through one or more intermediate attribute nodes. For example, as shown in FIG. 7C, ontology 760 includes a "restaurant reservation" node (i.e., an actionable intent node). The attribute nodes "restaurant", "date / time" (of the reservation), and "number of participants" are each directly linked to the actionable intent node (i.e., the "restaurant reservation" node).

[0203] Furthermore, the attribute nodes "Cuisine", "Price Range", "Phone Number", and "Location" are sub-nodes of the attribute node "Restaurant", and are each linked to the "Restaurant Reservation" node (i.e., the actionable intent node) via the intermediate attribute node "Restaurant". In another example, as shown in FIG. 7C, the ontology 760 includes a "Reminder Setting" node (i.e., another actionable intent node). The attribute nodes "Date / Time" (for setting the reminder) and "Theme" (for the reminder) are linked to the "Reminder Setting" node respectively. Since the attribute "Date / Time" is relevant to both the task of making a restaurant reservation and the task of setting a reminder, the attribute node "Date / Time" is linked to both the "Restaurant Reservation" node and the "Reminder Setting" node in the ontology 760.

[0204] The actionable intent nodes, and their linked concept nodes, are described as "domains". In this discussion, each domain is associated with a respective actionable intent, and refers to a group of nodes (and the relationships between them) associated with a particular actionable intent. For example, the ontology 760 shown in FIG. 7C includes an example of a restaurant reservation domain 762 and an example of a reminder domain 764 within the ontology 760. The restaurant reservation domain includes the actionable intent node "Restaurant Reservation", the attribute nodes "Restaurant", "Date / Time", and "Number of Participants", and the sub-attribute nodes "Cuisine", "Price Range", "Phone Number", and "Location". The reminder domain 764 includes the actionable intent node "Reminder Setting" and the attribute nodes "Theme" and "Date / Time". In some examples, the ontology 760 consists of multiple domains. Each domain shares one or more attribute nodes with one or more other domains. For example, the "Date / Time" attribute node is associated with a number of different domains (such as a scheduling domain, a travel reservation domain, a movie ticket domain, etc.) in addition to the restaurant reservation domain 762 and the reminder domain 764.

[0205] For example, FIG. 7C shows two exemplary domains within ontology 760, although other domains include, for example, "search for movies", "make a phone call", "find directions", "schedule a meeting", "send a message", and "answer a question", "read a list", "provide navigation instructions", "give task instructions", etc. The "send a message" domain is associated with the actionable intent of "send a message" and further includes attribute nodes such as "recipient", "message type", and "message body". The attribute node "recipient" is further defined by sub-attribute nodes such as "recipient name" and "message address".

[0206] In some examples, ontology 760 includes all domains (and thus actionable intents) that the digital assistant can understand and act upon. In some examples, ontology 760 is modified, for example, by adding or removing all domains or nodes, or by modifying the relationships between nodes within ontology 760.

[0207] In some examples, nodes associated with multiple related actionable intents are clustered under a "superdomain" in ontology 760. For example, the "travel" superdomain includes a cluster of attribute nodes and actionable intent nodes related to travel. Actionable intent nodes related to travel include "airline reservation", "hotel reservation", "rental car", "find directions", "find points of interest", etc. Actionable intent nodes under the same superdomain (e.g., the "travel" superdomain) share a number of attribute nodes. For example, the actionable intent nodes of "airline reservation", "hotel reservation", "rental car", "find directions", and "find points of interest" share one or more of the attribute nodes "departure location", "destination", "departure date / time", "arrival date / time", and "number of participants".

[0208] In some examples, each node within ontology 760 is associated with a set of words and / or phrases related to the attribute or actionable intent represented by that node. Each respective set of words and / or phrases associated with a node is the so-called "vocabulary" associated with that node. Each respective set of words and / or phrases associated with a node is stored in vocabulary index 744 in association with the attribute or actionable intent represented by that node. For example, returning to FIG. 7B, the vocabulary associated with the node of the "restaurant" attribute includes words such as "food", "drink", "dish", "hunger", "eat", "pizza", "fast food", "meal". In another example, the vocabulary associated with the node of the actionable intent of "initiate a phone call" includes words and phrases such as "call", "phone", "dial", "bell", "call this number", "call on". Vocabulary index 744 optionally includes words and phrases in different languages.

[0209] The natural language processing module 732 receives a candidate character representation (e.g., a character string or a token sequence) from the STT processing module 730, and for each candidate representation, determines which node the word in the candidate character representation implies. In some examples, when it is discovered that a word or phrase in the candidate character representation is associated with one or more nodes within the ontology 760 (via the vocabulary index 744), this word or phrase "triggers" or "activates" those nodes. Based on the amount and / or relative importance of the activated nodes, the natural language processing module 732 selects one of the intents that can be implemented as a task the user intends for the digital assistant to perform. In some examples, the domain with the most "triggered" nodes is selected. In some examples, the domain with the highest confidence value is selected (e.g., based on the relative importance of its various triggered nodes). In some examples, the domain is selected based on a combination of the number and importance of the triggered nodes. In some examples, additional factors, such as whether the digital assistant has correctly interpreted similar requests from the user before, are also considered when selecting the nodes.

[0210] The user data 748 includes user-specific information such as the user's unique vocabulary, user preferences, user address, the user's default and second languages, the user's contact list, and other short-term or long-term information for each user. In some examples, the natural language processing module 732 uses the user-specific information to complement the information included in the user input to further define the user's intent. For example, for the user request "Invite friends to my birthday party", the natural language processing module 732 can access the user data 748 to determine who the "friends" are and when and where the "birthday party" will be held, rather than asking the user to explicitly provide such information in the user request.

[0211] In some examples, it should be recognized that the natural language processing module 732 is executed using one or more machine learning mechanisms (e.g., neural networks). Specifically, the one or more machine learning mechanisms are configured to receive a candidate character representation and context information associated with the candidate character representation. The one or more machine learning mechanisms are configured to determine an intent confidence score over a set of candidate actionable intents based on the candidate character representation and the associated context information. The natural language processing module 732 can select one or more candidate actionable intents from the set of candidate actionable intents based on the determined intent confidence score. In some examples, an ontology (e.g., ontology 760) is also used to select one or more candidate actionable intents from the set of candidate actionable intents.

[0212] Other details of ontology searching based on token sequences are described in U.S. Utility Application No. 12 / 341,743, filed Dec. 22, 2008, entitled "Method and Apparatus for Searching Using An Active Ontology", the entire disclosure of which is incorporated herein by reference.

[0213] In some examples, when the natural language processing module 732 identifies an intent (or domain) that can be implemented based on the user request, the natural language processing module 732 generates a structured query to represent the identified implementable intent. In some examples, the structured query includes parameters of one or more nodes within the domain of the implementable intent, and at least some of the parameters are augmented with specific information and requirements specified in the user request. For example, the user says "Make a dinner reservation at a sushi restaurant at 7:00". In this case, the natural language processing module 732 can correctly identify that the implementable intent based on the user input is "restaurant reservation". According to this ontology, the structured query for the "restaurant reservation" domain includes parameters such as {dish}, {time}, {date}, {number of participants}, etc. In some examples, based on the text derived from the voice input using the voice input and STT processing module 730, the natural language processing module 732 generates a partially structured query for the restaurant reservation domain, and this partially structured query includes parameters of the parameters {dish = "sushi"} and {time = "7:00 PM"}. However, in this example, the user's utterance contains insufficient information to complete the structured query associated with the domain. Therefore, other necessary parameters such as {number of participants} and {date} are not specified in the structured query based on the currently available information. In some examples, the natural language processing module 732 adds the received context information to some of the parameters of the structured query. For example, in some examples, when the user requests a sushi restaurant "near me", the natural language processing module 732 adds the GPS coordinates from the user device to the {location} parameter in the structured query.

[0214] In some examples, the natural language processing module 732 identifies a plurality of candidate actionable intents for each of the candidate character representations received from the STT processing module 730. Further, in some examples, for each of the identified candidate actionable intents, a respective structured query (partial or complete) is generated. The natural language processing module 732 determines an intent confidence score for each candidate actionable intent and ranks the candidate actionable intents based on the intent confidence score. In some examples, the natural language processing module 732 passes one or more generated structured queries, including any completed parameters, to the task flow processing module 736 (the "task flow processor"). In some examples, the task flow processing module 736 is provided with one or more structured queries for the best m candidate actionable intents (e.g., the top m), where m is a predetermined integer greater than zero. In some examples, one or more structured queries for the best m candidate actionable intents are provided to the task flow processing module 736 along with the corresponding candidate character representations.

[0215] Other details of the estimation of the user's intent based on a plurality of candidate actionable intents determined from a plurality of candidate character representations of the voice input are described in U.S. Utility Application No. 14 / 298,725, filed June 6, 2014, entitled "System and Method for Inferring User Intent From Speech Inputs", the entire disclosure of which is incorporated herein by reference.

[0216] The task flow processing module 736 receives one or more structured queries from the natural language processing module 732, completes the structured queries, and, if necessary, performs the actions required to "complete" the user's final request. In some examples, the various procedures required to complete these tasks are provided in the task flow model 754. In some examples, the task flow model 754 includes procedures for obtaining additional information from the user and a task flow for performing actions associated with the actionable intents.

[0217] As described above, the task flow processing module 736 needs to initiate further interaction with the user to obtain additional information and / or resolve the ambiguity of potentially ambiguous utterances in order to complete the structured query. If such interaction is required, the task flow processing module 736 calls the dialogue flow processing module 734 to engage in interaction with the user. In some examples, the dialogue flow processing module 734 determines the way (and / or cases) to query the user for additional information, receives and processes the user response. Questions are provided to the user, and answers are received from the user via the I / O processing module 728. In some examples, the dialogue flow processing module 734 presents dialogue output to the user via voice and / or visual output, and receives input from the user via speech or physical (e.g., click) responses. Continuing with the above example, when the task flow processing module 736 calls the dialogue flow processing module 734 to determine the "number of participants" and "date" information of the structured query associated with the domain "restaurant reservation", the dialogue flow processing module 734 generates questions such as "For how many people?" and "On which day?" and passes them to the user. Upon receiving the answer from the user, the dialogue flow processing module 734 then adds the missing information to the structured query, or passes the information to the task flow processing module 736 to complete the missing information from the structured query.

[0218] When the task flow processing module 736 completes a structured query of the actionable intent, the task flow processing module 736 proceeds to execute the final task associated with the actionable intent. Thus, the task flow processing module 736 executes steps and instructions in the task flow model according to specific parameters included in the structured query. For example, the task flow model of the actionable intent of "restaurant reservation" includes steps and instructions to contact the restaurant and actually request a reservation for a specific number of participants at a specific time. For example, using a structured query such as: {restaurant reservation, restaurant = ABC Cafe, date = March 12, 2012, time = 7:00 PM, number of participants = 5}, the task flow processing module 736 executes the following steps: (1) log on to the server of ABC Cafe or a restaurant reservation system such as OPENTABLE (registered trademark), (2) enter the date, time, and number of participants information into the form on the website, (3) submit the form, and (4) make a calendar entry for the reservation in the user's calendar.

[0219] In some examples, the task flow processing module 736 uses the assistance of the service processing module 738 (the "service processing module") to complete the tasks requested in the user input or provide the information responses requested in the user input. For example, the service processing module 738 operates in place of the task flow processing module 736, makes a phone call, sets a calendar entry, invokes a map search, invokes or interacts with other user applications installed on the user device, and invokes or interacts with third-party services (such as a restaurant reservation portal, a social networking website, a banking portal, etc.). In some examples, the protocols and application programming interfaces (APIs) required by each service are specified by each service model in the service model 756. The service processing module 738 accesses the appropriate service model of the service and generates requests for the service according to the protocols and APIs required by the service according to the service model.

[0220] For example, if a restaurant enables an online reservation service, the restaurant submits a service model that specifies the parameters required for making a reservation and an API that communicates the values of the required parameters to the online reservation service. When there is a request from the task flow processing module 736, the service processing module 738 establishes a network connection with the online reservation service using the web address stored in the service model and sends the required reservation parameters (such as time, date, number of participants) to the online reservation interface in a format corresponding to the API of the online reservation service.

[0221] In some examples, the natural language processing module 732, the dialogue flow processing module 734, and the task flow processing module 736 together and repeatedly estimate and define the user's intention, obtain information for clarifying and refining the user's intention, and ultimately generate a response (i.e., an output to the user or completion of a task) that satisfies the user's intention. The generated response is a dialogue response to the voice input that at least partially satisfies the user's intention. Further, in some examples, the generated response is output as an audio output. In these examples, the generated response can be sent to a speech synthesis module 740 (e.g., a speech synthesizer) where it can be processed to synthesize the dialogue response in audio form. In still other examples, the generated response is data content related to satisfying the user request in the voice input.

[0222] In an example where the task flow processing module 736 receives a plurality of structured queries from the natural language processing module 732, the task flow processing module 736 first processes the first structured query of the received structured queries and attempts to complete the first structured query and / or execute one or more tasks or actions represented by the first structured query. In some examples, the first structured query corresponds to the most highly ranked actionable intent. In other examples, the first structured query is selected from the received structured queries based on a combination of the corresponding speech recognition confidence score and the corresponding intent confidence score. In some examples, if the task flow processing module 736 encounters an error during the processing of the first structured query (e.g., by being unable to determine a required parameter), the task flow processing module 736 can select and process a second structured query among the received structured queries that corresponds to a lower ranked actionable intent. The second structured query is selected based on, for example, the speech recognition confidence score of the corresponding candidate character expression, the intent confidence score of the corresponding candidate actionable intent, the missing required parameter in the first structured query, or any combination thereof.

[0223] The voice synthesis module 740 is configured to synthesize voice output to be presented to the user. The voice synthesis module 740 synthesizes voice output based on the text provided by the digital assistant. For example, the generated dialogue response is in the form of a character string. The voice synthesis module 740 converts the character string into an audible voice output. The voice synthesis module 740 uses any suitable voice synthesis technology for generating voice output from characters, including but not limited to concatenative synthesis, unit selection synthesis, diphone synthesis, domain-specific synthesis, formant synthesis, articulatory synthesis, hidden Markov model (HMM)-based synthesis, and sine wave synthesis. In some examples, the voice synthesis module 740 is configured to synthesize individual words based on a sequence of phonemes corresponding to the words. For example, a sequence of phonemes is associated with the words in the generated dialogue response. The sequence of phonemes is stored in the metadata associated with the words. The voice synthesis model 740 is configured to directly process the sequence of phonemes in the metadata and synthesize the words in voice form.

[0224] In some examples, instead of (or in addition to) using the voice synthesis module 740, voice synthesis is performed at a remote device (e.g., the server system 108), and the synthesized voice is sent to the user device and output to the user. For example, this can occur in some implementations where the output of the digital assistant is generated at the server system. Also, since the server system generally has more processing power and resources than the user device, higher quality voice output can be obtained than would be possible with client-side synthesis.

[0225] For more details on the digital assistant, see U.S. Utility Application No. 12 / 987,982, filed on January 10, 2011, entitled "Intelligent Automated Assistant", and U.S. Utility Application No. 13 / 251,088, filed on September 30, 2011, entitled "Generating and Processing Task Items That Represent Tasks to Perform", the entire disclosures of which are incorporated herein by reference. 4. Exemplary functions of a digital assistant that provides digital assistant services based on user input

[0226] Figures 2, 4, 6, 8A - 8B, 9A - 9C, 10A - 10C, 11A - 11D, 12A - 12C, 13A - 13B, 14 illustrate functions of a digital assistant operating on an electronic device to provide digital assistant services. In some examples, the digital assistant (e.g., digital assistant system 700) is executed by a user device according to various examples. In some examples, the user device, a server (e.g., server 108, device 820) or a combination thereof may execute the digital assistant system (e.g., digital assistant system 700). The user device can be executed, for example, using devices 200, 400, 600, 810A - C, 820, 830, 840, 1182, and / or 1186. In some examples, the user device is a device having audio output capabilities and network connectivity, a smartphone, a laptop computer, a desktop computer, or a tablet computer.

[0227] Figures 8A - 8B illustrate the functionality of providing a digital assistant service by one or more electronic devices 810A - C based on user input according to various examples. In some examples, the electronic device 810A (and similarly other electronic devices 810B - C) can include one or more audio input / output devices (e.g., a microphone and one or more speakers), and one or more network communication interfaces. The devices 810A and 810B - C are referred to collectively as the electronic device 810 or the device 810. The device 810A, and similarly the devices 810B - C, can include multiple speakers to provide surround sound. In some examples, the electronic device 810 can further include one or more indicators (e.g., lights) that provide device operation instructions. For example, one or more indicators of the device 810A can emit light to indicate that the device 810A is powered on, connected to the network, and outputting audio, etc. The devices 810A - C can be service extension devices for extending digital assistant services from other devices.

[0228] As shown in FIG. 8A, in some examples, a digital assistant operating on device 810A can be configured to communicatively couple to other electronic devices (e.g., devices 810B-C, 820, 830, and / or 840) via a direct communication connection such as Bluetooth, near-field communication (NFC), Bluetooth Low Energy (BTLE), or via a wired or wireless network such as a local WiFi network. For example, a digital assistant operating on device 810A can detect devices 810B-C via Bluetooth discovery and communicatively couple to devices 810B-C via a Bluetooth connection. As another example, a digital assistant operating on device 810A can detect a WiFi network and communicatively couple to devices 830 and 840 via the WiFi network. As another example, a digital assistant operating on device 810A can detect near-field communication when device 830 (e.g., a client device such as the user's smartphone) is in proximity to or physically touching device 810A. For example, to pair device 810A and device 830, user 804 can establish near-field communication between these two devices by tapping device 810A with device 830. As another example, a digital assistant operating on device 810A can detect that device 830 (e.g., a client device such as the user's smartphone) is within a predetermined distance (e.g., within the range of Bluetooth communication) and establish a connection with device 830. For example, when user 804 approaches or enters area 800 with device 830, the digital assistant operating on device 810A can detect that device 830 is within the communication range and thereby connect to device 830. As another example, a digital assistant operating on device 810A can establish a connection with device 830 based on one or more previously established connections between the two devices.For example, a digital assistant operating on device 810A can store a log file indicating devices it has connected to in the past and, optionally, connection parameters. Thereby, the digital assistant operating on device 810A can determine, for example, that it has previously connected to device 830. Based on such a determination, the digital assistant operating on device 810A can establish a connection with device 830.

[0229] In some examples, electronic device 820 can be a server, and devices 830 and 840 can be client devices located in the vicinity of electronic device 810. For example, device 820 can be a remotely located cloud server, and devices 830 and 840 can be the user's smartphone and TV set-top box, respectively. In some examples, the digital assistant operating on device 810A can receive a user input with a user request and / or provide an expression of the user request to one or more of devices 820, 830, and 840 after establishing one or more connections with at least one of devices 820, 830, and 840. The process of receiving a user input and providing an expression of the user request to devices 820, 830, and / or 840 will be described in more detail below. By establishing a connection before receiving a user input and providing an expression of the user request to other devices, the working efficiency and speed of providing a response to the user request can be improved. For example, by establishing a connection in advance, the digital assistant operating on device 810A can avoid wasting time establishing a connection after receiving a user input.

[0230] In some examples, after establishing a connection between device 810A and device 830 (e.g., a client device such as the user's smartphone), a digital assistant operating on device 810A and / or device 830 can notify device 820 (e.g., a server) of the established connection. As will be described in more detail below, a digital assistant operating on device 810A can provide an expression of the user request to one or both of device 820 and device 830 to obtain a response. Device 820 may be a remote device such as a server, and device 830 may be a device located in the vicinity of device 810A. Thereby, by notifying device 820 (e.g., a remote server) of the connection between device 810A and device 830, efficient operation can be facilitated. For example, as will be described below, in some embodiments, a digital assistant operating on device 810A can provide an expression of the user request to both device 820 and device 830. Device 820 and / or device 830 can determine that device 830 (e.g., a client device located in the vicinity of device 810A) can provide a response. Thereby, device 820 is notified that device 830 and device 810A are connected, so device 820 may not need to provide a response to device 810A. Instead, device 820 can provide a response in cooperation with device 830. In some examples, since device 830 (e.g., the user's smartphone) is located in the vicinity of device 810A, a response can be provided in a faster and more efficient manner.

[0231] In some examples, a digital assistant operating on device 810A can establish a connection with one or more devices having the same type. For example, as shown in FIG. 8A, a plurality of devices 810A - C can be used as service extension devices and can be arranged within area 800. Thereby, the digital assistant operating on device 810A can establish a connection with each of device 810B and device 810C. As will be described in more detail below, by establishing a connection between devices 810A, 810B, and 810C, any of the devices 810A - C arranged in area 800 can provide a response to user 804. This creates flexibility and improves user interaction efficiency. For example, user 804 can provide a voice input (e.g., "play music") to device 810A and receive a response from device 810C (e.g., music playback on device 810C).

[0232] In some embodiments, devices 810A - C can be service extension devices that extend digital assistant services from one device to another. For example, as shown in FIG. 8A, electronic devices 810A - C are arranged in the vicinity of electronic device 830 (e.g., a smartphone device) and / or electronic device 840 (e.g., a TV set - top box) to extend the digital assistant services provided by electronic device 830 and / or 840. In some examples, arranging devices 810A - C in the vicinity of devices 830 and / or 840 can include arranging devices 810A - C within a predetermined boundary surrounding devices 830 and / or 840, or within a predetermined distance from devices 830 and / or 840. For example, devices 810A - C can be arranged within the same house or building as device 830 or 840. As shown in FIG. 8A, user 804 may be physically present in or near area 800, which may include one or more rooms 871, 873, and 875. User 804 may be physically located within room 871, and electronic device 830 (e.g., the user's smartphone) may be arranged in another room 873. In some examples, even though device 830 may not be able to directly communicate with user 804 (e.g., device 830 may not be able to directly receive the user 804's voice input via its microphone), user 804 may want to access the digital assistant service provided by device 830. As will be described in more detail below, in some examples, devices 810A - C can function as service extension devices that extend the digital assistant service provided by device 830.

[0233] In some embodiments, one or more of devices 810A - C may or may not be associated with a single device or user. Devices 810A - C (e.g., service extension devices) can be shared by multiple users and can extend digital assistant services for multiple devices. In some examples, one or more of devices 810A - C can extend digital assistant services to multiple users. As shown in FIG. 8B, users 804 and 806 can share one or more of devices 810A - C. For example, user 804 may have an associated device 830 (e.g., user 804's smartphone or smartwatch), and user 806 may have an associated device 832 (e.g., user 806's smartphone or tablet). In some examples, a digital assistant operating on device 810A can establish a connection between device 810A itself and device 830, and a connection between device 810A itself and device 832. Thus, the digital assistant operating on device 810A can extend digital assistant services for one or both of devices 830 and 832. The ability to extend digital assistant services for multiple devices enables, for example, sharing devices 810A - C among multiple users (e.g., a family).

[0234] Referring back to FIG. 8A, in some embodiments, a digital assistant operating on an electronic device 810A can receive voice input representing a user request from a user 804. For example, the user 804 can provide one or more voice inputs such as "What's on my calendar for tomorrow?", "When is my first meeting?", "What's the weather?", or "Play Star Wars from my movie application". In some examples, the user request can be a request for information specific to the user 804. For example, voice inputs such as "What's on my calendar for tomorrow?" or "When is my first meeting tomorrow?" represent requests for information specific to the user 804. In some examples, the user request can be a request for non-user-specific information. For example, voice inputs such as "What's the weather tomorrow?" or "What's the stock price of AAPL today?" represent requests for information that is not specific to any particular user.

[0235] In some embodiments, the digital assistant operating on device 810A can receive additional audio input including predetermined content before receiving the user's voice input. In response to receiving the additional audio input, the digital assistant operating on digital 810A can activate device 810A. For example, device 810A may be placed in a standby mode or a low-power mode. Device 810A in standby mode or low-power mode can reduce power consumption and, in some examples, enhance the protection of the user's privacy. For example, during standby mode or low-power mode, the digital assistant operating on device 810A is enabled with only limited voice detection and / or voice processing capabilities. Other functions of device 810A (e.g., camera, display lamp, speaker, etc.) can be disabled. In some examples, during standby mode or low-power mode, the digital assistant operating on device 810A can still detect voice input and determine whether the voice input contains predetermined content such as "wake up, speaker" or "hey, speaker". Based on that determination, the digital assistant operating on device 810A can activate device 810A. In some examples, after device 810A is activated, device 810A exits the standby mode and switches to the normal operation mode. In the normal operation mode, the digital assistant operating on device 810A can execute additional functions.

[0236] As shown in FIG. 8A, in area 800 (e.g., a residence), a plurality of devices 810A - C can be arranged. In some examples, a voice input that activates one of devices 810A - C may or may not activate other devices placed nearby. For example, as described above, user 804 can provide a voice input including predetermined content (e.g., "Wake up, speaker") to device 810A. In some examples, device 810B may be arranged in another part of area 800 (e.g., in another room), and as a result, it may not receive the voice input. Consequently, device 810B may not be activated. In some examples, device 810B may be arranged near device 810A (e.g., in the same room) and may also receive a voice input including predetermined content. In some examples, a digital assistant operating on device 810A can determine, in conjunction with device 810B, which device should be activated. For example, digital assistants operating on device 810A and device 810B can detect and record the volume or sound pressure associated with the voice input. Based on a comparison of the sound pressure detected by device 810A and the sound pressure detected by device 810B, the position of the user relative to these two devices can be determined. For example, it can be determined that the user is physically closer to device 810A than to device 810B. As a result, it is possible not to activate device 810B while being able to activate device 810A. It is understood that the determination of which device should be activated can be based on the user's voice input (e.g., user 804 states "Living room speaker, wake up"), and / or any content information such as the user's preferences, the user's relative position, and the capabilities and attributes of the devices (e.g., one device is better at performing a certain task than another device).

[0237] In some embodiments, a digital assistant operating on the electronic device 810A can output one or more voice inquiries regarding a user request after receiving the user's voice input. For example, based on the user's voice input, the user's intent may not be determined or clarified, or the digital assistant operating on the device 810A may not have received the voice input properly. Thus, the digital assistant operating on the device 810A can output a voice inquiry such as "What is that?" or "I didn't quite understand that," thereby seeking clarification of the user request. As a result, the user 804 can provide one or more additional user inputs that clarify the user's request (e.g., repeat or rephrase the previous voice input) in response to the one or more voice inquiries. Also, the device 810A can receive one or more additional voice inputs.

[0238] In some embodiments, after receiving a user's voice input, the digital assistant operating on device 810A can obtain the identification information of user 804. In this way, electronic device 810A can extend the digital assistant service for multiple devices (e.g., devices 830 and 832) associated with one or more users (e.g., users 804 and 806 shown in FIG. 8B). Thereby, the digital assistant operating on electronic device 810A can obtain the identification information of the user to provide an extension of the digital assistant service from the appropriate device associated with a specific user (e.g., user 804 or user 806). FIGS. 9A - 9C show the functionality of obtaining the identification information of user 804 on electronic device 810A according to various examples. Referring to FIGS. 8A and 9A - 9C, in some examples, electronic device 810A can include an authentication module 912. The authentication module 912 can include one or more sensors such as a voice biometric sensor, a face recognition system, a fingerprint reader, an NFC sensor, etc. In some examples, as shown in FIG. 9A, the authentication module 912 can obtain authentication data 906 associated with user 804. In some examples, the authentication data 906 can include the user's voice biometrics and / or fingerprints, and / or the user's face recognition data. For example, the voice biometrics of user 804 can include the user's voice characteristics such as an acoustic pattern or a voiceprint. The face recognition data of user 804 can include the user's face features that can uniquely identify the user, such as the relative positions, sizes, and / or shapes of the eyes, nose, cheekbones, jaw, etc.

[0239] In some examples, the authentication data 906 can include sensing of another electronic device that identifies the user. For example, a digital assistant operating on device 810A can detect that a wearable device (e.g., a smartwatch) of user 804 is placed in the vicinity of device 810A, communicate with the wearable device via NFC (e.g., Bluetooth), and obtain the authentication data 906 from the wearable device (e.g., already authenticated on the user's wristwatch). As another example, a digital assistant operating on device 810A can detect that device 810A is physically in contact with the user's smartphone that identifies the user, communicate with the user's smartphone via NFC (e.g., Bluetooth), and obtain the authentication data 906 from the user's smartphone. In some examples, the authentication data 906 can include other credential information of the user, such as the user's fingerprint, password, etc. It is understood that a digital assistant operating on the electronic device 810A can obtain any authentication data associated with the user 804 in any form.

[0240] Referring to FIGS. 8A and 9A - 9C, a digital assistant operating on device 810A can obtain a determination of the identification information of user 804 based on authentication data 906. As shown in FIG. 9B, in some examples, a digital assistant operating on electronic device 810A can provide the obtained authentication data 906 to electronic device 830 to authenticate it. For example, a digital assistant operating on device 810A can provide the user's voice biometric data, the user's face recognition data, the user's fingerprint data, device sensing data, and / or other qualification information to electronic device 830. As described above, electronic device 830 may be a device associated with user 804 (e.g., the smartphone of user 804), and thus can store user identification information. Device 830 can determine whether the authentication data 906 received contains qualification information that matches the stored user identification information (e.g., password or fingerprint). If the authentication data 906 contains qualification information that matches the user identification information, device 830 can send a determination of the user identification information 910 of user 804 to device 810A.

[0241] Referring to FIG. 9C, as described above, the digital assistant operating on device 810A can provide authentication data 906 to device 830. In some embodiments, device 830 (e.g., a smartphone) may not be able to obtain the identification information of user 804, and thus can transfer the authentication data 906 to electronic device 820. For example, device 830 may not store voice biometric information that can identify the user, and thus may not be able to determine the identification information of user 804. Device 830 can thereby transfer the authentication data 906 to device 820. In some examples, device 820 can be remotely located from devices 810A and 830. For example, device 820 can be a server communicatively coupled to devices 810A and 830 via network 850. Device 820 can store user identification information, and thereby can determine whether the authentication data 906 includes qualification information that matches the stored identification information. If device 820 determines that the authentication data 906 includes qualification information that matches the user identification information of user 804, device 820 can send the determination of the user identification information 926 of user 804 to device 810A. In some examples, device 820 can send the determination of the user identification information 926 of user 804 directly to device 810A. In some examples, device 820 can send the determination of the user identification information 926 of user 804 to device 830, and then device 830 can transfer it to device 810A.

[0242] In some examples, the acquisition of the identification information of user 804 can be based on voice input including predetermined content. As described above, the digital assistant operating on device 810A can activate device 810A based on voice input including predetermined content (e.g., "Wake up, speaker", "Hey, speaker"). The voice input including predetermined content can also be used to determine the voice biometrics of user 804, which may include characteristics of the user's voice such as an acoustic pattern or a voiceprint. As a result, the voice input including predetermined content (e.g., the voice input for activating device 810A) can be used to identify user 804 in the same manner as described above.

[0243] Figures 10A - 10C show the functionality of providing a digital assistant service based on user requests for information, according to various examples. Referring to FIGS. 8A and 10A - 10C, the digital assistant operating on electronic device 810A can provide the expression of user request 1008 to at least one of device 820 or device 830 according to the acquired user identification information. As described above, in some examples, device 820 may be a server remotely located from devices 810A - C and 830. Device 830 may be a client device associated with user 804 (e.g., the user's smartphone) and may be located in the vicinity of devices 810A - C (e.g., in the same house or building).

[0244] In some embodiments, the digital assistant operating on device 810A can provide an expression of user request 1008 to a device located in the vicinity of device 810A before providing the expression of user request 1008 to the remote device. As shown in FIG. 10A, user 804 can provide voice input 1006 such as "When is my first meeting tomorrow?". Thus, voice input 1006 includes, for example, a user request for information regarding the time of user 804's first meeting the next day. In some embodiments, the digital assistant operating on device 810A can determine whether device 830 is communicatively coupled to device 810A. For example, the digital assistant operating on device 810A can detect whether device 830 is within the communication range or whether a connection can be established via NFC such as Bluetooth or WiFi connection. In accordance with the determination that device 830 is communicatively coupled to device 810A, the digital assistant operating on device 810A can provide an expression of user request 1008 to device 830. In some embodiments, device 830 is a device located in the vicinity of device 810A (e.g., the user's smartphone), and the digital assistant operating on device 810A may not need to further provide an expression of the user request to a remote device such as device 820 shown in FIG. 8A. As a result, the user request is not transmitted remotely and can remain within a device located in the vicinity of device 810A (e.g., the user's personal device). By providing the expression of user request 1008 only to device 830 located in the vicinity of device 810A, a response from device 830 can be obtained quickly and efficiently without consuming communication time with the remote device. As a result, the response speed to user requests at device 810A can be improved. Also, the user request (e.g., the user request included in voice input 1006) may include a request for confidential or private user-specific information (e.g., the user's calendar information).As a result, due to privacy concerns, it may be desirable not to send the expression of user request 1008 to a remote device such as a cloud server.

[0245] As shown in FIG. 10A, in some examples, device 830 receives the expression of user request 1008 from device 810A and determines whether it can provide a response to this user request. For example, as described above, the user request may include a request for information on the time of the user 804's first meeting the next day. Device 830 can determine that the calendar information of user 804 is stored in device 830, and thereby determine that it can provide a response to the user request. Therefore, device 830 can send response 1010 to the user request to device 810A. Response 1010 can include, for example, the time of the user 804's first meeting the next day. The digital assistant operating on device 810A can receive response 1010 to the user request from device 830 and provide the expression of response 1010 to user 804. As shown in FIG. 10A, the digital assistant operating on device 810A can provide an audio output 1012 such as "The first meeting is at 9:00 am tomorrow."

[0246] In this way, the digital assistant operating on device 810A can determine whether device 830 is communicatively coupled to device 810A. For example, the digital assistant operating on device 810A can detect whether device 830 is within the communication range and whether a connection can be established between the two devices via a Bluetooth or WiFi connection. Referring to FIG. 10B, in some embodiments, the digital assistant operating on device 810A can determine that device 830 is not communicatively coupled to device 810A. For example, since device 830 is out of the communication range or a connection cannot be established between the two devices, the digital assistant operating on device 810A may not be able to detect device 830. In accordance with the determination that device 830 is not communicatively coupled to device 810A, the digital assistant operating on device 810A can provide the expression of user request 1008 to device 820. As described above, device 820 can be a remote device such as a server. In some examples, the digital assistant operating on device 810A can provide the expression of user request 1008 to device 820 via network 850.

[0247] In some embodiments, as shown in FIG. 10B, device 820 receives an expression of user request 1008 from device 810A and determines whether it can provide a response to this user request. For example, as described above, the user request may include a request for information on the user 804's first meeting time the next day. Device 820 determines that device 820 stores or has access to the user 804's calendar information (e.g., stored in the user 804's cloud account), whereby device 820 can determine that it can provide a response to the user request. Thus, device 820 can send a response 1014 to the user request to device 810A. The response 1014 to the user request may include, for example, the time of the user's first meeting the next day. Device 810A can receive the response 1014 to the user request from device 820 and provide an expression of the response 1014 to user 804. As shown in FIG. 10B, a digital assistant operating on device 810A can provide an audio output 1012 such as "Your first meeting is at 9:00 am tomorrow." In some examples, after providing a response to user 804, device 810A can continue to monitor subsequent voice inputs.

[0248] Referring to FIG. 10C, in some embodiments, user 804 can provide voice input 1020 such as "What is the AAPL stock price today?". This type of voice input represents a user request for non-user-specific information. Non-user-specific information is not specific to a particular user and may be general information such as weather information, stock price information, sports game information, etc. In some embodiments, as shown in FIG. 10C, a digital assistant operating on device 810A can provide an expression of the user request 1022 for non-user-specific information to device 820 rather than to device 830. As described above, device 820 may be a server remotely located from device 810A, and device 830 may be the user's smartphone located in the vicinity of device 810A. In some embodiments, non-user-specific information (e.g., weather, stock price, game score, etc.) may not be available and / or may not be updated on device 830 (e.g., the user's smartphone). Accordingly, device 810A can determine that it is more appropriate and efficient to obtain non-user-specific information from a remote device (e.g., a server) rather than from a device located in the vicinity of device 810A (e.g., the user's personal device). Thus, a digital assistant operating on device 810A can provide an expression of the user request 1022 for non-user-specific information to device 820 (e.g., a server) via network 850.

[0249] As shown in FIG. 10C, device 820 receives an expression of user request 1022 from device 810A, and device 820 determines that it can provide a response to the user request. For example, as described above, the user request can include a request for AAPL stock price information. Device 820 can determine that device 820 can obtain information from a relevant data source (e.g., a financial website) and thus can provide a response to the user request. Thereby, device 820 can send a response 1024 to the user request to device 810A. The response 1024 to the user request can include, for example, the current stock price of AAPL. The digital assistant operating on device 810A can receive the response 1024 from device 820 and can provide an expression of the response 1024 to user 804. As shown in FIG. 10C, the digital assistant operating on device 810A can provide an audio output 1026 such as "The closing price of AAPL today was $200."

[0250] Figures 11A - 11D illustrate the functionality of providing digital assistant services based on user requests for task execution according to various examples. Referring to FIGS. 11A and 11B, in some embodiments, user 804 can provide an audio input 1106 representing a user request for task execution. For example, the audio input 1106 may include "Play the mighty wing of Top Gun". The audio input 1106 thereby represents a request for task execution of playing a specific piece of music. In some examples, a digital assistant operating on device 810A may not be able to determine whether a response to the user request can be provided by device 830 (e.g., a device such as user 804's personal smartphone located in the vicinity of device 810A) or device 820 (e.g., a remote server) (e.g., due to insufficient information). In the above example, device 810A may not have sufficient information to determine whether the user 804's smartphone or server stores the song "mighty wing". Therefore, a digital assistant operating on device 810A can provide the representation of the user request 1108 to both device 830 and device 820.

[0251] As shown in FIG. 11A, both device 820 and device 830 receive an expression of user request 1108 (e.g., a user request for task execution). One or both of device 820 and device 830 can determine whether each device can provide a response to user request 1108. For example, device 830 can determine whether it stores the song "Mighty Wing", and if it does, device 830 can determine that it can provide the response. Device 820 can make a similar determination. In some examples, the determination can be made separately and independently by device 820 and device 830. For example, both device 820 and device 830 can determine whether they store the song "Mighty Wing" and communicate the result of the determination to other devices. In some examples, one of device 820 or device 830 can first make the determination and then send a notification to the other device. For example, device 830 can determine whether the song "Mighty Wing" is stored in device 830 and send a notification of the determination to device 820. If device 830 determines that device 830 stores the song "Mighty Wing", device 830 can send a corresponding notification to device 820 so that device 820 does not make a further determination. If device 830 determines that device 830 does not have the song "Mighty Wing", device 830 can send a corresponding notification to device 820, and then device 820 can then determine whether device 820 stores the requested song or has access rights to the song. Similarly, device 820 can first make the determination and then send a notification to device 830. In some embodiments, a digital assistant operating on device 810A can cause one or both of device 820 and device 830 to determine whether each device can provide a response to a user request.For example, the representation of user request 1108 sent to devices 820 and 830 may include an explicit or implicit request asking one or both of devices 820 and 830 to determine whether one or both of devices 820 and 830 can provide the requested response.

[0252] As shown in FIG. 11A, in some examples, device 820 (e.g., a server) can determine that it can provide a response to a user request, and device 830 (e.g., the user's smartphone) can determine that it cannot provide a response to the user request. For example, device 820 can determine that device 820 stores or has access to the requested song "Mighty Wing", and device 830 can determine that device 830 does not store the song. Accordingly, device 820 can provide response 1112 to user request to device 810A. For example, device 820 can stream the song "Mighty Wing" to device 810A. Device 810A receives response 1112 from device 820 and provides the representation of response 1112 to user 804. For example, a digital assistant operating on device 810A receives the streaming of the song "Mighty Wing" and provides an audio output 1114 of the song.

[0253] Referring to FIG. 11B, in some examples, the device 830 (e.g., the user's smartphone) can determine that it can provide a response to the user request, and the device 820 (e.g., the server) can determine that it cannot provide a response to the user request. For example, the device 830 can determine that it stores the song "Mighty Wing", and the device 820 does not store the song and can determine that it cannot access the requested song without further user interaction (e.g., asking the user to purchase the song). Accordingly, the device 830 can provide the response 1112 to the user request to the device 810A. For example, the device 830 can stream the song "Mighty Wing" to the device 810A. The digital assistant operating on the device 810A receives the response 1122 from the device 830 and provides the presentation of the response 1122 to the user 804. For example, the device 810A receives the streaming of the song "Mighty Wing" and provides the audio output 1124 of the song.

[0254] Referring to FIGS. 11A and 11B, in some examples, both device 830 (e.g., the user's smartphone) and device 820 (e.g., a server) can each be determined to be able to provide a response to a user request. For example, device 830 can be determined to store the song "Mighty Wing", and device 820 can be determined to either also store the requested song (e.g., in the user's cloud account) or be able to access the song without further user interaction (e.g., without the user having to purchase the song). Thus, either device 820 or device 830 can provide a response to the user request to device 810A. In some examples, the selection of the device providing the response from among multiple devices can be based on predetermined conditions. For example, the predetermined conditions can include a pre-set policy (e.g., if two or more devices can provide a response, device 830 is the default device providing the response), a connection bandwidth condition (e.g., the device having a higher bandwidth connection is the device providing the response), a user preference condition (e.g., to conserve cellular data usage, the user prefers to use the device connected to device 810A via Wi-Fi for providing the response), etc. Based on the predetermined conditions, one of device 820 and device 830 can stream the song "Mighty Wing" to device 810A. The digital assistant operating on device 810A receives the response to the user request and provides the presentation of that response to the user. For example, device 810A receives the streaming of the song "Mighty Wing" and provides an audio output of that song.

[0255] Referring to FIG. 11C, in some embodiments, user 804 can provide an audio input 1126 that represents a user request for task execution. The audio input 1126 can include, for example, "Play Star Wars movie". A digital assistant operating on device 810A receives the audio input 1126. In some examples, instead of providing the expression of user request 1128 to a remote device (e.g., device 820 such as a server), device 810A can provide the expression of user request 1128 to a device (e.g., device 840) disposed in the vicinity of device 810A. The digital assistant operating on device 810A may not provide the expression of user request 1128 to the remote device for several reasons. For example, the digital assistant operating on device 810A determines that information is likely to be available on a device (e.g., device 840 such as a TV set-top box) disposed in the vicinity of device 810A, there is no or weak connection to the remote device, the bandwidth to the remote device is limited or poor, a predetermined configuration requires providing the expression of the user request to a device (e.g., a device connected to device 810A via Wi-Fi) in the vicinity of device 810A, etc. As described above, device 840 may be a TV set-top box disposed in the vicinity of device 810A, and device 820 may be a remotely located server. In some examples, the digital assistant operating on device 810A can be configured to always provide the expression of the user request to a device (e.g., device 840) disposed in the vicinity of device 810A. In some examples, the digital assistant operating on device 810A can be configured to provide the expression of the user request to a device (e.g., device 840) disposed in the vicinity of device 810A or a remote device (e.g., device 820) based on the type and / or content of the user request.As described above, in some examples, if the user request is a request for user-specific information, the digital assistant operating on device 810A can provide an expression of the user request to a device (e.g., the user's smartphone) located in the vicinity of device 810A, and if the user request is a request for non-user-specific information, device 810A can provide an expression of the user request to a remote device (e.g., a server).

[0256] As shown in FIG. 11C, device 840 receives an expression of user request 1128 that can cause device 840 to determine whether device 840 can provide a response to the user request. For example, device 840 may store "Star Wars" and determine that it can provide a response to device 810A. As another example, device 840 can determine that it stores data including the user's personal calendar, contacts, photos, media items, etc., and thereby use this stored data to provide a response to a user request for information or task execution. In accordance with the determination that device 840 can provide a response to the user request, device 840 can provide response 1134 to device 810A. For example, device 840 can stream the movie "Star Wars" to device 810A. The digital assistant operating on device 810A receives response 1134 from device 810A and provides an expression of response 1134 to the user. For example, the digital assistant operating on device 810A can use its display and speaker to provide audio output 1136 (e.g., play the movie "Star Wars"). In some examples, device 840 can provide at least a portion of the response to device 810A while providing other portions of the response to one or more other devices. For example, device 840 can provide the audio portion of the movie "Star Wars" to device 810A while providing the video portion of this movie to device 1137 (e.g., a TV).

[0257] Referring to FIG. 11C, as described above, the device 840 receives an expression of a user request 1128 that can determine whether the device 840 can provide a response to the user request. In some examples, the device 840 can determine that it cannot provide a response to the user request. For example, the device 840 does not store the movie "Star Wars" and thus can determine that it cannot provide a response. As another example, the device 840 can determine that the user request is for information (such as stock information, web search request, etc.) not stored in the device 840, and thus the device 840 can determine that it cannot provide a response.

[0258] As shown in FIG. 11C, in accordance with the determination that device 840 cannot provide a response to the user request, device 840 can transfer the representation of user request 1128 to device 820 via network 850. As described above, device 820 can be a server. Device 820 can determine whether it can provide a response based on the representation of user request 1128. For example, device 820 can determine whether it stores the requested movie, or whether the requested movie is accessible from user 804's cloud account or a web source (e.g., a media website). If device 820 determines that it stores the requested movie or that the requested movie is accessible, device 820 determines that it can provide a response. In some examples, device 820 can provide response 1132 to device 840, and device 840 can then transfer it to device 810A and optionally device 1137 (e.g., a TV). In some examples, device 820 can provide response 1132 directly to device 810A and optionally device 1137. For example, device 820 can send the video portion of the movie "Star Wars" to device 1137 (via device 840) while sending the audio portion of the movie "Star Wars" to device 810A. The digital assistant operating on device 810A, and optionally device 1137, receive response 1132 and provide the representation of response 1132 to the user. For example, the digital assistant operating on device 810A, and optionally device 1137, can provide an output 1136 based on the received response 1132 (e.g., play the movie "Star Wars").

[0259] Using the example shown in FIG. 11C, instead of providing voice input 1126, user 804 can provide voice input such as "Play Star Wars on my TV and set another screen on my computer." Similarly, a digital assistant operating on device 810A provides an expression of the user request to device 840, and based on a determination of whether device 840 (e.g., a TV set top box located near device 810A) or device 820 (e.g., a server) can provide a response, a response to the user request can be received from device 840 or device 820. In some embodiments, the user request can instruct to provide a response to the user request to multiple devices. Thereby, device 840 and / or device 820 can provide the response appropriately. For example, a digital assistant operating on device 810A can receive a part of the response (e.g., the audio part of the movie), device 1137 can receive another part of the response (e.g., the video part of the movie), and another device (e.g., the user's computer) can receive a copy of the response (e.g., a copy of the audio part and video part of the movie). In some examples, user 804 may want to watch a movie using a device such as their computer or tablet instead of device 810A. User 804 can provide voice input such as "Play Star Wars on my computer" or "Play Star Wars on my tablet." The voice input may be provided as an initial input to start task execution (e.g., start playing Star Wars). The voice input may also be provided as a subsequent input while the task is being executed (e.g., while device 840 is streaming the movie to device 810A and / or device 1137). Similarly, device 810A can provide an expression of the user request to device 840 and / or device 820. The expression of the user request can indicate that the response is to be provided to the user's computer or tablet (not shown in FIG. 11C).As a result, the user's computer or tablet can receive a response to the user request from device 840 (e.g., a TV set-top box disposed in the vicinity of device 810A) or device 820 (e.g., a server) based on a determination of whether device 840 or device 820 can provide a response.

[0260] Referring to FIG. 11D, in some embodiments, user 804 can provide a voice input 1152 such as "Call Jane and have a meeting with Kevin". A digital assistant operating on device 810A can receive the voice input 1152 and provide a representation of the user request 1154 to device 830 (e.g., the user's smartphone). The user request 1154 can include a request to perform a task on device 830 (e.g., call Jane and have a meeting with Kevin). Device 830 receives the representation of the user request 1154 and determines that device 830 can perform the task. As previously described in connection with FIGS. 1-7C, and as is the case in other examples, a natural language processing module of a digital assistant operating on device 830 (and / or device 810A) can identify actionable intents based on the user request and generate a structured query representing the identified actionable intents. For example, in that way, device 830 can determine whether the actionable intent based on voice input 1152 is "to make a call". In some examples, the digital assistant can actively elicit and obtain the information necessary to sufficiently infer the user's intent (e.g., by resolving word ambiguities, eliciting further clarification input from the user, and / or using context information such as the user's contact list). The structured query for "make a call" can include parameters such as {call recipient}, {phone number}, etc. Next, the task flow processing module of the digital assistant can receive the structured query and execute the actions necessary to provide a response to the user request. Thereby, device 830 can perform a task in response to user request 1154 (e.g., call device 1182 of user 1194 and have a meeting on device 1186 of user 1196). Based on the execution of the task, device 830 can also provide a response 1157 to device 810A. For example, a digital assistant operating on device 810A can receive from device 830 a response 1157 indicating that a meeting with user 1194 (e.g., Jane) and user 1196 (e.g., Kevin) has been established.As a result, the digital assistant operating on device 810A can provide an audio output 1162 such as "Jane and Kevin are connected."

[0261] Figures 12A - 12C illustrate the function of providing a digital assistant service based on user requests for information according to various examples. Referring to Figure 12A, user 804 can provide a voice input 1206 such as "Find Jane's mobile phone number." As a result, the voice input 1206 represents a user request for a phone number. The digital assistant operating on device 810A receives the voice input 1206 and provides an expression of the user request 1208 via network 850 to a remote device (e.g., device 820 such as a server) rather than to a device (e.g., device 830 such as the user's smartphone) located in the vicinity of device 810A. The digital assistant operating on device 810A may not provide an expression of the user request 1208 to a device located in the vicinity of device 810A for several reasons. For example, the digital assistant operating on device 810A may determine that information is unlikely to be available on a device (e.g., device 830) located in the vicinity of device 810A, that there is no connection or a weak connection to a device in the vicinity of device 810A (e.g., device 830 is outside the communication range of device 810A), that the bandwidth for a device located in the vicinity of device 810A is limited or poor, that a given configuration requires providing an expression of the user request to a remote device, etc.

[0262] In some embodiments, device 820 can receive an expression of user request 1208 that can cause device 820 to determine whether device 820 can provide a response to the user request. For example, device 820 can determine that the user 804's cloud account stores the requested phone number and, thus, can provide a response to the user request. In accordance with the determination that device 820 can provide a response to the user request, device 820 can provide response 1210 to device 810A. For example, device 820 can provide Jane's phone number to device 810A. A digital assistant operating on device 810A receives response 1210 from device 820 and provides an expression of response 1210 to user 804. For example, a digital assistant operating on device 810A can provide an audio output 1212 such as "Jane's number is 123-456-7890".

[0263] Referring to FIG. 12B, similar to FIG. 12A, after the device 810A receives an audio input 1226 such as "Find Jane's phone number", the device 810A can provide an expression of the user request 1228 to the device 820 via the network 850. In some embodiments, the device 820 receives the expression of the user request 1228, and this user request can cause the device 820 to determine whether it can provide a response to the user request 1228. For example, the device 820 can determine that the user 804's cloud account does not store Jane's phone number, and thus cannot provide a response to the user request. In accordance with the determination that the device 820 cannot provide a response to the user request, the device 820 can transfer the expression of the user request 1228 to the device 830. The device 830 may be a device located in the vicinity of the device 810A or a device associated with the user 804 (e.g., a personal device of the user 804 such as a smartphone). Similar to the above, the device 830 can determine whether it can provide a response to the user request (e.g., whether it stores Jane's phone number), and provide a response 1232 to the device 810A in accordance with that determination. For example, in accordance with the determination that the device 830 can provide Jane's phone number, the device 830 can provide Jane's phone number to the device 810A. The digital assistant operating on the device 810A receives the response 1232 from the device 830 and provides the expression of the response 1232 to the user. For example, the digital assistant operating on the device 810A can provide an audio output 1234 such as "Jane's number is 123-456-7890". In some examples, the digital assistant operating on the device 810A can receive a response directly from the device 830. As described below, in some embodiments, the device 830 can provide a response to the device 820, and then the device 820 can transfer this response to the device 810A.

[0264] Referring to FIG. 12C and continuing with the above example described in relation to FIG. 12B, the digital assistant operating on device 810A can receive response 1252 indirectly from device 830. For example, device 830 can provide response 1252 (e.g., Jane's phone number) to device 820 (e.g., a server), and device 820 can then forward response 1252 to device 810A. The digital assistant operating on device 810A receives response 1252 from device 820 and provides an expression of response 1252 to user 804. For example, the digital assistant operating on device 810A can provide an audio output 1256 such as "Jane's number is 123-456-7890".

[0265] Figures 13A - 13B illustrate the functionality of providing digital assistant services in a first electronic device or an additional electronic device according to various examples. Referring to FIG. 13A, as described above, the plurality of devices 810A - C can be service extension devices that extend the digital assistant service from one device to another. For example, as shown in FIG. 13A, the devices 810A - C can be arranged in the vicinity of a device 830 (e.g., the smartphone device of user 804) to extend the digital assistant service provided by the device 830. In some examples, arranging the plurality of devices 810A - C in the vicinity of the device 830 can include arranging the devices 810A - C within a predetermined boundary or distance of the device 830. For example, the devices 810A - C may be arranged within the same house or building as the device 830. As shown in FIG. 13A, in some embodiments, the devices 810A - C may be arranged to extend the digital assistant service to another part of the area 1300. As shown in FIG. 13, the area 1300 can include, for example, a living room 1320, an office 1340, and a bedroom 1360. In some examples, the device 810A can be arranged within the living room 1320, the device 810B can be arranged within the office 1340, and the device 810C can be arranged within the bedroom 1360. As described above, the devices 810A - C can be communicatively coupled to each other and to other devices (e.g., devices 820 and 830).

[0266] As shown in FIG. 13A, user 804 may be located within living room 1302 where device 810A is disposed. User 804 may provide voice input 1306 such as "play light music on the bedroom speaker" to device 810A, thinking that he / she wants to go to bed while playing some light music. A digital assistant operating on device 810A receives voice input 1306 representing the user's request. Similar to the above, device 810A can provide an expression of the user's request to at least one of device 830 (e.g., the user's smartphone disposed in the vicinity of device 810A) or device 820 (e.g., a remotely disposed server). At least one of device 820 or device 830 determines whether each device can provide a response to the user's request and provides a response to device 810A. Next, a digital assistant operating on device 810A can provide an expression of the response (e.g., an audio output) to user 804.

[0267] In some embodiments, the digital assistant operating on device 810A can determine whether to provide the expression of the response by device 810A or another device before providing the expression of the response to user 804. For example, the voice input 1306 may include "Play light music on the speaker in the bedroom", whereby the digital assistant operating on device 810A can determine that the user's intention is not on device 810A but to play music on device 810C placed in the bedroom 1360. This determination can be made, for example, using the natural language processing described above. In accordance with the determination that the expression of the response is not provided by device 810A, device 810A can forward the response to device 810C placed in the bedroom 1360 or cause the response to be provided to device 810C. Thereby, device 810C can provide the audio output 1310 that plays the light music requested by the user. In other examples, device 810A can provide the expression of the response to user 804 itself in accordance with the determination that the expression of the response should be provided by device 810A. As described above, the plurality of devices 810A - C can be placed within area 1400. In some examples, the digital assistant (the digital assistant operating on devices 810A, 810B, 810C, device 830, etc.) can determine the locations of devices 810A - C (e.g., based on the initial configuration). For example, during the initial configuration, a name such as "living room" can be assigned to the device or set of devices based on its location within the user's home. In some embodiments, the name of the device or set of devices is a default name such as "Device 1" or "Device 1 - living room". In some embodiments, the location of the device (e.g., room name) and other device configurations are included in the configuration data. During the configuration process, the device receives and stores the configuration data.

[0268] As described above, a digital assistant operating on device 810A can determine whether an expression of a response should be provided by device 810A or another device before providing the expression of the response to user 804. In some examples, such a determination can be based on a user request represented by a user's voice input (e.g., "Play soft music on the bedroom speaker"). In some examples, such a determination can be based on at least one of detection of the user's location or tracking of the user's movement. Referring to FIG. 13B, user 804 can be located within living room 1302 where device 810A is disposed. User 804 can provide voice input 1326 such as "Play soft music" to device 810A while thinking of going to office 1340 while listening to some soft music. Voice input 1326 does not indicate which of devices 810A - C the user wants to play music on. A digital assistant operating on device 810A receives voice input 1326 representing the user request. Similar to the above, device 810A can provide an expression of the user request to at least one of device 830 (e.g., the user's smartphone disposed in the vicinity of device 810A) or device 820 (e.g., a remotely disposed server). At least one of device 820 or device 830 determines whether each device can provide a response to the user request and provides a response to device 810A.

[0269] Before providing a response representation to user 804, device 810A can determine whether a response representation (e.g., an audio output) should be provided by device 810A or another device. In some examples, device 810A can make such a determination based on at least one of detecting the location of user 804 or tracking the movement of user 804. For example, device 810A can detect that user 804 is in living room 1320 but is moving towards office 1340. Device 810A can use one or more sensors such as motion sensors, a positioning system, a camera, etc. to detect the location and / or movement. In accordance with the determination that user 804 is moving towards office 1340, a digital assistant operating on device 810A can determine that the user's intention is to play music on device 810B located within office 1340 rather than on device 810A, or that music playback should be started on device 810A but continued (optionally interrupted on device 810A) on device 810B located within office 1340. In accordance with the determination that the response representation is not to be provided by device 810A, device 810A can forward the response to device 810B located within office 1340 or cause the response to be provided to device 810B. Thereby, device 810B can provide an audio output 1328 that plays the light music requested by the user.

[0270] In another example, in accordance with the determination that the device 810A provides a representation of the response (e.g., the user 804 is in the living room 1320 and not moving), the device 810A can itself provide a representation of the response to the user 804. A digital assistant operating on the device 810A can, based on any contextual information such as the user's preferences (e.g., the user 804 prefers to listen to music before bedtime), past devices used to provide responses, device attributes, and capabilities (e.g., the device 810A can provide better sound than the device 810B), determine whether the response should be provided from the device 810A or another device.

[0271] FIG. 14 shows functionality for realizing continuity of a digital assistant service among different electronic devices according to various examples. As shown in FIG. 14, a digital assistant operating on the device 810A can provide a response 1406 to the user 804 (e.g., play music). While the device 810A is in the process of providing the response 1406, the user 804 may move outside the area 1400 where the device 810A is located. For example, the user 804 may need to leave home and go to work. In some embodiments, a digital assistant operating on the device 810A can determine whether the response 1406 should continue to be provided by another electronic device. As an example, while the device 810A is providing the response 1406, the user 804 can give a voice input such as "Continue playing music on my smartphone." The device 810A can receive this voice input and determine that the user's intention is to continue playing music on the device 830 (e.g., the user's smartphone). Such a determination can be made using the natural language processing techniques described above. Based on the determined user intention, the device 810A can determine that the response 1406 should continue to provide music on a different device.

[0272] In some embodiments, user 804 can also provide an audio input, such as "continue playing music on my smartphone", to device 830 instead of device 810A. Based on the audio input and context information (e.g., device 810A is currently providing audio output), device 830 can determine that the user's intention is to continue executing the task being performed on device 810A. For example, device 830 can communicate with device 810A (and other devices communicatively coupled to device 830) to determine the status information of device 810A. The status information of device 810A can indicate that device 810A is currently playing music. Thereby, device 830 can determine that the user's intention is to continue playing the music currently being played on device 810A. Based on this determination, device 830 can communicate with device 810A to continue executing the task currently being performed by device 810A. For example, device 830 can obtain content and / or metadata (e.g., a timestamp related to the currently playing music), continue playing the music by device 830, and cause device 810A to stop playing.

[0273] As another example shown in FIG. 14, while the digital assistant operating on device 810A provides response 1406, device 810A can perform at least one of detecting the user's location or tracking the user's movement. Device 810A can detect location and / or movement using, for example, one or more sensors such as motion sensors, a positioning system, a camera, etc. As an example, device 810A can continuously or periodically track the current location and / or movement of user 804. In some examples, device 810A can detect whether a change in the location of user 804 relative to device 810A meets a predetermined condition. For example, device 810A can detect that user 804 has moved outside a predetermined boundary of area 1400 (e.g., a residence). As a result, device 810A can determine that response 1406 should continue to be provided on a different device.

[0274] As another example, while device 810A is in the process of providing response 1406, device 810A can detect the movement of a device associated with user 804 (e.g., device 830 such as the user's smartphone). For example, device 810A can determine that the communication signal strength of device 830 has decreased over a short period of time, indicating that device 830 is likely to have moved outside the boundary of area 1400. As a result, device 810A can determine that response 1406 should continue to be provided on a different device (e.g., device 830).

[0275] In some embodiments, in accordance with a determination that response 1406 should continue to be provided by another electronic device, device 810A can cause response 1406 to continue to be provided by one or more other electronic devices. For example, device 810A can send to device 830 (e.g., the user's smartphone) the remaining content of response 1406 (e.g., the rest of response 1406) and / or metadata related to the provision of response 1406 (e.g., a timestamp of the currently playing media streamed from device 820 or device 830). In some examples, device 810A can also send a notification to another device (e.g., device 820) from which the content of response 1406 was obtained. The notification can instruct or request that response 1406 should continue to be provided by another device and, thus, that the content of response 1406 should be provided to that device. Device 830 can continue to provide response 1406 to user 804 based on the received remaining content and / or metadata. Further details of the continuous provision of digital assistant services across different devices are described in U.S. patent application Ser. No. 15 / 271,766, filed Sep. 21, 2016, entitled "INTELLIGENT DIGITAL ASSISTANT IN A MULTI-TASKING ENVIRONMENT", the entire content of which is incorporated herein by reference and included in the appendix.

[0276] In the above description regarding FIGS. 8A-8B, 9A-9C, 10A-10C, 11A-11D, 12A-12C, 13A-13B, and 14, device 820 can be a remote device such as a server. In some embodiments, the device can operate as a proxy device for device 820 and can be placed in the vicinity of devices 810A-C. As an example, referring back to FIG. 8A, device 840 (e.g., a TV set-top box) can operate as a proxy device for device 820 (e.g., a remote server). The proxy device can operate as an intermediary for requests from a client device (e.g., device 810A) seeking resources from other devices (e.g., a server). As a proxy, device 840 can operate to process requests from a plurality of home automation devices (e.g., a smart thermostat, a smart door, a smart light switch, etc.). For example, based on a user's voice input (e.g., voice input received via device 810A), the smart thermostat can be requested to perform a task of adjusting the temperature and / or humidity level. The smart thermostat can thereby communicate with device 840 to request current temperature and humidity data from various sensors. Device 840 can thereby operate as a proxy to relay the request to the appropriate device and / or sensor and provide the data to the smart thermostat. 5. Exemplary functions of a digital assistant that provides a digital assistant service based on notification of an event

[0277] Figures 2, 4, 6, 15A - 15G illustrate the functionality of providing digital assistant services by a digital assistant operating on an electronic device. In some examples, the digital assistant (e.g., digital assistant system 700) is executed by a user device according to various examples. In some examples, a user device, a server (e.g., server 108, device 820), or a combination thereof can execute a digital assistant system (e.g., digital assistant system 700). The user device can be executed using, for example, devices 200, 400, 600, 810A - C, 820, and / or 830. In some examples, the user device is a device having audio output capabilities and network connectivity, a smartphone, a laptop computer, a desktop computer, or a tablet computer.

[0278] Figures 15A - 15G illustrate the functionality of providing digital assistant services based on notifications of events according to various examples. As shown in Figure 15A, device 810A can receive notifications 1506 and / or 1508 of one or more events associated with user 1504. Thus, device 810A (and similarly other devices 810B - C) can include one or more audio input / output devices (e.g., a microphone and one or more speakers), one or more network communication interfaces, and optionally, one or more indicators (e.g., lights) that provide device operation instructions. In some examples, as shown in Figure 15A, device 810A can receive notification 1506 from device 830 (e.g., the user's smartphone) and / or notification 1508 from device 820 (e.g., a remote server).

[0279] In some examples, an event notification can include at least one representation such as an incoming call, reminder, message, voicemail, news alert, etc. For example, a digital assistant operating on device 830 can receive a calendar reminder from a calendar application and transfer the representation of the calendar reminder to device 810A. As shown in FIG. 15A, in response to receiving notifications 1506 and / or 1508, a digital assistant operating on device 810A can output one or more notifications 1510 of notifications 1506 and / or 1508. In some examples, notification 1510 can be an audio notification (e.g., beep sound, tone, etc.), a visual indication (e.g., blinking light, display message, etc.), or a combination of audio and visual indications. FIG. 15A shows that notification 1510 is provided by device 810A, but notification 1510 can also be provided by other devices such as device 830 and / or devices 810B - C (not shown in FIG. 15A). Thus, device 830 can be, for example, the user's smartphone, smartwatch, tablet, etc., and devices 810B - C can be devices of the same type as device 810A and are placed in the vicinity of device 810A (e.g., within the same residence). Thereby, the user 1504 can be provided with notification instructions at any location by any device. By providing instructions by a plurality of devices placed in various locations, the possibility of attracting the user 1504's attention regarding the notification can be improved. In some examples, to minimize confusion of the user 1504, the notification is provided by only one device (e.g., device 810A).

[0280] As shown in FIG. 15B, continuing with the above example, user 1504 can receive notification 1510 and provide voice input 1516 to inquire about notification 1510. For example, voice input 1516 can include "What is that?". In some examples, the digital assistant operating on device 810A can receive voice input 1516 and output response 1518 according to the event notification. For example, as shown in FIG. 15B, if the event notification includes the representation of a voice message from John, the digital assistant operating on device 810A can output a response 1518 such as "A voicemail has arrived from John". If the event notification includes the representation of a calendar reminder, the digital assistant operating on device 810A can output a response 1518 such as "There is an upcoming event on your calendar". If the event notification includes the representation of an incoming call from John, the digital assistant operating on device 810A can output a response 1518 such as "There is an incoming call from John".

[0281] As shown in FIG. 15C, continuing with the above example, after outputting response 1518 according to the event notification, the digital assistant operating on device 810A can continue to monitor user input, for example, by listening to the user's speech after response 1518. For example, the digital assistant operating on device 810A can receive subsequent voice input 1526. Voice input 1526 can include, for example, "Play the message", "What is that event?", or "Answer the call from John".

[0282] In some examples, as shown in FIG. 15C, a digital assistant operating on device 810A can receive voice input 1526 and determine a user intent based on voice input 1526. For example, a digital assistant operating on device 810A can determine that the user's intent is to play a voicemail from John, listen to an upcoming calendar event, or answer a call from John. Thus, the digital assistant operating on device 810A can provide a notification to user 1504 according to the determined user intent. For example, a digital assistant operating on device 810A can provide an audio output 1528 corresponding to the voicemail from John (e.g., "Hello, Bill, this is John. Do you have time for lunch tomorrow?").

[0283] In some embodiments, a digital assistant operating on device 810A can determine whether a notification should be provided in device 810A according to one or more voice inputs. As described above, in some examples, device 810A can be shared among multiple users. Thus, a notification of an event received by device 810A may or may not be for a specific user (e.g., user 1504). Continuing with the above example, as shown in FIG. 15D, when device 810A outputs a response (e.g., "A voicemail from Bill John has arrived") according to a notification of an event, device 810A can receive a subsequent voice input 1536 from user 1505, who is a user different from the user intended to receive the notification of the event. Voice input 1536 can include, for example, "I'm not Bill. He's not here."

[0284] In some examples, a digital assistant operating on device 810A can obtain identification information of a user providing one or more voice inputs and determine whether a notification should be provided to the user providing the one or more voice inputs. For example, as shown in FIG. 15D, based on voice input 1536 (e.g., "I am not Bill. He is not here"), a digital assistant operating on device 810A can determine that user 1505 is not the user intended to receive the notification (e.g., "not Bill"). Thereby, the digital assistant operating on device 810A can determine that the notification should not be provided to user 1505.

[0285] In some examples, to obtain identification information of a user who provides one or more voice inputs, a digital assistant operating on device 810A can obtain authentication data associated with the user. Continuing with the above example, as shown in FIG. 15E, when device 810A outputs a response (e.g., "There is a voicemail from John in the building") in accordance with a notification of an event, the digital assistant operating on device 810A can receive the next voice input 1546 from user 1507, who is a user different from the user intended to receive the notification of the event. User 1507 can be, for example, a guest at the home of user 1504 (e.g., John). User 1507 can determine to listen to John's message, and thus, voice input 1546 can include, for example, "Play the message." In some examples, the digital assistant operating on device 810A can obtain authentication data associated with user 1507. Similar to the above, the authentication data can include voice biometrics of user 1507, face recognition data of user 1507, sensing of another device (e.g., the user's smartwatch) that identifies user 1507, and other credential information of user 1507 (e.g., fingerprint, password, etc.). The digital assistant operating on device 810A can obtain a determination of the identification information of user 1507 based on the authentication data. For example, the digital assistant operating on device 810A can authenticate user 1507 based on the authentication data. As another example, for authentication, the digital assistant operating on device 810A can provide the authentication data to at least one of device 830 (e.g., John's smartphone) or device 820 (e.g., a server). Device 830 and / or device 820 can receive the authentication data and perform authentication to obtain the identification information of user 1507 (e.g., matching voice biometrics, fingerprint, password, etc.). In this way, the digital assistant operating on device 810A can receive the identification information of user 1507 from at least one of device 830 or device 820.

[0286] In some examples, a digital assistant operating on device 810A can determine whether to provide a user with a notification based on the user's identification information, based on the received notification, and based on at least one of the one or more voice inputs. For example, as shown in FIG. 15E, based on the identification information of user 1507 (e.g., a guest at user 1504's home) and notification 1506 (e.g., a representation of a voicemail addressed to the building), the digital assistant operating on device 810A can determine that notification 1506 should not be provided to user 1507 because the identification information of the user for whom the notification is intended or not permitted does not match the identification information of user 1507 (e.g., user 1507 is not the building). Thus, the digital assistant operating on device 810A can provide an audio output 1548 (e.g., "I'm sorry, you are not permitted to listen to this message") to inform user 1507 that user 1507 is not permitted to receive the notification. On the other hand, the digital assistant operating on device 810A can determine that notification 1506 should be provided to user 1507 because the identification information of the user for whom the notification is intended or authorized matches the identification information of user 1507 (e.g., user 1507 is the building). For example, user 1507 may be a member of user 1504's family and is permitted to receive notifications for user 1504. Thus, device 810A can provide an audio output that includes the content of notification 1506.

[0287] In some examples, in accordance with a determination to provide a user who provides at least one of one or more voice inputs with a notification, a digital assistant operating on device 810A can further determine whether the notification is to be provided at device 810A. As shown in FIG. 15F, based on voice input 1556 (e.g., "Play the message"), user 810A can obtain the identification information of user 1504 and determine that user 1504 is permitted to receive the notification. Thereby, the digital assistant operation on device 810A can determine that the notification should be provided to user 1504. In some examples, the digital assistant operation on device 810A can further determine whether the notification should be provided at device 810A. As shown in FIG. 15A, one or more devices may be disposed in the vicinity of user 1504. For example, device 810A may be disposed in living room 1520, device 810B may be disposed in office 1540, and device 810C may be disposed in bedroom 1560. In some examples, device 810A may or may not be the optimal device to provide a notification to user 1504. For example, user 1504 may have left device 810A (e.g., moving towards office 1540). As another example, there may be another user (e.g., a guest) near device 810A disposed in living room 1520, whereby user 1504 may not desire to receive a notification from device 810A due to privacy concerns.

[0288] Similar to the above, in some examples, the determination of whether a notification should be provided in device 810A can be based on a user request expressed by the user's voice input (e.g., "Play the message on the speaker in my office"). In some examples, such a determination can be based on at least one of detecting the user's location or tracking the user's movement. For example, user 1504 may want to go to office 1540 to receive a notification (e.g., listen to a voicemail, answer a call, etc.). A digital assistant operating on device 810A can detect that user 804 is located within living room 1520 but is moving towards office 1540. A digital assistant operating on device 810A can detect location and / or movement using, for example, one or more sensors such as motion sensors, a positioning system, a camera, signal strength measurements to various devices, etc. Based on the detection of the user's movement, a digital assistant operating on device 810A can determine that the notification should be provided by device 810B located within office 1540 instead of device 810A located within living room 1520. In other examples, a digital assistant operating on device 810A can detect that user 804 is not moving and is staying within living room 1520. Thereby, device 810A can determine that the notification should be provided by device 810A located within living room 1520.

[0289] FIG. 15G shows another example where device 810A may determine that a notification should be provided by another device. As shown in FIG. 15G, while receiving notification 1572 (e.g., representation of a voice mail from John), device 810A may provide audio output 1576 (e.g., play a media item). Thereby, a digital assistant operating on device 810A can determine that notification 1572 should not be provided on device 810A in order to avoid interruption of the provision of audio output 1576. Thereby, a digital assistant operating on device 810A can determine an additional device to provide notification 1572. In some examples, such determination is based on context information and the like. For example, based on the information that device 810A is currently providing audio output 1576 and based on the detection of device 830, device 810A can determine that notification 1572 can be provided on device 830. In some examples, device 810A can provide an output (e.g., audio and / or visual output) to confirm to user 1504 that notification 1572 should be provided by another device. It is understood that a digital assistant operating on device 810A can determine whether a notification should be provided on device 810A or another device based on user preferences (e.g., user 1504 prefers to listen to voice mails from colleagues on device 810B in office 1540), past devices used to provide the notification, device attributes, and capabilities (e.g., device 810B can provide better sound than device 810A), etc.

[0290] In some embodiments, in accordance with the determination to provide a notification on device 810A, a digital assistant operating on device 810A can provide a notification on device 810A. For example, as shown in the above example, a digital assistant operating on device 810A can provide an audio output (e.g., voicemail, call, calendar reminder, etc.) that includes a notification. In accordance with the determination to provide a notification on a device different from device 810A, a digital assistant operating on device 810A can cause the notification to be provided on another device. For example, a digital assistant operating on device 810A can forward the notification to device 830 or send a request to device 830 to provide a notification on device 830. Based on the notification or request, device 830 can provide an audio output 1574 that includes the content of the notification (e.g., output voicemail, place a phone call, output a calendar reminder, etc.). 6. Process for providing a digital assistant service based on user input

[0291] Figures 16A - 16I illustrate a process 1600 for operating a digital assistant to provide a digital assistant service based on user input, according to various examples. Process 1600 is executed, for example, using one or more electronic devices that execute the digital assistant. In some examples, process 1600 is executed using a client - server system (e.g., system 100), and the blocks of process 1600 are divided in any manner between a server (e.g., DA server 106) and a client device. In other examples, the blocks of process 1600 are divided between a server and multiple client devices (e.g., a mobile phone and a smartwatch). Thus, although process 1600 is described herein as being executed such that portions of it are executed by particular devices of a client - server system, it will be understood that process 1600 is not so limited. In other examples, process 1600 is executed using only a client device (e.g., user device 104, electronic device 810A, device 830, or device 840) or multiple client devices. In process 1600, some blocks are optionally combined, the order of some blocks is optionally changed, and some blocks are optionally omitted. In some examples, additional steps can be executed in combination with process 1600.

[0292] Referring to FIG. 16A, at block 1602, a second voice input including predetermined content (e.g., "Wake up, speaker" or "Hey, speaker") is received. At block 1604, in response to the reception of the second voice input, a first electronic device is activated. The first electronic device can be a service extension device (e.g., device 810A shown in FIGS. 8A - 15G). At block 1606, in some examples, the second voice input does not activate one or more additional electronic devices. The one or more additional electronic devices can be arranged in the vicinity of the first electronic device. For example, the volume or sound pressure related to the voice input can be detected and recorded by both the first electronic device and the additional electronic device. Based on the comparison of the sound pressures detected by the two devices, the position of the user relative to the two devices can be determined. For example, it can be determined that the user is physically closer to the first electronic device than to the other device. As a result, the first electronic device can be activated while the other devices are not activated.

[0293] At block 1608, a first voice input representing a user request is received from a first user. At block 1610, the user request includes a request for information specific to the first user (e.g., the first user's calendar, contacts, etc.). At block 1612, the user request includes a request for non - user - specific information (e.g., weather information, stock prices, sports game information, etc.). At block 1614, the user request includes a request to perform a task (e.g., play music, establish a meeting, etc.).

[0294] At block 1616, the identification information of the first user is obtained. At block 1618, the authentication data associated with the first user is obtained. The authentication data can include, for example, the user's voice biometrics, the user's face recognition data, the sensing of another electronic device that identifies the user, other qualification information of the user such as the user's fingerprint, a password, etc. At block 1620, the identification information of the first user is determined based on the authentication data. At block 1622, in order to obtain the identification information of the first user, the authentication data is provided to at least one of a second electronic device (e.g., a remote server) or a third electronic device (e.g., the user's smartphone). At block 1624, the identification information of the first user is received from at least one of the second electronic device or the third electronic device. The identification information of the first user is determined based on the authentication data. At block 1626, the identification information of the first user is obtained based on a second voice input (e.g., "Wake up, speaker" or "Hey, speaker"). Thus, the second voice input can be associated with the user's voice biometrics and can be used for determining the user's identification information.

[0295] Referring to FIG. 16B, at block 1628, one or more voice inquiries regarding the user request represented by the first voice input are output. The voice inquiries may be used to clarify the first voice input with the first user (e.g., "What is that?" or "I don't quite understand"). At block 1630, in response to the one or more voice inquiries, additional voice input is received from the first user. For example, the first user may repeat or rephrase the first voice input.)

[0296] In block 1632, a connection is established between the first electronic device (e.g., a server expansion device) and at least one of a second electronic device (e.g., a remote server) or a third electronic device (e.g., a device disposed in the vicinity of the first electronic device). In block 1634, a connection based on short-range communication is established between the first electronic device and the third electronic device. In block 1636, a connection is established based on the detection of a third electronic device within a predetermined distance from the first electronic device. In block 1638, a connection is established based on a previously established connection between the first electronic device and the third electronic device. For example, a connection can be established based on a log file indicating that the first electronic device and the third electronic device were connected in the past. The log file can also indicate the connection parameters used for the previous connection.

[0297] As described above, the server expansion device is shared by a plurality of users, and thereby can be connected to a plurality of devices associated with one or more users. In block 1640, a connection is established between the first electronic device (e.g., a service expansion device) and the third electronic device (e.g., a client device of the first user). The third electronic device is associated with the first user. In block 1642, a connection is established between the first electronic device and the fourth electronic device (e.g., a tablet device of the second user). The fourth electronic device is associated with the second user. In block 1644, in some examples, after establishing a connection between the first electronic device and the third electronic device, the established connection is notified to the second electronic device. For example, after a connection between a server expansion device (e.g., device 810A shown in FIGS. 8A - 8B) and a smartphone device is established, the established connection can be notified to the server.

[0298] Referring to FIG. 16C, as described above, the identification information of the first user is obtained. In block 1646, according to the user identification information, the expression of the user request is provided to at least one of the second electronic device or the third electronic device. In block 1648, the second electronic device is a server remotely located from the first electronic device, and the third electronic device is a client device located in the vicinity of the first electronic device. In block 1650, the third electronic device is a proxy device of the server. For example, a client device (e.g., device 840 shown in FIG. 8A) can operate as a proxy device of a server (e.g., device 820 shown in FIG. 8A) that processes requests from other devices (e.g., a home automation device such as an intelligent thermostat).

[0299] In block 1652, in some examples, to determine whether the third electronic device (e.g., a client device located in the vicinity of the first electronic device) is communicatively coupled to the first electronic device (e.g., a service expansion device) in order to provide the expression of the user request to at least one of the second electronic device or the third electronic device. According to the determination in block 1654 that the third electronic device is communicatively coupled to the first electronic device, the expression of the user request is provided to the third electronic device instead of the second electronic device. According to the determination in block 1656 that the third electronic device is not communicatively coupled to the first electronic device, the expression of the user request is provided to the second electronic device.

[0300] In block 1658, in some examples, the expression of the user request is provided to the second device (e.g., a remote server) instead of the third electronic device (e.g., a client device located in the vicinity of the first electronic device). In block 1660, in some examples, the expression of the user request is provided to both the second electronic device and the third electronic device.

[0301] In this way, the second electronic device and / or the third electronic device can receive an expression of a user request and determine whether one or both of them should provide a response to the first electronic device. Referring to FIG. 16C, at block 1662, based on a determination of whether one or both of the second electronic device or the third electronic device should provide a response to the first electronic device, a response to the user request is received from the second electronic device or the third electronic device.

[0302] At block 1664, as described above, in some examples, the expression of the user request is provided to the third electronic device rather than the second electronic device. At block 1666, to receive a response to the user request, the third electronic device (e.g., a client device) is caused to determine whether it can provide a response to the user request. At block 1668, in accordance with a determination that the third electronic device can provide a response to the user request, a response to the user request is received from the third electronic device at the first electronic device. At block 1670, the third electronic device determines that it cannot provide a response to the user request. At block 1672, in accordance with such a determination, the expression of the user request is transferred by the third electronic device to the second electronic device. At block 1674, a response to the user request is received at the first electronic device from the second electronic device.

[0303] Referring to FIG. 16E, as described above, in some examples, at block 1676, the expression of the user's request is provided to the second electronic device (e.g., remote server) rather than to the third electronic device (e.g., client device). At block 1678, the second electronic device is caused to determine whether it can provide a response to the user request in order to receive a response to the user request at the first electronic device. At block 1680, in accordance with the determination that the second electronic device can provide a response to the user request, a response to the user request is received at the first electronic device from the second electronic device. At block 1682, the second electronic device determines that it cannot provide a response to the user request.

[0304] At block 1684, in accordance with such a determination, the expression of the user request is transferred by the second electronic device to the third electronic device. Thereby, the third electronic device (e.g., client device) can provide a response based on the user request. At block 1686, a response to the user request is received at the first electronic device. At block 1688, the first electronic device receives a response to the user request from the third electronic device. At block 1690, the first electronic device receives a response to the user request from the second electronic device based on the response provided by the third electronic device to the second electronic device (e.g., remote server). For example, the client device can transfer a response to a remote server that provides a response to the first electronic device (e.g., server expansion device).

[0305] Referring to FIG. 16F, as described above, in some examples, at block 1692, a display of a user request is provided from a first electronic device to both a second electronic device and a third electronic device. At block 1694, in order to receive a response to the user request, the second electronic device (e.g., a remote server) is caused to determine whether the second electronic device can provide a response to the user request. At block 1696, in order to receive a response to the user request, the third electronic device (e.g., a client device disposed in the vicinity of the first electronic device) is caused to determine whether the third electronic device can provide a response to the user request. One or both of the determinations at block 1694 and block 1696 can be performed.

[0306] At block 1698, in accordance with the determination that the second electronic device can provide a response to the user request and the third electronic device cannot provide a response to the user request, a response to the user request is received at the first electronic device from the second electronic device. At block 1700, in accordance with the determination that the third electronic device can provide a response to the user request and the second electronic device cannot provide a response to the user request, a response to the user request is received at the first electronic device from the third electronic device. At block 1702, in accordance with the determination that both the second electronic device and the third electronic device can provide a response to the user request, a response to the user request is received at the first electronic device from the second electronic device or the third electronic device based on a predetermined condition. The predetermined condition can be, for example, a preset policy (e.g., the third electronic device is the default device for providing a response), the user's preference, the bandwidth condition of the connection to the second and third electronic devices, and the like.

[0307] Referring to FIG. 16G, at block 1704, it is determined whether the first electronic device (e.g., a service extension device) should provide an expression of a response. At block 1706, the determination of whether the first electronic device should provide a response is based on a user request (e.g., the user's voice input indicating that a response should be provided by another electronic device). At block 1708, the determination of whether the first electronic device should provide a response is based on at least one of detection of the user's location or tracking of the user's movement. For example, if a user moving away from the first electronic device towards another device is detected, the first electronic device may not need to provide a response.

[0308] At block 1710, in accordance with the determination that the first electronic device should provide an expression of a response, the first electronic device provides an expression of a response to the first user. At block 1712, in accordance with the determination that the expression of a response should not be provided by the first electronic device, the response is transferred to one or more additional electronic devices capable of providing a response to the first user.

[0309] Referring to FIG. 16H, at block 1714, an expression of a response is provided to the first user. At block 1716, in order to provide the expression of a response, an audio output including information responding to the user request is provided in the first electronic device. At block 1718, this information is provided to the first electronic device by the second electronic device or the third electronic device.

[0310] At block 1720, in order to provide an expression of a response, voice output associated with the execution of a task according to a user request is provided in the first electronic device. At block 1722, in some examples, the task is executed by a third electronic device (for example, a client device such as a first user's smartphone). At block 1724, in some examples, the first electronic device and the third electronic device execute the task. For example, the first electronic device can output an audio portion of the response, and at the same time, the third electronic device (for example, a TV set-top box connected to a TV screen) can output a video portion of the response. At block 1726, one or more additional electronic devices further execute the task. For example, in addition to providing a response (for example, playing a movie) in client devices such as a service expansion device and a TV set-top box, an additional device such as a laptop computer can further provide a response.

[0311] At block 1728, in some examples, one or more connections are established between the first electronic device and one or more additional electronic devices. The additional electronic devices are devices of the same type as the first electronic device. For example, a connection can be established between a plurality of service expansion devices (for example, devices 810A - C shown in FIGS. 8A - 8B).

[0312] In block 1730, the first electronic device provides a response to the first user. In block 1732, while the first electronic device provides a response to the first user, it is determined whether a response should continue to be provided on another electronic device (e.g., a client device such as the user's smartphone). In block 1734, based on a third voice input (e.g., a voice input from the first user such as "continue playing the song on my phone"), it is determined whether a response should continue to be provided on another electronic device. In block 1736, based on detection of whether a change in the location of the first user relative to the first electronic device satisfies a predetermined condition, it is determined whether a response should continue to be provided on another electronic device. For example, it can be determined whether the first user has moved outside a predetermined boundary such that a response should continue to be provided on a device different from the first electronic device.

[0313] In block 1738, in accordance with the determination that a response should continue to be provided on another electronic device, at least one of the third electronic device or one or more additional electronic devices is caused to continue to provide a response.

[0314] In block 1740, after providing a response to the first user, subsequent voice inputs are monitored. 7. Process for providing a digital assistant service based on notification of an event

[0315] Figures 17A - 17D illustrate a process 1800 for operating a digital assistant to provide a digital assistant service based on notification of an event, according to various examples. The process 1800 is executed, for example, using one or more electronic devices that execute the digital assistant. In some examples, the process 1800 is executed using a client - server system (e.g., system 100), and the blocks of the process 1800 are divided in any form between a server (e.g., DA server 106) and a client device. In other examples, the blocks of the process 1800 are divided between a server and multiple client devices (e.g., a mobile phone and a smartwatch). Thus, although portions of the process 1800 are described herein as being executed by certain devices of a client - server system, it will be understood that the process 1800 is not so limited. In other examples, the process 1800 is executed using only a client device (e.g., user device 104, devices 810A - C) or only multiple client devices. In process 1800, some blocks are optionally combined, the order of some blocks is optionally changed, and some blocks are optionally omitted. In some examples, additional steps can be performed in combination with process 1800.

[0316] Referring to FIG. 17A, in block 1802, before receiving a notification of an event, a connection is established between a first electronic device (e.g., a service - extension device) and at least one of a second electronic device (e.g., a server) or a third electronic device (e.g., a client device located in the vicinity of the first electronic device). In block 1804, a connection is established based on short - range communication between the first electronic device and the third electronic device. In block 1806, a connection is established based on the detection that the third electronic device is within a predetermined distance from the first electronic device. In block 1808, a connection is established based on a previously established connection between the first electronic device and the third electronic device.

[0317] In this way, a first electronic device (e.g., a service expansion device) can be shared by multiple users. At block 1810, a connection is established between the first electronic device and a third electronic device, and the third electronic device is associated with a first user. At block 1812, a connection is established between the first electronic device and a fourth electronic device, and the fourth electronic device is associated with a second user. At block 1814, after establishing a connection between the first electronic device and the third electronic device, the established connection is notified to a second electronic device (e.g., a remote server).

[0318] Referring to FIG. 17B, at block 1816, a notification of an event associated with the first user is received. At block 1818, the notification of the event includes at least one representation of an incoming call, a reminder, a message, a voicemail, or a news alert. At block 1820, the notification is received from at least one of a second electronic device (e.g., a remote server) or a third electronic device (e.g., a client device disposed in the vicinity of the first electronic device).

[0319] At block 1822, in response to receiving the notification, an instruction of the notification is output. The instruction may be, for example, a beep sound, an alert, an incoming call sound, etc. At block 1824, the instruction of the notification is output by one of the first electronic device or an additional electronic device communicatively coupled to the first electronic device. For example, a client device such as a user's smartphone can output the instruction of the notification, and another service expansion device can output the instruction of the notification.

[0320] In block 1826, one or more voice inputs are received. In block 1828, for example, a first voice input is received regarding a notification (e.g., the user can provide a first voice input to inquire about an event notification instruction such as "What is that?"). In block 1830, a response is output according to the notification of the event. For example, a voice input such as "There is a voicemail from John" can be provided. In block 1832, a second voice input is received. For example, the user may say "Play the voicemail".

[0321] Referring to FIG. 17C, in block 1834, it is determined whether a notification should be provided in the first electronic device according to one or more voice inputs. In block 1836, in order to determine whether a notification should be provided in the first electronic device, identification information of the user who provides at least one of the one or more voice inputs is obtained. In block 1838, authentication data associated with the user who provides at least one of the one or more voice inputs is obtained in order to obtain the user's identification information. The authentication data can include, for example, the user's biometrics, fingerprints, face recognition data, password, etc. In block 1840, based on the authentication data, a determination of the identification information of the user who provides at least one of the one or more voice inputs is obtained.

[0322] In block 1842, the authentication data is provided to at least one of the second electronic device and the third electronic device in order to obtain a determination of the identification information of the user who provides at least one of the one or more voice inputs. In block 1844, the identification information of the user who provides at least one of the one or more voice inputs is received from at least one of the second electronic device and the third electronic device. The identification information of the user who provides at least one of the one or more voice inputs is determined based on the authentication data.

[0323] In block 1846, it is determined whether to provide a notification to a user who provides at least one of one or more voice inputs, based on the identification information of the user who provides at least one of one or more voice inputs and also based on a notification. In block 1848, according to the determination that a notification should be provided to a user who provides at least one of one or more voice inputs, it is determined whether a notification should be provided in the first electronic device.

[0324] Referring to FIG. 17D, in block 1850, according to the determination that a notification should be provided in the first electronic device, the notification is provided to the first electronic device. In block 1852, in order to provide a notification in the first electronic device, an audio output associated with the notification in the first electronic device is provided.

[0325] In block 1854, according to the determination that a notification should not be provided in the first electronic device, an additional electronic device for providing the notification is determined. In block 1856, an additional electronic device for providing the notification is determined based on one or more voice inputs. In block 1858, an additional electronic device for providing the notification is determined based on context information.

[0326] The above operations with reference to FIGS. 16A - 16I and 17A - 17D are optionally executed by the components shown in FIGS. 1 - 4, 6A - B and 7A - C. For example, the operations of processes 1600 and 1800 may be executed by the digital assistant system 700. It will be apparent to those skilled in the art how other processes are executed based on the components shown in FIGS. 1 - 4, 6A - B, 7A - C. 8. Exemplary functions for providing digital assistant services using multiple devices

[0327] As described above, digital assistant services can be provided by one or more devices. Due to limitations in device capabilities, certain devices may not be able to provide or may not be optimal for certain digital assistant services. For example, smartwatches generally have a small screen size and thus are not optimal for video playback. As another example, unlike smartphones, TV set-top boxes may not be able to provide audio output for text messages in some cases.

[0328] Figures 18A - 18E illustrate the functionality of providing digital assistant services based on the capabilities of multiple electronic devices according to various examples. In some examples, a digital assistant (e.g., digital assistant system 700) is executed by a user device according to various examples. In some examples, a user device, a server (e.g., server 108, device 820), or a combination thereof can execute a digital assistant system (e.g., digital assistant system 700). The user device can be executed using, for example, devices 200, 400, 600, 820, 830, 840, 1880, and / or 1882. In some examples, the user device is a device with audio output capabilities and network connectivity, a smartwatch, a smartphone, a laptop computer, a desktop computer, or a tablet computer.

[0329] As shown in FIG. 18A, user 804 can provide voice input 1886 such as "Show me the video I took last Sunday". The voice input 1886 can represent a user request (e.g., a request for information or a request to execute a task). In some examples, a digital assistant operating on device 1880 receives the voice input 1886 from user 804. The device 1880 can be, for example, a client device (e.g., a wearable device such as a smartwatch). The device 1880 can also be a device similar to the above-described device 810A that can include one or more audio input / output devices (e.g., a microphone and one or more speakers) and one or more network communication interfaces. The device 1880 may or may not be capable of or optimal for responding to a user request (e.g., providing the requested information or executing the requested task). For example, the device 1880 may not have a display, or may have a small display that is not optimal for playing videos.

[0330] In some embodiments, the digital assistant operating on device 1880 can obtain capability data associated with one or more electronic devices communicatively coupled to device 1880. For example, as shown in FIG. 18A, the digital assistant operating on device 1880 can determine that device 820 (e.g., a remote server), device 830 (e.g., a client device such as the user's smartphone), and device 840 (TV set-top box) are communicatively coupled to device 1880. This determination can be made via, for example, Bluetooth pairing, WiFi connection, etc., similar to the above description regarding device 810A. Based on the determination that devices 820, 830, and 840 are communicatively coupled, the digital assistant operating on device 1880 can obtain the capability data associated with these devices. In some examples, some devices are client devices located in the vicinity of device 1880, and some devices are located remotely from device 1880. For example, device 1880, device 830, and device 840 are client devices located within a predetermined boundary (e.g., a house, a building, a car, etc.), and device 820 is a remotely located server.

[0331] In some examples, the capability data can include device capabilities associated with electronic devices communicatively couplable to device 1880. The device capabilities can include one or more physical capabilities and / or information capabilities. The physical capabilities of a device can include physical attributes of the device such as whether the device has a display, the size of the display, the number of speakers, network capabilities, etc. The information capabilities of a device can include the data that the device can provide. For example, device 830 can store media items (e.g., videos and photos) taken by user 804, and thereby provide the stored media items to other devices communicatively connected to device 830.

[0332] In some examples, before obtaining the ability data, the digital assistant operating on device 1880 can be configured to establish communication with other electronic devices (e.g., devices 820, 830, and / or 840). In some examples, the communication can be established via a direct communication connection such as Bluetooth, Near Field Communication (NFC), Bluetooth Low Energy (BTLE), or a wired or wireless network such as a local Wi-Fi network. For example, the digital assistant operating on device 1880 can detect device 830 via Bluetooth discovery and communicatively couple to device 830 via a Bluetooth connection. As another example, the digital assistant operating on device 1880 can detect a Wi-Fi network and couple to device 840 via the Wi-Fi network. As another example, the digital assistant operating on device 1880 can detect near field communication when device 830 (e.g., a client device such as the user's smartphone) is in proximity to or in physical contact with device 1880. For example, to pair devices 1880 and 830, user 804 can establish near field communication between the two devices by tapping device 1880 with device 830. As another example, the digital assistant operating on device 1880 can detect that device 830 (e.g., a client device such as the user's smartphone) is within a predetermined distance (e.g., within the range of Bluetooth communication) and establish a connection with device 830. For example, when user 804 approaches device 1880 with device 830, the digital assistant operating on device 1880 can detect that device 830 is within the communication range and connect device 830 and device 1880. As another example, the digital assistant operating on device 1880 can establish a connection with device 830 based on one or more previously established connections between the two devices.For example, a digital assistant operating on device 1880 can store a log file containing devices it has connected to in the past, and optionally connection parameters. Based on this log file, the digital assistant operating on device 1880 can, for example, determine that the digital assistant has previously connected to device 830. Based on such a determination, the digital assistant operating on device 1880 can re - establish a connection with device 830.

[0333] In some examples, before obtaining the ability data, the digital assistant operating on device 1880 can query user 804 regarding access to one or more devices that can be communicatively coupled to device 1880. For example, the digital assistant operating on device 1880 can provide an audio output such as "Do I have permission to access your phone and TV?" In some examples, user 804 can respond with an audio input either permitting or denying access. In response to receiving the audio input, the digital assistant operating on device 1880 can determine whether the digital assistant has permission to access devices communicatively coupled to device 1880. For example, if the audio input of user 804 is "OK", the digital assistant operating on device 1880 can determine that it is permitted to access devices 830 and 840. If the audio input of user 804 is "No", the digital assistant operating on device 1880 can determine that it is not permitted to access devices 830 and 840. If the audio input of user 804 is "Yes for phone, No for TV" (e.g., user 804 may sometimes watch another video using device 840 and device 1882 (e.g., a TV screen) and does not want the video playback on device 1882 to be interrupted), the digital assistant operating on device 1880 can determine that it is permitted to access device 830 but not permitted to access device 840 to play a video on device 1882.

[0334] Referring to FIGS. 18A and 18B, in some embodiments, according to the capability data, a digital assistant operating on device 1880 can identify a device that provides at least a portion of a response to a user request from one or more electronic devices communicatively coupled to the device. In some examples, a digital assistant operating on device 1880 can obtain one or more steps for responding to a user request based on voice input 1886. The one or more steps for responding to a user request can include steps of providing the requested information and / or performing the requested task. For example, based on voice input 1886 such as "Show me the video I took last Sunday", device 1880 can determine that the user request is to find and play the video that user 804 took last Sunday. This determination can be made using the natural language processing techniques described above.

[0335] A digital assistant operating on device 1880 can determine one or more steps necessary to respond to a determined user request in response to the user request. For example, a digital assistant operating on device 1880 can determine that step #1 of playing the video taken by user 804 on last Sunday is to find a specific video taken by user 804 on last Sunday, and step #2 is to play this specific video. In some embodiments, the determination of one or more steps can be performed on another device (e.g., device 820 such as a remote server) and provided to device 1880. In some embodiments, the determination of one or more steps can be performed using both device 820 and device 1880. For example, the digital assistant can operate on the front-end device 1880 to interface with user 804 and operate on the back-end device 820 to process user input. In some embodiments, one or more steps of responding to a user request can form at least a part of an execution plan. The execution plan can include steps of responding to the user request and the devices for executing each step.

[0336] In some embodiments, a digital assistant operating on device 1880 can identify one or more devices that perform steps to respond to a user request based on capability data associated with one or more electronic devices communicatively coupled to device 1880. Continuing with the above example, a digital assistant operating on device 1880 can identify the device that performs step #1 of finding a particular video that user 804 took last Sunday, and can identify the device that performs step #2 of playing this particular video. As shown in FIG. 18B, a digital assistant operating on device 1880 can determine that, among the devices communicatively connected to device 1880 (e.g., devices 820, 830, 840), the capability data of device 830 (e.g., a client device such as the user's smartphone) indicates that device 830 has the ability to find a particular video that user 804 took last Sunday. For example, user 804 used device 830 to take a video last Sunday, whereby the information capability data of device 830 may indicate that the files stored on device 830 have the format of a video and the time stamp of last Sunday. Thus, a digital assistant operating on device 1880 can identify device 830 that performs step #1 of finding the particular video intended by user 804.

[0337] As another example, a digital assistant operating on device 1880 can determine that among devices 820, 830, and 840, the capability data of device 840 (e.g., a TV set-top box) indicates that...

Claims

1. 1. A method for providing a digital assistant service, comprising: A first electronic device having one or more processors and a memory, receiving a first voice input from a first user representing a user request; Obtaining an identity of the first user; providing a representation of the user request to at least one of a second electronic device or a third electronic device according to an identity of the user; receiving the response to the user request from the second electronic device or the third electronic device based on a determination of whether the second electronic device or the third electronic device, or both, provide a response to the first electronic device; providing a representation of the response to the first user; and A method comprising:

2. 2. The method of claim 1, wherein the second electronic device is a server located remotely from the first electronic device, and the third electronic device is a client device located proximate to the first electronic device.

3. The method according to claim 1 or 2, wherein the third electronic device is a proxy device of a server.

4. The method of claim 1 , wherein the user request comprises a request for information specific to the first user.

5. The method of claim 1 , wherein the user request includes a request for non-user specific information.

6. The method of claim 1 , wherein the user request comprises a request to perform a task.

7. Obtaining the identification information of the first user includes: Obtaining authentication data associated with the first user; obtaining a determination of the identity of the first user based on the authentication data; The method of any one of claims 1 to 6, comprising:

8. Obtaining the determination of the identity of the first user based on the authentication data includes: providing the authentication data to at least one of the second electronic device or the third electronic device; receiving the identification information of the first user from at least one of the second electronic device or the third electronic device; Including, The method of claim 7 , wherein the identity of the first user is determined based on the authentication data.

9. Providing the representation of the user request to at least one of the second electronic device or the third electronic device includes: determining whether the third electronic device is communicatively coupled to the first electronic device; providing the representation of the user request to the third electronic device rather than the second electronic device in accordance with a determination that the third electronic device is communicatively coupled to the first electronic device; providing the representation of the user request to the second electronic device in accordance with a determination that the third electronic device is not communicatively coupled to the first electronic device; The method of any one of claims 1 to 8, comprising:

10. Providing the representation of the user request to at least one of the second electronic device or the third electronic device includes: The method of claim 1 , comprising providing the representation of the user request to the second electronic device rather than to the third electronic device.

11. Providing the representation of the user request to at least one of the second electronic device or the third electronic device includes: The method of claim 1 , further comprising providing the representation of the user request to both the second electronic device and the third electronic device.

12. The representation of the user request is provided to the third electronic device rather than the second electronic device, and receiving the response to the user request comprises: causing the third electronic device to determine whether the third electronic device is capable of providing the response to the user request; receiving, at the first electronic device, the response to the user request from the third electronic device in accordance with a determination that the third electronic device is capable of providing the response to the user request; 10. The method of claim 1 , comprising:

13. upon determining that the third electronic device is unable to provide the response to the user request, forwarding, by the third electronic device, the representation of the user request to the second electronic device; receiving, at the first electronic device, the response to the user request from the second electronic device; The method of claim 12 further comprising:

14. The representation of the user request is provided to the second electronic device but not to the third electronic device, and receiving the response to the user request comprises: causing the second electronic device to determine whether the second electronic device is capable of providing the response to the user request; receiving, at the first electronic device, the response to the user request from the second electronic device in accordance with a determination that the second electronic device is capable of providing the response to the user request; The method of any one of claims 1 to 10, comprising:

15. upon determining that the second electronic device is unable to provide the response to the user request, forwarding, by the second electronic device, the representation of the user request to the third electronic device; receiving, at the first electronic device, the response to the user request; The method of claim 14 further comprising:

16. The method of claim 15 , wherein the first electronic device receives the response to the user request from the third electronic device.

17. 16. The method of claim 15, wherein the first electronic device receives the response to the user request from the second electronic device based on a response provided to the second electronic device by the third electronic device.

18. The representation of the user request is provided from the first electronic device to both the second electronic device and the third electronic device, and receiving the response to the user request includes: causing the second electronic device to determine whether the second electronic device is capable of providing the response to the user request; causing the third electronic device to determine whether the third electronic device is capable of providing the response to the user request; The method according to any one of claims 1 to 8 and 11, comprising at least one of:

19. in response to a determination that the second electronic device is capable of providing the response to the user request and the third electronic device is incapable of providing the response to the user request, receiving, at the first electronic device, the response to the user request from the second electronic device; 20. The method of claim 18, further comprising:

20. in response to a determination that the third electronic device is capable of providing the response to the user request and the second electronic device is incapable of providing the response to the user request; receiving, at the first electronic device, the response to the user request from the third electronic device; 20. The method of claim 18, further comprising:

21. upon determining that both the second electronic device and the third electronic device are capable of providing the response to the user request, receiving, at the first electronic device, the response to the user request from the second electronic device or the third electronic device based on a predetermined condition; 20. The method of claim 18, further comprising:

22. Providing the representation of the response to the first user includes:

22. The method of claim 1, comprising providing, at the first electronic device, in response to the user request, an audio output comprising the information.

23. The method of claim 22 , wherein the information is provided by the second electronic device or the third electronic device.

24. Providing the representation of the response to the first user includes:

24. The method of claim 1, comprising providing, at the first electronic device, an audio output associated with performing a task in accordance with the user request.

25. 25. The method of claim 24, wherein the task is performed by the third electronic device.

26. 26. The method of claim 24 or 25, wherein the task is performed by the first electronic device and the third electronic device.

27. 27. The method of claim 26, wherein the tasks are further performed by one or more additional electronic devices.

28. prior to providing the representation of the response to the first user; determining whether the representation of the response is to be provided by the first electronic device; providing, by the first electronic device, the representation of the response to the first user in accordance with a determination that the representation of the response should be provided by the first electronic device; and forwarding the response to one or more additional electronic devices in accordance with a determination that the representation of the response should not be provided by the first electronic device; and 28. The method of any one of claims 1 to 27, comprising:

29. 30. The method of claim 28, wherein determining whether the response should be provided by the first electronic device is based on the user request.

30. 30. The method of claim 28 or 29, wherein determining whether the response should be provided by the first electronic device is based on at least one of detecting a location of the user or tracking a movement of the user.

31. prior to receiving the first audio input; Receiving a second audio input including a predetermined content; activating the first electronic device in response to receiving the second audio input; 31. The method of any one of claims 1 to 30, further comprising:

32. 32. The method of claim 31, wherein the second audio input does not activate one or more additional electronic devices located in proximity to the first electronic device.

33. 33. The method of claim 31 or 32, wherein obtaining the identity of the first user is based on the second voice input.

34. prior to providing the representation of the user request to at least one of the second electronic device and the third electronic device; outputting one or more voice queries related to the user request; receiving additional voice input from the first user in response to the one or more voice queries; 34. The method of any one of claims 1 to 33, further comprising:

35. prior to providing the representation of the user request to at least one of the second electronic device or the third electronic device; 35. The method of claim 1, further comprising establishing a connection between the first electronic device and at least one of the second electronic device or the third electronic device.

36. 36. The method of claim 35, wherein establishing the connection is based on close range communication between the first electronic device and the third electronic device.

37. 37. The method of claim 35 or 36, wherein establishing the connection is based on detecting the third electronic device within a predetermined distance from the first electronic device.

38. 38. The method of any one of claims 35 to 37, wherein establishing the connection is based on a previously established connection between the first electronic device and the third electronic device.

39. establishing a connection between the first electronic device and the third electronic device, the third electronic device being associated with the first user; and establishing a connection between the first electronic device and a fourth electronic device, the fourth electronic device being associated with a second user; and 39. The method of any one of claims 35 to 38, further comprising:

40. 40. The method of claim 35, further comprising, after establishing a connection between the first electronic device and the third electronic device, notifying the second electronic device of the established connection.

41. 40. The method of claim 1, further comprising establishing one or more connections between the first electronic device and one or more additional electronic devices, the additional electronic devices being the same type of device as the first electronic device.

42. while providing the response to the first user by the first electronic device; determining whether the response should be provided continuously on different electronic devices; pursuant to a determination that the response should be provided continuously at a different electronic device, causing the response to be provided continuously by at least one of the third electronic device or one or more additional electronic devices; 42. The method of any one of claims 1 to 41, further comprising:

43. the determining whether the response should be provided continuously at the different electronic devices is based on a third voice input.

43. The method of claim 42.

44. 44. The method of claim 42 or 43, wherein the determining whether the response should be provided continuously at different electronic devices is based on detecting whether a variation in the location of the first user relative to the first electronic device satisfies a predetermined condition.

45. 45. The method of any one of claims 1 to 44, further comprising monitoring a subsequent voice input after providing the response to the first user.

46. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by one or more processors of a first electronic device, cause the first electronic device to: receiving a first speech input from a first user representing a user request; obtaining an identification of the first user; causing at least one of a second electronic device or a third electronic device to provide a representation of the user request according to an identity of the user; receiving the response to the user request from the second electronic device or the third electronic device based on a determination of whether the second electronic device or the third electronic device, or both, provides a response to the first electronic device; providing a representation of the response to the first user. A non-transitory computer-readable storage medium.

47. one or more processors; Memory, one or more programs stored in a memory, The one or more programs include instructions, the instructions comprising: receiving a first speech input from a first user representing a user request; Obtaining an identity of the first user; providing a representation of the user request to at least one of a second electronic device or a third electronic device according to an identity of the user; receiving the response to the user request from the second electronic device or the third electronic device based on a determination of whether the second electronic device or the third electronic device, or both, will provide a response to the first electronic device; providing a representation of the response to the first user. A first electronic device.

48. means for receiving a first speech input from a first user representing a user request; means for obtaining identification information of the first user; means for providing a representation of the user request to at least one of a second electronic device or a third electronic device according to an identity of the user; means for receiving the response to the user request from the second electronic device or the third electronic device based on a determination of whether the second electronic device or the third electronic device, or both, provide a response to the first electronic device; means for providing a representation of the response to the first user; A first electronic device comprising:

49. one or more processors; Memory, one or more programs stored in a memory, the one or more programs comprising instructions for carrying out the method of any one of claims 1 to 45; A first electronic device comprising:

50. 46. ​​A first electronic device comprising means for performing the method of any one of claims 1 to 45.

51. 46. ​​A non-transitory computer-readable storage medium comprising one or more programs for execution by one or more processors of a first electronic device, the one or more programs comprising instructions that, when executed by the one or more processors, cause the first electronic device to perform the method of any one of claims 1 to 45.

52. 46. ​​A system for operating a digital assistant, comprising means for performing the method according to any one of claims 1 to 45.

53. 1. A method for providing a digital assistant service, comprising: A first electronic device having one or more processors and a memory, Receiving a notification of an event associated with a first user; In response to receiving the notification, outputting an indication of the notification; Receiving one or more audio inputs; determining whether the notification should be provided at the first electronic device according to the one or more voice inputs; providing the notification at the first electronic device in accordance with a determination that the notification should be provided at the first electronic device; and A method comprising:

54. 54. The method of claim 53, wherein the notification of the event includes a representation of at least one of an incoming call, a reminder, a message, a voicemail, or a news alert.

55. Receiving the notification of the event includes:

55. The method of claim 53 or 54, comprising receiving the notification from at least one of a second electronic device or a third electronic device.

56. outputting the indication of the notification; 56. The method of any one of claims 53 to 55, comprising outputting the indication of the notification by one of the first electronic device or the additional electronic device communicatively coupled to the first electronic device.

57. Receiving the one or more audio inputs includes: receiving a first audio input related to the notification; outputting a response in response to said notification of said event; Receiving a second audio input; 57. The method of any one of claims 53 to 56, comprising:

58. Determining whether the notification should be provided at the first electronic device includes: obtaining an identity of the user providing at least one of the one or more voice inputs; determining whether the notification should be provided to the user providing at least one of the one or more voice inputs based on the identification of the user providing at least one of the one or more voice inputs and the notification; determining whether the notification is to be provided at the first electronic device in accordance with a determination that the notification is to be provided to the user providing at least one of the one or more voice inputs; 58. The method of any one of claims 53 to 57, comprising:

59. Obtaining the identity of the user providing at least one of the one or more voice inputs includes: obtaining authentication data associated with the user providing at least one of the one or more voice inputs; obtaining a determination of the identity of the user providing at least one of the one or more voice inputs based on the authentication data; 59. The method of claim 58, comprising:

60. Obtaining the determination of the identity of the user providing at least one of the one or more voice inputs includes: providing the authentication data to at least one of a second electronic device and a third electronic device; receiving from at least one of the second electronic device and the third electronic device an identity of the user providing at least one of the one or more voice inputs, wherein the identity of the user providing at least one of the one or more voice inputs is determined based on the authentication data; 60. The method of claim 59, comprising:

61. Providing the notification at the first electronic device comprises:

61. The method of any one of claims 53 to 60, comprising providing an audio output associated with the notification at the first electronic device.

62. 62. The method of any one of claims 53 to 61, further comprising: determining an additional electronic device on which to provide the notification in accordance with a determination that the notification should not be provided at the first electronic device.

63. 63. The method of claim 62, wherein determining the additional electronic devices to provide the notification is based on the one or more voice inputs.

64. 64. The method of claim 62 or 63, wherein determining the additional electronic devices to provide the notification to is based on context information.

65. 65. The method of any one of claims 53 to 64, further comprising establishing a connection between the first electronic device and at least one of a second electronic device or a third electronic device prior to receiving the notification.

66. 66. The method of claim 65, wherein establishing the connection is based on close range communication between the first electronic device and the third electronic device.

67. 67. The method of claim 65 or 66, wherein establishing the connection is based on detecting the third electronic device within a predetermined distance from the first electronic device.

68. 68. The method of any one of claims 65 to 67, wherein establishing the connection is based on a previously established connection between the first electronic device and the third electronic device.

69. establishing a connection between the first electronic device and the third electronic device, the third electronic device being associated with the first user; and establishing a connection between the first electronic device and a fourth electronic device, the fourth electronic device being associated with a second user; 69. The method of any one of claims 65 to 68, further comprising:

70. 70. The method of any one of claims 65 to 69, further comprising, after establishing a connection between the first electronic device and the third electronic device, notifying the second electronic device of the established connection.

71. 71. The method of any one of claims 53 to 70, further comprising establishing one or more connections between the first electronic device and one or more additional electronic devices, the one or more additional electronic devices being the same type of device as the first electronic device.

72. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by one or more processors of a first electronic device, cause the first electronic device to: Receive a notification of an event associated with the first user; In response to receiving the notification, outputting a suggestion of the notification; receiving one or more audio inputs; determining whether the notification should be provided at the first electronic device in accordance with the one or more voice inputs; causing the notification to be provided at the first electronic device in accordance with a determination that the notification should be provided at the first electronic device. A non-transitory computer-readable storage medium.

73. one or more processors; Memory, one or more programs stored in a memory, The one or more programs include instructions, the instructions comprising: receiving a notification of an event associated with a first user; In response to receiving the notification, outputting a suggestion of the notification; receiving one or more audio inputs; determining whether the notification should be provided at the first electronic device according to the one or more voice inputs; providing the notification at the first electronic device in accordance with a determination that the notification should be provided at the first electronic device. A first electronic device.

74. means for receiving a notification of an event associated with a first user; means for outputting a suggestion of the notification in response to receiving the notification; means for receiving one or more audio inputs; means for determining whether the notification should be provided at the first electronic device according to the one or more voice inputs; means for providing the notification at the first electronic device in accordance with a determination that the notification should be provided at the first electronic device; An electronic device comprising:

75. one or more processors; Memory, one or more programs stored in a memory, said one or more programs comprising instructions for carrying out the method of any one of claims 53 to 71; A first electronic device comprising:

76. 72. A first electronic device comprising means for performing the method of any one of claims 53 to 71.

77. 72. A non-transitory computer-readable storage medium comprising one or more programs for execution by one or more processors of a first electronic device, the one or more programs comprising instructions that, when executed by the one or more processors, cause the first electronic device to perform the method of any one of claims 53 to 71.

78. 72. A system for operating a digital assistant, comprising means for performing the method of any one of claims 53 to 71.

79. 1. A method for providing a digital assistant service, comprising: A first electronic device having one or more processors and a memory, receiving a first voice input from a first user representing a user request; obtaining capability data associated with one or more electronic devices communicatively coupled to the first electronic device; identifying a second electronic device from the one or more electronic devices communicatively coupled to the first electronic device according to the capability data to provide at least a portion of a response to the user request; causing the second electronic device to provide at least a portion of the response to the user request; A method comprising:

80. 80. The method of claim 79, wherein obtaining the capability data comprises obtaining device capabilities associated with the one or more electronic devices that can be communicatively coupled to the first electronic device.

81. 81. The method of claim 80, wherein the device capabilities include one or more physical attributes associated with the one or more electronic devices that can be communicatively coupled to the first electronic device.

82. 82. The method of claim 80 or 81, wherein the device capabilities include data that can be provided by one of the more than one electronic device that can be communicatively coupled to the first electronic device.

83. 83. The method of any one of claims 79 to 82, wherein the first electronic device and the electronic device capable of being communicatively coupled to the first electronic device are located within a predetermined boundary.

84. Identifying a second electronic device from the one or more electronic devices communicatively coupled to the first electronic device to provide at least a portion of a response to the first user includes: obtaining one or more steps to respond to the user request based on the first voice input; identifying the second electronic device to perform at least one step of responding to the user request based on the capability data; 84. The method of any one of claims 79 to 83, comprising:

85. Obtaining one or more steps of responding to the user request includes: receiving a plan responsive to the user request from a third electronic device located remotely from the first electronic device; determining, by the first electronic device, a plan for responding to the user request, the plan including one or more steps of responding to the user request; 85. The method of claim 84, comprising at least one of the following:

86. 86. The method of claim 84 or 85, further comprising identifying one or more additional electronic devices for performing remaining steps of responding to the user request based on the capabilities data.

87. Having the second electronic device provide at least a portion of the response to the user request includes:

87. A method according to any one of claims 79 to 86, comprising causing the second electronic device to perform at least one step of responding to the user request.

88. 90. The method of claim 87, further comprising causing one or more additional electronic devices to perform remaining steps in response to the user request.

89. prior to causing the second electronic device to provide at least a portion of the response to the user request; providing a first audio output to the first user in connection with providing at least a portion of the response by the second electronic device; receiving a second voice input from the first user; determining whether at least a portion of the response should be provided by the second electronic device in response to receiving the second audio input; 89. The method of any one of claims 79 to 88, further comprising:

90. Providing, at the second electronic device, a first audio output to the first user in relation to providing at least a portion of the response, further comprises: annotating one or more steps responsive to the user request; providing the first audio output to the first user based on the annotations of one or more steps; 90. The method of claim 89, comprising:

91. prior to obtaining capability data associated with the one or more electronic devices communicatively coupled to the first electronic device; 91. The method of any one of claims 79 to 90, further comprising establishing a connection between the first electronic device and the one or more electronic devices capable of being communicatively coupled to the first electronic device.

92. 92. The method of claim 91, wherein establishing the connection is based on close-range communication between the first electronic device and the one or more electronic devices capable of being communicatively coupled to the first electronic device.

93. 93. The method of claim 91 or 92, wherein establishing the connection is based on detecting the one or more electronic devices that are within a predetermined distance from the first electronic device and that can be communicatively coupled to the first electronic device.

94. 94. The method of any one of claims 91 to 93, wherein establishing the connection is based on one or more previously established connections between the first electronic device and the one or more electronic devices that can be communicatively coupled to the first electronic device.

95. prior to obtaining capability data associated with the one or more electronic devices communicatively coupled to the first electronic device; querying the first user regarding accessing the one or more electronic devices that can be communicatively coupled to the first electronic device by the first electronic device; receiving a third voice input from the first user; determining whether the first electronic device is authorized to access the one or more electronic devices that can be communicatively coupled to the first electronic device in response to receiving the third audio input; 95. The method of any one of claims 79 to 94, further comprising:

96. providing one or more duration options for accessing the one or more electronic devices that can be communicatively coupled to the first electronic device; receiving a selection of a duration option from the first user; accessing the one or more electronic devices that can be communicatively coupled to the first electronic device based on the selected duration option; 96. The method of claim 95, further comprising:

97. prior to causing the second electronic device to provide at least a portion of the response to the first user; Obtaining an identity of the first user; determining whether the first user is authorized to receive at least a portion of the response to the user request based on the identification information of the first user; 97. The method of any one of claims 79 to 96, further comprising:

98. Obtaining the identification information of the first user includes:

98. The method of claim 97, comprising obtaining the identification information based on an audio profile.

99. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs including instructions that, when executed by one or more processors of a first electronic device, cause the first electronic device to: receiving a first speech input from a first user representing a user request; obtaining capability data associated with one or more electronic devices communicatively coupleable to the first electronic device; identifying a second electronic device from the one or more electronic devices communicatively coupled to the first electronic device in accordance with the capability data to provide at least a portion of a response to the user request; causing the second electronic device to provide at least a portion of the response to the first user. A non-transitory computer-readable storage medium.

100. one or more processors; Memory, one or more programs stored in a memory, The one or more programs include instructions, the instructions comprising: receiving a first speech input from a first user representing a user request; Obtaining capability data associated with one or more electronic devices that can be communicatively coupled to the first electronic device; identifying a second electronic device from the one or more electronic devices communicatively coupled to the first electronic device according to the capability data to provide at least a portion of a response to the user request; causing the second electronic device to provide at least a portion of the response to the first user. A first electronic device.

101. means for receiving a first speech input from a first user representing a user request; means for obtaining capability data associated with one or more electronic devices communicatively coupled to the first electronic device; means for identifying a second electronic device from the one or more electronic devices communicatively coupled to the first electronic device according to the capability data, the second electronic device providing at least a portion of a response to the user request; means for causing the second electronic device to provide at least a portion of the response to the first user; An electronic device comprising:

102. one or more processors; Memory, one or more programs stored in a memory, the one or more programs comprising instructions for carrying out the method of any one of claims 79 to 98; A first electronic device comprising:

103. 99. A first electronic device comprising means for performing the method of any one of claims 79 to 98.

104. 99. A non-transitory computer-readable storage medium comprising one or more programs for execution by one or more processors of a first electronic device, the one or more programs comprising instructions that, when executed by the one or more processors, cause the first electronic device to perform the method of any one of claims 79 to 98.

105. 99. A system for operating a digital assistant, comprising means for performing a method according to any one of claims 79 to 98.

Citation Information

Patent Citations

  • Content viewing terminal, its program, and content viewing right transfer method

    JP2009217370A

  • Response Endpoint Selection

    JP2016502192A

  • Device selection for providing a response

    US20170083285A1

  • Notifying a user of external audio

    US20180205812A1

  • Location based device grouping with voice control

    US9749583B1