Determining whether voice input is intended for digital assistant

By calculating the score of voice input and determining whether it is intended for use in intelligent automation assistants, the problem of digital assistants in the prior art error response or ignoring voice input is solved, and more accurate and efficient voice input processing is achieved.

CN119601007AActive Publication Date: 2025-03-11APPLE INC
View PDF 38 Cites 0 Cited by

Patent Information

Application Number
CN202411708126.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-23
Filing Date
2023-05-12
Publication Date
2025-03-11
Estimated Expiration
2043-05-12

AI Technical Summary

Technical Problem

The prior art is difficult to determine accurately and efficiently whether voice input is intended for use in intelligent automation assistants, resulting in digital assistants that may misresponse or ignore other voice inputs intended for use.

Method used

By receiving and converting the speech input into a text representation, the score is calculated based on the type of speech input and the correspondence with the domain identified by the digital assistant to determine whether the speech input is intended for use with the digital assistant and initiates a corresponding task or provides an output based on the score.

Benefits of technology

Improves the accurate response of the digital assistant to voice input, reduces the amount of input that users need to provide explicit indications, avoids false responses to voice inputs not intended for digital assistants, improves the efficiency and accuracy of user device interfaces, and thus extends the battery life of the device.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119601007A_ABST
    Figure CN119601007A_ABST
Patent Text Reader

Abstract

The disclosure relates to determining whether voice input is intended for a digital assistant. An example process includes receiving a speech input representing a user utterance; determining a first score based on a textual representation of the speech input, the first score corresponding to a type of the user utterance; determining a second score based on the textual representation of the speech input, the second score representing a correspondence between the user utterance and a domain identified by a digital assistant; determining whether the speech input is intended for the digital assistant based on the first score and the second score; in accordance with a determination that the voice input is intended for the digital assistant: initiating, by the digital assistant, a task based on the voice input; and providing an output indicative of the initiated task.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of invention patent application 202380038179.7, filed on May 12, 2023, and entitled “Determining whether voice input is intended for a digital assistant.” Technical Field

[0002] This document relates generally to intelligent automated assistants, and more particularly, to determining whether speech input is intended for an intelligent automated assistant. Background Art

[0003] Intelligent automated assistants (or digital assistants) can provide a favorable interface between human users and electronic devices. Such assistants can allow users to interact with devices or systems using natural language in voice form and / or text form. For example, a user can provide a voice input containing 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 operationalize the user's intent into tasks. These tasks can then be performed by executing one or more services of the electronic device, and relevant output in response to the user's request can be returned to the user. Summary of the invention

[0004] Example methods are disclosed herein. An example method includes, at an electronic device including one or more processors and a memory: receiving a voice input representing a user utterance; determining a first score based on a textual representation of the voice input, the first score corresponding to a type of the user utterance; determining a second score based on the textual representation of the voice input, the second score representing a correspondence between the user utterance and a domain recognized by a digital assistant operating on the electronic device; determining whether the voice input is intended for the digital assistant based on the first score and the second score; and in accordance with determining that the voice input is intended for the digital assistant: initiating a task based on the voice input by the digital assistant; and providing an output indicating the initiated task.

[0005] 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 include instructions that, when executed by one or more processors of an electronic device, cause the electronic device to: receive a voice input representing a user utterance; determine a first score based on a textual representation of the voice input, the first score corresponding to the type of the user utterance; determine a second score based on the textual representation of the voice input, the second score representing the correspondence between the user utterance and a domain recognized by a digital assistant operating on the electronic device; determine whether the voice input is intended for the digital assistant based on the first score and the second score; and based on determining that the voice input is intended for the digital assistant: initiate a task based on the voice input by the digital assistant; and provide an output indicating the initiated task.

[0006] An example electronic device is disclosed herein. An example electronic device includes one or more processors; a memory; and one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, and the one or more programs include instructions for performing the following operations: receiving a voice input representing a user utterance; determining a first score based on a textual representation of the voice input, the first score corresponding to the type of the user utterance; determining a second score based on the textual representation of the voice input, the second score representing a correspondence between the user utterance and a domain recognized by a digital assistant operating on the electronic device; determining whether the voice input is intended for the digital assistant based on the first score and the second score; and in accordance with determining that the voice input is intended for the digital assistant: initiating a task based on the voice input by the digital assistant; and providing an output indicating the initiated task.

[0007] An example electronic device includes components for performing the following operations: receiving voice input representing a user utterance; determining a first score based on a text representation of the voice input, the first score corresponding to a type of the user utterance; determining a second score based on the text representation of the voice input, the second score representing a correspondence between the user utterance and a domain recognized by a digital assistant operating on the electronic device; determining whether the voice input is intended for the digital assistant based on the first score and the second score; and based on determining that the voice input is intended for the digital assistant: initiating, by the digital assistant, a task based on the voice input; and providing output indicative of the initiated task.

[0008] Determining whether the voice input is intended for the digital assistant based on the first score and the second score allows the digital assistant to respond to the voice input more accurately and efficiently. For example, the digital assistant can determine whether the voice input is intended for itself (and provide a relevant response to the voice input) without requiring the user to provide additional input that explicitly indicates that the voice input is intended for the digital assistant (e.g., a verbal trigger input, a selection of a button, a selection of a displayed affordance, etc.). In addition, the digital assistant can avoid responding to voice input that is not intended for the digital assistant (e.g., voice input intended for another person). In this way, the user-device interface can be more efficient and accurate (e.g., by reducing the amount of user input required to correctly interact with the digital assistant, by reducing the user input required to stop the digital assistant from providing an incorrect response to voice input that is not intended for the digital assistant, by accurately responding to voice input intended for the digital assistant, by avoiding repeated voice input to the digital assistant), which additionally reduces power usage and improves battery life of the device by enabling the user to use the device more quickly and efficiently.

[0009] Example methods are disclosed herein. An example method includes, at an electronic device including one or more processors and a memory: receiving a first voice input representing a first user utterance; initiating a first task based on the first voice input by a digital assistant operating on the electronic device; providing a first output indicating the initiated first task; and after providing the first output: receiving a second voice input after the first voice input, the second voice input representing a second user utterance; determining a first score based on a textual representation of the second voice input, the first score representing a correspondence between the second user utterance and a domain recognized by the digital assistant; determining a second score based on the textual representation of the second voice input, the second score representing contextual continuity between the first user utterance and the second user utterance; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; and in accordance with determining that the second voice input is intended for the digital assistant: initiating a second task based on the second voice input by the digital assistant; and providing a second output indicating the initiated second task.

[0010] 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 include instructions that, when executed by one or more processors of an electronic device, cause the electronic device to: receive a first voice input representing a first user utterance; initiate a first task based on the first voice input through a digital assistant operating on the electronic device; provide a first output indicating the initiated first task; and after providing the first output: receive a second voice input after the first voice input, the second voice input representing a second user utterance; determine a first score based on a text representation of the second voice input, the first score representing a correspondence between the second user utterance and a domain recognized by the digital assistant; determine a second score based on the text representation of the second voice input, the second score representing contextual continuity between the first user utterance and the second user utterance; determine whether the second voice input is intended for the digital assistant based on the first score and the second score; and according to determining that the second voice input is intended for the digital assistant: initiate a second task based on the second voice input through the digital assistant; and provide a second output indicating the initiated second task.

[0011] An example electronic device is disclosed herein. An example electronic device includes one or more processors; a memory; and one or more programs, wherein 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 including instructions for performing the following operations: receiving a first voice input representing a first user utterance; initiating a first task based on the first voice input by a digital assistant operating on the electronic device; providing a first output indicating the initiated first task; and after providing the first output: receiving a second voice input after the first voice input, the second voice input representing a second user utterance; determining a first score based on a text representation of the second voice input, the first score representing a correspondence between the second user utterance and a domain recognized by the digital assistant; determining a second score based on the text representation of the second voice input, the second score representing contextual continuity between the first user utterance and the second user utterance; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; and according to determining that the second voice input is intended for the digital assistant: initiating a second task based on the second voice input by the digital assistant; and providing a second output indicating the initiated second task.

[0012] An example electronic device includes components for performing the following operations: receiving a first voice input representing a first user utterance; initiating a first task based on the first voice input through a digital assistant operating on the electronic device; providing a first output indicating the initiated first task; and after providing the first output: receiving a second voice input after the first voice input, the second voice input representing a second user utterance; determining a first score based on a text representation of the second voice input, the first score indicating a correspondence between the second user utterance and a domain recognized by the digital assistant; determining a second score based on the text representation of the second voice input, the second score indicating contextual continuity between the first user utterance and the second user utterance; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; and based on determining that the second voice input is intended for the digital assistant: initiating a second task based on the second voice input through the digital assistant; and providing a second output indicating the initiated second task.

[0013] Determining whether the second voice input is intended for the digital assistant allows the digital assistant to respond more accurately and efficiently to voice input (e.g., subsequent voice) after the initial voice input. This in turn can enable more accurate and efficient continuous interaction with the digital assistant. For example, the digital assistant can determine whether the subsequent voice is intended for itself (and provide a relevant response to the subsequent voice) without the user providing additional input that explicitly indicates that the subsequent voice is intended for the digital assistant (e.g., a verbal trigger input, a button selection, a selection of a displayed affordance, etc.). In addition, the digital assistant can avoid responding to subsequent voices that are not intended for the digital assistant (e.g., a subsequent voice intended for another person). In this way, the user-device interface can be more efficient and accurate (e.g., by reducing the amount of user input required to correctly interact with the digital assistant, by reducing the user input required to stop the digital assistant from providing an incorrect response to a subsequent voice that is not intended for the digital assistant, by accurately responding to subsequent voice inputs intended for the digital assistant, by avoiding repeated subsequent voice inputs to the digital assistant), which additionally reduces power usage and improves the battery life of the device by enabling the user to use the device more quickly and efficiently.

[0014] Example methods are disclosed herein. An example method includes, at an electronic device including one or more processors and a memory: receiving a voice input; determining a first score based on an acoustic representation of the voice input, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determining a second score based on a textual representation of the voice input, the second score indicating whether the voice input is intended for the digital assistant; determining whether the voice input is intended for the digital assistant based on the first score and the second score; initiating a task based on the voice input by the digital assistant; and in accordance with determining that the voice input is intended for the digital assistant: providing an output indicating the initiated task.

[0015] Example non-transitory computer-readable media are disclosed herein. An example non-transitory computer-readable storage medium stores one or more programs. The one or more programs include instructions that, when executed by one or more processors of an electronic device, cause the electronic device to: receive voice input; determine a first score based on an acoustic representation of the voice input, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determine a second score based on a textual representation of the voice input, the second score indicating whether the voice input is intended for the digital assistant; determine whether the voice input is intended for the digital assistant based on the first score and the second score; initiate a task based on the voice input by the digital assistant; and based on determining that the voice input is intended for the digital assistant: provide an output indicating the initiated task.

[0016] An example electronic device is disclosed herein. An example electronic device includes one or more processors; a memory; and one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, and the one or more programs include instructions for performing the following operations: receiving voice input; determining a first score based on an acoustic representation of the voice input, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determining a second score based on a textual representation of the voice input, the second score indicating whether the voice input is intended for the digital assistant; determining whether the voice input is intended for the digital assistant based on the first score and the second score; initiating a task based on the voice input by the digital assistant; and based on determining that the voice input is intended for the digital assistant: providing an output indicating the initiated task.

[0017] An exemplary electronic device includes components for performing the following operations: receiving voice input; determining a first score based on an acoustic representation of the voice input, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determining a second score based on a textual representation of the voice input, the second score indicating whether the voice input is intended for the digital assistant; determining whether the voice input is intended for the digital assistant based on the first score and the second score; initiating a task based on the voice input through the digital assistant; and based on determining that the voice input is intended for the digital assistant: providing output indicating the initiated task.

[0018] Determining whether the voice input is intended for the digital assistant based on the first score and the second score allows the digital assistant to respond to the voice input more accurately and efficiently. For example, the digital assistant can determine whether the voice input is intended for itself (and provide a relevant response to the voice input) without requiring the user to provide additional input that explicitly indicates that the voice input is intended for the digital assistant (e.g., a verbal trigger input, a selection of a button, a selection of a displayed affordance, etc.). In addition, the digital assistant can avoid responding to voice input that is not intended for the digital assistant (e.g., voice input intended for another person). In this way, the user-device interface can be more efficient and accurate (e.g., by reducing the amount of user input required to correctly interact with the digital assistant, by reducing the user input required to stop the digital assistant from providing an incorrect response to voice input that is not intended for the digital assistant, by accurately responding to voice input intended for the digital assistant, by avoiding repeated voice input to the digital assistant), which additionally reduces power usage and improves battery life of the device by enabling the user to use the device more quickly and efficiently.

[0019] Example methods are disclosed herein. An example method includes, at an electronic device including one or more processors and a memory: receiving a first voice input; initiating a first task based on the first voice input by a digital assistant operating on the electronic device; providing a first output indicating the initiated first task; and after providing the first output: receiving a second voice input subsequent to the first voice input; determining a first score based on a user gaze input and the second voice input, the first score indicating whether the second voice input is intended for the digital assistant; determining a second score based on an acoustic representation of the second voice input, the second score indicating whether the second voice input is intended for the digital assistant; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; initiating a second task based on the second voice input by the digital assistant; and based on determining that the second voice input is intended for the digital assistant: providing a second output indicating the initiated second task.

[0020] 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 include instructions that, when executed by one or more processors of an electronic device, cause the electronic device to: receive a first voice input; initiate a first task based on the first voice input through a digital assistant operating on the electronic device; provide a first output indicating the initiated first task; and after providing the first output: receive a second voice input after the first voice input; determine a first score based on a user gaze input and the second voice input, the first score indicating whether the second voice input is intended for the digital assistant; determine a second score based on an acoustic representation of the second voice input, the second score indicating whether the second voice input is intended for the digital assistant; determine whether the second voice input is intended for the digital assistant based on the first score and the second score; initiate a second task based on the second voice input through the digital assistant; and according to determining that the second voice input is intended for the digital assistant: provide a second output indicating the initiated second task.

[0021] An example electronic device is disclosed herein. An example electronic device includes one or more processors; a memory; and one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, and the one or more programs include instructions for performing the following operations: receiving a first voice input; initiating a first task based on the first voice input by a digital assistant operating on the electronic device; providing a first output indicating the initiated first task; and after providing the first output: receiving a second voice input after the first voice input; determining a first score based on a user gaze input and the second voice input, the first score indicating whether the second voice input is intended for the digital assistant; determining a second score based on an acoustic representation of the second voice input, the second score indicating whether the second voice input is intended for the digital assistant; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; initiating a second task based on the second voice input by the digital assistant; and according to determining that the second voice input is intended for the digital assistant: providing a second output indicating the initiated second task.

[0022] An exemplary electronic device includes components for performing the following operations: receiving a first voice input; initiating a first task based on the first voice input through a digital assistant operating on the electronic device; providing a first output indicating the initiated first task; and after providing the first output: receiving a second voice input subsequent to the first voice input; determining a first score based on a user gaze input and the second voice input, the first score indicating whether the second voice input is intended for the digital assistant; determining a second score based on an acoustic representation of the second voice input, the second score indicating whether the second voice input is intended for the digital assistant; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; initiating a second task based on the second voice input through the digital assistant; and based on determining that the second voice input is intended for the digital assistant: providing a second output indicating the initiated second task.

[0023] Determining whether the second voice input is intended for the digital assistant allows the digital assistant to respond more accurately and efficiently to voice input (e.g., subsequent voice) after the initial voice input. This in turn can enable more accurate and efficient continuous interaction with the digital assistant. For example, the digital assistant can determine whether the subsequent voice is intended for itself (and provide a relevant response to the subsequent voice) without the user providing additional input that explicitly indicates that the subsequent voice is intended for the digital assistant (e.g., a verbal trigger input, a button selection, a selection of a displayed affordance, etc.). In addition, the digital assistant can avoid responding to subsequent voices that are not intended for the digital assistant (e.g., a subsequent voice intended for another person). In this way, the user-device interface can be more efficient and accurate (e.g., by reducing the amount of user input required to correctly interact with the digital assistant, by reducing the user input required to stop the digital assistant from providing an incorrect response to a subsequent voice that is not intended for the digital assistant, by accurately responding to subsequent voice inputs intended for the digital assistant, by avoiding repeated subsequent voice inputs to the digital assistant), which additionally reduces power usage and improves the battery life of the device by enabling the user to use the device more quickly and efficiently.

[0024] Example methods are disclosed herein. An example method includes, at an electronic device including one or more processors and a memory: receiving a voice input; capturing a first data set from a camera between a start time and an end time of the voice input; determining a second data set representing a user gaze pattern when providing the voice input based on the first data set; determining a first score based on the voice input and the second data set, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determining whether the voice input is intended for the digital assistant based on the first score; initiating a task based on the voice input by the digital assistant; and in accordance with determining that the voice input is intended for the digital assistant: providing an output indicating the initiated task.

[0025] 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 include instructions that, when executed by one or more processors of an electronic device, cause the electronic device to: receive voice input; capture a first data set from a camera between a start time and an end time of the voice input; determine a second data set representing a user gaze pattern when providing the voice input based on the first data set; determine a first score based on the voice input and the second data set, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determine whether the voice input is intended for the digital assistant based on the first score; initiate a task based on the voice input by the digital assistant; and based on determining that the voice input is intended for the digital assistant: provide an output indicating the initiated task.

[0026] An example electronic device is disclosed herein. An example electronic device includes one or more processors; a memory; and one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, and the one or more programs include instructions for performing the following operations: receiving a voice input; capturing a first data set from a camera between a start time and an end time of the voice input; determining a second data set representing a user gaze pattern when providing the voice input based on the first data set; determining a first score based on the voice input and the second data set, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determining whether the voice input is intended for the digital assistant based on the first score; initiating a task based on the voice input by the digital assistant; and according to determining that the voice input is intended for the digital assistant: providing an output indicating the initiated task.

[0027] An exemplary electronic device includes components for performing the following operations: receiving voice input; capturing a first data set from a camera between a start time and an end time of the voice input; determining a second data set representing a user gaze pattern when providing the voice input based on the first data set; determining a first score based on the voice input and the second data set, the first score indicating whether the voice input is intended for a digital assistant operating on the electronic device; determining whether the voice input is intended for the digital assistant based on the first score; initiating a task based on the voice input through the digital assistant; and based on determining that the voice input is intended for the digital assistant: providing an output indicating the initiated task.

[0028] Determining whether the voice input is intended for the digital assistant based on the first score allows the digital assistant to respond to the voice input more accurately and efficiently. For example, the digital assistant can determine whether the voice input is intended for itself (and provide a relevant response to the voice input) without requiring the user to provide additional input that explicitly indicates that the voice input is intended for the digital assistant (e.g., a verbal trigger input, a selection of a button, a selection of a displayed affordance, etc.). The digital assistant may alternatively rely on the user's gaze pattern to determine whether the voice input is intended for itself. In addition, the digital assistant can avoid responding to voice input that is not intended for the digital assistant (e.g., a voice input intended for another person). In this way, the user-device interface can be more efficient and accurate (e.g., by reducing the amount of user input required to correctly interact with the digital assistant, by reducing the user input required to stop the digital assistant from providing an incorrect response to a voice input that is not intended for the digital assistant, by accurately responding to voice input intended for the digital assistant, by avoiding repeated voice input to the digital assistant), which additionally reduces power usage and improves the battery life of the device by enabling the user to use the device more quickly and efficiently. BRIEF DESCRIPTION OF THE DRAWINGS

[0029] Figure 1 A block diagram is shown of a system and environment for implementing a digital assistant according to various examples.

[0030] Figure 2A A block diagram of a portable multifunction device that implements the client-side portion of a digital assistant according to various examples is shown.

[0031] Figure 2B is a block diagram illustrating exemplary components for event processing according to various examples.

[0032] Figure 3 A portable multifunction device implementing the client-side portion of a digital assistant according to various examples is shown.

[0033] Figure 4 is a block diagram of an exemplary multifunction device with a display and a touch-sensitive surface according to various examples.

[0034] Figure 5A An exemplary user interface of a menu of applications on a portable multifunction device is shown according to various examples.

[0035] Figure 5B An exemplary user interface for a multifunction device having a touch-sensitive surface separate from the display is shown according to various examples.

[0036] Fig. 6A A personal electronic device according to various examples is shown.

[0037] Figure 6B A block diagram illustrating a personal electronic device according to various examples is shown.

[0038] Fig. 7A A block diagram of a digital assistant system or a server portion thereof according to various examples is shown.

[0039] Figure 7B According to various examples, Fig. 7A The capabilities of the digital assistant shown in .

[0040] Figure 7C A portion of an ontology according to various examples is shown.

[0041] Figure 8 A system for determining whether speech input is intended for a digital assistant according to various examples is shown.

[0042] 9A to 9D A digital assistant user interface displayed by an electronic device according to various examples is shown.

[0043] Fig.10 A process for determining whether speech input is intended for a digital assistant according to various examples is shown.

[0044] Fig.11 A process for determining whether subsequent voice input is intended for a digital assistant according to various examples is shown.

[0045] FIG. 12A to FIG. 12B A process for determining whether speech input is intended for a digital assistant according to various examples is shown.

[0046] FIG. 13A to FIG. 13B A process for determining whether speech input is intended for a digital assistant according to various examples is shown.

[0047] FIG. 14A to FIG. 14C A process for determining whether subsequent voice input is intended for a digital assistant according to various examples is shown. DETAILED DESCRIPTION

[0048] In the following description of the examples, reference will be made to the accompanying drawings, in which specific examples that may be implemented are shown by way of illustration. It should be understood that other examples may be used and structural changes may be made without departing from the scope of the various examples.

[0049] This typically involves determining whether the voice input is intended for a digital assistant. As described herein, the determination can be based on a textual representation of the voice input, an acoustic representation of the voice input, a user gaze input, and / or various other inputs.

[0050] Although the following description uses the terms "first," "second," etc. to describe various elements, these elements should not be limited by the terms. These terms are simply used to distinguish one element from another. For example, without departing from the scope of the various described examples, a first input may be referred to as a second input, and similarly, a second input may be referred to as a first input. Both the first input and the second input are inputs, and in some cases are independent and different inputs.

[0051] The terms used in the description of various examples described herein are only for the purpose of describing specific examples, and are not intended to be limiting. As used in the description of various examples described and in the appended claims, the singular forms "one", "a kind of" and "the" are intended to also include plural forms, unless the context clearly indicates otherwise. It will also be understood that the term "and / or" used herein refers to and encompasses any and all possible combinations of one or more items in the associated listed items. It will also be understood that the term "comprising" when used in this specification specifies the presence of stated features, integers, steps, operations, elements and / or parts, but does not exclude the presence or addition of one or more other features, integers, steps, operations, elements, parts and / or their groupings.

[0052] Depending on the context, the term "if" may be interpreted to mean "when" or "upon" or "in response to determining" or "in response to detecting." Similarly, the phrases "if it is determined that" or "if [a stated condition or event] is detected" may be interpreted to mean "upon determining that" or "in response to determining that" or "upon detecting [a stated condition or event]" or "in response to detecting [a stated condition or event]," depending on the context.

[0053] 1. System and Environment

[0054] Figure 1 A block diagram of a system 100 according to various examples is shown. In some examples, the system 100 implements a digital assistant. The terms "digital assistant," "virtual assistant," "intelligent automated assistant," or "automatic digital assistant" refer to any information processing system that interprets natural language input in speech form and / or text form to infer user intent and performs actions based on the inferred user intent. For example, to act on an inferred user intent, the system performs one or more of the following steps: identifying a task flow with steps and parameters designed to implement the inferred user intent, inputting specific requirements into the task flow based on the inferred user intent; executing the task flow by calling a program, method, service, API, etc.; and generating an output response to the user in an audible (e.g., voice) and / or visual form.

[0055] Specifically, the digital assistant is capable of accepting user requests in the form of at least partially natural language commands, requests, statements, narrations and / or inquiries. Typically, the user requests to seek an informative answer or perform a task from the digital assistant. A satisfactory response to the user's request includes providing the requested informative answer, performing the requested task, or a combination of the two. For example, the user asks the digital assistant a question, such as "Where am I now?" Based on the user's current location, the digital assistant answers "You are near the West Gate of Central Park." The user also requests to perform a task, such as "Please invite my friends to my girlfriend's birthday party next week." In response, the digital assistant can confirm the request by saying "OK, right away", and then send a suitable calendar invitation to each of the user's friends listed in the user's electronic address book on behalf of the user. During the execution of the requested task, the digital assistant sometimes interacts with the user in a continuous dialogue involving multiple information exchanges over a long period of time. There are many other methods of interacting with the digital assistant to request information or perform various tasks. In addition to providing verbal responses and taking programmed actions, the digital assistant also provides responses in other video or audio forms, such as text, reminders, music, videos, animations, etc.

[0056] like Figure 1 As shown, in some examples, the digital assistant is implemented according to a client-server model. The digital assistant includes a client-side portion 102 (hereinafter referred to as "DA client 102") executed on a user device 104 and a server-side portion 106 (hereinafter referred to as "DA server 106") executed on a 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 functionality, such as user-oriented input and output processing, and communication with the DA server 106. The DA server 106 provides server-side functionality for any number of DA clients 102, each located on a corresponding user device 104.

[0057] In some examples, the DA server 106 includes a client-facing 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-facing I / O interface 112 facilitates client-facing input and output processing of the DA server 106. One or more processing modules 114 utilize the data and models 116 to process voice input and determine user intent based on natural language input. In addition, one or more processing modules 114 perform task execution based on inferred user intent. In some examples, the DA server 106 communicates with external services 120 via one or more networks 110 to complete tasks or collect information. The I / O interface 118 to external services facilitates such communications.

[0058] User device 104 can be any suitable electronic device. In some examples, user device 104 is a portable multi-function device (e.g., Figure 2A The device 200 described above), a multifunctional device (eg, as described below with reference to Figure 4 The device 400) or a personal electronic device (eg, as described below) FIG. 6A to FIG. 6B The portable multifunction device is, for example, a mobile phone that also includes other functions (such as a PDA and / or a music player function). Specific examples of portable multifunction devices include the Apple iPod from Apple Inc. of Cupertino, California, USA. iPod and Device. Other examples of portable multifunction devices include, but are not limited to, earbuds / headphones, speakers, and laptop computers or tablet computers. In addition, in some examples, user device 104 is a non-portable multifunction device. Specifically, user device 104 is a desktop computer, a game console, a speaker, a television, or a television set-top box. In some examples, user device 104 includes a touch-sensitive surface (e.g., a touch screen display and / or a touchpad). In addition, 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 multifunction devices are described in more detail below.

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

[0060] The server system 108 is implemented on one or more stand-alone data processing devices or distributed computer networks. In some examples, the server system 108 also uses various virtual devices and / or services of third-party service providers (e.g., third-party cloud service providers) to provide the potential computing resources and / or infrastructure resources of the server system 108.

[0061] 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 user device 104 described below with reference to Figure 2A , Figure 4 and FIG. 6A to FIG. 6B The device 200, 400 or 600 described. 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, etc.) 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 act 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 transmit 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.

[0062] In some examples, the user device 104 is configured to send an abbreviated request for data 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 supplemental information to add to the abbreviated request to generate a complete request for transmission to the DA server 106. The system architecture can advantageously allow user devices 104 with limited communication capabilities and / or limited battery power (e.g., a watch or similar compact electronic device) to access services provided by the DA server 106 by using a second user device 122 (e.g., a mobile phone, laptop computer, tablet computer, etc.) with greater communication capabilities and / or battery power as a proxy to the DA server 106. Although Figure 1 Only two user devices 104 and 122 are shown, but 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.

[0063] Although Figure 1 The digital assistant shown in 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 a user device. In addition, the division of functionality between the client and server portions of the digital assistant may vary in different specific implementations. For example, in some examples, the DA client is a thin client that only provides user-facing input and output processing functions and delegates all other functions of the digital assistant to a backend server.

[0064] 2. Electronic devices

[0065] Attention now turns to embodiments of electronic devices for implementing the client-side portion of a digital assistant. Figure 2A2 is a block diagram showing a portable multifunction device 200 with a touch-sensitive display system 212 according to some embodiments. The touch-sensitive display 212 is sometimes referred to as a "touch screen" for convenience, and is sometimes referred to as or referred to as a "touch-sensitive display system". The device 200 includes a memory 202 (which optionally includes 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 system 208, an audio circuit system 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 optical sensors 264. The device 200 optionally includes one or more contact force sensors 265 for detecting the intensity of contact on the device 200 (e.g., a touch-sensitive surface of the device 200 such as the touch-sensitive display system 212). Device 200 optionally includes one or more tactile output generators 267 for generating tactile output on device 200 (e.g., generating tactile output on a touch-sensitive surface such as touch-sensitive display system 212 of device 200 or touch pad 455 of device 400). These components optionally communicate via one or more communication buses or signal lines 203.

[0066] As used in this specification and claims, the term "intensity" of a contact on a touch-sensitive surface refers to the force or pressure (force per unit area) of a contact (e.g., a finger contact) on the touch-sensitive surface, or to a surrogate (surrogate) of the force or pressure of a contact on the touch-sensitive surface. The intensity of a contact has a range of values ​​that includes at least four different values ​​and more typically includes hundreds of different values ​​(e.g., at least 256). The intensity of a contact is optionally determined (or measured) using various methods and various sensors or combinations of sensors. For example, one or more force sensors below or adjacent to the touch-sensitive surface are optionally used to measure the force at different points on the touch-sensitive surface. In some implementations, force measurements from multiple force sensors are combined (e.g., weighted average) to determine an estimated contact force. Similarly, the pressure-sensitive tip of a stylus is optionally used to determine the pressure of the stylus on the touch-sensitive surface. Alternatively, the size of the contact area detected on the touch-sensitive surface and / or its change, the capacitance of the touch-sensitive surface near the contact and / or its change, and / or the resistance of the touch-sensitive surface near the contact and / or its change are optionally used as a substitute for the force or pressure of the contact on the touch-sensitive surface. In some embodiments, the substitute measurement of the contact force or pressure is used directly to determine whether the intensity threshold has been exceeded (e.g., the intensity threshold is described in units corresponding to the substitute measurement). In some embodiments, the substitute measurement of the contact force or pressure is converted into an estimated force or pressure, and the estimated force or pressure is used to determine whether the intensity threshold has been exceeded (e.g., the intensity threshold is a pressure threshold measured in units of pressure). Using the intensity of the contact as an attribute of the user input allows the user to access additional device functions that would otherwise be inaccessible to the user on a smaller device with limited real estate, which is used to display an enable indication (e.g., on a touch-sensitive display) and / or receive user input (e.g., via a touch-sensitive display, touch-sensitive surface, or physical / mechanical controls, such as knobs or buttons).

[0067] As used in this specification and claims, the term "tactile output" refers to a physical displacement of a device relative to a previous position of the device, a physical displacement of a component of the device (e.g., a touch-sensitive surface) relative to another component of the device (e.g., a housing), or a displacement of a component relative to the center of mass of the device, which will be detected by a user using the user's sense of touch. For example, in the case where a device or a component of the device is in contact with a user's touch-sensitive surface (e.g., a finger, palm, or other part of the user's hand), the tactile output generated by the physical displacement will be interpreted by the user as a tactile sensation corresponding to a perceived change in a physical property of the device or a component of the device. For example, movement of a touch-sensitive surface (e.g., a touch-sensitive display or a touchpad) is optionally interpreted by the user as a "press click" or "release click" to a physical actuation button. In some cases, the user will feel a tactile sensation, such as a "press click" or "release click", even when the physical actuation button associated with the touch-sensitive surface that is physically pressed (e.g., displaced) by the user's movement does not move. As another example, even when there is no change in the smoothness of the touch-sensitive surface, movement of the touch-sensitive surface may optionally be interpreted or sensed by the user as "roughness" of the touch-sensitive surface. Although such a user's interpretation of touch will be limited by the user's individualized sensory perceptions, many sensory perceptions of touch are common to most users. Thus, when a tactile output is described as corresponding to a particular sensory perception of a user (e.g., "press click," "release click," "roughness"), unless otherwise stated, the generated tactile output corresponds to a physical displacement of the device or a component thereof that would generate that sensory perception for a typical (or average) user.

[0068] It should be understood that device 200 is only one example of a portable multifunction device, and that device 200 optionally has more or fewer components than shown, optionally combines two or more components, or optionally has a different configuration or arrangement of the components. Figure 2A The various components shown 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] The memory 202 includes one or more computer-readable storage media. These computer-readable storage media are, for example, tangible and non-transitory. The memory 202 includes a high-speed random access memory and also includes a non-volatile memory, such as one or more disk storage devices, flash memory devices, or other non-volatile solid-state memory devices. The memory controller 222 controls other components of the device 200 to access the memory 202.

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

[0071] The peripheral device interface 218 is used to couple the input and output peripheral devices of the device to the CPU 220 and the memory 202. The one or more processors 220 run or execute various software programs and / or instruction sets stored in the memory 202 to perform various functions of the device 200 and 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, they are implemented on separate chips.

[0072] RF (radio frequency) circuit system 208 receives and sends RF signals, also known as electromagnetic signals. RF circuit system 208 converts electrical signals into / from electromagnetic signals and communicates with communication networks and other communication devices via electromagnetic signals. RF circuit system 208 optionally includes well-known circuit systems for performing these functions, including but not limited to antenna systems, RF transceivers, one or more amplifiers, tuners, one or more oscillators, digital signal processors, CODEC chipsets, user identity modules (SIM) cards, memory, etc. RF circuit system 208 optionally communicates with networks and other devices through wireless communications, such as the Internet (also known as the World Wide Web (WWW)), intranets, and / or wireless networks (such as cellular telephone networks, wireless local area networks (LANs), and / or metropolitan area networks (MANs)). RF circuit system 208 optionally includes well-known circuit systems for detecting near field communication (NFC) fields, such as through short-range communication radios. Wireless communication optionally uses any of a variety of communication standards, protocols and technologies, including, but not limited to, Global System for Mobile Communications (GSM), 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, Bluetooth Low Energy (BTLE), Wireless Fidelity (Wi-Fi) (e.g., IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n and / or IEEE 802.11ac), Voice over Internet Protocol (VoIP), Wi-MAX, email protocols (e.g., Internet Message Access Protocol (IMAP) and / or Post Office Protocol (POP)), instant messaging (e.g., Extensible Messaging and Presence Protocol (XMPP), Session Initiation Protocol for Instant Messaging and Presence Utilizing Extensions (SIMPLE), Instant Messaging and Presence Service (IMPS)) and / or Short Message Service (SMS), or any other suitable communications protocol, including communications protocols that have not yet been developed as of the filing date of this document.

[0073] The audio circuit system 210, speaker 211, and microphone 213 provide an audio interface between a user and the device 200. The audio circuit system 210 receives audio data from the peripheral device interface 218, converts the audio data into electrical signals, and transmits the electrical signals to the speaker 211. The speaker 211 converts the electrical signals into sound waves audible to humans. The audio circuit system 210 also receives electrical signals converted from sound waves by the microphone 213. The audio circuit system 210 converts the electrical signals into audio data and transmits the audio data to the peripheral device interface 218 for processing. The audio data is retrieved from and / or transmitted to the memory 202 and / or the RF circuit system 208 via the peripheral device interface 218. In some embodiments, the audio circuit system 210 also includes a headphone jack (e.g., Figure 3 The headset jack provides an interface between the audio circuit system 210 and a removable audio input / output peripheral device, such as an output-only headset or a headset with both output (e.g., a single-ear headset or a dual-ear headset) and input (e.g., a microphone).

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

[0075] A quick press of the push button disengages the lock of the touch screen 212 or begins the process of unlocking the device using gestures on the touch screen, as described in U.S. Patent Application 11 / 322,549, filed December 23, 2005, entitled "Unlocking a Device by Performing Gestures on an Unlock Image"; U.S. Patent No. 7,657,849, which is hereby incorporated by reference in its entirety. A longer press of the push button (e.g., 306) powers the device 200 on or off. The user can customize the function of one or more buttons. The touch screen 212 is used to implement virtual buttons 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 electrical signals from the touch screen 212 and / or sends electrical signals 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 sensor group that accepts input from a user based on tactile and / or haptic contact. The touch screen 212 and display controller 256 (together with any associated modules and / or instruction sets in memory 202) detect contact (and any movement or interruption of the contact) on the touch screen 212 and convert the detected contact into interaction with a user interface object (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 other display technologies may be used in other embodiments. The touch screen 212 and display controller 256 use any of a variety of touch sensing technologies now known or later developed, as well as other proximity sensor arrays or other elements for determining one or more points of contact with the touch screen 212 to detect contact and any movement or interruption thereof, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies. In an exemplary embodiment, projected mutual capacitance sensing technology is used, such as in the Apple iPod Touch from Apple Inc. of Cupertino, California. and iPod The technology used in.

[0079] In some embodiments, the touch-sensitive display of the touch screen 212 is similar to the multi-touch-sensitive touch pads described in U.S. Patents 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 / 0015024A1, all of which are hereby incorporated by reference in their entirety. However, the touch screen 212 displays visual output from the device 200, whereas the touch-sensitive touch pad does not provide visual output.

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

[0081] The touch screen 212 has, for example, a video resolution of more than 100 dpi. In some embodiments, the touch screen has a video resolution of about 160 dpi. The user contacts the touch screen 212 using any suitable object or appendage, such as a stylus, a finger, etc. In some embodiments, the user interface is designed to work primarily through finger-based contacts and gestures, which may not be as precise as stylus-based input due to the larger contact area of ​​the finger on the touch screen. In some embodiments, the device converts rough finger-based input into precise pointer / cursor positioning or commands for performing the actions desired by the user.

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

[0083] Device 200 also includes a power system 262 for powering the various components. Power system 262 includes a power management system, one or more power sources (e.g., batteries, alternating current (AC)), a recharging system, power fault detection circuits, power converters or inverters, power status indicators (e.g., light emitting diodes (LEDs)), and any other components associated with the generation, management, and distribution of power in a portable device.

[0084] The device 200 also includes one or more optical sensors 264 . Figure 2A An optical sensor coupled to an optical sensor controller 258 in the I / O subsystem 206 is shown. The optical sensor 264 includes a charge coupled device (CCD) or a complementary metal oxide semiconductor (CMOS) phototransistor. The optical sensor 264 receives light projected through one or more lenses from the environment and converts the light into data representing an image. In conjunction with the imaging module 243 (also called a camera module), the optical sensor 264 captures a static image or video. In some embodiments, the optical sensor is located at the rear of the device 200, opposite to the touch screen display 212 at the front of the device, so that the touch screen display is used as a viewfinder for static image and / or video image acquisition. In some embodiments, the optical sensor is located at the front of the device so that the user's image is obtained for video conferencing while the user views other video conference participants on the touch screen display. In some embodiments, the positioning of the optical sensor 264 can be changed by the user (e.g., by rotating the lens and sensor in the device housing) so that a single optical sensor 264 is used with the touch screen display for both video conferencing and static image and / or video image acquisition.

[0085] Device 200 optionally also includes one or more contact intensity sensors 265 . Figure 2A A contact force sensor is shown coupled to a force sensor controller 259 in the I / O subsystem 206. The contact force sensor 265 optionally includes one or more piezoresistive strain gauges, capacitive force sensors, electrical force sensors, piezoelectric force sensors, optical force sensors, capacitive touch-sensitive surfaces, or other force sensors (e.g., sensors for measuring the force (or pressure) of contact on a touch-sensitive surface). The contact force sensor 265 receives contact force information (e.g., pressure information or a surrogate for pressure information) from the environment. In some embodiments, at least one contact force sensor is juxtaposed or adjacent to a touch-sensitive surface (e.g., touch-sensitive display system 212). In some embodiments, at least one contact force sensor is located on the rear of the device 200, opposite the touch screen display 212 located on the front of the device 200.

[0086] Device 200 also includes one or more proximity sensors 266 . Figure 2A A proximity sensor 266 is shown coupled to the peripherals interface 218. Alternatively, the proximity sensor 266 is coupled to the input controller 260 in the I / O subsystem 206. The proximity sensor 266 is implemented as described in the following U.S. patent applications: U.S. patent application Ser. No. 11 / 241,839, “Proximity Detector In Handheld Device”; U.S. patent application Ser. No. 11 / 240,788, “Proximity Detector In Handheld Device”; U.S. patent application Ser. No. 11 / 620,702, “Using Ambient Light Sensor To Augment Proximity Sensor Output”; U.S. patent application Ser. No. 11 / 586,862, “Automated Response To And Sensing Of User Activity In Portable Devices”; and U.S. patent application Ser. No. 11 / 638,251, “Methods And Systems For Automatic Configuration Of Peripherals”, which are hereby incorporated by reference in their entirety. In some embodiments, when the multifunction device is placed near the user's ear (e.g., when the user is making a phone call), the proximity sensor turns off and the touch screen 212 is disabled.

[0087] Device 200 optionally also includes one or more tactile output generators 267 . Figure 2AA tactile output generator coupled to a tactile feedback controller 261 in the I / O subsystem 206 is shown. The tactile output generator 267 optionally includes one or more electroacoustic devices such as a speaker or other audio component; and / or an electromechanical device for converting energy into linear motion such as a motor, solenoid, electroactive polymer, piezoelectric actuator, electrostatic actuator, or other tactile output generating component (e.g., a component for converting an electrical signal into a tactile output on the device). The contact force sensor 265 receives tactile feedback generation instructions from the tactile feedback module 233 and generates a tactile output on the device 200 that can be felt by a user of the device 200. In some embodiments, at least one tactile output generator is arranged in juxtaposition or proximity to a touch-sensitive surface (e.g., a touch-sensitive display system 212) and optionally generates tactile output by moving the touch-sensitive surface vertically (e.g., inward / outward of the surface of the device 200) or laterally (e.g., backward and forward in the same plane as the surface of the device 200). In some embodiments, at least one tactile output generator sensor is located on the back of the device 200, opposite the touch screen display 212 located on the front of the device 200.

[0088] Device 200 also includes one or more accelerometers 268 . Figure 2A An accelerometer 268 coupled to the peripheral device interface 218 is shown. Alternatively, the accelerometer 268 is coupled to the input controller 260 in the I / O subsystem 206. The accelerometer 268 performs as described in the following U.S. patent publications: U.S. Patent Publication No. 20050190059, "Acceleration-based Theft Detection System for Portable Electronic Devices" and U.S. Patent Publication No. 20060017692, "Methods And Apparatuses For Operating A Portable Device Based On An Accelerometer", both of which are incorporated herein by reference in their entirety. In some embodiments, information is displayed in a portrait view or a landscape view on the touch screen display based on analysis of data received from one or more accelerometers. The device 200 optionally includes a magnetometer (not shown) and a GPS (or GLONASS or other global navigation system) receiver (not shown) in addition to one or more accelerometers 268 for obtaining information about the position and orientation (e.g., portrait or landscape) of the device 200.

[0089] In some embodiments, the software components stored in memory 202 include an operating system 226, a communication module (or instruction set) 228, a contact / motion module (or instruction set) 230, a graphics module (or instruction set) 232, a text input module (or instruction set) 234, a global positioning system (GPS) module (or instruction set) 235, a digital assistant client module 229, and an application (or instruction set) 236. In addition, memory 202 stores data and models, such as user data and models 231. In addition, in some embodiments, memory 202 ( Figure 2A ) or 470( Figure 4 ) storage device / global internal state 257, such as Figure 2A and Figure 4 . The device / global internal state 257 includes one or more of the following: active application state, which indicates which applications (if any) are currently active; display state, which indicates what applications, views, or other information occupy various areas of the touch screen display 212; sensor state, including information obtained from the device's various sensors and input control devices 216; and position information related to the device's position and / or posture.

[0090] The operating system 226 (e.g., Darwin, RTXC, LINUX, UNIX, OS X, iOS, WINDOWS, or an embedded operating system such as VxWorks) 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 facilitating 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 system 208 and / or the external port 224. The external port 224 (e.g., a universal serial bus (USB), FireWire, etc.) is suitable for coupling directly to other devices, or indirectly through a network (e.g., the Internet, a wireless LAN, etc.). In some embodiments, the external port is connected to (trademark of Apple Inc.) devices.

[0092] The contact / motion module 230 optionally detects contact with the touch screen 212 (in conjunction with the display controller 256) and other touch-sensitive devices (e.g., a touchpad or physical click wheel). The contact / motion module 230 includes various software components for performing various operations related to contact detection, such as determining whether contact has occurred (e.g., detecting a finger press event), determining the contact strength (e.g., the force or pressure of the contact, or a substitute for the force or pressure of the contact), determining whether there is movement of the contact and tracking the movement on the touch-sensitive surface (e.g., detecting one or more finger drag events), and determining whether the contact has stopped (e.g., detecting a finger lift event or contact disconnection). The contact / motion module 230 receives contact data from the touch-sensitive surface. Determining the movement of the contact point optionally includes determining the rate (magnitude), velocity (magnitude and direction) and / or acceleration (change in magnitude and / or direction) of the contact point, the movement of the contact point being represented by a series of contact data. These operations are optionally applied to a single point of contact (e.g., a single finger contact) or multiple points of simultaneous contact (e.g., "multi-touch" / multiple finger contacts). In some embodiments, the contact / motion module 230 and 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., to determine whether a user has "clicked" an icon). In some embodiments, at least a subset of the intensity thresholds are determined based on 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, without changing the touchpad or touchscreen display hardware, the mouse "click" threshold of a touchpad or touchscreen can be set to any one of a large range of predefined thresholds. Additionally, in some specific implementations, a software setting is provided to the user of the device for adjusting one or more intensity thresholds in a set of intensity thresholds (e.g., by adjusting individual intensity thresholds and / or by utilizing a system-level click on an "intensity" parameter to adjust multiple intensity thresholds at once).

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

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

[0096] In some embodiments, the graphics module 232 stores data representing graphics to be used. Each graphic is optionally assigned a corresponding code. The graphics module 232 receives one or more codes specifying the graphics to be displayed from an application program, etc., along with coordinate data and other graphic attribute data if necessary, and then generates screen image data to be output to the display controller 256.

[0097] The tactile feedback module 233 includes various software components for generating instructions used by the one or more tactile output generators 267 to produce tactile 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 in some examples is a component of the graphics module 232, provides a soft keyboard for entering text in various applications (e.g., contacts 237, email 240, IM 241, browser 247, and any other application requiring 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 picture / video metadata; and to applications that provide location-based services, such as a weather widget, a local yellow pages widget, and a map / navigation widget).

[0100] The digital assistant client module 229 includes various client-side digital assistant instructions to provide the client-side functions of the digital assistant. For example, the digital assistant client module 229 can accept voice input (e.g., voice input), text input, touch input and / or gesture input through various user interfaces of the portable multifunction device 200 (e.g., microphone 213, one or more accelerometers 268, touch-sensitive display system 212, one or more optical sensors 264, other input control devices 216, etc.). The digital assistant client module 229 can also provide output in the form of audio (e.g., voice output), output in the form of visual output and / or output in the form of tactile output through various output interfaces of the portable multifunction device 200 (e.g., speaker 211, touch-sensitive display system 212, one or more tactile output generators 267, etc.). For example, the output is provided as voice, sound, reminder, text message, menu, graphic, video, animation, vibration and / or a combination of two or more of the above. During operation, the digital assistant client module 229 uses the RF circuit system 208 to communicate with the DA server 106.

[0101] User data and models 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 electronic address book, to-do items, shopping lists, etc.) to provide client-side functionality of the digital assistant. In addition, user data and models 231 include various models for processing user input and determining user intent (e.g., speech recognition models, statistical language models, natural language processing models, knowledge ontologies, task flow models, service models, etc.).

[0102] In some examples, the digital assistant client module 229 utilizes the various sensors, subsystems, and peripherals of the portable multifunction device 200 to collect additional information from the surrounding environment of the portable multifunction device 200 to establish a 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 the context information, or a subset thereof, to the DA server 106 along with the user input to help infer the user's intent. In some examples, the digital assistant also uses the context information to determine how to prepare and transmit output to the user. The context information is referred to as context data.

[0103] In some examples, contextual information accompanying 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 contextual information may also include the physical state of the device, such as device orientation, device location, device temperature, power level, speed, acceleration, motion pattern, cellular signal strength, etc. In some examples, information related to the software state of the DA server 106, such as the running process of the portable multifunction device 200, installed programs, past and current network activities, background services, error logs, resource usage, etc., is provided to the DA server 106 as contextual information associated with the user input.

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

[0105] Reference below 7A to 7C A more detailed description of the digital assistant is provided. It should be appreciated 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 instruction sets) or a subset or superset thereof:

[0107] Contacts module 237 (sometimes referred to as address book or contact list);

[0108] Telephone module 238;

[0109] ● Video conferencing module 239;

[0110] ● Email client module 240;

[0111] ●Instant messaging (IM) module 241;

[0112] ●Fitness support module 242;

[0113] ● Camera module 243 for still images and / or video images;

[0114] ● Image management module 244;

[0115] ●Video player module;

[0116] ●Music player module;

[0117] ●Browser module 247;

[0118] ●Calendar module 248;

[0119] Widget module 249, which in some examples includes one or more of the following:

[0120] Weather widget 249 - 1 , stock widget 249 - 2 , calculator widget 249 - 3 , alarm widget 249 - 4 , dictionary widget 249 - 5 , and other widgets obtained by the user and widget 249 - 6 created by the user;

[0121] A widget creator module 250 for forming a user-created widget 249 - 6 ;

[0122] ●Search module 251;

[0123] ● Video and music player module 252, which merges the video player module and the music player module;

[0124] ●Notepad module 253;

[0125] ● Map module 254; and / or

[0126] ●Online video module 255.

[0127] Examples of other applications 236 stored in memory 202 include other word processing applications, other image editing applications, drawing applications, rendering applications, JAVA-enabled applications, encryption, digital rights management, voice recognition, and voice replication.

[0128] In combination with the touch screen 212, display controller 256, touch / motion module 230, graphics module 232, and text input module 234, the contact module 237 is used to manage an address book or contact list (for example, stored in the application internal state 292 of the contact module 237 in memory 202 or 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; categorizing and classifying names; providing a phone number or email address to initiate and / or facilitate communications via telephone 238, video conferencing module 239, email 240 or IM 241; and the like.

[0129] In conjunction with RF circuit system 208, audio circuit system 210, speaker 211, microphone 213, touch screen 212, display controller 256, contact / motion module 230, graphics module 232, and text input module 234, phone module 238 is used to enter a character sequence corresponding to a phone number, access one or more phone numbers in contact module 237, modify an already entered phone number, dial a corresponding phone number, conduct a conversation, and disconnect or hang up when the conversation is completed. As described above, wireless communications use any of a variety of communication standards, protocols, and technologies.

[0130] In combination with the RF circuit system 208, the audio circuit system 210, the speaker 211, the microphone 213, the touch screen 212, the display controller 256, the optical sensor 264, the optical sensor controller 258, the contact / motion module 230, the graphics module 232, the text input module 234, the contact module 237 and the telephone module 238, the video conferencing module 239 includes executable instructions for initiating, conducting and terminating a video conference between a user and one or more other participants in accordance with user instructions.

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

[0132] In conjunction with the RF circuit system 208, the touch screen 212, the display controller 256, the contact / motion module 230, the graphics module 232, and the text input module 234, the instant messaging module 241 includes executable instructions for the following operations: inputting a character sequence corresponding to an instant message, modifying previously input characters, transmitting a corresponding instant message (e.g., using a short message service (SMS) or multimedia message service (MMS) protocol for telephone-based instant messaging or using XMPP, SIMPLE, or IMPS for Internet-based instant messaging), receiving instant messages, and viewing received instant messages. In some embodiments, the transmitted and / or received instant messages include graphics, photos, audio files, video files, and / or other attachments such as those supported in MMS and / or enhanced messaging services (EMS). As used herein, "instant messaging" refers to both telephone-based messages (e.g., messages sent using SMS or MMS) and Internet-based messages (e.g., messages sent using XMPP, SIMPLE, or IMPS).

[0133] In combination with the RF circuit system 208, the touch screen 212, the display controller 256, the contact / motion module 230, the graphics module 232, the text input module 234, the GPS module 235, the map module 254 and the music player module, the fitness support module 242 includes executable instructions for: creating a workout (e.g., with time, distance and / or calorie burn goals); communicating with fitness sensors (sports equipment); receiving fitness sensor data; calibrating sensors for monitoring fitness; selecting and playing music for fitness; and displaying, storing and transmitting fitness data.

[0134] In combination with the touch screen 212, the display controller 256, one or more optical sensors 264, the optical sensor controller 258, the touch / motion module 230, the graphics module 232, and the image management module 244, the camera module 243 includes executable instructions for the following operations: capturing still images or videos (including video streams) and storing them in the memory 202, modifying the characteristics of the still images or videos, or deleting the still images or videos from the memory 202.

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

[0136] In combination with the RF circuit system 208, the touch screen 212, the display controller 256, the touch / motion module 230, the graphics module 232 and the text input module 234, the browser module 247 includes executable instructions for browsing the Internet in accordance with user instructions, including searching, linking to, receiving and displaying web pages or portions thereof, as well as attachments and other files linked to web pages.

[0137] In combination with the RF circuit system 208, the touch screen 212, the display controller 256, the touch / motion module 230, the graphics module 232, the text input module 234, the email client module 240 and the browser module 247, the calendar module 248 includes executable instructions for creating, displaying, modifying and storing calendars and data associated with the calendar (e.g., calendar entries, to-do items, etc.) in accordance with user instructions.

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

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

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

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

[0142] In conjunction with the touch screen 212, display controller 256, contact / motion module 230, graphics module 232 and text input module 234, the notepad module 253 includes executable instructions for creating and managing notes, to-do lists, etc. according to user instructions.

[0143] In combination with the RF circuit system 208, the touch screen 212, the display controller 256, the touch / motion module 230, the graphics module 232, the text input module 234, the GPS module 235 and the browser module 247, the map module 254 is used to receive, display, modify and store maps and data associated with the maps (e.g., driving directions, data related to stores and other points of interest at or near a particular location, and other location-based data) in accordance with user instructions.

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

[0145] Each of the modules and applications described above corresponds to an executable instruction set for performing one or more of the functions described above and the methods described in this patent application (e.g., the computer-implemented methods and other information processing methods described herein). These modules (e.g., instruction sets) do not have to be implemented as independent software programs, processes, or modules, and therefore various subsets of these modules may be combined or otherwise rearranged in various embodiments. For example, a video player module may be combined with a music player module into a single module (e.g., Figure 2AIn some embodiments, the memory 202 stores a subset of the above modules and data structures. In addition, the memory 202 stores additional modules and data structures not described above.

[0146] In some embodiments, the device 200 is a device on which the operation of a predefined set of functions is performed exclusively through 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 the device 200, the number of physical input control devices (such as push buttons, dials, etc.) on the device 200 is reduced.

[0147] A predefined set of functions that are performed exclusively through a touch screen and / or a touch pad optionally includes navigation between user interfaces. In some embodiments, the touch pad, when touched by a user, navigates the device 200 to a main menu, a home menu, or a root menu from any user interface displayed on the device 200. In such embodiments, a touch pad is used to implement a "menu button." In some other embodiments, the menu button is a physical push button or other physical input control device, rather than a touch pad.

[0148] Figure 2B is a block diagram illustrating exemplary components for event processing according to some embodiments. In some embodiments, memory 202 ( Figure 2A ) or memory 470( Figure 4 ) includes an event classifier 270 (e.g., in the operating system 226) and a corresponding application 236-1 (e.g., any one of the aforementioned applications 237-251, 255, 480-490).

[0149] The event classifier 270 receives event information and determines the application 236-1 and the application view 291 of the application 236-1 to which the event information is to be delivered. The event classifier 270 includes an event monitor 271 and an event distributor module 274. In some embodiments, the application 236-1 includes an application internal state 292 that indicates the current application view displayed on the touch-sensitive display 212 when the application is active or executing. In some embodiments, the device / global internal state 257 is used by the event classifier 270 to determine which application(s) is currently active, and the application internal state 292 is used by the event classifier 270 to determine the application view 291 to which the event information is to be delivered.

[0150] In some embodiments, the application internal state 292 includes additional information, such as one or more of the following: resumption information to be used when the application 236-1 resumes execution, user interface state information indicating that information is being displayed or is ready to be displayed by the application 236-1, a state queue for enabling a user to return to a previous state or view of the application 236-1, and a repeat / undo queue of previous actions taken by the user.

[0151] Event monitor 271 receives event information from peripherals interface 218. Event information includes information about sub-events (e.g., a user touch on touch-sensitive display 212 as part of a multi-touch gesture). Peripherals interface 218 transmits information it receives from I / O subsystem 206 or sensors such as proximity sensor 266, one or more accelerometers 268, and / or microphone 213 (through audio circuitry 210). The information that peripherals interface 218 receives from I / O subsystem 206 includes information from touch-sensitive display 212 or a touch-sensitive surface.

[0152] In some embodiments, event monitor 271 sends requests to peripheral device interface 218 at predetermined intervals. In response, peripheral device interface 218 transmits event information. In other embodiments, peripheral device interface 218 transmits event information only when there is a significant event (e.g., receiving an input above a predetermined noise threshold and / or receiving an input for more than a predetermined duration).

[0153] In some embodiments, the event classifier 270 also includes a hit view determination module 272 and / or an active event identifier determination module 273.

[0154] When the touch-sensitive display 212 displays more than one view, the hit view determination module 272 provides software procedures for determining where within one or more views a sub-event has occurred. A view consists of controls and other elements that a user can see on the display.

[0155] Another aspect of the user interface associated with an application is a set of views, sometimes referred to herein as application views or user interface windows, in which information is displayed and touch-based gestures occur. The application views (of the respective application) in which a touch is detected correspond to a programmatic level within a programmatic hierarchy of applications or a view hierarchy. For example, the lowest level view in which a touch is detected is called a hit view, and the set of events that are considered to be correct input is determined at least in part based on the hit view of the initial touch that started the touch-based gesture.

[0156] The hit view determination module 272 receives information related to sub-events of touch-based gestures. When an application has multiple views organized in a hierarchy, the hit view determination module 272 identifies the hit view as the lowest view in the hierarchy that should handle the sub-events. In most cases, the hit view is the lowest level view in which the initiating sub-event (e.g., the first sub-event in a sequence of sub-events that form an event or potential event) occurs. Once a 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 for which it is identified as the hit view.

[0157] Active event recognizer determination module 273 determines which view or views within the view hierarchy should receive a particular sequence of sub-events. In some embodiments, active event recognizer determination module 273 determines that only the hit view should receive a particular sequence of sub-events. In other embodiments, active event recognizer determination module 273 determines that all views that include the physical location of the sub-event are actively participating views, and therefore determines that all actively participating views should receive a particular sequence of sub-events. In other embodiments, even if a touch sub-event is completely confined to an area associated with one particular view, higher views in the hierarchy will still remain as actively participating views.

[0158] Event distributor module 274 distributes event information to event identifiers (e.g., event identifier 280). In embodiments including active event identifier determination module 273, event distributor module 274 delivers the event information to the event identifier determined by active event identifier determination module 273. In some embodiments, event distributor module 274 stores the event information in an event queue, which is retrieved by corresponding event receiver 282.

[0159] In some embodiments, operating system 226 includes event classifier 270. Alternatively, application 236-1 includes event classifier 270. In yet another embodiment, event classifier 270 is a standalone module or is part of another module stored in memory 202, such as contact / motion module 230.

[0160] In some embodiments, the application 236-1 includes multiple event handlers 290 and one or more application views 291, each of which includes instructions for handling touch events occurring in a corresponding view of the user interface of the application. Each application view 291 of the application 236-1 includes one or more event identifiers 280. Typically, the corresponding application view 291 includes multiple event identifiers 280. In other embodiments, one or more event identifiers in the event identifier 280 are part of an independent module, which is a higher-level object such as a user interface toolkit (not shown) or the application 236-1 from which methods and other properties are inherited. In some embodiments, the corresponding event handler 290 includes one or more of the following: data updater 276, object updater 277, GUI updater 278, and / or event data 279 received from the event classifier 270. The event handler 290 utilizes or calls the data updater 276, object updater 277, or GUI updater 278 to update the application internal state 292. Alternatively, one or more of the application views in the application views 291 include one or more corresponding event handlers 290. In addition, in some embodiments, one or more of the data updater 276, the object updater 277, and the GUI updater 278 are included in the corresponding application view 291.

[0161] The corresponding event identifier 280 receives event information (e.g., event data 279) from the event classifier 270 and identifies the event from the event information. The event identifier 280 includes an event receiver 282 and an event comparator 284. In some embodiments, the event identifier 280 also includes metadata 283 and at least a subset of event delivery instructions 288 (which includes sub-event delivery instructions).

[0162] The event receiver 282 receives event information from the event classifier 270. The event information includes information about sub-events such as touches or touch movements. Depending on the sub-event, the event information also includes additional information, such as the location of the sub-event. When the sub-event involves the movement of a touch, the event information also includes the rate and direction of the sub-event. In some embodiments, the event includes the device rotating from one orientation to another orientation (e.g., from a longitudinal orientation to a transverse orientation, or vice versa), and the event information includes corresponding information about the current orientation of the device (also referred to as the device posture).

[0163] Event comparator 284 compares event information with predefined event or sub-event definitions, 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, event comparator 284 includes event definition 286. Event definition 286 includes the definition of an event (e.g., a predefined sequence of sub-events), such as event 1 (287-1), event 2 (287-2), and other events. In some embodiments, sub-events in event (287) include, for example, touch start, touch end, touch move, touch cancel, and multi-touch. In one example, the definition of event 1 (287-1) is a double-click on a displayed object. For example, a double-click includes a first touch (touch start) of a predetermined duration on a displayed object, a first lift-off (touch end) of a predetermined duration, a second touch (touch start) of a predetermined duration on a displayed object, and a second lift-off (touch end) of a predetermined duration. In another example, the definition of event 2 (287-2) is a drag on a displayed object. For example, dragging includes a touch (or contact) of a predetermined duration on a displayed object, movement of the touch on the touch-sensitive display 212, and lifting of the touch (touch end). In some embodiments, the event also includes information for one or more associated event handlers 290.

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

[0165] In some embodiments, the definition of the corresponding event (287) also includes a delay action that delays the delivery of the event information until it has been determined that the sub-event sequence does or does not correspond to the event type of the event identifier.

[0166] When a corresponding event recognizer 280 determines that a sequence of sub-events does not match any event in event definition 286, the corresponding event recognizer 280 enters an event impossible, event failed, or event ended state, after which subsequent sub-events of the touch-based gesture are ignored. In this case, other event recognizers (if any) that remain active for the hit view continue to track and process sub-events of the ongoing touch-based gesture.

[0167] In some embodiments, the corresponding event identifier 280 includes metadata 283 with configurable properties, flags, and / or lists that indicate how the event delivery system should perform sub-event delivery to actively participating event identifiers. In some embodiments, metadata 283 includes configurable properties, flags, and / or lists that indicate how event identifiers interact or can interact with each other. In some embodiments, metadata 283 includes configurable properties, flags, and / or lists that indicate whether sub-events are delivered to different levels in a view or programmatic hierarchy.

[0168] In some embodiments, when one or more specific sub-events of an event are identified, the corresponding event identifier 280 activates the event handler 290 associated with the event. In some embodiments, the corresponding event identifier 280 delivers the event information associated with the event to the event handler 290. Activating the event handler 290 is different from sending (and deferred sending) the sub-events to the corresponding hit view. In some embodiments, the event identifier 280 throws a tag associated with the identified event, and the event handler 290 associated with the tag obtains the tag and performs a predefined process.

[0169] In some embodiments, the event delivery instructions 288 include a sub-event delivery instruction that delivers event information about a sub-event without activating an event handler. Instead, the sub-event delivery instruction delivers the event information to an event handler associated with a sub-event sequence or to an actively participating view. The event handler associated with the sub-event sequence or with an actively participating view receives the event information and executes a predetermined process.

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

[0171] 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 the corresponding application 236-1 or application view 291. In other embodiments, they are included in two or more software modules.

[0172] It should be understood that the above discussion of event processing for user touches on a touch-sensitive display also applies to other forms of user input that utilize input devices to operate the multifunction device 200, and not all user input is initiated on the touch screen. For example, mouse movement and mouse button presses, optionally in conjunction with single or multiple keyboard presses or holddowns; contact movement on a touch pad, such as tapping, dragging, scrolling, etc.; stylus input; movement of the device; verbal commands; detected eye movement; biometric input; and / or any combination thereof are optionally used as input corresponding to sub-events defining the event to be distinguished.

[0173] Figure 3A portable multifunction device 200 with a touch screen 212 according to some embodiments is shown. The touch screen optionally displays one or more graphics within a user interface (UI) 300. In this embodiment and other embodiments described below, a user can select one or more of these graphics by, for example, making gestures on the graphics using one or more fingers 302 (not drawn to scale in the figure) or one or more styluses 303 (not drawn to scale in the figure). In some embodiments, when the user interrupts contact with one or more graphics, selection of one or more graphics will occur. In some embodiments, gestures optionally include one or more taps, one or more swipes (from left to right, from right to left, up and / or down) and / or rolling of fingers that have been in contact with the device 200 (from right to left, from left to right, up and / or down). In some specific implementations or in some cases, inadvertent contact with a graphic will not select the graphic. For example, when the gesture corresponding to the selection is a tap, a swipe gesture that sweeps over an application icon optionally does not select the corresponding application.

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

[0175] In some embodiments, the device 200 includes a touch screen 212, a menu button 304, a push button 306 for powering the device on / off and for locking the device, one or more volume adjustment buttons 308, a user identity module (SIM) card slot 310, an earphone jack 312, and a docking / charging external port 224. The push button 306 is optionally used to turn the device on / off by pressing the button and keeping the button in a pressed state for a predefined time interval; lock the device by pressing the button and releasing the button before the predefined time interval passes; and / or unlock the device or initiate an unlocking process. In an alternative embodiment, the device 200 also accepts speech input for activating or deactivating certain functions through a microphone 213. The device 200 also optionally includes one or more contact strength sensors 265 for detecting the strength of contact on the touch screen 212, and / or one or more tactile output generators 267 for generating tactile output for a user of the device 200.

[0176] Figure 44 is a block diagram of an exemplary multi-function device with a display and a touch-sensitive surface according to some embodiments. Device 400 does not have to be portable. In some embodiments, device 400 is a laptop computer, a desktop computer, a tablet computer, a multimedia player device, a navigation device, an educational device (such as a children's learning toy), a game system, or a control device (for example, a home controller or an industrial controller). Device 400 typically includes one or more processing units (CPUs) 410, one or more network or other communication interfaces 460, a memory 470, and one or more communication buses 420 for interconnecting these components. Communication bus 420 optionally includes a circuit system (sometimes referred to as a chipset) that interconnects system components and controls communication between system components. Device 400 includes an input / output (I / O) interface 430 including a display 440, which is typically a touch screen display. I / O interface 430 also optionally includes a keyboard and / or mouse (or other pointing device) 450 and a touchpad 455, a tactile output generator 457 for generating tactile output on device 400 (for example, similar to the above reference Figure 2A The one or more tactile output generators 267 described above), sensors 459 (e.g., optical sensors, acceleration sensors, proximity sensors, touch sensors, and / or contact intensity sensors (similar to those described above with reference to Figure 2A The memory 470 may include one or more storage devices located away from the CPU 410. In some embodiments, the memory 470 stores information related to the portable multifunction device 200 ( Figure 2A ) or a subset thereof. In addition, memory 470 optionally stores additional programs, modules, and data structures not present in memory 202 of portable multifunction device 200. For example, memory 470 of device 400 optionally stores a drawing module 480, a rendering module 482, a word processing module 484, a website creation module 486, a disk editing module 488, and / or a spreadsheet module 490, while portable multifunction device 200( Figure 2A )'s memory 202 optionally does not store these modules.

[0177] Figure 4Each of the above-mentioned elements in some examples is stored in one or more previously mentioned memory devices. Each module in the above-mentioned modules corresponds to an instruction set for performing the functions described above. The above-mentioned modules or programs (e.g., instruction sets) do not have to be implemented as independent software programs, processes or modules, so the various subsets of these modules are combined or otherwise rearranged in various embodiments. In some embodiments, memory 470 stores a subset of the above-mentioned modules and data structures. In addition, memory 470 stores additional modules and data structures not described above.

[0178] Attention is now turned to embodiments of a user interface that may be implemented on, for example, portable multifunction device 200.

[0179] Figure 5A An exemplary user interface of an application menu on portable multifunction device 200 is shown according to some embodiments. A similar user interface is implemented on device 400. In some embodiments, user interface 500 includes the following elements, or a subset or superset thereof:

[0180] Signal strength indicators 502 for wireless communications such as cellular signals and Wi-Fi signals;

[0181] Time 504;

[0182] ●Bluetooth indicator 505;

[0183] ●Battery status indicator 506;

[0184] A tray 508 with icons for commonly used applications, such as:

[0185] o an icon 516 labeled “Phone” of the phone module 238, which optionally includes an indicator 514 of the number of missed calls or voice messages;

[0186] o an icon 518 labeled “Mail” of the email client module 240 , which optionally includes an indicator 510 of the number of unread emails;

[0187] o an icon 520 labeled "Browser" of the browser module 247; and

[0188] o an icon 522 labeled “iPod” of the video and music player module 252 (also referred to as the iPod (trademark of Apple Inc.) module 252); and

[0189] ● Icons for other applications, such as:

[0190] o Icon 524 labeled “Messages” of IM module 241;

[0191] o Icon 526 labeled “Calendar” of calendar module 248;

[0192] o Icon 528 labeled “Photos” of the image management module 244;

[0193] o Icon 530 labeled “Camera” of camera module 243;

[0194] o Icon 532 labeled “Online Video” of the online video module 255;

[0195] o Icon 534 labeled “Stock Market” of the stock market widget 249 - 2 ;

[0196] o Icon 536 labeled “Map” of the map module 254;

[0197] o Icon 538 labeled “Weather” of the weather widget 249 - 1 ;

[0198] o Icon 540 labeled “Clock” of the alarm clock widget 249 - 4 ;

[0199] o an icon 542 labeled “Fitness Support” of the fitness support module 242;

[0200] o Icon 544 labeled "Notepad" of the Notepad module 253; and

[0201] o An icon 546 labeled “Settings” for a settings application or module that provides access to settings for the device 200 and its various applications 236 .

[0202] It should be noted that Figure 5A The illustrated icon labels are exemplary only. For example, icon 522 of video and music player module 252 is optionally labeled "Music" or "Music Player". Other labels are optionally used for various application icons. In some embodiments, the label of a corresponding application icon includes the name of the application corresponding to the corresponding application icon. In some embodiments, the label of a particular application icon is different from the name of the application corresponding to the particular application icon.

[0203] Figure 5B A touch-sensitive surface 551 (eg, touch screen display 212) is shown having a touch-sensitive surface 551 (eg, Figure 4 tablet or touch pad 455) of the device (e.g., Figure 4Device 400 also optionally includes one or more contact intensity sensors (e.g., one or more of sensors 459) for detecting intensity of contacts on touch-sensitive surface 551 and / or one or more tactile output generators 457 for generating tactile output for a user of device 400.

[0204] Although some of the examples that follow will be given with reference to input on a touch screen display 212 (where a touch-sensitive surface and a display are combined), in some embodiments, the device detects input on a touch-sensitive surface that is separate from the display, such as Figure 5B In some embodiments, the touch-sensitive surface (e.g., Figure 5B 551) has a main axis (e.g., Figure 5B 553) corresponding to the principal axis (for example, Figure 5B According to these embodiments, the device detects a position corresponding to a corresponding position on the display (e.g., Figure 5B , 560 corresponds to 568 and 562 corresponds to 570) at a contact with touch-sensitive surface 551 (eg, Figure 5B Thus, on a touch-sensitive surface (e.g., Figure 5B 551) and a display of a multi-function device (e.g., Figure 5B When the user input detected by the device on the touch-sensitive surface (e.g., contacts 560 and 562 and their movement) is separated, the device is used to manipulate the user interface on the display. It should be understood that similar methods are optionally used for other user interfaces described herein.

[0205] Additionally, although the following examples are primarily given with reference to finger inputs (e.g., finger contacts, single-finger tap gestures, finger swipe gestures), it should be understood that in some embodiments, one or more of these finger inputs are replaced by input from another input device (e.g., mouse-based input or stylus input). For example, a swipe gesture is optionally replaced by a mouse click (e.g., instead of contact), followed by movement of the cursor along the path of the swipe (e.g., instead of movement of the contact). As another example, a tap gesture is optionally replaced by a mouse click when the cursor is over the location of the tap gesture (e.g., instead of detecting contact, followed by ceasing to detect contact). Similarly, when multiple user inputs are detected simultaneously, it should be understood that multiple computer mice are optionally used simultaneously, or a mouse and finger contact are optionally used simultaneously.

[0206] Fig. 6AAn exemplary personal electronic device 600 is shown. Device 600 includes a body 602. In some embodiments, device 600 includes a body 602 relative to devices 200 and 400 (e.g., Figures 2A to 4 ) or some or all of the features described in the foregoing. In some embodiments, device 600 has a touch-sensitive display screen 604, referred to hereinafter as touch screen 604. As an alternative or in addition to touch screen 604, device 600 has a display and a touch-sensitive surface. As with devices 200 and 400, in some embodiments, touch screen 604 (or touch-sensitive surface) has one or more intensity sensors for detecting the intensity of contact (e.g., touch) being applied. One or more intensity sensors of touch screen 604 (or touch-sensitive surface) provide output data representing the intensity of the touch. The user interface of device 600 responds to touch based on the intensity of the touch, which means that touches of different intensities can invoke different user interface operations on device 600.

[0207] Technology for detecting and processing touch intensity may be found, for example, in related applications: International patent application serial number PCT / US2013 / 040061, filed on May 8, 2013, entitled “Device, Method, and Graphical User Interface for Displaying UserInterface Objects Corresponding to an Application,” and International patent application serial number PCT / US2013 / 069483, filed on November 11, 2013, entitled “Device, Method, and Graphical UserInterface for Transitioning Between Touch Input to Display OutputRelationships,” each of which is hereby incorporated by reference in its entirety.

[0208] In some embodiments, the device 600 has one or more input mechanisms 606 and 608. The input mechanisms 606 and 608, if included, are physical. Examples of physical input mechanisms include push buttons and rotatable mechanisms. In some embodiments, the device 600 has one or more attachment mechanisms. Such attachment mechanisms, if included, may allow the device 600 to be attached to, for example, hats, glasses, earrings, necklaces, shirts, jackets, bracelets, watchbands, bracelets, pants, belts, shoes, wallets, backpacks, etc. These attachment mechanisms allow the user to wear the device 600.

[0209] Figure 6BAn exemplary personal electronic device 600 is shown. In some embodiments, the device 600 includes Figure 2A , Figure 2B and Figure 4 Some or all of the components described. Device 600 has a bus 612 that operatively couples an I / O portion 614 to one or more computer processors 616 and a memory 618. I / O portion 614 is connected to a display 604, which may have a touch-sensitive component 622 and, optionally, also a touch-intensity sensitive component 624. In addition, I / O portion 614 is connected to a communication unit 630 for receiving 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. For example, input mechanism 606 is a rotatable input device or a depressible input device and a rotatable input device. In some examples, input mechanism 608 is a button.

[0210] In some examples, input mechanism 608 is a microphone. Personal electronic device 600 includes, for example, various sensors such as GPS sensor 632, accelerometer 634, orientation sensor 640 (e.g., compass), gyroscope 636, motion sensor 638, and / or combinations thereof, all of which are operably connected to I / O portion 614.

[0211] The memory 618 of the personal electronic device 600 is a non-transitory computer-readable storage medium for storing computer-executable instructions that, when executed by one or more computer processors 616, for example, cause the computer processors to perform the above-described techniques and processes. The computer-executable instructions are also stored and / or transmitted, for example, in any non-transitory computer-readable storage medium for use by or in conjunction with an instruction execution system, device, or apparatus, such as a computer-based system, a system containing a processor, or other system that can obtain instructions from an instruction execution system, device, or apparatus and execute the instructions. The personal electronic device 600 is not limited to Figure 6B components and configurations, but may include other components or additional components in a variety of configurations.

[0212] As used herein, the term “indicative representation” refers to an indication on device 200, device 400, device 600, and / or device 900 ( Figure 2A , Figure 4 , FIG. 6A to FIG. 6B ,as well as 9A to 9D ) is a user-interactive graphical user interface object displayed on a display screen of a computer. For example, an image (e.g., an icon), a button, and text (e.g., a hyperlink) each constitute an affordance.

[0213] As used herein, the term "focus selector" refers to an input element used to indicate the current portion of a user interface that a user is interacting with. In some implementations that include a cursor or other position marker, the cursor acts as a "focus selector" such that when the cursor is over a particular user interface element (e.g., a button, window, slider, or other user interface element), a focus selector is displayed on a touch-sensitive surface (e.g., Figure 4 Touchpad 455 or Figure 5B In the event that an input (e.g., a press input) is detected on the touch-sensitive surface 551 in FIG. 5 , the particular user interface element is adjusted according to the detected input. In the case that a touch screen display (e.g., Figure 2A A touch sensitive display system 212 or Figure 5A In some implementations of the touch screen 212 in FIG. 1 , a contact detected on the touch screen acts as a “focus selector” such that when an input (e.g., a press input by the contact) is detected at the location of a particular user interface element (e.g., a button, window, slider, or other user interface element) on the touch screen display, the particular user interface element is adjusted in accordance with the detected input. In some implementations, the focus moves from one area of ​​the user interface to another area of ​​the user interface without corresponding movement of a cursor or movement of a 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 implementations, the focus selector moves in accordance with the movement of the focus between different areas of the user interface. Regardless of the specific form the focus selector takes, the focus selector is typically a user interface element (or contact on the touch screen display) that is controlled by the user to deliver the user's intended interaction with the user interface (e.g., by indicating to the device the element of the user interface with which the user desires to interact). For example, when a press input is detected on a touch-sensitive surface (e.g., a touchpad or touchscreen), the position of a focus selector (e.g., a cursor, contact, or selection box) over a corresponding button will indicate that the user intends to activate the corresponding button (rather than other user interface elements shown on the device display).

[0214] As used in the specification and claims, the term "characteristic intensity" of a contact refers to a characteristic of a contact based on one or more intensities of the contact. In some embodiments, the characteristic intensity is based on multiple intensity samples. The characteristic intensity is optionally based on a predefined number of intensity samples or a set of intensity samples collected during a predetermined time period (e.g., 0.05 seconds, 0.1 seconds, 0.2 seconds, 0.5 seconds, 1 second, 2 seconds, 5 seconds, 10 seconds) relative to a predefined event (e.g., after contact is detected, before contact is detected to be lifted off, before or after contact starts to move, before contact ends, before or after contact intensity is detected to increase, and / or before or after contact intensity is detected to decrease). The characteristic intensity of a contact is optionally based on one or more of the following: the maximum value of the contact intensity, the mean value of the contact intensity, the average value of the contact intensity, the value at the top 10% of the contact intensity, the half-maximum value of the contact intensity, the 90% maximum value of the contact intensity, etc. In some embodiments, the duration of the contact is used when determining the characteristic intensity (e.g., when the characteristic intensity is the average value of the intensity of the contact over time). In some embodiments, the feature strength is compared to a set of one or more strength thresholds to determine whether the user has performed an operation. 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 whose feature strength does not exceed the first threshold results in a first operation, a contact whose feature strength exceeds the first strength threshold but does not exceed the second strength threshold results in a second operation, and a contact whose feature strength exceeds the second threshold results in a third operation. In some embodiments, a comparison between the feature strength and one or more thresholds is used to determine whether to perform one or more operations (e.g., whether to perform the corresponding operation or give up performing the corresponding operation), rather than to determine whether to perform the first operation or the second operation.

[0215] In some embodiments, a portion of a gesture is identified for determining characteristic strength. For example, a touch-sensitive surface receives a continuous swipe contact that transitions from a starting position and reaches an end position, where the strength of the contact increases. In this example, the characteristic strength of the contact at the end position is based only on a portion of the continuous swipe contact, rather than the entire swipe contact (e.g., the swipe contact is only located at the portion 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 one or more of the following: an unweighted sliding average smoothing algorithm, a triangular smoothing algorithm, a median filter smoothing algorithm, and / or an exponential smoothing algorithm. In some cases, these smoothing algorithms eliminate narrow peaks or depressions in the strength of the swipe contact to achieve the purpose of determining the characteristic strength.

[0216] The intensity of a contact on a touch-sensitive surface is characterized relative to one or more intensity thresholds such as a contact detection intensity threshold, a light press intensity threshold, a deep press intensity threshold, and / or one or more other intensity thresholds. In some embodiments, the light press intensity threshold corresponds to an intensity at which the device will perform an operation typically associated with clicking a button of a physical mouse or trackpad. In some embodiments, the deep press intensity threshold corresponds to an intensity at which the device will perform an operation different from the operation typically associated with clicking a button of a physical mouse or trackpad. In some embodiments, when a contact having a characteristic intensity below the light press intensity threshold (e.g., and above a nominal contact detection intensity threshold, contacts lower than the nominal contact detection intensity threshold are no longer detected) is detected, the device will move the focus selector according to the movement of the contact on the touch-sensitive surface without performing an operation associated with the light press intensity threshold or the deep press intensity threshold. Generally speaking, unless otherwise stated, these intensity thresholds are consistent between different groups of user interface illustrations.

[0217] An increase in contact feature intensity from an intensity below a light press intensity threshold to an intensity between the light press intensity threshold and the deep press intensity threshold is sometimes referred to as a "light press" input. An increase in contact feature intensity from an intensity below a deep press intensity threshold to an intensity above the deep press intensity threshold is sometimes referred to as a "deep press" input. An increase in contact feature intensity from an intensity below a contact detection intensity threshold to an intensity between the contact detection intensity threshold and the light press intensity threshold is sometimes referred to as detecting contact on the touch surface. A decrease in contact feature intensity from an intensity above the contact detection intensity threshold to an intensity below the contact detection intensity threshold is sometimes referred to as detecting contact lifted from the touch surface. In some embodiments, the contact detection intensity threshold is zero. In some embodiments, the contact detection intensity threshold is greater than zero.

[0218] In some embodiments described herein, one or more operations are performed in response to detecting a gesture that includes a corresponding press input or in response to detecting a corresponding press input performed using a corresponding contact (or multiple contacts), wherein the corresponding press input is detected at least in part based on detecting that the strength of the contact (or multiple contacts) increases to above a press input strength threshold. In some embodiments, the corresponding operation is performed in response to detecting that the strength of the corresponding contact increases to above the press input strength threshold (e.g., a "down stroke" of the corresponding press input). In some embodiments, the press input includes an increase in the strength of the corresponding contact to above the press input strength threshold and a subsequent decrease in the strength of the contact to below the press input strength threshold, and the corresponding operation is performed in response to detecting that the strength of the corresponding contact subsequently decreases to below the press input threshold (e.g., an "up stroke" of the corresponding press input).

[0219] In some embodiments, the device employs intensity hysteresis to avoid unexpected inputs sometimes referred to as "jitter," where the device defines or selects a hysteresis intensity threshold that has a predefined relationship to a press input intensity threshold (e.g., the hysteresis intensity threshold is X intensity units lower than the press input intensity threshold, or the hysteresis intensity threshold is 75%, 90%, or some reasonable proportion of the press input intensity threshold). Thus, in some embodiments, a press input includes an increase in the intensity of the corresponding contact to above the press input intensity threshold and a subsequent decrease in the intensity of the contact to below the hysteresis intensity threshold corresponding to the press input intensity threshold, and a corresponding operation is performed in response to detecting that the intensity of the corresponding contact subsequently decreases to below the hysteresis intensity threshold (e.g., an "upward stroke" of the corresponding press input). Similarly, in some embodiments, a press input is detected only when the device detects that the contact intensity increases from an intensity equal to or below the hysteresis intensity threshold to an intensity equal to or above the press input intensity threshold and, optionally, that the contact intensity subsequently decreases to an intensity equal to or below the hysteresis intensity, and a corresponding operation is performed in response to detecting the press input (e.g., an increase in contact intensity or a decrease in contact intensity, depending on the circumstances).

[0220] For ease of explanation, optionally, a description of an operation performed in response to a press input associated with a press input intensity threshold or in response to a gesture including a press input is triggered in response to detecting any of the following: contact intensity increasing to above the press input intensity threshold, contact intensity increasing from an intensity below a hysteresis intensity threshold to an intensity above the press input intensity threshold, contact intensity decreasing to below the press input intensity threshold, and / or contact intensity decreasing to below a hysteresis intensity threshold corresponding to the press input intensity threshold. Additionally, in examples where an operation is described as being performed in response to detecting that the intensity of the contact decreases below the press input intensity threshold, the operation is optionally performed in response to detecting that the intensity of the contact decreases below a hysteresis intensity threshold that corresponds to and is less than the press input intensity threshold.

[0221] 3. Digital Assistant System

[0222] Fig. 7A A block diagram of a digital assistant system 700 according to various examples is shown. 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, where the client portion is located on one or more user devices (e.g., device 104, device 122, device 200, device 400, device 600, or device 900) and communicates with the server portion (e.g., server system 108) via one or more networks, such as Figure 1 In some examples, the digital assistant system 700 is Figure 1 Specific implementation of the server system 108 (and / or DA server 106) shown in . It should be noted that the digital assistant system 700 is only one example of a digital assistant system, and the digital assistant system 700 has more or fewer components than shown, combines two or more components, or may have a different configuration or layout of components. Fig. 7A The various components shown in the drawings are implemented in hardware, software instructions for execution by one or more processors, firmware (including one or more signal processing integrated circuits and / or application specific integrated circuits), or a combination thereof.

[0223] 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.

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

[0225] In some examples, the I / O interface 706 couples the input / output devices 716 of the digital assistant system 700, such as a display, keyboard, touch screen, and microphone, to the user interface module 722. The I / O interface 706 and the user interface module 722 receive user input (e.g., voice input, keyboard input, touch input, etc.) and process the input accordingly. In some examples, for example, when the digital assistant is implemented on a stand-alone user device, the digital assistant system 700 includes a plurality of components related to the user interface module 722. Figure 2A , Figure 4 , FIG. 6A to FIG. 6B and 9A to 9D In some examples, digital assistant system 700 represents a server portion of a specific implementation of a digital assistant, and can interact with a user through a client-side portion located on a user device (e.g., device 104, device 200, device 400, device 600, or device 900).

[0226] In some examples, the network communication interface 708 includes one or more wired communication ports 712 and / or wireless transmission and reception circuit systems 714. One or more wired communication ports receive and send communication signals via one or more wired interfaces such as Ethernet, Universal Serial Bus (USB), FIREWIRE, etc. The wireless circuit system 714 receives RF signals and / or optical signals from a communication network and other communication devices and sends RF signals and / or optical signals to a communication network and other communication devices. Wireless communication uses any of a variety 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 the digital assistant system 700 to communicate with other devices through 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)).

[0227] 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: operating system 718, communication module 720, user interface module 722, one or more application programs 724, and digital assistant module 726. Specifically, the memory 702 or the computer-readable storage medium of the memory 702 stores instructions for performing the above processes. One or more processors 704 execute these programs, modules, and instructions, and read data from or write data to data structures.

[0228] The operating system 718 (e.g., Darwin, RTXC, LINUX, UNIX, iOS, OS X, WINDOWS, or an embedded operating system such as VxWorks) 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, firmware, and software components.

[0229] The communication module 720 facilitates communication between the digital assistant system 700 and other devices through the network communication interface 708. For example, the communication module 720 and the electronic devices (such as Figure 2A , Figure 4 , FIG. 6A to FIG. 6B The communication module 720 also includes various components for processing data received by the wireless circuit system 714 and / or the wired communication port 712.

[0230] 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 output (e.g., speech, sound, animation, text, icon, vibration, tactile feedback, lighting, etc.) and delivers it to the user via the I / O interface 706 (e.g., through a display, audio channel, speaker, touchpad, etc.).

[0231] Applications 724 include programs and / or modules configured to be executed by one or more processors 704. For example, if the digital assistant system is implemented on a stand-alone user device, applications 724 include user applications such as games, calendar applications, navigation applications, or email applications. If the digital assistant system 700 is implemented on a server, applications 724 include, for example, resource management applications, diagnostic applications, or scheduling applications.

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

[0233] In some examples, using the processing modules, data, and models implemented in the digital assistant module 726, the digital assistant may perform at least some of the following: converting voice input into text; identifying user intent expressed in natural language input received from a user; proactively eliciting and obtaining information needed to fully infer user intent (e.g., by disambiguating words, games, intents, etc.); determining a task flow for satisfying the inferred intent; and executing the task flow to satisfy the inferred intent.

[0234] In some examples, such as Figure 7B As shown in FIG. , the I / O processing module 728 can be Fig. 7A The I / O device 716 interacts with the user or through Fig. 7AThe network communication interface 708 in interacts with a user device (e.g., device 104, device 200, device 400, or device 600) to obtain user input (e.g., voice input) and provide a response to the user input (e.g., as voice output). The I / O processing module 728 optionally obtains context information associated with the user input from the user device along with or shortly 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 state and hardware state of the user device when the user request is received, and / or information related to 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 related to the user request to the user and receives answers from the user. 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 forwards the voice input to the STT processing module 730 (or speech recognizer) for speech-to-text conversion.

[0235] The STT processing module 730 includes one or more ASR systems 758. One or more ASR systems 758 can process the speech input received by the I / O processing module 728 to produce a recognition result. Each ASR system 758 includes a front-end speech preprocessor. The front-end speech preprocessor extracts representative features from the speech input. For example, the front-end speech preprocessor performs Fourier transform on the speech input to extract the spectral features representing the speech input as a sequence of representative multidimensional vectors. In addition, each ASR system 758 includes one or more speech recognition models (e.g., acoustic models and / or language models) and implements one or more speech recognition engines. Examples of speech recognition models include hidden Markov models, Gaussian mixture models, deep neural network models, n-gram language models, and other statistical models. Examples of speech recognition engines include engines based on dynamic time warping and engines based on weighted finite state transformers (WFST). One or more speech recognition models and one or more speech recognition engines are used to process the extracted representative features of the front-end speech preprocessor to produce intermediate recognition results (e.g., phonemes, phoneme strings and sub-words), and finally produce text recognition results (e.g., words, word strings, or symbol sequences). In some examples, the voice input is at least partially processed by a third-party service or processed on the user's device (e.g., device 104, device 200, device 400 or device 600) to produce recognition results. Once the STT processing module 730 generates a recognition result containing a text string (e.g., a word, or a sequence of words, or a sequence of symbols), the recognition result is transmitted to the natural language processing module 732 for intention inference. In some examples, the STT processing module 730 generates multiple candidate text representations of the voice input. Each candidate text representation is a sequence of words or symbols corresponding to the voice input. In some examples, each candidate text representation is associated with a voice recognition confidence score. Based on the speech recognition confidence score, the STT processing module 730 ranks the candidate text representations and provides the n best (e.g., n highest ranked) candidate text representations to the natural language processing module 732 for intent inference, where n is a predetermined integer greater than zero. For example, in one example, only the highest ranked (n=1) candidate text representation is delivered to the natural language processing module 732 for intent inference. In another example, the five highest ranked (n=5) candidate text representations are passed to the natural language processing module 732 for intent inference.

[0236] Further details regarding speech-to-text processing are described in U.S. Utility Patent Application Serial No. 13 / 236,942, filed on September 20, 2011, entitled “Consolidating Speech Recognition Results,” the entire disclosure of which is incorporated herein by reference.

[0237] In some examples, the STT processing module 730 includes a vocabulary of recognizable words and / or accesses the vocabulary via the speech-to-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, the vocabulary includes words associated with and In some examples, the candidate pronunciations for the words are associated with candidate pronunciations for the word "tomato". Additionally, vocabulary words are associated with custom candidate pronunciations based on previous speech input from the user. Such custom candidate pronunciations are stored in the STT processing module 730 and associated with a particular user via a user profile on the device. In some examples, the candidate pronunciations for the words are determined based on the spelling of the words and one or more linguistic and / or phonetic rules. In some examples, the candidate pronunciations are manually generated, for example, based on a known standard pronunciation.

[0238] In some examples, candidate pronunciations are ranked based on their prevalence. Ranked higher than Because the former is a more common pronunciation (e.g., among all users, for users in a particular geographic region, or for any other suitable subset of users). In some examples, the candidate pronunciations are ranked based on whether the candidate pronunciation is a custom candidate pronunciation associated with the user. For example, a custom candidate pronunciation is ranked higher than a standard candidate pronunciation. This can be used to identify proper nouns with unique pronunciations that deviate from the standard pronunciation. In some examples, the candidate pronunciation is associated with one or more speech features such as geographic origin, country, or ethnicity. For example, the candidate pronunciation associated with the United States, while the candidate pronunciation associated with the United Kingdom. In addition, the ranking of the candidate pronunciations is based on one or more characteristics of the user (e.g., geographic origin, country, ethnicity, etc.) in a user profile stored on the device. For example, it may be determined from the user profile that the user is associated with the United States. Based on the user being associated with the United States, the candidate pronunciations are ranked (associated with the United States) Comparable candidate pronunciations (associated with the United Kingdom) is ranked higher. In some examples, one of the ranked candidate pronunciations may be selected as the predicted pronunciation (eg, the most likely pronunciation).

[0239] When speech input is received, the STT processing module 730 is used to determine (e.g., using an acoustic model) a phoneme corresponding to the speech input and then attempts to determine (e.g., using a language model) a word that matches the phoneme. For example, if the STT processing module 730 first identifies a phoneme sequence corresponding to a portion of the speech input It can then determine based on the lexical index 744 that the sequence corresponds to the word "tomato".

[0240] In some examples, the STT processing module 730 uses fuzzy matching techniques to determine words in an utterance. Thus, for example, the STT processing module 730 determines the phoneme sequence corresponds to the word "tomato", even though this particular phoneme sequence is not a candidate phoneme sequence for that word.

[0241] The natural language processing module 732 ("natural language processor") of the digital assistant obtains the n best candidate text representations ("word sequences" or "symbol sequences") generated by the STT processing module 730, and attempts to associate each candidate text representation with one or more "executable intents" recognized by the digital assistant. An "executable intent" (or "user intent") represents a task that can be executed by the digital assistant and can have an associated task flow implemented in the task flow model 754. The associated task flow is a series of programmed actions and steps taken by the digital assistant to perform the task. The scope of the digital assistant's capabilities depends on the number and variety of task flows that have been implemented and stored in the task flow model 754, or in other words, on the number and variety of "executable intents" recognized by the digital assistant. However, the effectiveness of the digital assistant also depends on the assistant's ability to infer the correct "one or more executable intents" from user requests expressed in natural language.

[0242] In some examples, in addition to the sequence of words or symbols obtained from the STT processing module 730, the natural language processing module 732 also receives context information associated with the user request, for example, from the I / O processing module 728. The natural language processing module 732 optionally uses the context information to clarify, supplement, and / or further qualify the information contained in the candidate text representation received from the STT processing module 730. The context information includes, for example, user preferences, hardware and / or software state of the user's device, sensor information collected before, during, or shortly after the user's request, previous interactions (e.g., conversations) between the digital assistant and the user, and the like. As described herein, in some examples, the context information is dynamic and changes with the time, location, content, and other factors of the conversation.

[0243] In some examples, natural language processing is based on, for example, knowledge ontology 760. Knowledge ontology 760 is a hierarchical structure containing many nodes, each node representing an "executable intent" or an "attribute" related to one or more of the "executable intent" or other "attributes". As described above, an "executable intent" represents a task that the digital assistant can perform, that is, the task is "executable" or can be performed. "Attributes" represent parameters associated with sub-aspects of an executable intent or another attribute. The links between executable intent nodes and attribute nodes in knowledge ontology 760 define how the parameters represented by the attribute nodes are subordinate to the tasks represented by the executable intent nodes.

[0244] In some examples, the knowledge ontology 760 is composed of executable intent nodes and attribute nodes. In the knowledge ontology 760, each executable intent node is directly linked to or connected to one or more attribute nodes through one or more intermediate attribute nodes. Similarly, each attribute node is directly linked to or connected to one or more executable intent nodes through one or more intermediate attribute nodes. For example, Figure 7C As shown, ontology 760 includes a "restaurant reservation" node (i.e., an executable intent node). The attribute nodes "restaurant", "date / time" (for reservations), and "party size" are all directly linked to the executable intent node (i.e., the "restaurant reservation" node).

[0245] In addition, the attribute nodes "cuisine", "price range", "telephone number", and "location" are child nodes of the attribute node "restaurant", and are all linked to the "restaurant reservation" node (i.e., executable intent node) through the intermediate attribute node "restaurant". Figure 7C As shown, ontology 760 also includes a "set reminder" node (i.e., another executable intent node). The attribute nodes "date / time" (for setting reminders) and "subject" (for reminders) are both linked to the "set reminder" node. Since the attribute "date / time" is related 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 "set reminder" node in ontology 760.

[0246] Executable intent nodes, together with their linked attribute nodes, are described as "domains". In this discussion, each domain is associated with a corresponding executable intent and refers to a set of nodes (and the relationships between these nodes) associated with a particular executable intent. For example, Figure 7CThe ontology 760 shown in 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 an executable intent node "restaurant reservation", attribute nodes "restaurant", "date / time" and "party size", and sub-attribute nodes "cuisine", "price range", "phone number" and "location". The reminder domain 764 includes an executable intent node "set reminder" and attribute nodes "subject" 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, in addition to the restaurant reservation domain 762 and the reminder domain 764, the "date / time" attribute node is also associated with many different domains (e.g., itinerary scheduling domain, travel booking domain, movie ticket domain, etc.).

[0247] although Figure 7C Two example domains within ontology 760 are shown, but other domains include, for example, "find a movie," "make a phone call," "find directions," "schedule a meeting," "send a message," and "provide answers to questions," "read a list," "provide navigation instructions," "provide instructions for a task," etc. The "send message" domain is associated with the "send message" executable intent node, and further includes attribute nodes such as "one or more recipients," "message type," and "message body." The attribute node "recipients" is further defined, for example, by child attribute nodes such as "recipient name" and "message address."

[0248] In some examples, ontology 760 includes all domains (and thus executable intents) that a digital assistant can understand and act upon. In some examples, ontology 760 is modified, such as by adding or removing entire domains or nodes, or by modifying the relationships between nodes within ontology 760.

[0249] In some examples, nodes associated with multiple related executable intents are clustered under a "superdomain" in the knowledge ontology 760. For example, the "travel" superdomain includes a cluster of attribute nodes and executable intent nodes related to travel. Executable intent nodes related to travel include "ticket booking", "hotel booking", "car rental", "route planning", "find points of interest", etc. Executable intent nodes under the same superdomain (e.g., the "travel" superdomain) have multiple shared attribute nodes. For example, the executable intent nodes for "ticket booking", "hotel booking", "car rental", "get directions", and "find points of interest" share one or more of the attribute nodes "starting location", "destination", "departure date / time", "arrival date / time", and "party size".

[0250] In some examples, each node in the knowledge ontology 760 is associated with a set of words and / or phrases related to the attribute or executable intent represented by the node. The corresponding set of words and / or phrases associated with each node is a so-called "vocabulary" associated with the node. The corresponding set of words and / or phrases associated with each node is stored in the vocabulary index 744 associated with the attribute or executable intent represented by the node. For example, return Figure 7B , the vocabulary associated with the node of the "restaurant" attribute includes words such as "food", "drinks", "cuisine", "hunger", "eat", "pizza", "fast food", "meals", etc. For another example, the vocabulary associated with the node of the "make phone call" executable intent includes words and phrases such as "call", "make a phone call", "dial", "talk to...", "call the number", "call", etc. The vocabulary index 744 optionally includes words and phrases in different languages.

[0251] The natural language processing module 732 receives candidate text representations (e.g., one or more text strings or one or more symbol sequences) from the STT processing module 730, and for each candidate representation, determines which nodes the words in the candidate text representation involve. In some examples, if a word or phrase in the candidate text representation is found to be associated with one or more nodes in the knowledge ontology 760 (via the vocabulary index 744), the word or phrase "triggers" or "activates" those nodes. Based on the number and / or relative importance of the activated nodes, the natural language processing module 732 selects one of the executable intents as the task that the user intends 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 (e.g., based on the relative importance of its various triggered nodes) is selected. 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 are also considered in the process of selecting nodes, such as whether the digital assistant has previously correctly interpreted similar requests from the user.

[0252] User data 748 includes user-specific information, such as user-specific vocabulary, user preferences, user address, user's default second language, user's contact list, and other short-term or long-term information for each user. In some examples, natural language processing module 732 uses user-specific information to supplement the information contained in the user input to further qualify the user's intent. For example, for a user request to "invite my friends to my birthday party," natural language processing module 732 can access user data 748 to determine who "friends" are and when and where the "birthday party" will be held, without requiring the user to explicitly provide such information in their request.

[0253] It should be recognized that in some examples, the natural language processing module 732 is implemented using one or more machine learning mechanisms (e.g., neural networks). Specifically, the one or more machine learning mechanisms are configured to receive candidate text representations and context information associated with the candidate text representations. Based on the candidate text representations and the associated context information, the one or more machine learning mechanisms are configured to determine an intent confidence score based on a set of candidate executable intents. The natural language processing module 732 may select one or more candidate executable intents from a set of candidate executable intents based on the determined intent confidence scores. In some examples, a knowledge ontology (e.g., knowledge ontology 760) is also utilized to select one or more candidate executable intents from a set of candidate executable intents.

[0254] Additional details of searching knowledge ontologies based on symbolic strings are described in U.S. Utility Patent Application Serial No. 12 / 341,743, filed on December 22, 2008, entitled “Method and Apparatus for Searching Using An Active Ontology,” the entire disclosure of which is incorporated herein by reference.

[0255] In some examples, once the natural language processing module 732 identifies an executable intent (or domain) based on the user request, the natural language processing module 732 generates a structured query to represent the identified executable intent. In some examples, the structured query includes parameters for one or more nodes within the domain of the executable intent, and at least some of the parameters are filled with specific information and requirements specified in the user request. For example, the user says "help me reserve a seat at 7pm at the sushi restaurant." In this case, the natural language processing module 732 is able to correctly identify the executable intent as "restaurant reservation" based on the user input. According to the knowledge ontology, the structured query of the "restaurant reservation" domain includes parameters such as {cuisine}, {time}, {date}, {party number}, etc. In some examples, based on voice input and text derived from the voice input using the STT processing module 730, the natural language processing module 732 generates a partial structured query for the restaurant reservation domain, wherein the partial structured query includes parameters {cuisine = "sushi class"} and {time = "7pm"}. However, in this example, the user utterance contains insufficient information to complete the structured query associated with the domain. Therefore, based on the currently available information, other necessary parameters such as {number of party members} and {date} are not specified in the structured query. In some examples, the natural language processing module 732 populates some parameters of the structured query with the received contextual information. For example, in some examples, if the user requests a sushi restaurant "nearby", the natural language processing module 732 populates the {location} parameter in the structured query with the GPS coordinates from the user's device.

[0256] In some examples, the natural language processing module 732 identifies multiple candidate executable intentions for each candidate text representation received from the STT processing module 730. In addition, in some examples, a corresponding structured query is generated (partially or entirely) for each identified candidate executable intention. The natural language processing module 732 determines the intent confidence score for each candidate executable intention and ranks the candidate executable intention based on the intent confidence score. In some examples, the natural language processing module 732 transmits the generated one or more structured queries (including any completed parameters) to the task flow processing module 736 ("task flow processor"). In some examples, one or more structured queries for the m best (e.g., the m highest ranked) candidate executable intentions are provided to the task flow processing module 736, where m is a predetermined integer greater than zero. In some examples, one or more structured queries for the m best candidate executable intentions are provided to the task flow processing module 736 together with the corresponding one or more candidate text representations.

[0257] Additional details for inferring user intent based on multiple candidate executable intents determined based on multiple candidate textual representations of speech input are described in U.S. utility patent application serial number 14 / 298,725, entitled “System and Method for Inferring User Intent From Speech Inputs,” filed on June 6, 2014, the entire disclosure of which is incorporated herein by reference in its entirety.

[0258] The task flow processing module 736 is configured to receive one or more structured queries from the natural language processing module 732, complete the structured queries (if necessary), and perform the actions required to "complete" the user's final request. In some examples, the various processes necessary to complete these tasks are provided in the task flow model 754. In some examples, the task flow model 754 includes a process for obtaining additional information from the user, and a task flow for performing actions associated with an executable intent.

[0259] As described above, in order to complete the structured query, the task flow processing module 736 needs to initiate an additional dialogue with the user in order to obtain additional information and / or clarify the utterances that may be ambiguous. When it is necessary to conduct such an interaction, the task flow processing module 736 calls the dialogue flow processing module 734 to participate in the dialogue with the user. In some examples, the dialogue flow processing module 734 determines how (and / or when) to request additional information from the user, and receives and processes the user response. The question is provided to the user and the answer is received from the user through the I / O processing module 728. In some examples, the dialogue flow processing module 734 presents the dialogue output to the user via an audible output and / or a visual output, and receives input from the user via a voice or physical (e.g., click) response. Continuing the above example, when the task flow processing module 736 calls the dialogue flow processing module 734 to determine the "party number" and "date" information for the structured query associated with the domain "restaurant reservation", the dialogue flow processing module 734 generates questions such as "how many people in a row?" and "which day to book?" and passes them to the user. Once the answer is received from the user, the dialog flow processing module 734 fills in the structured query with the missing information, or passes the information to the task flow processing module 736 to complete the missing information based on the structured query.

[0260] Once the task flow processing module 736 has completed the structured query for the executable intent, the task flow processing module 736 begins to execute the final task associated with the executable intent. Therefore, the task flow processing module 736 executes the steps and instructions in the task flow model according to the specific parameters contained in the structured query. For example, the task flow model for the executable intent "restaurant reservation" includes steps and instructions for contacting a restaurant and actually requesting a reservation for a specific party size at a specific time. For example, using a structured query such as: {restaurant reservation, restaurant = ABC Cafe, date = 3 / 12 / 2012, time = 7pm, party size = 5}, the task flow processing module 736 can perform the following steps: (1) Log in to the server of ABC Cafe or such A restaurant reservation system that (2) enters date, time, and party size information into a form on the website, (3) submits the form, and (4) creates a calendar entry for the reservation in the user's calendar.

[0261] In some examples, the task flow processing module 736 completes the task requested in the user input or provides the informational answer requested in the user input with the assistance of the service processing module 738 ("service processing module"). For example, the service processing module 738 initiates 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 (e.g., restaurant reservation portals, social networking sites, bank portals, etc.) on behalf of the task flow processing module 736. In some examples, the protocols and application programming interfaces (APIs) required for each service are specified by the corresponding service models in the service model 756. The service processing module 738 accesses the appropriate service model for the service and generates a request for the service according to the protocol and API required by the service based on the service model.

[0262] For example, if the restaurant has enabled an online reservation service, the restaurant submits a service model that specifies the necessary parameters for making a reservation and transmits the values ​​of the necessary parameters to the API of the online reservation service. When requested by the task flow processing module 736, the service processing module 738 uses the web address stored in the service model to establish a network connection with the online reservation service and sends the necessary parameters for the reservation (e.g., time, date, party size) to the online reservation interface in a format according to the API of the online reservation service.

[0263] In some examples, the natural language processing module 732, the dialog flow processing module 734, and the task flow processing module 736 are used together and repeatedly to infer and define the user's intention, obtain information to further clarify and refine the user's intention, and finally generate a response (i.e., output to the user, or complete the task) to meet the user's intention. The generated response is a dialogue response to the voice input that at least partially meets the user's intention. In addition, in some examples, the generated response is output as a voice output. In these examples, the generated response is sent to a speech synthesis processing module 740 (e.g., a speech synthesizer), where the generated response can be processed to synthesize the dialogue response in the form of speech. In other examples, the generated response is data content related to satisfying the user request in the voice input.

[0264] In an example where the task flow processing module 736 receives multiple 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 query in an attempt to complete the first structured query and / or perform one or more tasks or actions represented by the first structured query. In some examples, the first structured query corresponds to the highest-ranked executable intent. In other examples, the first structured query is selected from the structured query received based on the 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., due to the inability to determine the necessary parameters), the task flow processing module 736 may continue to select and process the second structured query corresponding to the executable intent with a lower ranking in the received structured query. For example, the second structured query is selected based on the speech recognition confidence score represented by the corresponding candidate text, the intent confidence score of the corresponding candidate executable intent, the missing necessary parameters in the first structured query, or any combination thereof.

[0265] The speech synthesis processing module 740 is configured to synthesize speech output for presentation to the user. The speech synthesis processing module 740 synthesizes speech output based on the text provided by the digital assistant. For example, the generated dialogue response is in the form of a text string. The speech synthesis processing module 740 converts the text string into an audible speech output. The speech synthesis processing module 740 uses any appropriate speech synthesis technology to generate speech output from the text, including but not limited to: concatenation synthesis, unit selection synthesis, diphone synthesis, domain-specific synthesis, formant synthesis, pronunciation synthesis, synthesis based on hidden Markov model (HMM) and sine wave synthesis. In some examples, the speech synthesis processing module 740 is configured to synthesize individual words based on phoneme strings corresponding to these words. For example, the phoneme string is associated with the words in the generated dialogue response. The phoneme string is stored in the metadata associated with the word. The speech synthesis processing module 740 is configured to directly process the phoneme string in the metadata to synthesize the words in speech form.

[0266] In some examples, instead of (or in addition to) using the speech synthesis processing module 740, speech synthesis is performed on a remote device (e.g., server system 108), and the synthesized speech is sent to the user device for output to the user. For example, this may occur in some implementations where the output of the digital assistant is generated at the server system. And because the server system typically has more processing power or more resources than the user device, it is possible to obtain higher quality speech output than client-side synthesis would achieve.

[0267] Additional details about the digital assistant can be found in U.S. utility patent application No. 12 / 987,982, filed on January 10, 2011, and entitled “Intelligent Automated Assistant,” and U.S. utility patent application No. 13 / 251,088, filed on September 30, 2011, and entitled “Generating and Processing Task Items That Represent Tasks to Perform,” the entire disclosures of which are incorporated herein by reference.

[0268] 4. Determine if the voice input is intended for use with a digital assistant

[0269] Figure 8 A system 800 for determining whether speech input is intended for a digital assistant is shown according to various examples. In some examples, the system 800 is implemented on a standalone computer system (e.g., device 104, 122, 200, 400, 600, or 900). In some examples, the system 800 is distributed across multiple computers. For example, some of the components and functions of the system 800 are divided into a server portion and a client portion, where the client portion is located on one or more user devices (e.g., device 104, 122, 200, 400, 600, or 900) and communicates with the server portion (e.g., server system 108) via one or more networks, such as Figure 1 as shown in .

[0270] System 800 is implemented using hardware, software, or a combination of hardware and software to perform the principles discussed herein. In some examples, the components and functions of system 900 are implemented within digital assistant module 726, as described above with respect to 7A to 7C For example, each component of system 800 is implemented as a set of computer executable instructions stored in memory 702.

[0271] System 800 is exemplary, and thus system 800 may have more or fewer components than those shown, may combine two or more components, or may have a different configuration or arrangement of components. In addition, although the following discussion describes functions performed at a single component of system 800, it should be understood that these functions may be performed at other components of system 800, and these functions may be performed at more than one component of system 800.

[0272] The system 800 receives speech input (e.g., representing a user utterance) and determines whether the speech input is intended for a digital assistant based on the techniques discussed below. In some examples, based on determining that the speech input is intended for a digital assistant, the system 800 initiates a digital assistant session, or, if a digital assistant session has already been initiated, causes the digital assistant to provide output in response to the speech input.

[0273] In some examples, system 800 determines whether speech input is intended for a digital assistant without detecting a verbal trigger for initiating a digital assistant session (e.g., “Hey Siri,” “Siri,” “Hey Assistant,” etc.). In some examples, system 800 determines whether speech input is intended for a digital assistant without detecting a verbal trigger for initiating a digital assistant session (e.g., “Hey Siri,” “Siri,” “Hey Assistant,” etc.). 9A to 9D The system 800 may determine whether the voice input is intended for the digital assistant without detecting the selection of the digital assistant enable indication 904 in the electronic device and without detecting the selection of the button of the electronic device. Thus, the system 800 may determine whether the voice input is intended for the digital assistant without relying on any other input that explicitly indicates that the voice input is intended for the digital assistant.

[0274] In some examples, the system 800 determines whether the speech input is intended for the digital assistant based on determining that the digital assistant is not waiting for a response to a generated prompt for further user input (e.g., a prompt that elicits further information about the user's request). For example, after the digital assistant outputs a prompt (e.g., "Send message to whom?" in response to the natural language input "Send message"), the digital assistant enters a listening state for a predetermined duration to wait for a user response. The digital assistant may therefore assume that the speech input received during the predetermined duration is intended for the digital assistant, and therefore forgo processing the speech input using the system 800.

[0275] System 800 includes a text analysis module 802. Text analysis module 802 is configured to determine one or more scores for determining whether the speech input is intended for a digital assistant based on a text representation of the speech input.

[0276] In some examples, the text analysis module 802 includes an automatic speech recognition (ASR) module 804. The ASR module 804 is configured to perform speech recognition on the speech input to determine candidate text representations of the speech input. For example, the ASR module 804 implements the STT processing module 730. In some examples, the text representation of the speech input includes candidate text representations.

[0277] In some examples, the ASR module 804 is configured to process the candidate text representations to obtain a text representation of the speech input. For example, the ASR module 804 processes the highest ranked candidate text representation, or processes each of the n best candidate text representations. In some examples, the ASR module 804 implements a Bidirectional Encoder Representation from Transformer (BERT) model to process the candidate text representations to obtain corresponding embeddings (e.g., vectors) representing the speech input.

[0278] In some examples, the text analysis module 802 includes an utterance classifier 806. The utterance classifier 806 is configured to determine a score corresponding to a type of a user utterance (an utterance type score) based on a text representation of a speech input (e.g., an embedding). In some examples, determining the utterance type score includes determining a respective probability that the user utterance corresponds to each of a plurality of user utterance types. Example user utterance types include:

[0279] The first type of commands, such as commands to people, such as "think about it" or "sit down";

[0280] The second type of command, such as a command to an electronic device, such as "play music" or

[0281] “Check it out on Google”;

[0282] ● Type 1 questions, such as yes or no questions, such as “Do you have any other suggestions?”

[0283] or “Are you afraid of any animals?”;

[0284] ● A second type of questions, such as opinion-oriented questions, for example, “What is your favorite movie?” or “Which brand of smartphone do you prefer?”;

[0285] ● A third type of questions, such as questions that require a real answer, for example, “What is your name?” or “When does the game start?”;

[0286] ● A first type of response, such as an affirmative response, for example, “yes,” “yes, I do,” “I think,” or “sure”;

[0287] ● The second type of answers, such as negative answers, such as "no", "never",

[0288] “Nothing,” “Not really,” or “I don’t have it”;

[0289] ● A third type of answer, such as an answer different from a positive answer and a negative answer, e.g.

[0290] “I don’t know”, “5pm”;

[0291] ● Opinions or comments, such as, “It’s nice to have…” or “That’s weird”;

[0292] ●Statements, such as, “The store opens at 8 a.m.” or, “I am reading a book”;

[0293] ● Type 1 social functions, such as expressions of gratitude, e.g. “thank you” or “thanks a lot”;

[0294] ● The second type of social functions, such as apology, for example, "I'm sorry", "Sorry"

[0295] or “Excuse me”;

[0296] ● A third type of social function, such as a response to an apology, e.g., “No problem” or

[0297] "It doesn't matter";

[0298] ● Type 4 social functions, such as responses to expressions of appreciation, for example, “You’re welcome” or “My pleasure”;

[0299] ● The fifth type of social functions, such as expressions of appreciation, for example, "Great",

[0300] "Great" or "Great job"

[0301] ● An initial utterance of a digital assistant session, such as an utterance associated with a verbal trigger and / or other input (e.g., gaze input, gesture input) used to initiate the digital assistant session, for example, “Siri, what’s the weather like today?”, “Hey Siri, turn on the lights,” or

[0302] “How many spoons in a cup?”; and

[0303] An utterance that follows (e.g., is received later) an initial utterance in the same digital assistant session, for example, the follow-up utterance “How is Paris?” after the initial utterance “Siri, what's the weather like today?” or the follow-up utterance “How many tablespoons do you put in a cup?” after the initial utterance “How many teaspoons do you put in?”

[0304] It should be understood that the above utterance types are merely exemplary, and the utterance classifier 806 may determine the corresponding probabilities that the user utterance corresponds to other utterance types. In addition, the utterance classifier 806 may determine the corresponding probabilities that the user utterance corresponds to only some of the above utterance types, for example, without determining the corresponding probabilities that the user utterance corresponds to other utterance types. In some examples, the determined probabilities are normalized to sum to one.

[0305] In some examples, determining the utterance type score includes selecting a subset of the determined corresponding probabilities. Each probability of the subset corresponds to a corresponding predetermined utterance type, for example, an utterance type that is more likely to be intended for a digital assistant. In some examples, the predetermined utterance types include at least some of the following: a command of the second type (e.g., a command to an electronic device), a question of the first type (e.g., a yes or no question), a question of the third type (e.g., a question answered to a fact), an initial utterance of a digital assistant session, and an utterance following the initial utterance in the same digital assistant session.

[0306] In some examples, the speech classifier 806 determines a speech type score based on a selected subset of the corresponding probabilities. For example, the speech classifier 806 sums the corresponding probabilities to obtain a first score. As a specific example, assume that the speech classifier 806 receives a text representation of the speech input "How is the weather today?" The speech classifier 806 determines that "How is the weather today?" corresponds to the corresponding probability of each speech type in a plurality of speech types, for example, the probability of the first type of command is 0.1, the probability of the second type of command is 0.3, the probability of the first type of question is 0.08, the probability of the second type of question is 0.02, the probability of the third type of question is 0.45, the probability of an opinion or comment is 0.03, and the probability of a statement is 0.02. The speech classifier 806 then determines that the speech type score of "How is the weather today?" is 0.83, i.e., the sum of the corresponding probabilities of the second type of command, the first type of question, and the third type of question.

[0307] In some examples, the utterance classifier 806 implements a machine learning model (e.g., a neural network) configured to determine an utterance type score. For example, the neural network is trained in a multi-task manner to determine a corresponding probability that an utterance corresponds to each of a plurality of utterance types. In some examples, the training data includes a set of text representations of corresponding different user utterances, where each text representation is labeled with the correct corresponding user utterance type.

[0308] In some examples, the text analysis module 802 includes a domain correspondence detector 808. The domain correspondence detector 808 is configured to determine a score (domain correspondence score) representing a correspondence between a user utterance and a domain recognized by a digital assistant based on a text representation of the speech input. In some examples, determining the domain correspondence score includes determining whether the user utterance corresponds to a plurality of user utterances recognized by the digital assistant, e.g., utterances corresponding to tasks that the digital assistant can satisfy. In some examples, determining the domain correspondence score includes determining whether the user utterance corresponds to a vocabulary associated with the domain recognized by the digital assistant. For example, as discussed above, the vocabulary associated with the restaurant reservation domain includes words such as "food", "drinks", "cuisine", "hunger", "eat", "pizza", "fast food", "meal", etc. Thus, the domain correspondence score may indicate whether the vocabulary and / or structure (e.g., grammar) of the user utterance corresponds to the vocabulary and / or structure of the utterance intended for the digital assistant.

[0309] In some examples, the domain correspondence detector 808 implements a binary classification neural network configured to determine a domain correspondence score (e.g., a binary score). For example, a domain correspondence score of 1 indicates that the user utterance corresponds to a domain recognized by the digital assistant, and a domain correspondence score of 0 indicates that the user utterance does not correspond to any domain recognized by the digital assistant. In some examples, the binary classification neural network is trained using a dataset that includes text representations of corresponding different user utterances, where each text representation is labeled (e.g., with a label 0 or 1) to indicate whether the corresponding user utterance corresponds to a domain recognized by the digital assistant.

[0310] In some examples, the text analysis module 802 includes a context continuity detector 810. The context continuity detector 810 is configured to determine a score (context continuity score) representing context continuity between a user utterance and a previous user utterance determined to be intended for the digital assistant based on a text representation of the speech input. In some examples, the system 800 determines that a previous user utterance (e.g., included in a previous speech input) is intended for the digital assistant. In some examples, the digital assistant determines that a previous utterance is intended for itself based on detecting a verbal trigger (e.g., "Hey Siri"). For example, if the previous user utterance is "Hey Siri, what's the weather like today?" and the (current) user utterance is "How's Paris?", the context continuity detector 810 determines a score representing context continuity between the two utterances.

[0311] In this example, the context continuity detector 810 implements a binary classification neural network configured to determine a context continuity score (e.g., a binary score). For example, the binary classification neural network accepts as input a text representation of a current user utterance and a text representation (e.g., an embedding) of a previous user utterance. The text representation of the previous user utterance is determined similarly to the text representation of the current user utterance. In this example, the context continuity detector 810 may determine a high context continuity score (e.g., 1) for the current user utterance "How is Paris?" because "How is Paris?" may be contextually continuous to the previous user utterance "Hey Siri, what's the weather like today." For example, the digital assistant may use the previous user utterance to interpret "How is Paris?" to mean asking about the weather in Paris, France. As another example, the context continuity detector 810 may determine a low context continuity score (e.g., 0) for the current utterance "Let's go out for dinner" because "Let's go out for dinner" is unlikely to be contextually continuous to "Hey Siri, what's the weather like today?" For example, the previous utterance "Hey Siri, what's the weather like today?" may not help the digital assistant interpret "Let's go out for dinner."

[0312] In some examples, a binary classification neural network is trained using a dataset that includes pairs of user utterances (e.g., each user utterance includes a text representation of a previous user utterance and a text representation of a current user utterance). Each pair of user utterances is labeled (e.g., with a binary score of 0 or 1), for example to indicate whether the previous user utterance is contextually continuous with the current user utterance.

[0313] In some examples, the current voice input (e.g., the current user utterance) is continuous with the previous voice input (e.g., the previous user utterance). For example, the device implementing system 800 does not receive any other voice input between the current voice input and the previous voice input, and / or does not receive any other voice input determined to be intended for the digital assistant between receiving the current voice input and the previous voice input. As another example, the current voice input and the previous voice input are received within a predetermined duration of each other (e.g., 15 seconds, 30 seconds, 1 minute, 1 hour, etc.).

[0314] In some examples, the current voice input is received in the same digital assistant session as the previous voice input. For example, when the same digital assistant session is initiated, the current voice input and the previous voice input are each received. In some examples, when the digital assistant user interface (e.g., the following 9A to 9D 906) is continuously displayed and / or when certain computing processes are being executed (e.g., computing processes associated with displaying the digital assistant user interface, computing processes associated with operating Figure 7BIn some examples, ceasing to display the digital assistant user interface and / or ceasing to execute certain computing processes defines the end (e.g., termination) of the digital assistant session.

[0315] In some examples, the system 800 includes an acoustic analysis module 812. The acoustic analysis module 812 is configured to determine a score (acoustic score) indicating whether the voice input is intended for a digital assistant based on an acoustic representation of the voice input. In some examples, the acoustic representation includes a signal representing the voice input (e.g., a signal sampled by one or more microphones). In some examples, the acoustic representation includes one or more embeddings (e.g., vectors) representing the voice input. For example, the acoustic analysis module 812 implements a machine learning model (e.g., a neural network) configured to determine the embedding. Each embedding represents an acoustic feature (e.g., the presence or absence of human voice, background noise level, audio energy level within a predetermined frequency band, etc.) related to determining whether the voice input is intended for a digital assistant. Example techniques for determining embeddings are described in U.S. patent application Ser. No. 17 / 123,428, entitled “REDUCING DEVICE PROCESSING OF UNINTENDED AUDIO,” filed on December 16, 2020, the contents of which are incorporated by reference in their entirety.

[0316] In some examples, the acoustic analysis module 812 implements a machine learning model (e.g., a neural network) configured to determine an acoustic score. For example, the neural network is configured to accept an acoustic representation (e.g., an embedding) as input and output an acoustic score. In some examples, the neural network is configured to determine multiple scores (e.g., binary scores) when the device receives voice input, each score indicating whether the voice input is intended for a digital assistant. For example, each score in the multiple scores corresponds to a corresponding frame (e.g., a 10 millisecond frame) of the voice input. Therefore, the acoustic analysis module 812 can determine in real time (e.g., when the voice input is received) whether the corresponding frame indicating the voice input is intended for a digital assistant. In some examples, multiple scores include an acoustic score. For example, the acoustic score is the last score in multiple scores, for example, a score corresponding to the last frame (e.g., the last 10 milliseconds) of the voice input. In some examples, the acoustic analysis module 812 alternatively aggregates (e.g., averages) each score in the multiple scores to obtain an acoustic score. Example techniques for determining acoustic scores (e.g., an example description of a neural network) are described in U.S. patent application Ser. No. 17 / 123,428, filed on December 16, 2020, and entitled “REDUCING DEVICE PROCESSING OF UNINTENDED AUDIO.”

[0317] In this way, the acoustic analysis module 812 can determine whether the acoustic characteristics of the speech input are consistent with typical acoustic characteristics of speech intended for a digital assistant. In some examples, the acoustic analysis module 812 does not perform ASR on the speech input to determine the acoustic score.

[0318] In some examples, the system 800 includes an ASR analysis module 814. The ASR analysis module 814 is configured to determine a score (ASR score) indicating whether the speech input is intended for a digital assistant based on a textual representation of the speech input. In some examples, the textual representation of the speech input includes an ASR word graph, i.e., a graph representing one or more ASR hypotheses for the speech input, wherein each path of the graph represents a different ASR hypothesis. In some examples, the ASR analysis module 814 implements speech recognition techniques known in the art to determine the ASR word graph. In some examples, the ASR analysis module 814 further determines an embedding (e.g., a vector) representing the ASR word graph according to techniques known in the art.

[0319] In some examples, the ASR analysis module 814 implements a neural network (e.g., a word graph RNN model) to determine an ASR score. The word graph RNN is configured to accept an ASR word graph (or its embedding) as input and output an ASR score (e.g., a binary score) indicating whether the speech input is intended for a digital assistant.

[0320] In some examples, the ASR analysis module 814 uses a different type of text representation (e.g., different from an ASR word graph) to determine the ASR score. For example, the ASR analysis module 814 implements a second neural network (e.g., a Listen, Attention, and Spell (LAS) model) configured to perform speech recognition to determine a different type of text representation (e.g., a character sequence). In some examples, the ASR analysis module 814 implements another neural network that is configured to accept a character sequence as input, determine an embedding representing the character sequence, and determine an ASR score (e.g., a bigram score) based on the embedding.

[0321] Thus, as described above, the system 800 can use different types of text representations of speech input to determine various scores indicating whether the speech input is intended for a digital assistant. For example, the text analysis module 802 uses a first type of text representation (e.g., an embedding obtained according to the BERT technique) to determine an utterance type score, a domain correspondence score, and a context continuity score. In contrast, the ASR analysis module 814 uses different types of text representations (e.g., ASR word graphs and / or character sequences) to determine an ASR score.

[0322] In some examples, system 800 includes a speaker identification module 816. Speaker identification module 816 is configured to determine a speaker identification score based on performing speaker identification (e.g., speech recognition) on the speech input. For example, the speaker identification score indicates the confidence that the speech input matches the speech of an authorized user of the electronic device (e.g., a user whose credentials (e.g., a password, a biometric authentication credential (e.g., a face, fingerprint, retina, etc.)) are recognized by the electronic device. As described below, score combiner 824 can use the speaker identification score to determine whether the speech input is intended for a digital assistant.

[0323] In some examples, the system 800 includes a gesture identification module 818. The gesture identification module 818 is configured to process the detected gesture input to determine a gesture score. Example sensors for detecting gesture input include an accelerometer, a gyroscope, a camera, a biometric sensor (e.g., a sensor configured to detect a photoplethysmogram (e.g., a pulse oximeter), a sensor for an electroencephalogram, other biometric sensors that can be used to detect hand or arm gestures), a touch screen display, or a combination or subcombination thereof. The gesture score indicates, for example, a confidence that the gesture input corresponds to a predetermined type of gesture (e.g., a gesture to raise the device from a lowered position, a gesture to move the device closer to the user's mouth, a finger pointing gesture, a predetermined type of finger movement). In some examples, the gesture identification module 818 determines the gesture score based on determining that the gesture input is received within a predetermined time window around the voice input (e.g., within a predetermined duration before the start time of the voice input, during the voice input, and / or within a predetermined duration after the end time of the voice input). As described below, the score combiner 824 can use the gesture score to determine whether the voice input is intended for a digital assistant.

[0324] In some examples, the system 800 includes a verbal trigger detector 820. The verbal trigger detector 820 is configured to detect a verbal trigger (e.g., a predetermined word or phrase, such as "Siri," "Hey Siri," "Hey Assistant," etc.) for initiating a digital assistant session. For example, the verbal trigger detector 820 is configured to compare a voice input with one or more reference representations of the verbal trigger. In some examples, the electronic device generates a reference representation via a registration process, in which the device instructs the user to speak a verbal trigger to the device one or more times. In some examples, the verbal trigger detector 820 determines a trigger score indicating a degree of match between the voice input and the verbal trigger (e.g., between the voice input and the reference representation). In some examples, if the trigger score is greater than a threshold, the verbal trigger detector 820 detects a verbal trigger.

[0325] In some examples, the system 800 determines whether the speech input is intended for the digital assistant based on detecting the verbal trigger (e.g., determining a score in addition to the trigger score discussed herein). Thus, detection of a verbal trigger can initiate the processing described with respect to the system 800. In other examples, the system 800 determines whether the speech input is intended for the digital assistant regardless of whether a verbal trigger is detected. For example, the score combiner 824 uses the verbal trigger score to determine whether the speech input is intended for the digital assistant.

[0326] Including a verbal trigger in a voice input may not explicitly indicate whether the voice input is intended for a digital assistant. For example, if the verbal trigger is "Siri," some voice inputs including the verbal trigger may be intended for a digital assistant (e.g., "Siri, what's the weather?", "Siri, help me navigate home"), while other voice inputs may not be intended for a digital assistant (e.g., "Let's ask Siri" or "Siri is the best"). Therefore, system 800 can help determine whether such voice inputs are intended for a digital assistant.

[0327] In some examples, the electronic device captures a first data set from a camera (e.g., an RGB camera and / or an infrared (IR) camera). In some examples, the electronic device captures the first data set between a start time and an end time of the voice input. For example, the camera begins capturing data at a determined start time of the voice input and stops capturing data at a determined end time of the voice input. In some examples, the start time is when a digital assistant session is initiated, when the device detects a verbal trigger, when the device detects a selection of a hardware button (e.g., to initiate a digital assistant session), or when the device detects a selection of a digital assistant affordance (e.g., 9A to 9D In some examples, the device uses a voice activity detection (VAD) technique known in the art to determine the start time. In some examples, the electronic device determines the end time based on a voice end point technique known in the art.

[0328] In some examples, the camera captures data based on determining (e.g., when) a predetermined condition is satisfied. Example predetermined conditions include the display of the device being turned on (e.g., displayed), the device being unlocked, a digital assistant session being currently initiated, a digital assistant session being recently (e.g., within a predetermined duration before the current time) being released, the digital assistant not waiting for a prompt for further user input (e.g., a prompt generated by the digital assistant), the voice input being after (e.g., continuous with) another voice input received within the same digital assistant session as the voice input, and the digital assistant having output a response (e.g., an audio response, a displayed response) to the initial voice input of the digital assistant session. In some examples, the first data set includes camera data captured between a predetermined duration (e.g., 0.5 seconds, 1 second) before the start time of the voice input and a second predetermined duration (e.g., 0.5 seconds, 1 second) after the end time of the voice input. For example, if such camera data is available (e.g., due to satisfying a predetermined condition), such camera data is included in the first data set.

[0329] In some examples, the system 800 includes a gaze module 822. The gaze module 822 is configured to determine a second data set (gaze pattern data) representing a user gaze pattern based on a first data set when providing voice input. In some examples, when providing voice input, the user gaze pattern indicates multiple user gaze positions (e.g., a series of (x, y) coordinates or heat maps indicating the relative frequency of user gazes at various positions). In some examples, the user gaze positions are each on a display of an electronic device. In some examples, the user gaze pattern also indicates a corresponding time corresponding to each gaze position (e.g., a series of (x, y, t) coordinates). In some examples, the gaze module 822 uses gaze tracking technology to process the first data set to determine the gaze position and the corresponding time. In some examples, if the determined gaze position is not on the display, the gaze module 822 does not include the gaze position in the gaze pattern data.

[0330] In some examples, the gaze module 822 determines whether the first data set represents eyes and / or face of the user, and determines gaze pattern data based on determining that the first data set represents eyes and / or face of the user. For example, the gaze module 822 processes the first data set using facial detection and / or gaze tracking technology to attempt to detect eyes and / or face of the user. If the gaze module 822 cannot detect eyes and / or face of the user (e.g., no portion of the first data set represents eyes and / or face of the user), the gaze module 822 abandons determining gaze pattern data.

[0331] As discussed in detail below, the gaze module 822 is configured to determine a gaze score indicating whether the voice input is intended for a digital assistant. In some examples, if the gaze module 822 abandons determining the gaze pattern data, the gaze module 822 determines a relatively low gaze score (e.g., 0) or determines a gaze score indicating that it is unknown whether the voice input is intended for a digital assistant. In some examples, the gaze module 822 determines the gaze score without performing ASR on the voice input. For example, as discussed below, the gaze module 822 instead considers the acoustic features of the voice input and the gaze pattern to determine the gaze score.

[0332] In some examples, gaze module 822 is configured to determine the 3rd data set (glance data) representing user's pan based on gaze pattern data.For example, gaze module 822 for example determines the corresponding part of the gaze pattern of panning and staring at by analyzing the timing between the user's gaze position.For example, if during short duration (for example, 20ms, 50ms, 100ms, 200ms, 500ms), the corresponding gaze position is relatively far away from each other, then the gaze position can indicate panning.On the contrary, if during short duration, the corresponding gaze position is relatively close together, then the gaze position can indicate staring at.Therefore, the panning data indicates for example the corresponding part of the gaze pattern of panning and staring attentively and / or the percentage of the gaze pattern of panning.

[0333] In some examples, the gaze module 822 is configured to determine a fourth data set (acoustic feature data) representing features (e.g., acoustic features) of the speech input based on the speech input. Example acoustic features include pitch, tone, frequency, amplitude, energy level, entropy, etc. In some examples, the gaze module 822 implements one or more signal processing techniques (e.g., Fourier transform, application of filters, etc.) to determine the value of the acoustic feature. Therefore, the acoustic feature data can indicate how the value of the acoustic feature changes throughout the speech input.

[0334] In some examples, the gaze module 822 is configured to determine a fifth data set (correlation data) representing a correlation between a feature (e.g., an acoustic feature) of the voice input and a plurality of user gaze positions. For example, the gaze module 822 processes the voice input and the gaze pattern data simultaneously to determine a corresponding value of the acoustic feature for each gaze position. Thus, the correlation data may indicate how the acoustic feature changes when the user gazes around (e.g., gazes around at a display of the device).

[0335] In some examples, the gaze module 822 is configured to determine a gaze score based on at least some of the gaze pattern data, the glance data, the acoustic feature data, and the correlation data. In some examples, the gaze module 822 implements a rule-based technique to determine a gaze score. For example, the gaze module 822 compares the above data with one or more corresponding predetermined data sets and / or determines whether the data meets one or more criteria, as discussed below.

[0336] In some examples, the gaze module 822 compares the gaze pattern data to one or more predetermined data sets that respectively represent one or more predetermined gaze patterns. For example, a predetermined gaze pattern (e.g., a set of (x, y, t) coordinates or a heat map indicating gaze locations) represents a typical user gaze pattern when the user's voice is intended for use with a digital assistant. For example, the predetermined gaze pattern indicates that the gaze location is centered within a predetermined portion of the display. Example predetermined portions of the display include a top percentage of the display (e.g., 10%, 20%, 30%), a bottom percentage of the display (e.g., 10%, 20%, 30%), a display area of ​​the responsive affordance indication 902 (in the following example), and a display area of ​​the responsive affordance indication 902 (in the following example). 9A to 9D ) and the display area of ​​the digital assistant indicating 904 (in the following 9A to 9D As one example, the predetermined gaze pattern indicates that a threshold amount (e.g., 50%, 75%, 80%, 90%, 95%) of gaze locations fall within the top 30% or bottom 30% of the display. As another example, the predetermined gaze pattern indicates that a threshold amount of gaze locations fall within the area occupied by response affordance 902 or by digital assistant affordance 904.

[0337] 9A to 9D 906 is shown as a digital assistant user interface displayed by an electronic device 900 according to various examples. The electronic device 900 is implemented as device 200, 400, or 600. In some examples, the digital assistant user interface 906 includes a response affordance 902 and a digital assistant affordance 904. Fig.9A , device 900 displays digital assistant user interface 906 in response to voice input “Hey Siri, what’s the weather like today?” Because the user can associate affordances 902 and 904 with the digital assistant, when providing voice input intended for the digital assistant, the user may gaze at the area occupied by affordances 902 and / or 904 (and / or around it). Thus, the predetermined gaze pattern may indicate that the user’s gaze position is focused within (and / or around) the area.

[0338] In some examples, if the gaze pattern data matches at least some of the predetermined gaze patterns to a predetermined degree (e.g., 50% match, 75% match, 95% match), the gaze module 922 determines a relatively high gaze score (or increases the gaze score). In some examples, if the gaze pattern data does not match at least some of the predetermined gaze patterns to a predetermined degree, the gaze module 922 determines a relatively low gaze score (or decreases the gaze score). For example, if the voice input is not intended for a digital assistant, the gaze pattern data may indicate a relatively uniform distribution of gaze positions on the display (e.g., a heat map indicates that the gaze positions are concentrated near the center of the display). Such gaze pattern data may not fully match any of the predetermined gaze patterns, resulting in a low gaze score.

[0339] In some examples, the gaze module 822 determines whether the user gaze pattern meets one or more criteria. In some examples, determining that the user gaze pattern meets one or more criteria includes determining that the user gaze is directed within a predetermined portion of the display. Example predetermined portions of the display include a top percentage of the display (e.g., 10%, 20%, 30%), a bottom percentage of the display (e.g., 10%, 20%, 30%), a display area of ​​the response affordance 902, and a display area of ​​the digital assistant affordance 904, or a combination or subcombination thereof. In some examples, determining that the user gaze is directed within the predetermined portion includes determining that the user gaze is directed within a predetermined portion of a threshold percentage (e.g., 10%, 20%, 30%, 40%, 50%, 60%) of the voice input, such as determining that at least a threshold percentage of the (x, y) coordinates determined when receiving the voice input falls within the predetermined portion. In some examples, determining that the user gaze is directed within the predetermined portion includes determining that a threshold percentage of the total gaze position falls within the predetermined portion.

[0340] In some examples, determining that the user's gaze is directed within a predetermined portion includes determining that the user's gaze is directed within the predetermined portion during a predetermined duration, such as determining that the gaze position (or a threshold percentage thereof) falls within the predetermined portion during the predetermined duration. As an example, the gaze module 822 determines that the user's gaze is directed within the first predetermined portion of the display during a first predetermined duration (e.g., 0.5 seconds, 1 second, 2 seconds, 3 seconds) after the start time of the voice input. As another example, the gaze module 822 determines that the user's gaze is directed within the second predetermined portion of the display during a second predetermined duration (e.g., 0.5 seconds, 1 second, 2 seconds, 3 seconds) before the end time of the voice input. The first and second predetermined portions of the display may be the same portion of the display, or may be different portions of the display. For example, the gaze module 822 determines whether the user's gaze is directed to the top 30% or the bottom 30% of the display during the 2 seconds after the start time, and determines whether the user's gaze is directed to the top 30% or the bottom 30% of the display during the 2 seconds before the end time.

[0341] In some examples, if the gaze module 822 determines that the gaze pattern satisfies one or more criteria, the gaze module 822 determines a relatively high gaze score (or increases the gaze score). In some examples, if the gaze module 822 determines that the gaze pattern does not satisfy one or more criteria (e.g., if the gaze module 822 determines that the user's gaze is not directed within a predetermined portion of the display), the gaze module 822 determines a relatively low gaze score (or decreases the gaze score).

[0342] Although the above describes determining a gaze score based on gaze pattern data, in some examples, the gaze module 822 determines a gaze score based on other data (e.g., scan data, acoustic feature data, related data) in a similar manner. For example, the gaze module 822 compares the other data with the corresponding predetermined data set and / or determines whether the other data meets one or more criteria. If the other data matches at least some of the corresponding predetermined data sets to a predetermined degree (e.g., 50% match, 75% match, 90% match), the gaze module 822 determines a relatively high gaze score (or increases the gaze score). If the other data does not match at least some of the corresponding predetermined data sets to a predetermined degree, the gaze module 822 determines a relatively low gaze score (or reduces the gaze score). Similarly, if the other data meets one or more criteria, the gaze module 822 determines a relatively high gaze score (or increases the gaze score). If the other data does not meet one or more criteria, the gaze module 822 determines a relatively low gaze score (or reduces the gaze score).

[0343] As an example, the gaze module 822 compares the correlation data with a predetermined data set representing the predetermined correlation between the acoustic feature and a plurality of gaze positions, respectively. For example, when the voice input is intended for a digital assistant, the predetermined correlation is a typical correlation between the acoustic feature and the gaze position. As another example, the gaze module 822 determines whether the glance data indicates that at least a threshold percentage (e.g., 25%, 50%, 75%) of the gaze pattern corresponds to a glance. If so, the glance data does not meet the criteria, for example, because a high percentage of glances during speech may indicate that the speech is not intended for a digital assistant.

[0344] In some examples, the gaze module 822 implements machine learning techniques to determine a gaze score. For example, the gaze module 822 implements a neural network configured to accept at least some of the voice input, gaze pattern data, glance data, acoustic feature data, and related data as input. In some examples, the gaze module 822 preprocesses at least some of the aforementioned data to determine a corresponding embedding (e.g., a vector) representing the data. In some examples, the neural network instead accepts an embedding as input. For example, the gaze module 822 preprocesses the gaze pattern data to determine an embedding representing the gaze pattern data and / or a second embedding indicating whether a threshold percentage of the gaze position falls within a predetermined portion of the display (e.g., the top 30% or the bottom 30%).

[0345] In some examples, the neural network determines a gaze score based on the above inputs. In some examples, the neural network is trained using a data set that includes at least some of the following: reference speech input, reference gaze pattern data, reference acoustic feature data, and reference related data. For example, each reference data is labeled to indicate whether the corresponding speech input is intended for a digital assistant. In this way, the gaze module 822 can learn to implicitly make determinations and / or perform the comparisons discussed above with respect to the rule-based techniques for the gaze module 822.

[0346] In some examples, the digital assistant initiates a task based on voice input, for example, processing the voice input as discussed with respect to the natural language processing module 732 and the task flow processing module 736. In some examples, the digital assistant determines a task flow score corresponding to the initiated task. In some examples, the task flow score quantifies the degree of success of the task. For example, the task flow score is based on whether the digital assistant can determine one or more parameters of the task. A further description of determining a task flow score is described in U.S. Patent No. 10,789,945, entitled "LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT," issued on September 29, 2020, the contents of which are hereby incorporated by reference in their entirety.

[0347] The system 800 includes a score combiner 824. The score combiner 824 is configured to determine whether the speech input is intended for a digital assistant based on at least some of the following: an utterance type score, a domain correspondence score, a context continuity score, an acoustic score, an ASR score, a speaker identification score, a gesture score, a verbal trigger score, a gaze score, a task flow score, a speech recognition confidence score (e.g., determined based on the speech input by the STT processing module 730), and an intent confidence score (e.g., determined based on the speech input by the natural language processing module 732).

[0348] In some examples, the score combiner 824 implements a neural network to determine whether the voice input is intended for a digital assistant. For example, the neural network is configured to accept at least some of the scores as input and determine a final score indicating whether the voice input is intended for a digital assistant. In some examples, the neural network is configured to weight the scores, for example, according to a linear combination, by applying a logistic regression technique, etc. to obtain a final score. In some examples, the neural network is trained (e.g., learns weights) based on a training data set including scores, where each score is labeled to indicate whether the corresponding input (e.g., voice input, camera data, gesture input) from which the score was determined corresponds to a voice input intended for a digital assistant.

[0349] In some examples, the final score is binary. Thus, the score combiner 824 determines that the speech input is intended for a digital assistant if the final score is 1, and determines that the speech input is not intended for a digital assistant if the final score is 0. In some examples, the final score falls within a predetermined range, such as 0 to 1. In such examples, the score combiner 824 compares the final score to a threshold value (e.g., 0.5), and determines that the speech input is intended for a digital assistant if the final score is above the threshold, and determines that the speech input is not intended for a digital assistant if the final score is below the threshold.

[0350] In some examples, the digital assistant initiates a task based on determining that the speech input is intended for the digital assistant. In some examples, the digital assistant also provides an output (e.g., an audio output and / or a display output) indicating the initiated task. For example, if the score combiner 824 determines that the speech input "Hey Siri, what's the weather like today?" is intended for the digital assistant, the digital assistant initiates a task to retrieve weather information and provides the retrieved weather information, such as Fig.9A In some examples, based on determining that the voice input is not intended for the digital assistant, the digital assistant abandons initiating the task.

[0351] In some examples, the score combiner 824 is configured to determine an initial score indicating whether the voice input is intended for the digital assistant. For example, similar to determining the final score, the score combiner determines the initial score based on scores other than the task flow score and the intent confidence score. If the score combiner 824 determines that the initial score indicates that the voice input is intended for the digital assistant, the score combiner 824 causes the digital assistant to initiate the task, for example, thereby determining the intent confidence score and / or the task flow score. Based on the intent confidence score and / or the task flow score (and based on other scores), the score combiner 824 determines the final score. Thereafter, based on determining that the voice input is intended for the digital assistant (e.g., based on the final score), the digital assistant provides an output indicating the initiated task. Based on determining that the voice input is not intended for the digital assistant (e.g., based on the final score), the digital assistant abandons providing the output.

[0352] In this way, the digital assistant may initiate a task before ultimately determining whether the voice input is intended for the digital assistant (e.g., before determining a final score). Thus, the initiation of a task may refine the determination of whether the voice input is intended for the digital assistant. For example, if the initial score indicates that the voice input is intended for the digital assistant, but the intent confidence score and / or the task flow score are low, the initiated task may correspond to an error. Such an error may indicate that the voice input is not intended for the digital assistant. Thus, the final score may indicate that the voice input is not intended for the digital assistant. In some examples, based on the final determination that the voice input is not intended for the digital assistant, the score combiner 822 causes the digital assistant to stop initiating the task.

[0353] Although the functionality of the respective components of the system 800 is described above individually, in other examples, the system 800 implements a single machine learning model (e.g., as one or more neural networks) configured to perform the combined functionality of one or more components. For example, the neural network is configured to accept at least some of the voice input, gesture input, and camera input as input, and determine a final score indicating whether the voice input is intended for a digital assistant. Thus, instead of using the score combiner 824 to determine the score and the aggregate score separately, the neural network instead aggregates the input data (e.g., into the determined embedding) and determines the final score without determining other scores. For example, the neural network can be trained to implicitly make the determinations discussed above with respect to the various components of the system 800, for example, so that the final score represents the combined result of the implicit determinations. For example, the neural network is trained using a data set including a reference voice input, a reference gesture input, and a reference camera input, where each reference input is labeled to indicate whether the corresponding voice input is intended for a digital assistant.

[0354] 5. Determine if the subsequent voice input is intended for a digital assistant

[0355] Return to Fig.9A In some examples, the corresponding voice input (e.g., "Hey Siri, what's the weather like today?") is a first voice input representing a first user utterance. In some examples, the first voice input is an initial voice input of the initiated digital assistant session.

[0356] In some examples, the digital assistant initiates a first task based on the first voice input (e.g., retrieving weather information). The digital assistant also provides a first output indicating the initiated first task. For example, the digital assistant displays a response indication 902 and / or audibly outputs the requested weather information.

[0357] In some examples, the device 900 determines whether the first voice input is intended for a digital assistant, and provides a first output based on determining that the first voice input is intended for a digital assistant. In some examples, the device 900 uses the system 800 to make the determination, as described above. In some examples, the device 900 makes the determination based on detecting a verbal trigger (e.g., "Hey Siri") and / or based on detecting other inputs that explicitly indicate that the voice input is intended for a digital assistant (e.g., selection of a button of the device 900, selection of a digital assistant enable indication 904). For example, the device 900 determines whether the first voice input is intended for a digital assistant without using the system 800.

[0358] Steering Fig. 9B In some examples, after providing the first output, device 900 enables the display of digital assistant enable indication 904 to change in response to user gaze input. For example, after initially displaying response enable indication 902 and / or after providing audio output, device 900 begins capturing gaze input, such as as camera data. Based on determining that the user's gaze is directed at a predetermined location (e.g., digital assistant enable indication 904, device 900, or response enable indication 902), device 900 modifies the display of digital assistant enable indication 904. For example, Fig. 9B , device 900 modifies (e.g., enlarges) the size of affordance 904. Other example display modifications to affordance 904 include color modifications, modifications to animations displayed within affordance 904, and modifications to the display location of affordance 904. In this way, device 900 can indicate that it is capturing gaze input and that it can use the gaze input to determine whether subsequent voice input (discussed below) is intended for the digital assistant.

[0359] In some examples, after providing the first output, the device 900 receives a second voice input (subsequent voice input) subsequent to the first voice input, the subsequent voice input representing a second user utterance. In some examples, the subsequent voice input is continuous with the first voice input. In some examples, the device 900 receives the first voice input and the subsequent voice input within the same digital assistant session, for example, receiving the voice input when the same digital assistant session is initiated. In some examples, the device 900 receives the subsequent voice input without detecting a verbal trigger after providing the first output and / or without detecting other inputs that explicitly indicate that the subsequent voice input is intended for the digital assistant (e.g., selection of a hardware button, selection of the digital assistant enable indication 904). Thus, the device 900 can determine whether the subsequent voice input is intended for the digital assistant without relying on explicit indications. Fig. 9C , device 900 receives a subsequent voice input "How is Paris?"

[0360] In some examples, device 900 determines whether the subsequent voice input is intended for a digital assistant using system 800. For example, the techniques described above with respect to processing voice input using system 800 are equally applicable to processing subsequent voice input.

[0361] In some examples, the system 800 uses different components and / or techniques to process the first voice input and the subsequent voice input. As an example, the system 800 does not use the gaze module 822 to process the first voice input (e.g., does not determine the gaze score of the first voice input) and uses the gaze module 822 to process the subsequent voice input. Thus, the system 800 can only consider the gaze input to determine whether the subsequent voice is intended for the digital assistant.

[0362] As another example, different instances of the gaze module 822 (e.g., different instances of the corresponding neural network) respectively determine whether the first voice input and the subsequent voice are intended for a digital assistant. For example, the first instance of the neural network determines a first gaze score based on the gaze input and the first voice input. The second instance of the neural network determines a second gaze score based on the gaze input and the subsequent voice input. The first and second instances of the neural network are trained differently, for example, in order to more accurately determine whether the corresponding voice input is intended for a digital assistant. For example, because the user's gaze pattern when providing the initial voice input and when providing the subsequent voice input may be different, the corresponding instance of the neural network may be trained to account for such differences. As yet another example, different instances of the acoustic analysis module 812 (e.g., different instances of the corresponding neural network) respectively determine whether the first voice input is intended for a digital assistant and whether the subsequent voice is intended for a digital assistant. For example, the first instance of the neural network determines a first acoustic score based on an acoustic representation of the first voice input. The second instance of the neural network determines a second acoustic score based on an acoustic representation of the subsequent voice input. For example, because the acoustic characteristics of subsequent speech input intended for the digital assistant may be different from the acoustic characteristics of the initial speech input intended for the digital assistant, the corresponding instance of the neural network can be trained to account for such differences.

[0363] In some examples, the digital assistant initiates a second task based on the subsequent voice input. In some examples, the digital assistant initiates the second task based on determining that the subsequent voice input is intended for the digital assistant. In some examples, based on determining that the subsequent voice input is intended for the digital assistant, the digital assistant provides a second output indicating the initiated second task. For example, in Fig. 9C , device 900 initiates a task to retrieve weather information for Paris, France. Device 900 also displays a response affordance 908 indicating the weather information and / or audibly outputs the requested weather information. In some examples, based on determining that the subsequent voice input is not intended for the digital assistant, the digital assistant abandons providing the second output.

[0364] Steering Fig.9D, in some examples, the second output includes an audio output, and the digital assistant determines whether the second output indicates an error. For example, the digital assistant determines whether the second audio output corresponds to a response such as "I'm sorry, I don't know what you mean," "I can't do that," "I don't understand," or "I'm having trouble processing your request." In some examples, based on determining that the second output indicates an error, the digital assistant abandons providing the second output (e.g., abandons providing any audio output and / or abandons displaying the response affordance 908) and instead displays affordance 910 indicating an error. In some examples, the digital assistant provides the second output based on determining that the second output does not indicate an error. In this way, if the response to the subsequent voice input indicates an error, the digital assistant may (for example) reduce interference with the user experience by not providing an audio output (and / or not providing a text output) and by displaying a relatively visually non-intrusive affordance 910. For example, affordance 910 may be relatively small, may not include any text, and / or may have increased transparency compared to other affordances displayed by the digital assistant.

[0365] 6. The process for determining whether speech input is intended for a digital assistant

[0366] Fig.10 A process 1000 for determining whether a voice input is intended for a digital assistant according to various examples is shown. For example, process 1000 is performed using one or more electronic devices that implement a digital assistant. In some examples, process 1000 is performed using a client-server system (e.g., system 100), and the boxes of process 1000 are divided in any manner between a server (e.g., DA server 106) and a client device. In other examples, the boxes of process 1000 are divided between a server and multiple client devices (e.g., a mobile phone and a smart watch). Thus, although portions of process 1000 are described herein as being performed by a specific device of a client-server system, it should be understood that process 1000 is not limited thereto. In other examples, process 1000 is performed using only a client device (e.g., user device 104 or device 900) or only multiple client devices. In process 1000, some boxes are optionally combined, the order of some boxes is optionally changed, and some boxes are optionally omitted. In some examples, additional steps may be performed in conjunction with process 1000.

[0367] At block 1002, voice input representing a user utterance is received. In some examples, the voice input is continuous with a previous voice input received in the same digital assistant session as the voice input. In some examples, the digital assistant determines that the previous voice input was intended for the digital assistant based on detecting a verbal trigger for initiating the digital assistant session.

[0368] At box 1004, a first score corresponding to the type of user utterance (e.g., an utterance type score) is determined (e.g., by an utterance classifier 806) based on the textual representation of the speech input. In some examples, determining the first score includes: determining a respective probability that the user utterance corresponds to each user utterance type in a plurality of user utterance types; selecting a subset of the respective probabilities, wherein each probability in the subset of the respective probabilities corresponds to a respective predetermined user utterance type in the plurality of user utterance types; and determining the first score based on the subset of the respective probabilities. In some examples, the plurality of user utterance types include a first type of command; a second type of command; a first type of question; a second type of question; a first type of answer; a second type of answer; an opinion; and a statement. In some examples, the respective predetermined user utterance types include: a second type of command; and a first type of question.

[0369] At box 1006, a second score (e.g., a domain correspondence score) representing a correspondence between the user utterance and a domain recognized by a digital assistant operating on the electronic device is determined (e.g., by a domain correspondence detector 808) based on the textual representation of the speech input. In some examples, determining the second score includes determining whether the user utterance corresponds to a plurality of utterances recognized by the digital assistant. In some examples, determining the second score includes determining whether the user utterance corresponds to a vocabulary associated with the domain recognized by the digital assistant. In some examples, determining the second score includes determining the second score using a binary classification neural network.

[0370] In some examples, determining the first score and determining the second score are each performed based on determining that the digital assistant is not awaiting a response to a prompt generated by the digital assistant for further user input.

[0371] At block 1008, a third score (e.g., a context continuity score) representing context continuity between the user utterance and a previous user utterance determined to be intended for the digital assistant is determined (e.g., by a context continuity detector 810) based on the text representation of the speech input. In some examples, the user utterance is continuous with the previous user utterance. In some examples, determining the third score includes determining the third score based on the text representation of the previous user utterance. In some examples, determining the third score includes determining the third score using a second binary classification neural network.

[0372] At box 1010, determine (e.g., by score combiner 824) whether the voice input is intended for the digital assistant based on the first score and the second score. In some examples, determining whether the voice input is intended for the digital assistant is also based on the third score. In some examples, determining whether the voice input is intended for the digital assistant is performed without detecting a verbal trigger for initiating a digital assistant session. In some examples, determining whether the voice input is intended for the digital assistant is performed without detecting a selection of a displayed affordance (e.g., digital assistant affordance 904) and without detecting a selection of a button of the electronic device.

[0373] In some examples, determining whether the voice input is intended for the digital assistant includes: weighting the first score, the second score, and the third score to obtain a final score indicating whether the voice input is intended for the digital assistant; comparing the final score to a threshold; determining that the voice input is intended for the digital assistant based on determining that the final score exceeds the threshold; and determining that the voice input is not intended for the digital assistant based on determining that the first score is below the threshold.

[0374] At box 1012, based on determining that the voice input is not intended for a digital assistant: abandon initiating a task based on the voice input.

[0375] At box 1014, based on determining that the voice input is intended for a digital assistant: initiating a task based on the voice input through the digital assistant.

[0376] At block 1016, an output is provided that indicates the initiated task.

[0377] References Fig.10 The described operation is optionally Figures 1 to 4 , FIG. 6A to FIG. 6B , 7A to 7C and Figure 8 For example, the operations of process 1000 may be implemented by digital assistant module 726 and system 800. A person of ordinary skill in the art would clearly know how to implement the process 1000 based on the components depicted in FIG. Figures 1 to 4 , FIG. 6A to FIG. 6B and 7A to 7C The components depicted in the figure are used to implement other processes.

[0378] Fig.11A process 1100 for determining whether a subsequent voice input is intended for a digital assistant according to various examples is shown. For example, process 1100 is performed using one or more electronic devices that implement a digital assistant. In some examples, process 1100 is performed using a client-server system (e.g., system 100), and the boxes of process 1100 are divided in any manner between a server (e.g., DA server 106) and a client device. In other examples, the boxes of process 1100 are divided between a server and multiple client devices (e.g., a mobile phone and a smart watch). Therefore, although part of process 1100 is described herein as being performed by a specific device of a client-server system, it should be understood that process 1100 is not limited thereto. In other examples, process 1100 is performed using only a client device (e.g., user device 104 or device 900) or only multiple client devices. In process 1100, some boxes are optionally combined, the order of some boxes is optionally changed, and some boxes are optionally omitted. In some examples, additional steps may be performed in conjunction with process 1100.

[0379] At block 1102 , first speech input representing a first user utterance is received.

[0380] At box 1104, a first task based on a first voice input is initiated by a digital assistant operating on the electronic device.

[0381] At block 1106 , a first output is provided that indicates the initiated first task.

[0382] At block 1108, after providing the first output, a second voice input is received subsequent to the first voice input, the second voice input representing a second user utterance. In some examples, the first voice input and the second voice input are received within the same digital assistant session.

[0383] At box 1110, a first score (e.g., a domain correspondence score) representing a correspondence between the second user utterance and the domain recognized by the digital assistant is determined (e.g., by the domain correspondence detector 808) based on the text representation of the second speech input. In some examples, determining the first score includes determining whether the second user utterance corresponds to a plurality of utterances recognized by the digital assistant. In some examples, determining the first score includes determining whether the second user utterance corresponds to a vocabulary associated with the domain recognized by the digital assistant. In some examples, determining the first score includes determining the first score using a binary classification neural network.

[0384] At block 1112, a second score (e.g., a context continuity score) representing context continuity between the first user utterance and the second user utterance is determined (e.g., by the context continuity detector 810) based on the text representation of the second speech input. In some examples, determining the second score includes determining the second score based on the text representation of the first user utterance. In some examples, determining the second score includes determining the second score using a second binary classification neural network.

[0385] At box 1114, a third score (e.g., an utterance type score) corresponding to the type of the second user utterance is determined (e.g., by the utterance classifier 806) based on the textual representation of the second voice input. In some examples, determining the third score includes: determining a corresponding probability that the second user utterance corresponds to each user utterance type in a plurality of user utterance types; selecting a subset of the corresponding probabilities, wherein each probability in the subset of the corresponding probabilities corresponds to a corresponding predetermined user utterance type in the plurality of user utterance types; and determining the third score based on the subset of the corresponding probabilities. In some examples, the plurality of user utterance types include: a first type of command; a second type of command; a first type of question; a second type of question; a first type of answer; a second type of answer; an opinion; and a statement. In some examples, the corresponding predetermined user utterance types include a first type of command; and a first type of question.

[0386] At box 1116, it is determined (e.g., by score combiner 824) whether the second voice input is intended for the digital assistant based on the first score and the second score. In some examples, determining whether the second voice input is intended for the digital assistant is also based on the third score. In some examples, determining whether the second voice input is intended for the digital assistant includes: weighting the first score, the second score, and the third score to obtain a final score indicating whether the second voice input is intended for the digital assistant; comparing the final score to a threshold; based on determining that the final score exceeds the threshold, determining that the second voice input is intended for the digital assistant; and based on determining that the first score is below the threshold, determining that the second voice input is not intended for the digital assistant.

[0387] In some examples, based on detecting a verbal trigger for initiating a digital assistant session, determining that the first voice input is intended for the digital assistant, wherein: determining to initiate a first task is performed based on the first voice input being intended for the digital assistant; and determining whether the second voice input is intended for the digital assistant is performed without detecting the verbal trigger. In some examples, determining whether the second voice input is intended for the digital assistant is performed without detecting a selection of a displayed affordance and without detecting a selection of a button of the electronic device.

[0388] At box 1118, based on determining that the second voice input is not intended for the digital assistant: abandon initiating the second task based on the second voice input.

[0389] At box 1120, based on determining that the second voice input is intended for the digital assistant: initiating a second task based on the second voice input through the digital assistant.

[0390] At block 1122 , a second output is provided that indicates the initiated second task.

[0391] References Fig.11 The described operations are optionally performed by Figures 1 to 4 , FIG. 6A to FIG. 6B , 7A to 7C and Figure 8 For example, the operations of process 1100 may be implemented by digital assistant system 726 and by system 800. A person skilled in the art would clearly know how to implement the process 1100 based on the components depicted in FIG. Figures 1 to 4 , FIG. 6A to FIG. 6B and 7A to 7C The components depicted in the figure are used to implement other processes.

[0392] FIG. 12A to FIG. 12B A process 1200 for determining whether a voice input is intended for a digital assistant according to various examples is shown. For example, process 1200 is performed using one or more electronic devices that implement a digital assistant. In some examples, process 1200 is performed using a client-server system (e.g., system 100), and the boxes of process 1200 are divided in any manner between a server (e.g., DA server 106) and a client device. In other examples, the boxes of process 1200 are divided between a server and multiple client devices (e.g., a mobile phone and a smart watch). Therefore, although parts of process 1200 are described herein as being performed by a specific device of a client-server system, it should be understood that process 1200 is not limited thereto. In other examples, process 1200 is performed using only a client device (e.g., user device 104 or device 900) or only multiple client devices. In process 1200, some boxes are optionally combined, the order of some boxes is optionally changed, and some boxes are optionally omitted. In some examples, additional steps may be performed in conjunction with process 1200.

[0393] At box 1202, a verbal trigger for initiating a digital assistant session is detected (e.g., by verbal trigger detector 820).

[0394] At block 1204, speech input is received.

[0395] At block 1206, a first score (e.g., an acoustic score) is determined based on the acoustic representation of the speech input (e.g., by acoustic analysis module 812) indicating whether the speech input is intended for a digital assistant operating on the electronic device. In some examples, determining the first score includes determining the first score using a second neural network, wherein the second neural network is configured to: when receiving the speech input, determine a plurality of scores, each score indicating whether the speech input is intended for a digital assistant, the plurality of scores including the first score.

[0396] At block 1208, a second score (e.g., an ASR score) indicating whether the speech input is intended for a digital assistant is determined (e.g., by the ASR analysis module 814) based on the textual representation of the speech input. In some examples, the textual representation of the speech input includes an automatic speech recognition (ASR) word graph; and determining the second score includes determining the second score using a third neural network configured to accept the ASR word graph as input.

[0397] At block 1210 , a third score (eg, an utterance type score) corresponding to the type of user utterance represented by the speech input is determined (eg, by the utterance classifier 806 ) based on the second textual representation of the speech input.

[0398] At box 1212, a fourth score (e.g., a domain correspondence score) representing the correspondence between the user utterance and the domain recognized by the digital assistant is determined (e.g., by the domain correspondence detector 808) based on the second text representation.

[0399] At box 1214, a fifth score (e.g., a context continuity score) representing context continuity between the user utterance and a previous user utterance determined to be intended for the digital assistant is determined based on the second text representation (e.g., by the context continuity detector 810).

[0400] At block 1216 , a sixth score (eg, a speaker identification score) is determined (eg, by speaker identification module 816 ) based on performing speaker identification on the speech input.

[0401] At block 1218, gesture input is detected.

[0402] At block 1220 , a seventh score (eg, a gesture score) is determined (eg, by gesture identification module 818 ) based on the gesture input.

[0403] At box 1222, a task based on voice input is initiated through the digital assistant.

[0404] At block 1224, a task flow score corresponding to the initiated task is determined. In some examples, the task flow score is based on whether the digital assistant can determine the parameters of the task.

[0405] In some examples, determining a first score (e.g., block 1206), a second score (e.g., block 1208), a third score (e.g., block 1210), a fourth score (e.g., block 1212), a fifth score (e.g., block 1214), a sixth score (e.g., block 1216), a seventh score (e.g., block 1220), a task flow score (e.g., block 1224), or a combination or sub-combination thereof is performed based on detecting a verbal trigger (e.g., at block 1202).

[0406] At block 1226, it is determined (e.g., by score combiner 824) whether the speech input is intended for the digital assistant based on at least some of the following: the first score, the second score, the third score, the fourth score, the fifth score, the sixth score, the seventh score, and the task flow score. In some examples, determining whether the speech input is intended for the digital assistant includes determining at least some of the following: the first score, the second score, the third score, the fourth score, the fifth score, the sixth score, the seventh score, and the task flow score, such as at blocks 1206, 1208, 1210, 1212, 1214, 1216, 1220, and 1224, respectively. In some examples, determining whether the speech input is intended for the digital assistant includes using the first neural network and determining a final score indicating whether the speech input is intended for the digital assistant based on at least some of the following: the first score, the second score, the third score, the fourth score, the fifth score, the sixth score, the seventh score, and the task flow score.

[0407] In some examples, a determination is made as to whether the speech input is intended for execution by the digital assistant without detecting a selection of a displayed affordance and without detecting a selection of a button of the electronic device. In some examples, at least some of the following are each determined based on determining that the digital assistant is not waiting for a response to a prompt generated by the digital assistant for further user input: a first score, a second score, a third score, a fourth score, a fifth score, a sixth score, a seventh score, and a task flow score.

[0408] At box 1228, based on determining that the speech input is not intended for the digital assistant: forgo providing an output indicating the initiated task.

[0409] At box 1230, based on determining that the speech input is intended for a digital assistant, provide an output indicative of the initiated task.

[0410] The above article about FIG. 12A to FIG. 12B The described operations are optionally performed by Figures 1 to 4 , FIG. 6A to FIG. 6B , 7A to 7C and Figure 8For example, the operations of process 1200 may be implemented by digital assistant module 726 and system 800. A person of ordinary skill in the art would clearly know how to implement the process 1200 based on the components depicted in FIG. Figures 1 to 4 , FIG. 6A to FIG. 6B and 7A to 7C The components depicted in the figure are used to implement other processes.

[0411] FIG. 13A to FIG. 13B A process 1300 for determining whether a voice input is intended for a digital assistant according to various examples is shown. For example, process 1300 is performed using one or more electronic devices that implement a digital assistant. In some examples, process 1300 is performed using a client-server system (e.g., system 100), and the boxes of process 1300 are divided in any manner between a server (e.g., DA server 106) and a client device. In other examples, the boxes of process 1300 are divided between a server and multiple client devices (e.g., a mobile phone and a smart watch). Therefore, although part of process 1300 is described herein as being performed by a specific device of a client-server system, it should be understood that process 1300 is not limited thereto. In other examples, process 1300 is performed using only a client device (e.g., user device 104 or device 900) or only multiple client devices. In process 1300, some boxes are optionally combined, the order of some boxes is optionally changed, and some boxes are optionally omitted. In some examples, additional steps may be performed in conjunction with process 1300.

[0412] At block 1302, speech input is received.

[0413] At box 1304, a first data set is captured from a camera of the electronic device between a start time and an end time of the voice input. In some examples, the camera includes at least one of: an RGB camera; and an infrared (IR) camera. In some examples, the first data set is captured based on determining that the digital assistant is not waiting for a response to a prompt generated by the digital assistant for further user input. In some examples, the first data set is captured based on determining that the voice input follows a second voice input received within the same digital assistant session.

[0414] At block 1306 , capture of the first data set stops at an end time.

[0415] At block 1308 , a determination is made (eg, by gaze module 822 ) whether the first data set represents a user's face.

[0416] At block 1310, a second data set representing a user gaze pattern when providing a second input is determined (e.g., by gaze module 822) based on the first data set. In some examples, the second data set is determined based on determining that the first data set represents a face of the user. In some examples, when providing voice input, the user gaze pattern indicates a plurality of user gaze locations. In some examples, the user gaze pattern indicates a respective time corresponding to each of the plurality of user gaze locations.

[0417] At block 1312, a first score (e.g., a gaze score) is determined based on the voice input and the second data set (e.g., by gaze module 822) indicating whether the voice input is intended for a digital assistant operating on the electronic device. In some examples, the first score is determined without performing automatic speech recognition (ASR) on the voice input.

[0418] In some examples, determining the first score includes determining (e.g., via gaze module 822) a third data set representing correlations between features of the speech input and a plurality of user gaze locations, and determining the first score based on the third data set, as shown in block 1314. In some examples, determining the first score based on the third data set includes comparing the third data set to a predetermined data set representing predetermined correlations between features and a predetermined plurality of gaze locations, as shown in block 1316.

[0419] In some examples, determining the first score includes determining a fourth data set representing second features of the speech input based on the speech input (e.g., by gaze module 822), and determining the first score based on the fourth data set, as shown in box 1318.

[0420] In some examples, determining the first score includes determining the first score using a first neural network, where the first neural network is configured to accept the second data set and the speech input as respective inputs.

[0421] In some examples, determining the first score includes comparing the second data set to a second predetermined data set representing a predetermined gaze pattern (eg, using gaze module 822 ), as shown in block 1320 .

[0422] In some examples, determining the first score includes determining the first score based on determining (e.g., by gaze module 822) whether the user gaze pattern satisfies one or more criteria, as shown in box 1322. In some examples, determining that the user gaze pattern satisfies one or more criteria includes determining that the user gaze is directed within a predetermined portion of the display of the electronic device based on a second data set. In some examples, determining that the user gaze pattern satisfies one or more criteria includes at least one of the following: determining that the user gaze is directed within the predetermined portion during a first predetermined duration after the start time based on the second data set; and determining that the user gaze is directed within a second predetermined portion of the display during a second predetermined duration before the end time based on the second data set. In some examples, a predetermined portion of the display displays a digital assistant response enable representation (e.g., response enable representation 902 or 908), and a second predetermined portion of the display displays a digital assistant enable representation (e.g., digital assistant enable representation 904). In some examples, a predetermined portion of the display displays a digital assistant enable representation; and a second predetermined portion of the display displays a digital assistant response enable representation.

[0423] At box 1324, a task based on voice input is initiated by the digital assistant.

[0424] At block 1326, a determination is made (e.g., by score combiner 824) based on the first score whether the voice input is intended for a digital assistant. In some examples, determining whether the voice input is intended for a digital assistant is performed without detecting a selection of a displayed affordance and without detecting a selection of a button of the electronic device.

[0425] At box 1328, based on determining that the speech input is not intended for the digital assistant, forgo providing an output indicative of the initiated task.

[0426] At block 1330 , based on determining that the speech input is intended for a digital assistant, an output is provided indicative of the initiated task.

[0427] The above article about FIG. 13A to FIG. 13B The described operations are optionally performed by Figures 1 to 4 , FIG. 6A to FIG. 6B , 7A to 7C and Figure 8 For example, the operations of process 1300 may be implemented by digital assistant module 726 and system 800. A person of ordinary skill in the art would clearly know how to implement the process 1300 based on the components depicted in FIG. Figures 1 to 4 , FIG. 6A to FIG. 6B and 7A to 7C The components depicted in the figure are used to implement other processes.

[0428] FIG. 14A to FIG. 14CA process 1400 for determining whether a subsequent voice input is intended for a digital assistant according to various examples is shown. For example, process 1400 is performed using one or more electronic devices that implement a digital assistant. In some examples, process 1400 is performed using a client-server system (e.g., system 100), and the boxes of process 1400 are divided in any manner between a server (e.g., DA server 106) and a client device. In other examples, the boxes of process 1400 are divided between a server and multiple client devices (e.g., a mobile phone and a smart watch). Therefore, although part of process 1400 is described herein as being performed by a specific device of a client-server system, it should be understood that process 1400 is not limited thereto. In other examples, process 1400 is performed using only a client device (e.g., user device 104 or device 900) or only multiple client devices. In process 1400, some boxes are optionally combined, the order of some boxes is optionally changed, and some boxes are optionally omitted. In some examples, additional steps may be performed in conjunction with process 1400.

[0429] At block 1402, a first speech input is received.

[0430] At box 1404, it is determined (e.g., by system 800) that the first voice input is intended for the digital assistant. In some examples, based on detecting a verbal trigger for initiating a digital assistant session, it is determined that the first voice input is intended for the digital assistant. In some examples, determining that the first voice input is intended for the digital assistant includes: determining (e.g., by gaze module 822) a third score (e.g., a gaze score) indicating whether the first voice input is intended for the digital assistant based on the second user gaze input and the first voice input and using the first instance of the first neural network. In some examples, determining that the first voice input is intended for the digital assistant includes: determining (e.g., by acoustic analysis module 812) a fourth score (e.g., an acoustic score) indicating whether the first voice input is intended for the digital assistant based on an acoustic representation of the first voice input and using the first instance of the second neural network.

[0431] At box 1406, a first task based on the first voice input is initiated by a digital assistant operating on the electronic device.

[0432] At block 1408, a first output is provided indicating the initiated first task. In some examples, the first output is provided based on determining that the first speech input is intended for a digital assistant.

[0433] At block 1410, after providing the first output, a second voice input is received subsequent to the first voice input. In some examples, the first voice input and the second voice input are received within the same digital assistant session.

[0434] At box 1412, a first data set is captured from a camera of the electronic device between a start time and an end time of the second voice input.

[0435] At block 1414, a second data set representing a user gaze pattern when providing a second voice input is determined (e.g., by gaze module 822) based on the first data set. In some examples, the user gaze pattern indicates a plurality of user gaze locations when providing the second voice input. In some examples, the user gaze pattern indicates a respective time corresponding to each of the plurality of user gaze locations.

[0436] At block 1416, a first score (e.g., a gaze score) is determined based on the user gaze input and the second voice input to indicate whether the second voice input is intended for the digital assistant (e.g., a gaze score). In some examples, determining the first score includes determining the first score using a second instance of the first neural network. In some examples, determining the first score includes determining the first score based on the second data set, as shown in block 1418.

[0437] In some examples, determining the first score includes determining (e.g., by gaze module 822) a third data set representing correlations between features of the second voice input and a plurality of user gaze locations, and determining the first score based on the third data set, as shown in block 1420. In some examples, determining the first score based on the third data set includes comparing the third data set to a predetermined data set representing predetermined correlations between features and a predetermined plurality of gaze locations (e.g., by gaze module 822), as shown in block 1422.

[0438] In some examples, determining the first score includes comparing the second data set to a second predetermined data set representing a predetermined gaze pattern (eg, by gaze module 822 ), as shown in block 1424 .

[0439] In some examples, determining the first score includes determining the first score based on determining (e.g., by gaze module 822) whether the user gaze pattern satisfies one or more criteria, as shown in box 1426. In some examples, determining that the user gaze pattern satisfies one or more criteria includes determining that the user gaze is directed within a predetermined portion of the display of the electronic device based on a second data set. In some examples, determining that the user gaze pattern satisfies one or more criteria includes at least one of the following: determining that the user gaze is directed within the predetermined portion during a first predetermined duration after the start time based on the second data set; and determining that the user gaze is directed within a second predetermined portion of the display during a second predetermined duration before the end time based on the second data set. In some examples, a predetermined portion of the display displays a digital assistant response enable representation (e.g., response enable representation 902 or 908), and a second predetermined portion of the display displays a digital assistant enable representation (e.g., digital assistant enable representation 904). In some examples, a predetermined portion of the display displays a digital assistant enable representation, and a second predetermined portion of the display displays a digital assistant response enable representation.

[0440] At block 1428, a second score (e.g., an acoustic score) is determined based on the acoustic representation of the second voice input (e.g., by the acoustic analysis module 812) indicating whether the second voice input is intended for the digital assistant. In some examples, determining the second score includes determining the second score using a second instance of a second neural network.

[0441] At box 1430, a fifth score (e.g., an ASR score) indicating whether the second voice input is intended for a digital assistant is determined (e.g., by the ASR analysis module 814) based on the textual representation of the second voice input.

[0442] At box 1432, a sixth score (e.g., a context continuity score) representing context continuity between a first user utterance represented by the first voice input and a second user utterance represented by the second voice input is determined (e.g., by a context continuity detector 810) based on a second text representation of the second voice input.

[0443] At box 1434, a second task based on the second voice input is initiated.

[0444] At block 1436 , a task flow score corresponding to the initiated second task is determined.

[0445] At box 1438, determine (e.g., by score combiner 824) whether the second voice input is intended for the digital assistant based on at least some of the following: the first score, the second score, the fifth score, the sixth score, and the task flow score (e.g., boxes 1416, 1428, 1430, 1432, and 1436, respectively). In some examples, determining whether the second voice input is intended for the digital assistant includes determining at least some of the following: the first score, the second score, the fifth score, the sixth score, and the task flow score. In some examples, determining whether the second voice input is intended for the digital assistant also includes: using a third neural network, determining a final score indicating whether the second voice input is intended for the digital assistant based on at least some of the following: the first score, the second score, the fifth score, the sixth score, and the task flow score.

[0446] In some examples, determining whether the second voice input is intended for the digital assistant is performed without detecting a verbal trigger. In some examples, determining whether the second voice input is intended for the digital assistant is performed without detecting a selection of a displayed affordance and without detecting a selection of a button of the electronic device.

[0447] At box 1440, based on determining that the second voice input is not intended for the digital assistant, forgo providing a second output indicating the initiated second task.

[0448] At block 1442, based on determining that the second voice input is intended for the digital assistant, provide a second output indicative of the initiated second task. In some examples, the second output includes an audio output.

[0449] At block 1444, a determination is made as to whether the second output indicates an error.

[0450] At block 1446 , based on determining that the second output indicates an error, providing the second output is foregone.

[0451] At box 1448, based on determining that the second output indicates an error, an enable representation (e.g., enable representation 910) indicating the error is displayed, wherein the second output is provided based on determining that the second output does not indicate an error.

[0452] The above article about FIG. 14A to FIG. 14C The operation is optionally performed by Figures 1 to 4 , FIG. 6A to FIG. 6B , 7A to 7C and Figure 8 For example, the operations of process 1400 may be implemented by digital assistant module 726 and system 800. A person of ordinary skill in the art would clearly know how to implement the process 1400 based on the components described in Figures 1 to 4 , FIG. 6A to FIG. 6B and 7A to 7C The components depicted in the figure are used to implement other processes.

[0453] According to some specific implementations, a computer-readable storage medium (e.g., a non-transitory computer-readable storage medium) is provided, which stores one or more programs for execution by one or more processors of an electronic device, the one or more programs including instructions for performing any of the methods or processes described herein.

[0454] According to some implementations, an electronic device (eg, a portable electronic device) is provided that includes means for performing any of the methods or processes described herein.

[0455] According to some specific implementations, an electronic device (e.g., a portable electronic device) is provided, which includes a processing unit configured to perform any of the methods and processes described herein.

[0456] According to some specific implementations, an electronic device (e.g., a portable electronic device) is provided, which includes one or more processors and a memory storing one or more programs for execution by the one or more processors, the one or more programs including instructions for performing any of the methods or processes described herein.

[0457] For the purpose of explanation, the preceding description is described by reference to specific embodiments. However, the above exemplary discussion is not intended to be exhaustive or limit the invention to the disclosed precise form. According to the above teachings, many modifications and variations are possible. These embodiments are selected and described in order to best explain the principles of these technologies and their practical applications. Others skilled in the art can thus best utilize these technologies and various embodiments with various modifications suitable for the intended specific use.

[0458] Although the disclosure and examples have been fully described with reference to the accompanying drawings, it should be noted that various changes and modifications will become apparent to those skilled in the art. It should be understood that such changes and modifications are considered to be included within the scope of the disclosure and examples defined by the claims.

[0459] As described above, one aspect of the present technology is to collect and use data available from various sources to determine that voice input is intended for a digital assistant. The present disclosure contemplates that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to contact or locate a specific person. Such personal information data may include demographic data, location-based data, phone numbers, email addresses, Twitter IDs, home addresses, data or records related to the user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or any other identification or personal information.

[0460] The present disclosure recognizes that the use of such personal information data in the present technology can be used to benefit the user. For example, the personal information data can be used to determine whether the voice input is intended for a digital assistant. Therefore, the use of personal information data can help provide efficient and accurate user-digital assistant interactions. In addition, the present disclosure also anticipates other uses of personal information data that benefit the user. For example, health and fitness data can be used to provide insights into the user's overall health status, or can be used as positive feedback to individuals who use technology to pursue health goals.

[0461] The disclosure anticipates that entities responsible for the collection, analysis, disclosure, transmission, storage or other purposes of such personal information data will comply with sound privacy policies and / or privacy measures. Specifically, such entities should implement and adhere to the use of privacy policies and practices that are recognized as meeting or exceeding the industry or government requirements for maintaining the privacy and security of personal information data. Such policies should be easy for users to access and should be updated as changes in the collection and / or use of data occur. Personal information from users should be collected for legal and reasonable entity purposes and should not be shared or sold outside these legal purposes. In addition, such collection / sharing should be carried out after receiving the informed consent of the user. In addition, such entities should consider taking any necessary steps to protect and safeguard access to such personal information data, and ensure that other entities with access to personal information data comply with their privacy policies and procedures. In addition, such entities can subject themselves to third-party assessments to prove that they comply with widely accepted privacy policies and practices. In addition, policies and practices should be adapted to specific types of personal information data collected and / or accessed, and to applicable laws and standards including considerations of special jurisdictions. For example, in the United States, the collection or acquisition of certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly. Therefore, different privacy measures should be advocated for different types of personal data in each country.

[0462] Regardless of the foregoing, the present disclosure also contemplates implementation schemes in which users selectively block the use or access of personal information data. That is, the present disclosure contemplates hardware elements and / or software elements to prevent or block access to such personal information data. For example, in the case of collecting personal information data to determine whether voice input is intended for a digital assistant, the present technology may be configured to allow the user to choose to "opt in" or "opt out" to participate in the collection of personal information data at any time during or after registration for the service. In another example, the user may choose not to provide personal information data for determining whether voice input is intended for a digital assistant. For another example, the user may choose to limit the length of time that personal information data is retained. In addition to providing "opt-in" and "opt-out" options, the present disclosure also contemplates providing notifications related to access or use of personal information. For example, the user may be notified that the user's personal information data will be accessed when downloading an application, and then the user may be reminded again just before the personal information data is accessed by the application.

[0463] Furthermore, it is the intent of the present disclosure that personal information data should be managed and processed in a manner that minimizes the risk of unintentional or unauthorized access or use. Once the data is no longer needed, the risk can be minimized by limiting data collection and data deletion. In addition, and when applicable, including in certain health-related applications, data de-identification can be used to protect the privacy of users. Where appropriate, de-identification can be facilitated by removing specific identifiers (e.g., date of birth, etc.), controlling the amount or characteristics of stored data (e.g., collecting location data at a city level rather than an address level), controlling how data is stored (e.g., aggregating data across users), and / or other methods.

[0464] Thus, while the present disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, the present disclosure also contemplates that various embodiments may also be implemented without access to such personal information data. That is, the various embodiments of the present technology will not fail to function properly due to the lack of all or a portion of such personal information data. For example, a digital assistant may determine whether a voice input is intended for the digital assistant based on non-personal information data or an absolute minimum amount of personal information (such as content requested by a device associated with a user, other non-personal information suitable for the digital assistant, or publicly available information).

Claims

1. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs comprising instructions that, when executed by one or more processors of an electronic device, cause the electronic device to: receiving a first speech input representing a first user utterance; Initiate a first task based on the first voice input by a digital assistant operating on the electronic device; providing a first output indicative of the initiated first task; as well as After providing the first output: Receiving a second voice input subsequent to the first voice input, the second voice input representing a second user utterance; determining a first score based on the textual representation of the second voice input, the first score representing a correspondence between the second user utterance and a domain recognized by the digital assistant; determining a second score based on the textual representation of the second speech input, the second score representing contextual continuity between the first user utterance and the second user utterance; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; as well as Based on determining that the second voice input is intended for the digital assistant: Initiating, by the digital assistant, a second task based on the second voice input; and A second output is provided that indicates the initiated second task.

2. The non-transitory computer-readable storage medium of claim 1, wherein the one or more programs further comprise instructions that, when executed by the one or more processors, cause the electronic device to: Based on determining that the second voice input is not intended for the digital assistant: Abandon initiating the second task.

3. The non-transitory computer-readable storage medium of claim 1, wherein the first voice input and the second voice input are received within the same digital assistant session.

4. The non-transitory computer-readable storage medium of claim 1 , wherein the one or more programs further comprise instructions that, when executed by the one or more processors, cause the electronic device to: determining that the first voice input is intended for the digital assistant based on detecting a verbal trigger for initiating a digital assistant session, wherein: Initiating the first task is performed based on determining that the first voice input is intended for the digital assistant; and Determining whether the second voice input is intended for the digital assistant is performed without detecting the verbal trigger.

5. A non-transitory computer-readable storage medium according to claim 1, wherein determining whether the second voice input is intended for the digital assistant is performed without detecting selection of the displayed enable representation and without detecting selection of a button of the electronic device.

6. The non-transitory computer-readable storage medium of claim 1, wherein determining the first score comprises determining whether the second user utterance corresponds to a plurality of utterances recognized by the digital assistant.

7. The non-transitory computer-readable storage medium of claim 1, wherein determining the first score comprises determining whether the second user utterance corresponds to vocabulary associated with the domain recognized by the digital assistant.

8. The non-transitory computer-readable storage medium of claim 1, wherein determining the first score comprises determining the first score using a binary classification neural network. 9 . The non-transitory computer-readable storage medium of claim 1 , wherein determining the second score comprises determining the second score based on a textual representation of the first user utterance.

10. The non-transitory computer-readable storage medium of claim 1, wherein determining the second score comprises determining the second score using a second binary classification neural network.

11. The non-transitory computer-readable storage medium of claim 1 , wherein the one or more programs further comprise instructions that, when executed by the one or more processors, cause the electronic device to: A third score is determined based on the textual representation of the second voice input, the third score corresponding to the type of the second user utterance, wherein determining whether the second voice input is intended for the digital assistant is also based on the third score.

12. The non-transitory computer-readable storage medium of claim 11, wherein determining the third score comprises: determining a respective probability that the second user utterance corresponds to each user utterance type of a plurality of user utterance types; selecting a subset of the corresponding probabilities, wherein each probability in the subset of the corresponding probabilities corresponds to a corresponding predetermined user utterance type among the plurality of user utterance types; and The third score is determined based on the subset of the corresponding probabilities.

13. The non-transitory computer-readable storage medium of claim 12, wherein the plurality of user utterance types comprises: The first type of command: The second type of command; The first type of question; The second type of question; The first type of answer; The second type of response; Opinions; and statement.

14. The non-transitory computer-readable storage medium of claim 13, wherein the corresponding predetermined user utterance type comprises: the first type of command; and The first type of problem.

15. The non-transitory computer-readable storage medium of claim 11, wherein determining whether the second speech input is intended for the digital assistant comprises: weighting the first score, the second score, and the third score to obtain a final score indicating whether the second voice input is intended for the digital assistant; comparing the final score to a threshold; Based on determining that the final score is above the threshold: determining that the second voice input is intended for the digital assistant; and Based on determining that the final score is below the threshold: It is determined that the second voice input is not intended for the digital assistant.

16. An electronic device, comprising: one or more processors; Memory; and One or more programs, wherein 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 comprising instructions for: receiving a first speech input representing a first user utterance; Initiate a first task based on the first voice input by a digital assistant operating on the electronic device; providing a first output indicative of the initiated first task; as well as After providing the first output: Receiving a second voice input subsequent to the first voice input, the second voice input representing a second user utterance; determining a first score based on the textual representation of the second voice input, the first score representing a correspondence between the second user utterance and a domain recognized by the digital assistant; determining a second score based on the textual representation of the second speech input, the second score representing contextual continuity between the first user utterance and the second user utterance; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; as well as Based on determining that the second voice input is intended for the digital assistant: Initiating, by the digital assistant, a second task based on the second voice input; and A second output is provided that indicates the initiated second task.

17. A method comprising: At an electronic device having one or more processors and a memory: receiving a first speech input representing a first user utterance; Initiating, by a digital assistant operating on the electronic device, a first task based on the first voice input; providing a first output indicative of the initiated first task; as well as After providing the first output: Receiving a second voice input subsequent to the first voice input, the second voice input representing a second user utterance; determining a first score based on the textual representation of the second voice input, the first score representing a correspondence between the second user utterance and a domain recognized by the digital assistant; determining a second score based on the textual representation of the second speech input, the second score representing contextual continuity between the first user utterance and the second user utterance; determining whether the second voice input is intended for the digital assistant based on the first score and the second score; as well as Based on determining that the second voice input is intended for the digital assistant: Initiating, by the digital assistant, a second task based on the second voice input; as well as A second output is provided that indicates the initiated second task.

Citation Information

Patent Citations

  • System and method for inferring user intent from speech inputs

    US10176167B2

  • Low-latency intelligent automated assistant

    US10789945B2

  • Method and apparatus for integrating manual input

    US20020015024A1

  • Acceleration-based theft detection system for portable electronic devices

    US20050190059A1

  • Methods and apparatuses for operating a portable device based on an accelerometer

    US20060017692A1