LIFT TO SPEAK

By using movement and audio inputs to determine when to activate a virtual assistant, the method addresses the inefficiencies in power consumption and user interaction in existing digital assistants, enhancing both performance and battery life.

DE112019000018B4Active Publication Date: 2025-04-30APPLE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
DE112019000018
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2018-07-11
Filing Date
2019-03-21
Publication Date
2025-04-30
Estimated Expiration
2039-03-21

AI Technical Summary

Technical Problem

Existing digital assistants consume power inefficiently, particularly in handheld devices, due to the need for continuous operation and potential inadvertent activation.

Method used

A method that detects movement and audio inputs to determine whether to initiate a virtual assistant session, allowing for efficient activation and reducing unnecessary power consumption.

Benefits of technology

This approach enables efficient interaction with virtual assistants by reducing the need for spoken triggers and preventing inadvertent activation, thereby conserving battery life and improving user experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Procedure, comprehensive: on an electronic device with a microphone and a display: Capturing an input that represents a movement of the electronic device; Sampling an audio input with the microphone; Determine, based on the audio input and the input representing a movement of the electronic device, whether to initiate a virtual assistant session, including determining whether to initiate the virtual assistant session: Determine, at a first point in time, to initiate the virtual assistant session based on the audio input; Determine, at a second time, to initiate the virtual assistant session based on the input representing the movement of the electronic device; and final determination to initiate the virtual assistant session based on the fact that the first and second time points fall within a predetermined duration; and according to a final determination to initiate the virtual assistant session; and According to a provision not to initiate the virtual assistant session, refraining from initiating the virtual assistant session.
Need to check novelty before this filing date? Find Prior Art

Description

AREA

[0001] This generally refers to intelligent automated assistants and more specifically to initiating a voice-based service, such as an intelligent automated assistant. BACKGROUND

[0002] Intelligent automated assistants (or digital assistants) provide a useful interface between human users and electronic devices. Such assistants enable users to interact with devices or systems using natural language in spoken and / or textual forms. For example, a user may provide voice input with a user request to a digital assistant running on an electronic device. The digital assistant may interpret the user intent from the voice input and translate the user intent into tasks. The tasks may then be performed by executing one or more services of the electronic device, and the user may be returned a relevant output in response to the user request.

[0003] US 2016 / 0 260 431 A1 discloses a method in which an input representing a movement of the electronic device is detected in an electronic device. Furthermore, an audio input is sampled with a microphone of the device. A determination is then made, based on the audio input and the input representing a movement of the electronic device, whether a virtual assistant session should be initiated. Determining whether the virtual assistant session should be initiated includes determining whether the virtual assistant session should be initiated based on a movement model. Depending on the result, the session is initiated or not.

[0004] Further prior art is known from US 2015 / 0 348 548 A1.

[0005] Operating a digital assistant consumes power, which is a limited resource for handheld and portable devices powered by batteries, which frequently run these digital assistants. Accordingly, it is desirable to initiate and operate a digital assistant in an energy-efficient manner. SUMMARY

[0006] A method according to the invention is defined by the features of claim 1. Preferred embodiments and further developments of the invention are specified in the dependent claims. An electronic device according to the invention is defined by the features of claim 38. A storage medium according to the invention is defined by the features of claim 39.

[0007] Example methods are disclosed herein. An example method includes, for an electronic device having a microphone and a display, detecting an input representing movement of the electronic device and sampling an audio input with the microphone. The method further includes determining whether to initiate a virtual assistant session based on the audio input and the input representing movement of the electronic device. The method further includes, in accordance with a determination to initiate the virtual assistant session, initiating the virtual assistant session and, in accordance with a determination to not initiate the virtual assistant session, refraining from initiating the virtual assistant session.

[0008] Exemplary non-transitory computer-readable media are disclosed herein. An exemplary non-transitory computer-readable storage medium stores one or more programs.The one or more programs comprise instructions that, when executed by one or more processors of an electronic device having a microphone and a display, cause the electronic device to: detect an input representing movement of the electronic device, detect audio input with the microphone based on the audio input and the input representing movement of the electronic device, determine whether to initiate a virtual assistant session, initiate the virtual assistant session in accordance with the determination that the virtual assistant session should be initiated, and refrain from initiating the virtual assistant session in accordance with the determination that the virtual assistant session should not be initiated.

[0009] Exemplary electronic devices are disclosed herein.An example electronic device includes a microphone, a display, one or more processors, memory, and one or more programs, the one or more programs stored in memory and configured to be executed by one or more processors, the one or more programs including instructions to: detect an input representing movement of the electronic device, sense, with the microphone, an audio input, determine, based on the audio input and the input representing movement of the electronic device, whether to initiate a virtual assistant session according to a determination to initiate the virtual assistant session, initiate the virtual assistant session, and according to a determination to not initiate the virtual assistant session, refrain from initiating the virtual assistant session.

[0010] An exemplary electronic device includes means for: capturing inputs representing movement of the electronic device, sampling an audio input, determining, based on the audio input and the input representing movement of the electronic device, whether to initiate a virtual assistant session according to a determination to initiate the virtual assistant session, initiating the virtual assistant session, and according to a determination to not initiate the virtual assistant session, refraining from initiating the virtual assistant session.

[0011] Determining whether to initiate a virtual assistant session based on audio input and input representing movement of the electronic device (e.g., "motion input") provides a natural and efficient way to initiate and interact with a virtual assistant. For example, to initiate a virtual assistant and have the virtual assistant perform a task based on a spoken request, a user simply raises a device near their mouth and utters the request at approximately the same time (e.g., without the request including a spoken trigger such as "Hey Siri"). Interaction with virtual assistants enabled in this way enables efficient interaction with virtual assistants (e.g.,no spoken trigger is required before each interaction) and a quick response from the virtual assistant to spoken requests. Furthermore, the use of audio input and motion input to initiate a virtual assistant session prevents accidental activation of the virtual assistant based on either audio input or motion input alone. This reduces the likelihood of accidentally initiating a virtual assistant and saves battery power that would otherwise be consumed due to unwanted operation of a virtual assistant. In this way, the user device interface is made more efficient (e.g.,by reducing the number of audio inputs provided by the user, by reducing the response time of the virtual assistant, by preventing unintentional activation of the virtual assistant), which further reduces power consumption and improves the battery life of the device by allowing the user to use the device faster and more efficiently. BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram illustrating a system and environment for implementing a digital assistant according to various examples. Fig. 2A is a block diagram illustrating a portable multifunction device in which the client-side portion of a digital assistant is implemented according to various examples. Fig. Figure 2B is a block diagram illustrating example event handling components according to various examples. Fig. 3 illustrates a portable multifunction device in which the client-side portion of a digital assistant is implemented according to various examples. Fig. 4 is a block diagram of an example multifunction device having a screen and a touch-sensitive surface according to various examples. Fig. 5A illustrates an example user interface for an application menu on a portable multifunction device according to various examples. Fig. 5B illustrates an example user interface for a multifunction device having a touch-sensitive surface separate from the screen, according to various examples. Fig. 6A illustrates a personal electronic device according to various examples. Fig. 6B is a block diagram illustrating a personal electronic device according to various examples. Fig. 7A is a block diagram illustrating a digital assistance system or a server portion thereof according to various examples. Fig. Figure 7B illustrates the functions of the Fig. 7A according to various examples. Fig. Figure 7C illustrates a region of an ontology according to various examples. Fig. 8A-D illustrate example techniques for initiating a virtual assistant session at an electronic device based on audio input and input representing movement of the electronic device. Fig. 8E-F illustrate example techniques for deactivating a virtual assistant session. Fig. 9 illustrates a block diagram of a system configured to process audio inputs and motion inputs according to some examples. Fig. 10A-D illustrate a process for operating a digital assistant according to various examples. Fig. 11 illustrates a process for transmitting communication according to various examples. DETAILED DESCRIPTION

[0012] In the following description of examples, reference is made to the accompanying drawings, which show, for illustrative purposes, specific examples that may be implemented. 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.

[0013] As discussed, the present disclosure relates to techniques for initiating a virtual assistant session based on audio input and motion input. For example, to initiate a virtual assistant session on a wrist-wearable device (e.g., a smart watch), a user wearing the device raises the device near the user's mouth and provides audio input (e.g., "What's the weather like in Palo Alto?") when (or just before or after) the device is raised near the user's mouth. In some examples, the audio input does not include a spoken trigger (e.g., "Hey Siri") to initiate a virtual assistant. A virtual assistant session is initiated on the device based on the detected motion input and the sampled audio input, and the initiated virtual assistant session responds to the audio input (e.g.,by providing the response "It's 70 degrees Fahrenheit and sunny"). Accordingly, an intuitive and efficient way of initiating and interacting with virtual assistant sessions is provided.

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

[0015] The terminology used in the description of the various examples described herein is for the purpose of describing particular examples only and is not intended to be limiting. As used in the description of the various examples described and the appended claims, the singular forms "a," "an," "an," and "the" are intended to include the plural forms as well, unless the context expressly indicates otherwise. It is also understood that the term "and / or," as used herein, refers to and includes any and all combinations of one or more of the related listed terms.It is further understood that the terms "include," "including," "comprises," and / or "comprising," when used in this specification, indicate the presence of listed features, integers, steps, acts, elements, and / or components, but do not preclude the presence or addition of one or more features, integers, steps, acts, elements, components, and / or groups thereof.

[0016] The term "when" may be interpreted to mean "during" or "at" or "in response to determining" or "in response to detecting," depending on the context. Similarly, the phrase "when it is determined" or "when [a listed condition or event] is detected" may be interpreted to mean "upon determining" or "in response to determining" or "upon detecting [the listed condition or event]" or "in response to detecting [the listed condition or event]," depending on the context. 1. System and environment

[0017] Fig. 1 illustrates a block diagram of a system 100 according to various examples. In some examples, 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 spoken and / or text form to infer user intent and performs actions based on the inferred user intent.For example, to respond to an inferred user intent, the system performs one or more of the following steps: identifying a task flow with steps and parameters designed to satisfy the inferred user intent; inputting specific requirements from the inferred user intent into the task flow; executing the task flow by invoking programs, methods, services, APIs, or the like; and generating output responses to the user in an audible (e.g., speech) and / or visual form.

[0018] In particular, a digital assistant is capable of accepting a user request, at least in part, in the form of a command, request, statement, narrative, and / or natural language request. Typically, the user request seeks either an informational response or performance of a task from the digital assistant. A satisfactory response to the user request includes providing the requested informational response, performing the requested task, or a combination of the two. For example, a user asks the digital assistant a question such as, "Where am I right now?" Based on the user's current location, the digital assistant responds, "You are in Central Park near the West Gate." The user also requests the performance of a task by saying, for example, "Please invite my friends to my girlfriend's birthday party next week."In response, the digital assistant can acknowledge the request and say, "Yes, I'll do it right away." It can then send a corresponding calendar invitation on behalf of the user to all of the user's friends listed in the user's electronic address book. While performing a requested task, the digital assistant will occasionally interact with the user in a continuous dialogue that involves multiple exchanges of information over an extended period of time. There are numerous other ways of interacting with a digital assistant to request information or the performance of various tasks. In addition to providing verbal responses and performing programmed actions, the digital assistant will also provide responses in other visual or audible forms, such as text, alerts, music, videos, animations, etc.

[0019] As in Fig. 1, in some examples, a digital assistant is implemented according to a client-server model. The digital assistant includes a client-side portion 102 (hereinafter "DA client 102") executing on user device 104 and a server-side portion 106 (hereinafter "DA server 106") executing on a server system 108. DA client 102 communicates with DA server 106 through one or more networks 110. DA client 102 provides client-side functionality, such as user-facing input and output processing and communication with DA server 106. DA server 106 provides server-side functionality to any number of DA clients 102, each residing on a respective user device 104.

[0020] In some examples, DA server 106 includes a client-side I / O interface 112, one or more processing modules 114, data and models 116, and an external service I / O interface 118. Client-side I / O interface 112 facilitates client-side input and output processing for DA server 106. One or more processing modules 114 use data and models 116 to process speech input and determine user intent based on the natural language input. Further, one or more processing modules 114 perform tasks based on the inferred user intent. In some examples, DA server 106 communicates with external services 120 over network(s) 110 to perform tasks or obtain information. External service I / O interface 118 facilitates such communications.

[0021] User device 104 may be any suitable electronic device. In some examples, user device 104 is a portable multifunction device (e.g., device 200, hereinafter referred to as Fig. 2A), a multi-function device (e.g., device 400, hereinafter referred to as Fig. 4) or a personal electronic device (e.g., device 600, hereinafter referred to as Fig. 6A-B). A portable multifunction device is, for example, a mobile phone that also includes other functions such as PDA and / or music playback functions. Specific examples of portable multifunction devices include the Apple Watch®, iPhone®, iPod Touch®, and iPad® devices from Apple Inc., Cupertino, California. Other examples of portable multifunction devices include, without limitation, earbuds / headphones, speakers, and laptop or tablet computers. Furthermore, 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 TV set-top box. In some examples, user device 104 includes a touch-sensitive surface (e.g., a touchscreen and / or a touchpad).Additionally, user device 104 optionally includes one or more 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.

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

[0023] The server system 108 is implemented on one or more standalone computing devices or a distributed network of computers. In some examples, the server system 108 also employs various virtual devices and / or third-party service providers (e.g., third-party cloud service providers) to provide the underlying computing resources and / or infrastructure resources of the server system 108.

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

[0025] In some examples, user device 104 is configured to communicate abbreviated requests for data to second user device 122 to reduce the amount of data transmitted by user device 104. Second user device 122 is configured to determine supplemental information to add to the abbreviated request and generate a complete request for transmission to DA server 106. This system architecture may provide the advantage that user device 104 with limited communication capabilities and / or limited battery power (e.g., a watch or similar compact electronic device) may access services provided by DA server 106 using second user device 122 that has greater communication capabilities and / or battery power (e.g.,a mobile phone, a laptop computer, a tablet computer, or the like) as a proxy for the DA server 106. Even if in . Fig. 1 only two user devices 104 and 122 are illustrated, it should be understood that in some examples, the system 100 includes any number and type of user devices configured in this proxy configuration to communicate with the DA server system 106.

[0026] Although the Fig. While the digital assistant illustrated in Figure 1 includes both a client-side portion (e.g., DA client 102) and a server-side portion (e.g., DA server 106), in some embodiments, the functions of a digital assistant are implemented as a standalone application installed on a user device. Additionally, the divisions of functionality between the client and server portions of the digital assistant may vary in different implementations. For example, in some examples, the DA client is a thin client that provides only user-side input and output processing functions and delegates all other functionality of the digital assistant to a backend server. 2. Electronic devices

[0027] Attention now turns to embodiments for electronic devices for implementing the client-side portion of a digital assistant. Fig. 2A shows a block diagram illustrating a portable multifunction device 200 with a touch-sensitive display system 212 according to some embodiments. The touch-sensitive display 212 is sometimes called a "touchscreen" for convenience and is sometimes known or referred to as a "touch-sensitive display system." The device 200 includes a memory 202 (optionally including one or more computer-readable data storage media), a memory controller 222, one or more processing units (CPUs) 220, a peripheral device interface 218, an RF circuit 208, an audio circuit 210, a speaker 211, a microphone 213, an input / output (I / O) subsystem 206, other input controllers 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 intensity sensors 265 for detecting an intensity of contacts on the device 200 (e.g., a touch-sensitive surface, such as the touch-sensitive display system 212 of the device 200). The device 200 optionally includes one or more tactile output generators 267 for generating tactile outputs on the device 200 (e.g., generating tactile outputs on a touch-sensitive surface, such as the touch-sensitive screen system 212 of the device 200 or touchpad 455 of the device 400). These components optionally communicate via one or more communication buses or signal lines 203. As used in the 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 (proxy) for 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 specific values ​​and more typically hundreds of specific values ​​(e.g., at least 256). The intensity of a contact is optionally detected (or measured) using different approaches and different 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 force at different points on the touch-sensitive surface. In some implementations, force measurements from multiple force sensors are combined (e.g., a weighted average) to determine an estimated force of a contact.Similarly, the pressure-sensitive tip of a stylus is optionally used to detect pressure of the stylus on the touch-sensitive surface. Alternatively, the size of the contact area detected on the touch-sensitive surface and / or changes therein, the capacitance of the touch-sensitive surface near the contact and / or changes therein, and / or the resistance of the touch-sensitive surface near the contact and / or changes therein are optionally used as a surrogate for the force or pressure of the contact on the touch-sensitive surface. In some implementations, the surrogate measurements for contact force or pressure are used directly to determine whether an intensity threshold has been exceeded (e.g., the intensity threshold is described in units corresponding to the surrogate measurements).In some implementations, the surrogate measurements for a contact force or pressure are converted into an estimated force or pressure, and the estimated force or pressure is used to determine whether an intensity threshold has been exceeded (e.g., the intensity threshold is a pressure threshold measured in units of pressure). Using the intensity of a contact as a property of a user input allows user access to additional device functionality that would otherwise be required by the user on a reduced-size device with limited footprint for displaying affordances (e.g., on a touch-sensitive display) and / or receiving user input (e.g.,not accessible via a touch-sensitive display, a touch-sensitive surface, or a physical / mechanical control such as a knob, button, or key).

[0028] As used in the description and claims, the term "tactile output" or "tactile output" refers to a physical displacement of a device with respect to a previous position of the device, a physical displacement of a component (e.g., a touch-sensitive surface) of a device with respect to another component (e.g., the housing) of the device, or the displacement of the component with respect to a center of mass of the device as detected by a user using their sense of touch. For example, in situations where the device or component of the device comes into contact with a surface of a user that is touch-sensitive (e.g.,a finger, palm, or other portion of a user's hand), the tactile output produced by the physical translation is interpreted by the user as a tactile sensation that corresponds to a perceived change in physical properties of the device or component of the device. For example, the movement of a touch-sensitive surface (e.g., a touch-sensitive screen or trackpad) is selectively interpreted by the user as a "down click" or an "up click" of a physical actuation button. In some cases, a user feels a tactile sensation such as a "down click" or an "up click" even if no movement of a physical actuation button is associated with the touch-sensitive surface that is physically depressed (e.g., translated) by the user's movements.As another example, the movement of the touch-sensitive surface is optionally interpreted or perceived by the user as a "roughness" of the touch-sensitive surface, even if the smoothness of the touch-sensitive surface does not change. While such user interpretations of touch depend on the sensory perceptions of each user, there are many sensory perceptions of touch that are common to a large majority of users. Therefore, when a tactile output is described as corresponding to a particular user sensory perception (e.g., an "up-click," a "down-click," "roughness"), unless otherwise noted, the tactile output produced corresponds to the physical displacement of the device or a component thereof that produces the described sensory perception for a typical (or average) user.

[0029] It should be understood that the device 200 is only one example of a portable multifunctional device, and that the device 200 may optionally have more or fewer components than shown, may optionally combine two or more components, or may optionally have a different configuration or arrangement of the components. The various Fig. The components shown in Figure 2A are implemented in hardware, software, or a combination of both hardware and software, including one or more signal processing circuits and / or application-specific integrated circuits.

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

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

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

[0033] RF (radio frequency) circuitry 208 receives and transmits RF signals, also referred to as electromagnetic signals. RF circuitry 208 converts electrical signals into electromagnetic signals or electromagnetic signals into electrical signals, and communicates with communication networks and other communication devices using the electromagnetic signals. RF circuitry 208 optionally includes known circuitry for performing these functions, including, but not limited to, an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a codec chipset, a Subscriber Identity Module (SIM) card, memory, and so forth.RF circuitry 208 optionally communicates via wireless communication with networks such as the Internet, also referred to as the World Wide Web (WWW), an intranet, and / or a wireless network such as a cellular network, a wireless local area network (LAN), and / or a metropolitan area network (MAN), and other devices. RF circuitry 208 optionally includes well-known circuitry for detecting near-field communication (NFC) fields, such as through a short-range communication radio.Wireless communication optionally uses any of several communication standards, communication protocols and technologies, in particular 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, a protocol for email (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 Leveraging Extensions (SIMPLE), Instant Messaging and Presence Service (IMPS) and / or Short Message Service (SMS), or any other suitable communications protocol, including communications protocols not yet developed at the time of filing this document.

[0034] Audio circuitry 210, speaker 211, and microphone 213 provide an audio interface between a user and device 200. Audio circuitry 210 receives audio data from peripheral interface 218, converts the audio data into an electrical signal, and transmits the electrical signals to speaker 211. Speaker 211 converts the electrical signal into human-audible sound waves. Audio circuitry 210 also receives electrical signals converted from sound waves by microphone 213. Audio circuitry 210 converts the electrical signals into audio data and transmits the audio data to peripheral interface 218 for processing. Audio data is retrieved and / or transmitted by peripheral interface 218 from memory 202 and / or RF circuitry 208. In some embodiments, audio circuitry 210 also includes a headphone jack (e.g., 312, Fig. 3). The headphone jack provides an interface between the audio circuitry 210 and non-permanent input / output peripherals, such as output-only headphones or headphones with both output (e.g., a headphone for one or both ears) and input (e.g., a microphone).

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

[0036] A quick press of the push button unlocks the touchscreen 212 or begins a process using touchscreen gestures to unlock the device, which is described in U.S. Patent Application No. 11 / 322,549, "Unlocking a Device by Performing Gestures on an Unlock Image," U.S. Pat. No. 7,657,849, filed December 23, 2005, which is incorporated herein by reference in its entirety. A longer press of the push button (e.g., 306) turns the power to the device 200 on or off. The user is able to customize a functionality of one or more of the buttons. The touchscreen 212 is used to implement virtual keys or soft keys or soft buttons and one or more soft keyboards.

[0037] The touch-sensitive screen 212 provides an input interface and an output interface between the device and a user. The display controller 256 receives and / or sends electrical signals from / to the touchscreen 212. The touchscreen 212 displays a visual output to the user. The visual outputs include graphics, text, icons, video, and any combination thereof (collectively, "graphics"). In some embodiments, some or all of the visual outputs correspond to user interface objects.

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

[0039] The touchscreen 212 uses LCD (liquid crystal display), LPD (light-emitting polymer display), or LED (light-emitting diode) technology, although other display technologies may be used in other embodiments. The touchscreen 212 and display controller 256 detect contact and any movement or loss of contact using a variety of touch-sensing technologies now known or yet to be developed, including, but not limited to, capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for detecting one or more points of contact on the touchscreen 212. In one exemplary embodiment, mutual projected capacitive sensing technology is used, such as that found in the iPhone® and iPod Touch® from Apple Inc. of Cupertino, California.

[0040] A touch-sensitive display in some embodiments of touchscreen 212 is analogous to touch-sensitive multi-touchpads described in the following 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, each of which is hereby incorporated by reference in its entirety. However, touchscreen 212 displays visual output from device 200, whereas touch-sensitive touchpads do not provide visual output.

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

[0042] For example, the touchscreen 212 has a video resolution of greater than 100 dpi. In some embodiments, the touchscreen has a video resolution of approximately 160 dpi. The user may make contact with the touchscreen 212 using any suitable object or appendage, such as a stylus, a finger, and the like. In some embodiments, the user interface is configured to operate primarily with finger-based contacts and hand gestures, which may be less accurate than stylus input due to the larger contact area of ​​a finger on the touchscreen. In some embodiments, the device translates the crude finger-based input into a precise mouse pointer / cursor position or into a command to perform the user-desired actions.

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

[0044] Device 200 also includes power system 262 to supply power to the various components. Power system 262 includes a power management system, one or more power sources (e.g., battery, alternating current (AC)), a charging system, a power failure detection circuit, a power converter or inverter, a power status indicator (e.g., a light-emitting diode (LED)), and any other components related to power generation, power management, and power distribution in portable devices.

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

[0046] The device 200 optionally also includes one or more contact intensity sensors 265. Fig. 2A shows a contact intensity sensor coupled to the intensity sensor controller 259 in the I / O subsystem 206. The contact intensity 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 intensity sensors (e.g., sensors used to measure the force (or pressure) of a contact on a touch-sensitive surface). The contact intensity sensor 265 receives contact intensity information (e.g., pressure information or a surrogate for pressure information) from the environment. In some embodiments, at least one contact intensity sensor is disposed along with or adjacent to a touch-sensitive surface (e.g., the touch-sensitive display system 212).In some embodiments, at least one contact intensity sensor is located on the back of the device 200 opposite the touchscreen display 212 located on the front of the device 200.

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

[0048] The device 200 optionally also includes one or more tactile output generators 267. Fig. 2A shows a tactile output generator coupled to the haptic feedback controller 261 in the I / O subsystem 206. The tactile output generator 267 optionally includes one or more electroacoustic devices, such as speakers or other audio components, and / or electromechanical devices that convert energy into linear motion, such as a motor, an electromagnet, an electroactive polymer, a piezoelectric actuator, an electrostatic actuator, or other tactile output generating component (e.g., a component that converts electrical signals on the device into tactile outputs). The contact intensity sensor 265 receives instructions from the haptic feedback module 233 to generate tactile feedback and generates tactile outputs on the device 200 that can be perceived by a user of the device 200.In some embodiments, at least one tactile output generator is disposed along with or adjacent to a touch-sensitive surface (e.g., touch-sensitive screen system 212) and selectively generates a tactile output by moving the touch-sensitive surface vertically (e.g., into or out of a surface of device 200) or laterally (e.g., forward and backward in the same plane as a surface of device 200). In some embodiments, at least one tactile output generator is located on the back of device 200, opposite the touchscreen display 212, which is located on the front of device 200.

[0049] The device 200 also includes one or more accelerometers 268. Fig. 2A shows an accelerometer 268 coupled to the peripheral device interface 218. Alternatively, the accelerometer 268 is coupled to an input controller 260 in the I / O subsystem 206. The accelerometer 268 operates, for example, as described in 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 on the touchscreen display in portrait or landscape orientation based on an analysis of data received from the one or more accelerometers.The device 200 optionally includes, in addition to the accelerometer(s) 268, a magnetometer (not shown) and a GPS receiver (or a Global Navigation Satellite System receiver or a receiver for another global navigation system) for obtaining information regarding the position and orientation (e.g., portrait or landscape) of the device 200.

[0050] In some embodiments, the software components stored in memory 202 include the operating system 226, the communication module (or an instruction set) 228, the contact / motion module (or an instruction set) 230, the graphics module (or an instruction set) 232, the text input module (or an instruction set) 234, the GPS (Global Positioning System) module (or an instruction set) 235, a digital assistant client module 229, and applications (or an instruction set) 236. Furthermore, memory 202 stores data and models, such as user data and models 231. Furthermore, in some embodiments, memory 202 ( Fig. 2A) or Fig. 470 ( Fig. 4) a device-related / global internal state 257 is stored, as in Fig. 2A and Fig. 4. The device-related / global internal state 257 includes one or more of: the active application state, which indicates whether and which applications are currently active; the display state, which indicates which applications, views, or other information occupy various areas of the touchscreen display 212; the sensor state, including information obtained from the various sensors and input control devices 216; and position information, which relates to the location and / or attitude of the device.

[0051] 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 common system tasks (e.g., memory management, data storage device control, power management, etc.) and enables communication between various hardware and software components.

[0052] The communications module 228 enables communication with other devices via one or more external ports 224 and also includes various software components for processing data received from the RF circuitry 208 and / or the external port 224. The external port 224 (e.g., Universal Serial Bus (USB), FIREWIRE, etc.) is configured to couple directly to other devices or indirectly via a network (e.g., the Internet, Wi-Fi, etc.). In some embodiments, the external port is a multi-pin connector (e.g., 30 pins) that is the same as, similar to, or compatible with the 30-pin connector used on iPod® devices (iPod® is a trademark of Apple Inc.).

[0053] The contact / motion module 230 selectively detects contact with the touchscreen 212 (in conjunction with the display controller 256) and other touch-sensitive devices (e.g., a touchpad or a physical click wheel). The contact / motion module 230 includes various software components for performing various operations related to detecting contact, such as determining whether there has been contact (e.g., detecting a finger touchdown or press in progress), determining an intensity of the contact (e.g., the force or pressure of the contact, or a surrogate for the force or pressure of the contact), determining whether there is movement of the contact and tracking the movement across the touch-sensitive surface (e.g., detecting a finger drag in progress), and determining whether contact has ceased (e.g.,Detecting an ongoing finger lift or a break in contact. The contact / motion module 230 receives contact data from the touch-sensitive surface. Detecting movement of the contact point, represented by a series of contact data, optionally includes detecting the rapidity (magnitude), velocity (magnitude and direction), and / or acceleration (a change in magnitude and / or direction) of the contact point. These operations are optionally applied to individual contacts (e.g., single-finger contacts) or to multiple simultaneous contacts (e.g., "multi-touch" / multi-finger contacts). In some embodiments, the contact / motion module 230 and the display controller 256 detect contact on a touchpad.

[0054] 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 is set according to software parameters (e.g., the intensity thresholds are not set by the activation thresholds of specific physical actuators and can be adjusted without altering the physical hardware of the device 200). For example, a mouse "click" threshold of a trackpad or touchscreen display can be set to any of a wide range of predefined thresholds without altering the trackpad or touchscreen display hardware.Additionally, in some implementations, a user of the device is provided with software settings for adjusting one or more of the set of intensity thresholds (e.g., by adjusting individual intensity thresholds and / or by adjusting a plurality of intensity thresholds at once with a system-level click “intensity” parameter).

[0055] The contact / motion module 230 selectively detects input from a user's gesture. Different gestures on the touch-sensitive surface have different contact patterns (e.g., different motions, times, and / or intensities of detected contacts). Thus, a gesture is selectively detected by detecting a particular contact pattern. For example, detecting a finger tap gesture includes detecting a finger-down event followed by detecting a finger-up or lift event at the same position (or substantially the same position) as the finger-down event (e.g., at the position of an icon).As another example, detecting a finger swipe gesture on the touch-sensitive surface includes detecting a finger-down event followed by one or more finger-drag events and subsequently followed by detecting a finger-up (or lift) event.

[0056] The graphics module 232 includes various known software components for rendering and displaying graphics on the touchscreen 212 or another display, including components for changing the visual impact (e.g., brightness, transparency, saturation, contrast, or other visual property) of graphics being displayed. 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 softkeys), digital images, videos, animations, and the like.

[0057] In some embodiments, graphics module 232 stores data representing graphics to be used. Each graphic is optionally assigned a corresponding code. Graphics module 232 receives one or more codes from applications, etc., specifying graphics to be displayed, along with coordinate data and other graphical property data, if necessary, and then generates screen image data for output to display controller 256.

[0058] The haptic feedback module 233 includes various software components for generating instructions used by the tactile output generator(s) 267 to generate tactile outputs at one or more locations on the device 200 in response to user interactions with the device 200.

[0059] The text input module 234, which in some examples is a component of the graphics module 232, provides on-screen keyboards for entering text in various applications (e.g., Contacts 237, Email 240, Instant Messaging 241, Browser 247, and any other application that requires text input).

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

[0061] The digital assistant client module 229 includes various client-side instructions for the digital assistant to provide the client-side functionalities of the digital assistant. For example, the digital assistant client module 229 is capable of accepting voice input, text input, touch input, and / or gesture input via various user interfaces (e.g., microphone 213, accelerometer 268, touch-sensitive display system 212, optical sensors 229, other input control devices 216, etc.) of the portable multifunction device 200. The digital assistant client module 229 is also capable of providing output in audio (e.g., voice output), visual, and / or tactile forms via various output interfaces of the portable multifunction device 200 (e.g., speaker 211, touch-sensitive display system 212, tactile output generator 267, etc.).For example, the output is provided as voice, sound, alerts, text messages, menus, graphics, videos, animations, vibrations, and / or combinations of two or more of the foregoing. During operation, the digital assistant client module 229 communicates with the DA server 106 via the RF circuitry 208.

[0062] User data and models 231 include various data associated with the user (e.g., user-specific vocabulary data, user preference data, user-specific name pronunciations, data from the user's electronic address book, to-do lists, shopping lists, etc.) to provide the client-side functionalities of the digital assistant. Furthermore, user data and models 231 include various models (e.g., speech recognition models, statistical language models, natural language processing models, ontologies, task flow models, service models, etc.) for processing user input and determining user intent.

[0063] In some examples, the digital assistant client module 229 utilizes the various sensors, subsystems, and peripherals of the portable multifunction device 200 to gather additional information from the environment of the portable multifunction device 200 and create a context related to a user, a 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, with the user input to the digital assistant's DA server 106 to assist in inferring the user's intent. In some examples, the digital assistant also uses the context information to determine how to create and transmit output to the user. Context information is also referred to as context data.

[0064] In some examples, the context information that may be provided with the user input includes sensor information, e.g., related to lighting, ambient noise, ambient temperature, or images or videos of the environment. In some examples, the context information may also include the physical state of the device, e.g., device orientation, device location, device temperature, power level, speed, acceleration, movement patterns, or cellular phone signal strength, etc. In some examples, information related to the software status of the DA server 106, e.g., related to running processes, installed programs, past and current network activity, background services, error logs, or resource utilization of the portable multifunction device 200, is also provided as context information to the DA server 106 associated with a user input.

[0065] In some examples, the digital assistant client module 229 selectively provides information (e.g., user data 231) stored on the portable multifunction device 200 in response to requests from the DA server 106. In some examples, the digital assistant client module 229 also retrieves additional input from a user via natural language dialogue or other user interfaces upon request by the DA server 106. The digital assistant client module 229 forwards the additional input to the DA server 106 to assist the DA server 106 in inferring the user's intent and / or fulfilling the user's intent expressed in the user request.

[0066] A more detailed description of the digital assistant is provided below with reference to Fig. 7A-C. It should be understood that the digital assistant client module 229 may include any number of submodules of the digital assistant module 726 described below.

[0067] The applications 236 include the following modules (or sets of instructions) or a subset or a superset thereof: • Contacts module 237 (sometimes called address book or contact list); • Telephone module 238; • Video conferencing module 239; • Email client module 240; • Instant Messaging or IM module 241; • Training support module 242; • Camera module 243 for still images and / or video images; • Image management module 244; • Video playback module; • Music playback module; • Browser module 247; • Calendar module 248; • Widget modules 249, which in some examples include one or more of the following: weather widget 249-1, stock widget 249-2, calculator widget 249-3, alarm clock widget 249-4, dictionary widget 249-5, and other user-purchased and user-created widgets 249-6; • Widget creation module 250 for generating the user-created widgets 249-6; • Search module 251; • Video and music playback module 252, which combines the video playback module and the music playback module; • Notes module 253; • Card module 254; and / or • Online video module 255.

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

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

[0070] In conjunction with RF circuitry 208, audio circuitry 210, speaker 211, microphone 213, touchscreen 212, display controller 256, contact / motion module 230, graphics module 232, and text input module 234, phone module 238 is used to enter a sequence of characters corresponding to a telephone number, access one or more telephone numbers in contacts module 237, modify a telephone number that has been entered, dial a corresponding telephone number, initiate a call, and disconnect or hang up when the call is complete. As mentioned above, wireless communication uses any of a variety of communication standards, protocols, and technologies.

[0071] In conjunction with the RF circuitry 208, the audio circuitry 210, the speaker 211, the microphone 213, the touchscreen 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 contacts module 237, and the telephone module 238, the video conferencing module 239 includes executable instructions to start, conduct, and terminate a video conference between a user and one or more other participants according to user instructions.

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

[0073] In conjunction with the RF circuitry 208, the touchscreen 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 entering a string of characters corresponding to an instant message, modifying previously entered characters, transmitting a corresponding instant message (e.g., using a Short Message Service (SMS) or a Multimedia Message Service (MMS) protocol for telephony-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, transmitted and / or received instant messages optionally include graphics, photos, audio files, video files, and / or other attachments supported by an MMS and / or an Enhanced Messaging Service (EMS). As used herein, "instant messaging" refers to both telephony-based messages (e.g., messages sent via SMS or MMS) and internet-based messages (e.g., messages sent via XMPP, SIMPLE, or IMPS).

[0074] In conjunction with the RF circuitry 208, the touchscreen 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 playback module, the workout support module 242 includes executable instructions for creating workouts (e.g., with time, distance, and / or calorie burn goals); communicating with workout sensors (exercise equipment); receiving workout sensor data; calibrating sensors used to monitor a workout; selecting and playing music for a workout; and displaying, storing, and sending workout data.

[0075] In conjunction with the touchscreen 212, the display controller 256, the optical sensor(s) 264, the optical sensor controller 258, the contact / motion module 230, the graphics module 232, and the image management module 244, the camera module 243 includes executable instructions for capturing still images or video (including a video stream) and storing them in the memory 202, changing the properties of a still image or video, or deleting a still image or video from the memory 202.

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

[0077] In conjunction with the RF circuitry 208, the touchscreen 212, the display controller 256, the contact / motion module 230, the graphics module 232, and the text input module 234, the browser module 247 includes executable instructions to surf the Internet according to user instructions, including searching for, linking to, receiving, and displaying web pages or portions thereof, as well as attachments and other files linked to web pages.

[0078] In conjunction with the RF circuitry 208, the touchscreen 212, the display controller 256, the contact / 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 to create, display, modify, and store calendars and calendar-associated data (e.g., calendar entries, to-do lists, etc.) according to user instructions.

[0079] In conjunction with the RF circuitry 208, the touchscreen 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 modules 249 are mini-applications that can be downloaded and used by a user (e.g., the weather widget 249-1, the stock widget 249-2, the calculator widget 249-3, the alarm clock widget 249-4, and the dictionary widget 249-5) or created by a user (e.g., the user-created widget 249-6). In some embodiments, a widget includes an HTML (Hypertext Markup Language) file, a CSS (Cascading Style Sheets) file, and a JavaScript file. In some embodiments, a widget includes an XML file (Extensible Markup Language file) and a JavaScript file (e.g., Yahoo! widgets).

[0080] In conjunction with the RF circuitry 208, the touchscreen 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 creation module 250 is used by a user to create widgets (e.g., to make a user-specified section of a web page into a widget).

[0081] In conjunction with the touchscreen 212, the display controller 256, the contact / motion module 230, the graphics module 232, and the text input module 234, the search module 251 includes executable instructions to search, according to user instructions, for text, music, sound, image, video, and / or other files in the storage 202 that match one or more search criteria (e.g., one or more user-specified search terms).

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

[0083] In conjunction with the touchscreen 212, the display controller 256, the contact / motion module 230, the graphics module 232, and the text input module 234, the notes module 253 includes executable instructions to create and manage notes, to-do lists, and the like according to user instructions.

[0084] The map module 254 is used in conjunction with the RF circuitry 208, the touchscreen 212, the display controller 256, the contact / motion module 230, the graphics module 232, the text input module 234, the GPS module 235, and the browser module 247 to receive, display, modify, and store maps and data associated with the maps (e.g., directions, data about businesses and other points of interest at or near a particular location, and other location-related data) according to user instructions.

[0085] In conjunction with the touchscreen 212, the display controller 256, the contact / motion module 230, the graphics module 232, the audio circuitry 210, the speaker 211, the RF circuitry 208, the text input module 234, the email client module 240, and the browser module 247, the online video module 255 includes instructions that allow the user to access, search, receive (e.g., by streaming and / or downloading), play (e.g., on the touchscreen or an external connected display via the external port 224), send, and otherwise manage an email containing a link to a particular online video in one or more file formats, such as H.264. In some embodiments, the instant messaging module 241 is used instead of the email client module 240 to send a link to a particular online video. An additional description of the online video application is available in the 20.U.S. Provisional Patent Application No. 60 / 936,562, "Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos," filed on June 14, 2007, and U.S. Patent Application No. 11 / 968,067, "Portable Multifunction Device, Method, and Graphical User Interface for Playing Online Videos," filed on December 31, 2007, the contents of which are hereby incorporated by reference in their entirety.

[0086] Each of the modules and applications identified above corresponds to a set of executable instructions for performing one or more of the functions described above and the methods described in this application (e.g., the computer-implemented methods and other information processing methods described herein). These modules (e.g., sets of instructions) do not need to be implemented as separate software programs, procedures, or modules, and thus various subsets of these modules may be combined or otherwise rearranged in various embodiments. For example, the video playback module may be combined with the music playback module into a single module (e.g., the video and music playback module 252, Fig. 2A). In some embodiments, memory 202 stores a subset of the modules and data structures outlined above. Furthermore, memory 202 stores additional modules and data structures not described above.

[0087] In some embodiments, device 200 is a device in which the operation of a predefined set of functions on the device is performed exclusively through a touchscreen and / or a touchpad. By using a touchscreen and / or touchpad as the primary input control device for operating device 200, the number of physical input control devices (such as push buttons, dials, and the like) on device 200 is reduced.

[0088] The predefined set of functions performed exclusively by a touchscreen and / or a touchpad optionally includes navigating between user interfaces. In some embodiments, the touchpad, when touched by the user, navigates device 200 from any user interface displayed on device 200 to a main, home, or root menu. In such embodiments, a "menu button" is implemented using a touchpad. In some further embodiments, the menu button is a physical push button or other physical input control device instead of a touchpad.

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

[0090] The event sorter 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 should be sent. The event sorter 270 includes an event monitor 271 and an event forwarding module 274. In some embodiments, the application 236-1 includes the application internal state 292, which indicates the current application view or views displayed on the touch-sensitive display 212 when the application is active or executing. In some embodiments, the device-level / global internal state 257 is used by the event sorter 270 to determine which application or applications are currently active, and the application internal state 292 is used by the event sorter 270 to determine the application views 291 to which event information should be delivered.

[0091] In some embodiments, the internal application status 292 includes additional information, such as one or more of the following: Resume information for use when resuming execution of the application 236-1, user interface state information indicating that information is already being displayed or is ready to be displayed by the application 236-1, a state buffer to allow the user to return to a previous state or view of the application 236-1, and / or a redo / undo buffer for actions previously performed by the user.

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

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

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

[0095] The hit view determination module 272 provides software procedures to determine where a sub-event occurred within one or more views when the touch-sensitive display 212 displays more than a single view. The views consist of controls and other elements that a user can see on the display.

[0096] 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 a given application) at which a touch is detected correspond to programmatic levels within a programmatic or view hierarchy of the application. For example, the lowest level of view at which a touch is detected is called a hit view, and the set of events that are recognized as correct inputs is determined based at least in part on the hit view of the original touch that initiates a touch-based gesture.

[0097] The hit view determination module 272 receives information regarding sub-events of a touch-based gesture. When an application has various views organized in a hierarchy, the hit view determination module 272 identifies a hit view as the lowest view in the hierarchy that should handle the sub-event. Under most circumstances, the hit view is the lowest-level view in which an initiating sub-event occurs (e.g., the first sub-event in the sequence of sub-events that constitute an event or potential event). Once the hit view has been 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 was identified as the hit view.

[0098] The active event determining module 273 determines which view or views within a view hierarchy should receive a particular sequence of sub-events. In some embodiments, the active event determining module 273 determines that only the hit view should receive a particular sequence of sub-events. In other embodiments, the active event determining module 273 determines that all views that encompass the physical location of a sub-event are actively participating views, and thus determines that all actively participating views should receive a particular sequence of sub-events.In other embodiments, even if touch sub-events were restricted exclusively to the area associated with a particular view, views higher in the hierarchy would still remain active participating views.

[0099] The event forwarding module 274 forwards the event information to an event recognizer (e.g., the event recognizer 280). In embodiments that include the active event determiner determination module 273, the event forwarding module 274 provides the event information to an event recognizer determined by the active event determiner determination module 273. In some embodiments, the event forwarding module 274 stores the event information in an event queue that is retrieved by a corresponding event receiver 282.

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

[0101] In some embodiments, the application 236-1 includes a plurality of event handlers 290 and one or more application views 291, each of which includes commands for handling touch events occurring within a respective view of the application's user interface. Each application view 291 of the application 236-1 includes one or more event recognizers 280. Typically, a respective application view 291 includes a plurality of event recognizers 280. In other embodiments, one or more event recognizers 280 are part of a separate module, such as a user interface kit (not shown) or a higher-level object from which the application 236-1 inherits methods and other properties.In some embodiments, a respective event handler 290 includes one or more of the following: a data updater 276, an object updater 277, a GUI updater 278, and / or event data 279 received from the event sorter 270. The event handler 290 uses or invokes a data updater 276, an object updater 277, or a GUI updater 278 to update the internal application state 292. Alternatively, one or more of the application views 291 include one or more corresponding event handlers 290. Also, in some embodiments, the data updater 276 and / or the object updater 277 and / or the GUI updater 278 are included in a respective application view 291.

[0102] A corresponding event recognizer 280 receives event information (e.g., event data 279) from event sorter 270 and identifies an event from the event information. Event recognizer 280 includes an event receiver 282 and an event comparator 284. In some embodiments, event recognizer 280 also includes at least a subset of metadata 283 and event delivery instructions 288 (including partial event delivery instructions).

[0103] The event receiver 282 receives event information from the event sorter 270. The event information includes information regarding a sub-event, such as a touch or a touch gesture. Depending on the sub-event, the event information also includes additional information, such as the position at which the sub-event occurs. If the sub-event involves the movement of a touch, the event information also includes the velocity and direction of the sub-event. In some embodiments, events include rotating the device from one orientation to another (e.g., from a portrait orientation to a landscape orientation or vice versa), and the event information includes corresponding information regarding the current orientation of the device (also referred to as the spatial location of the device).

[0104] The event comparator 284 compares the 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 status of an event or sub-event. In some embodiments, the event comparator 284 includes event definitions 286. The event definitions 286 contain definitions of events (e.g., predefined sequences of sub-events), such as Event 1 (287-1), Event 2 (287-2), and others. In some embodiments, sub-events within an event (287) include, for example, touch start, touch end, touch swipe, touch cancellation, and multiple touches. In one example, the definition for Event 1 (287-1) is a double tap on a displayed object.For example, the double tap includes a first touch (touch onset) on the displayed object for a predetermined phase, a first lift (touch end) for a predetermined phase, a second touch (touch onset) on the displayed object for a predetermined phase, and a second lift (touch end) for a predetermined phase. In another example, the definition for event 2 (287-2) is a drag on a displayed object. The drag includes, for example, a touch (or contact) on the displayed object for a predetermined phase, a movement of the touch across the touch-sensitive display 212, and a lift of the touch (touch end). In some embodiments, the event also includes information for one or more associated event handlers 290.

[0105] In some embodiments, event definition 287 includes a definition of an event for a respective 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 where three user interface objects are displayed on touch-sensitive display 212, event comparator 284 performs a hit test when a touch is detected on touch-sensitive display 212 to determine which of the three user interface objects is associated with the touch (sub-event). If each displayed object is associated with a respective event handler 290, the event comparator uses the result of the hit test to determine which event handler 290 should be activated.For example, the event comparator 284 selects an event handler associated with the sub-event and the object triggering the hit test.

[0106] In some embodiments, the definition for a respective event (287) also includes delayed actions that delay delivery of the event information until it has been determined whether or not the sequence of sub-events corresponds to the event type of the event recognition device.

[0107] If a respective event recognizer 280 determines that the sequence of sub-events does not correspond to any of the events in the event definitions 286, the respective event recognizer 280 enters an event-impossible status, an event-failed status, or an event-completed status and then disregards subsequent sub-events of the touch-based gesture. In this situation, other event recognizers, if any, that remain active for the hit view continue to track and process sub-events of an ongoing touch-based gesture.

[0108] In some embodiments, a respective event recognizer 280 includes metadata 283 with configurable properties, indicators, and / or lists that indicate how the event delivery system should perform the delivery of sub-events to devices for determining actively participating events. In some embodiments, the metadata 283 includes configurable properties, indicators, and / or lists that indicate how event recognizers communicate with each other or are enabled to communicate with each other. In some embodiments, the metadata 283 includes configurable properties, indicators, and / or lists that indicate whether sub-events are delivered to varying levels in the view-related or program-related hierarchy.

[0109] In some embodiments, a respective event recognizer 280 activates the event handler 290 associated with an event when one or more particular sub-events of an event are detected. In some embodiments, a respective event recognizer 280 delivers event information associated with the event to the event handler 290. Activating an event handler 290 is different from sending (and delaying the sending) of sub-events to a respective hit view. In some embodiments, the event recognizer 280 throws an alert associated with the detected event, and the event handler 290 associated with the alert picks up the alert and performs a predefined process.

[0110] In some embodiments, event delivery instructions 288 include sub-event delivery instructions that deliver event information related to a sub-event without activating an event handler. Instead, the sub-event delivery instructions deliver event information to the event handlers associated with the sequence of sub-events or with the actively participating views. The event handlers associated with the sequence of sub-events or with the actively participating views receive the event information and execute a predefined process.

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

[0112] In some embodiments, the one or more event handlers 290 include or have access to the data updater 276, the object updater 277, and the GUI updater 278. In some embodiments, the data updater 276, the object updater 277, and the GUI updater 278 are included in a single module of a corresponding application 236-1 or application view 291. In other embodiments, they are included in two or more software modules.

[0113] It should be understood that the above discussion regarding event handling of user touches on touch-sensitive displays also applies to other forms of user input for operating multifunction devices 200 with input devices, not all of which are initiated on touchscreens. For example, mouse movements and mouse button presses, optionally coordinated with single or multiple key presses or grasps; contact movements such as tapping, dragging, scrolling, etc. on touchpads; stylus inputs; movement of the device; verbal instructions; sensed eye movements; biometric inputs; and / or any combination thereof are optionally used as inputs corresponding to sub-events that define an event to be recognized.

[0114] Fig. 3 illustrates a portable multifunction device 200 with a touchscreen 212, according to some embodiments. The touchscreen selectively displays one or more graphics within the user interface (UI) 300. In this embodiment, as well as other embodiments described below, a user is enabled to select one or more of the graphics by performing a gesture on the graphics, such as with 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, the selection of one or more graphics occurs when the user releases contact with the one or more graphics.In some embodiments, the hand gesture includes one or more taps, one or more swipes (left to right, right to left, up, and / or down), and / or a rolling motion of a finger (right to left, left to right, up, and / or down) that has made contact with device 200. In some implementations or in some cases, inadvertent contact with a graphic does not select the graphic. For example, a swipe gesture that swipes over an application icon optionally does not select the corresponding application if the gesture corresponding to the selection is a tap.

[0115] Device 200 may also include one or more physical buttons, such as a "Home" or a menu button 304. As previously described, menu button 304 is used to navigate to any application 236 in a set of applications executing on device 200. Alternatively, in some embodiments, the menu button is implemented as a softkey in a GUI displayed on touchscreen 212.

[0116] In one embodiment, device 200 includes touchscreen 212, menu key 304, push button 306 for turning the device on / off and locking it, one or more volume control keys 308, Subscriber Identity Module (SIM) card slot 310, headphone jack 312, and external docking / charging port 224. Push button 306 is selectively used to turn the device on and off by pressing the key and holding it pressed for a predefined time interval; to lock the device by pressing and releasing the key before the predefined time interval has elapsed; and / or to unlock the device or initiate an unlocking process. In an alternative embodiment, device 200 also accepts spoken input to enable or disable some features through microphone 213.The device 200 optionally also includes one or more contact intensity sensors 265 for detecting the intensity of contacts on the touchscreen 212 and / or one or more tactile output generators 267 for generating tactile outputs for a user of the device 200.

[0117] Fig. 4 is a block diagram of an exemplary multifunction device with a display and a touch-sensitive surface, according to some embodiments. Device 400 need not be portable. In some embodiments, device 400 is a laptop computer, a desktop computer, a tablet computer, a media player, a navigation device, an educational device (such as a child's learning toy), a gaming system, or a control device (e.g., a home or commercial controller). Device 400 typically includes one or more processing units (CPUs) 410, one or more network or other communication interfaces 460, memory 470, and one or more communication buses 420 for interconnecting these components.The communication buses 420 optionally include circuitry (sometimes referred to as a chipset) that interconnects and controls communication between the system components. The device 400 includes the input / output (I / O) interface 430, which includes the display 440, which is typically a touchscreen display. The I / O interface 430 optionally also includes a keyboard and / or a mouse (or other pointing device) 450 and a touchpad 455, a tactile output generator 457 for generating tactile outputs on the device 400 (e.g., similar to one or more of the devices described above with reference to FIG. Fig. 2A), sensors 459 (e.g., optical, acceleration, proximity, touch-sensitive, and / or contact intensity sensors similar to the one or more described above with reference to Fig. 2A). Memory 470 includes high-speed random access memory, such as DRAM, SRAM, DDR-RAM, or other solid-state random access memory devices; and optionally non-volatile memory, such as one or more magnetic disk drives, optical disk drives, flash memory, or other non-volatile solid-state memory devices. Memory 470 optionally includes one or more data storage devices remote from CPU(s) 410. In some embodiments, memory 470 includes programs, modules, and data structures, or a subset thereof, analogous to those included in memory 202 of portable multifunction device 200 ( Fig. 2A). Furthermore, the memory 470 optionally stores additional programs, modules, and data structures that are not present in the memory 202 of the portable multifunction device 200. For example, a drawing module 480, a presentation module 482, a word processing module 484, a web page creation module 486, a disc creation module 488, and / or a spreadsheet module 490 are optionally stored in the memory 470 of the device 400, while these modules are stored in the memory 202 of the portable multifunction device 200 ( Fig. 2A) are optionally not saved.

[0118] Each of the elements listed above in Fig. 4 is stored in some examples in one or more of the aforementioned memory devices. Each of the modules identified above corresponds to a set of instructions for performing a function described above. The modules or programs (e.g., sets of instructions) identified above need not be implemented as separate software programs, procedures, or modules, and thus, various subsets of these modules are combined or otherwise rearranged in various embodiments. In some embodiments, memory 470 stores a subset of the modules and data structures identified above. Further, memory 470 stores additional modules and data structures not described above.

[0119] Attention is now directed to embodiments of user interfaces implemented, for example, on the portable multifunction device 200.

[0120] Fig. 5A illustrates an exemplary user interface for a menu of applications on portable multifunction device 200 according to some embodiments. Similar user interfaces are implemented on device 400. In some embodiments, user interface 500 includes the following elements, or a subset or superset thereof: One or more signal strength indicators 502 for wireless communications, such as cellular and Wi-Fi signals; • Time 504; • Bluetooth display 505; • Battery status indicator 506; • Bar 508 with icons for frequently used applications, such as: ◯ Symbol 516 for the telephone module 238, labeled “Telephone” and optionally including an indicator 514 of the number of missed calls or voice messages; ◯ Symbol 518 for the email client module 240, labeled “Email” and optionally including an indicator 510 of the number of unread emails; ◯ Symbol 520 for the browser module 247, which is labelled “Browser”; and ◯ Symbol 522 for the video and music playback module 252, also known as the iPod (trademark of Apple Inc.) module 252 and marked “iPod”; and • Icons for other applications, such as: ◯ Symbol 524 for the IM module 241, which is labelled “Messages”; ◯ Symbol 526 for the calendar module 248, which is marked as ‘Calendar’; ◯ Symbol 528 for the image management module 244, labelled “Photos”; ◯ Symbol 530 for the camera module 243, which is labelled “Camera”; ◯ Symbol 532 for the online video module 255, which is marked as “Online Video”; ◯ Symbol 534 for the stock widget 249-2, labelled “Stocks”; ◯ Symbol 536 for the map module 254, which is labelled “Maps”; ◯ Symbol 538 for the weather widget 249-1, which is labelled “Weather”; ◯ Symbol 540 for the alarm clock widget 249-4, which is labelled “Alarm Clock”; ◯ Symbol 542 for the training support module 242, which is labelled “Training Support”; ◯ Symbol 544 for the notes module 253, which is labelled “Notes”; and ◯ Icon 546 for a settings application or module labeled “Settings” that provides access to settings for the device 200 and its various applications 236.

[0121] It should be noted that the Fig. 5A are merely exemplary. For example, icon 522 for video and music playback module 252 is optionally labeled "Music" or "Music Player." Different labels are optionally used for different application icons. In some embodiments, a label for a respective application icon includes a name of an application corresponding to the corresponding application icon. In some embodiments, a label for a particular application icon is different from a name of an application corresponding to the particular application icon.

[0122] Fig. 5B illustrates an example user interface on a device (e.g., device 400, Fig. 4) with a touch-sensitive surface 551 (e.g. a tablet or touchpad 455, Fig. 4) that is separate from the display 550 (e.g., the touchscreen display 212). The device 400 optionally also includes one or more contact intensity sensors (e.g., one or more of the sensors 457) for detecting the intensity of contacts on the touch-sensitive surface 551 and / or one or more tactile output generators 459 for generating tactile outputs for a user of the device 400.

[0123] Although some of the following examples are given with reference to inputs on the touchscreen display 212 (where the touch-sensitive surface and the display are combined), in some embodiments, the device detects inputs on a touch-sensitive surface that is separate from the display, as in Fig. 5B. In some embodiments, the touch-sensitive surface (e.g., 551 in Fig. 5B) a primary axis (e.g. 552 in Fig. 5B) that corresponds to a primary axis (e.g. 553 in Fig. 5B) on the display (e.g., 550). According to these embodiments, the device detects contacts (e.g., 560 and 562 in Fig. 5B) with the touch-sensitive surface 551 at locations corresponding to the respective locations on the display (e.g., in Fig. 5B reference numeral 560 reference numeral 568, and 562 corresponds to 570). In this way, the device on the touch-sensitive surface (e.g. 551 in Fig. 5B) detected user inputs (e.g., contacts 560 and 562 and movements thereof) are used by the device to display the user interface on the display (e.g., 550 in Fig. 5B) of the multifunction device when the touch-sensitive surface is separate from the display. It is understood that similar methods may optionally be used for other user interfaces described herein.

[0124] While the following examples are primarily given with reference to finger inputs (e.g., finger contacts, finger tap gestures, finger swipe gestures), it should be understood that in some embodiments, one or more of the finger inputs are additionally replaced by inputs from another input device (e.g., a mouse-based input or stylus input). For example, a swipe gesture is optionally replaced by a mouse click (e.g., instead of a 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 while the cursor is over the location of the tap gesture (e.g., instead of capturing the contact followed by ceasing to capture the contact).If multiple user inputs are recorded simultaneously, it is understood that multiple computer mice are used simultaneously or that a mouse and finger contacts are used simultaneously.

[0125] Fig. 6A illustrates an exemplary personal electronic device 600. The device 600 includes the body 602. In some embodiments, the device 600 includes some or all of the features with respect to devices 200 and 400 (e.g., Fig. 2A-4). In some embodiments, device 600 includes a touch-sensitive display screen 604, hereinafter referred to as touchscreen 604. Alternatively, or in addition to touchscreen 604, device 600 includes a display and a touch-sensitive surface. As with devices 200 and 400, in some embodiments, touchscreen 604 (or touch-sensitive surface) includes one or more intensity sensors for detecting an intensity of contacts (e.g., touches). The one or more intensity sensors of touchscreen 604 (or touch-sensitive surface) provide output data representing the intensity of touches.The user interface of device 600 responds to touches based on their intensity, meaning that touches of different intensities can invoke different user interface operations on device 600.

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

[0127] In some embodiments, device 600 includes one or more input mechanisms 606 and 608. Input mechanisms 606 and 608, if included, are physical. Examples of physical input mechanisms include push buttons and rotatable mechanisms. In some embodiments, device 600 includes one or more attachment mechanisms. Such attachment mechanisms, if included, may allow attachment of device 600 to, for example, hats, eyeglasses, earrings, necklaces, shirts / blouses / T-shirts, jackets, bracelets, watch straps, chains, pants, belts, shoes, handbags, backpacks, and so on. These attachment mechanisms allow device 600 to be worn by a user.

[0128] Fig. 6B illustrates an exemplary personal electronic device 600. In some embodiments, the device 600 includes some or all of the Fig. 2A, Fig. 2B und Fig. 4. The device 600 includes a bus 612 that operatively couples an I / O portion 614 to one or more computer processors 616 and a memory 618. The I / O portion 614 is coupled to a display 604, which may include a touch-sensitive component 622 and optionally a touch intensity-sensitive component 624. Additionally, the I / O portion 614 is connected to a communications unit 630 to receive application and operating system data via Wi-Fi, Bluetooth, near field communication (NFC), cellular communication, and / or other wireless communication technologies. The device 600 includes input mechanisms 606 and / or 608. The input mechanism 606 is, for example, a rotatable input device or a push-and-rotate input device. In some examples, the input mechanism 608 is a button or key.

[0129] In some examples, the input mechanism 608 is a microphone. The personal electronic device 600 includes various sensors, such as a GPS sensor 632, an accelerometer 634, a direction sensor 640 (e.g., a compass), a gyroscope 636, a motion sensor 638, and / or a combination thereof, all operatively connected to the I / O section 614.

[0130] 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, cause the computer processors to perform, for example, the techniques and processes described below.The computer-executable instructions are also stored and / or transported, for example, within any non-transitory computer-readable data storage medium for use by or in connection with an instruction execution system, instruction execution device, or instruction execution apparatus, such as a computer-based system, a processor-based system, or other system capable of retrieving the instructions from the instruction execution system, instruction execution device, or instruction execution apparatus and executing the instructions. The personal electronic device 600 is not limited to the components and configuration of . Fig. 6B, but may include other or additional components in multiple configurations.

[0131] As used herein, the term “affordance” refers to a user-interactive graphical user interface object that may be displayed, for example, on the display screen of devices 200, 400, 600, and / or 800 ( Fig. 2A, Fig. 4, Fig. 6A-B and / or 8A-E). For example, an image (e.g., an icon), a button, and text (e.g., a hyperlink) each constitute an affordance.

[0132] As used herein, the term "focus selector" refers to an input element that indicates a current portion of a user interface with which a user is interacting. In some implementations that include a cursor or other location marker, the cursor acts as a "focus selector" such that when an input (e.g., a press input) is applied to a touch-sensitive surface (e.g., the touchpad 455 in Fig. 4 or the touch-sensitive surface 551 in Fig. 5B) while the cursor is over a particular user interface element (e.g., a button, window, slider, or other user interface element), the particular user interface element is adjusted according to the detected input. In some implementations that utilize a touchscreen display (e.g., the touch-sensitive display system 212 in Fig. 2A or the touchscreen 212 in Fig. 5A) that allow direct interaction with user interface elements on the touchscreen display, a detected contact on the touchscreen acts as a "focus selector" such that when an input (e.g., a press input by the contact) is detected on the touchscreen display at a position of a particular user interface element (e.g., a button, window, slider, or other user interface element), the particular user interface element is adjusted according to the detected input. In some implementations, focus is acquired without a corresponding movement of a cursor or movement of a contact on the touchscreen display (e.g.,using a tab key or arrow keys to move focus from one button to another button) from one region of a user interface to another region of the user interface; in these implementations, the focus selector moves according to the movement of focus between different regions of the user interface. Regardless of the specific form taken by the focus selector, the focus selector is generally the user interface element (or a contact on a touchscreen display) that is controlled by the user to communicate the user's intended interaction with the user interface (e.g., by indicating to the device the user interface element with which the user intends to interact). For example, the position of a focus selector (e.g.,a cursor, a contact, or a selection box) over a corresponding button while a press input is detected on the touch-sensitive surface (e.g., a touchpad or touchscreen) may indicate that the user intends to activate the corresponding button (as opposed to other user interface elements shown on a display of the device).

[0133] As used in the specification and claims, the term "characteristic intensity" of a contact refers to a characteristic of the 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 period of time (e.g., 0.05; 0.1; 0.2; 0.5; 1; 2; 5; 10 seconds) relative to a predetermined event (e.g., after detecting the contact, before detecting a lift-off of the contact, before or after detecting a start of movement of the contact, before detecting an end of contact, before or after detecting an increase in intensity of the contact, and / or before or after detecting a decrease in intensity of the contact).A characteristic intensity of a contact is optionally based on one or more of: a maximum value of the contact's intensities, a mean value of the contact's intensities, an average value of the contact's intensities, a value of the top 10th percentile value of the contact's intensities, a value at half the maximum of the contact's intensities, a value at the 90% maximum of the contact's intensities, or the like. In some embodiments, the duration of the contact is used in determining the characteristic intensity (e.g., when the characteristic intensity is an average of the contact's intensity over time). In some embodiments, the characteristic intensity is compared to a set of one or more intensity thresholds to determine whether an operation was performed by a user.For example, the set of one or more intensity thresholds includes a first intensity threshold and a second intensity threshold. In this example, contact with a characteristic intensity that does not exceed the first threshold results in a first operation, contact with a characteristic intensity that exceeds the first intensity threshold and does not exceed the second intensity threshold results in a second operation, and contact with a characteristic intensity that exceeds the second threshold results in a third operation. In some embodiments, a comparison between the characteristic intensity and one or more thresholds is used to determine whether to perform one or more operations (e.g.,whether a particular operation should be performed or whether the particular operation should not be performed) rather than being used to determine whether a first operation or a second operation should be performed.

[0134] In some embodiments, a portion of a gesture is identified for purposes of determining a characteristic intensity. For example, a touch-sensitive surface receives a continuous swipe contact that originates from a start location and reaches an end location, at which point the intensity of the contact increases. In this example, the characteristic intensity of the contact at the end location is based on only a portion of the continuous swipe contact and not the entire swipe contact (e.g., only the portion of the swipe contact at the end location). In some embodiments, a smoothing algorithm is applied to the swipe contact intensities before determining the characteristic intensity of the contact.For example, the smoothing algorithm optionally includes one or more of: an unweighted moving average smoothing algorithm, a triangular smoothing algorithm, a median filter smoothing algorithm, and / or an exponential smoothing algorithm. Under some circumstances, these smoothing algorithms eliminate narrow peaks or dips in the wiping contact intensities to determine a characteristic intensity.

[0135] The intensity of a contact on the 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 operations typically associated with clicking a button on a physical mouse or trackpad. In some embodiments, the deep press intensity threshold corresponds to an intensity at which the device will perform operations that are different from operations typically associated with clicking a button on a physical mouse or trackpad.In some embodiments, when a contact is detected with a characteristic intensity below the light press intensity threshold (and, for example, above a nominal contact detection intensity threshold below which a contact is no longer detected), the device will move a focus selector according to movement of the contact on the touch-sensitive surface without performing an operation associated with the light press intensity threshold or the hard press intensity threshold. Unless otherwise noted, these intensity thresholds are generally constant between different sets of user interface figures.

[0136] An increase in the characteristic intensity of the contact from an intensity below the light-press intensity threshold to an intensity between the light-press intensity threshold and the hard-press intensity threshold is sometimes referred to as a "light-press" input. An increase in the characteristic intensity of the contact from an intensity below the hard-press intensity threshold to an intensity above the hard-press intensity threshold is sometimes referred to as a "hard-press" input. An increase in the characteristic intensity of the contact from an intensity below the contact detection intensity threshold to an intensity between the contact detection intensity threshold and the light-press intensity threshold is sometimes referred to as sensing the contact on the touch surface.A reduction in the characteristic intensity of the contact from an intensity above the contact detection intensity threshold to an intensity below the contact detection intensity threshold is sometimes referred to as detecting a lift-off of the contact 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.

[0137] In some embodiments described herein, one or more operations are performed in response to detecting a hand gesture that includes a respective press input, or in response to detecting the respective press input performed with a respective contact (or multiple contacts), wherein the respective press input is detected based at least in part on detecting an increase in the intensity of the contact (or multiple contacts) above an intensity threshold of the press input. In some embodiments, the respective operation is performed in response to detecting the increase in the intensity of the respective contact above the intensity threshold of the press input (e.g., a "downward swipe" of the respective press input).In some embodiments, the press input includes an increase in the intensity of the respective contact above the intensity threshold of the press input and a subsequent decrease in the intensity of the contact below the intensity threshold of the press input, and the respective operation is performed in response to detecting the subsequent decrease in the intensity of the respective contact below the intensity threshold of the press input (e.g., an "upward swipe" of the respective press input).

[0138] In some embodiments, the device uses intensity hysteresis to avoid accidental inputs, sometimes called "jitter," where the device defines or selects a hysteresis intensity threshold with a predefined relationship to the pressure input intensity threshold (e.g., the hysteresis intensity threshold is X intensity units lower than the pressure input intensity threshold, or the hysteresis intensity threshold is 75%, 90%, or some other reasonable proportion of the pressure input intensity threshold).Thus, in some embodiments, the pressure input includes an increase in the intensity of the respective contact above the intensity threshold of the pressure input and a subsequent decrease in the intensity of the contact below the hysteresis intensity threshold corresponding to the intensity threshold of the pressure input, and the respective operation is performed in response to detecting the subsequent decrease in the intensity of the respective contact below the hysteresis intensity threshold (e.g., an "upward swipe" of the respective pressure input).Similarly, in some embodiments, the pressure input is detected only when the device detects an increase in the intensity of the contact from an intensity at or below the hysteresis intensity threshold to an intensity at or above the intensity threshold of the pressure input and optionally a subsequent decrease in the intensity of the contact to an intensity at or below the hysteresis intensity threshold, and the respective operation is performed in response to detecting the pressure input (e.g., the increase in the intensity of the contact or the decrease in the intensity of the contact, depending on the circumstances).

[0139] For ease of explanation, descriptions of operations performed in response to a press input associated with a press input intensity threshold or in response to a gesture including the press input are optionally performed in response to detecting either: an increase in an intensity of a contact above the press input intensity threshold, an increase in an intensity of a contact from an intensity below the hysteresis intensity threshold to an intensity above the press input intensity threshold, a decrease in an intensity of the contact below the press input intensity threshold, and / or a decrease in an intensity of the contact below the hysteresis intensity threshold corresponding to the press input intensity threshold.Furthermore, in examples where an operation is described as being performed in response to detecting a decrease in the intensity of a contact below the intensity threshold of the pressure input, the operation is optionally performed in response to detecting a decrease in the intensity of the contact below a hysteresis intensity threshold that is equal to and lower than an intensity threshold of the pressure input. 3. Digital assistance system

[0140] Fig. 7A illustrates a block diagram of a digital assistant system 700 according to various examples. In some examples, the digital assistant system 700 is implemented on a standalone 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, as in Fig. 1, divided into a server portion and a client portion, wherein the client portion resides on one or more user devices (e.g., devices 104, 122, 200, 400, 600, or 800) and communicates with the server portion (e.g., server system 108) over one or more networks. In some examples, the digital assistance system 700 is an implementation of the Fig. 1 illustrated server system 108 (and / or DA server 106). It should be noted that the digital assistance system 700 is only one example of a digital assistance system, and that the digital assistance system 700 may have more or fewer components than illustrated, combine two or more components, or have a different configuration or arrangement of the components. The various Fig. 7A are implemented in hardware, software instructions for execution by one or more processors, firmware including one or more signal processing circuits and / or application-specific integrated circuits, or a combination thereof.

[0141] The digital assistance 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 one or more signal lines 710.

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

[0143] In some examples, the I / O interface 706 couples input / output devices 716 of the digital assistant system 700, such as displays, keyboards, touchscreens, and microphones, to the user interface module 722. Together with the user interface module 722, the I / O interface 706 receives user inputs (e.g., voice inputs, keyboard inputs, touch inputs, etc.) and processes them accordingly. In some examples, e.g., when the digital assistant is implemented in a standalone user device, the digital assistant system 700 includes any of the components and I / O and communication interfaces described with respect to the devices 200, 400, 600, or 800 in Fig. 2A, Fig. 4, Fig. 6A-B and 8A-E, respectively. In some examples, the digital assistant system 700 represents the server portion of a digital assistant implementation and interacts with the user through a client-side portion on a user device (e.g., devices 104, 200, 400, 600, or 800).

[0144] In some examples, network communication interface 708 includes wired communication ports 712 and / or wireless transmit and receive circuitry 714. The wired communication ports receive and transmit communication signals over one or more wired interfaces such as Ethernet, Universal Serial Bus (USB), Firewire, etc. Wireless circuitry 714 transmits and receives RF signals and / or optical signals to and from communication networks 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 communication between the digital assistance system 700 and networks such as the Internet, an intranet and / or a wireless network such as a cellular network, a wireless local area network (LAN) and / or a metropolitan area network (MAN) and other devices.

[0145] In some examples, memory 702 or the computer-readable storage medium of memory 702 stores programs, modules, instructions, and data structures, including all or a subset of: operating system 718, communications module 720, user interface module 722, one or more applications 724, and digital assistant module 726. In particular, memory 702 or the computer-readable storage medium of memory 702 stores instructions for performing the processes described below. One or more processors 704 execute these programs, modules, and instructions and read from and write to the data structures.

[0146] The 718 operating system (e.g., Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks) includes various software components and / or drivers to control and manage common system tasks (e.g., memory management, storage device control, power management, etc.) and enables communications between various hardware, firmware, and software components.

[0147] The communication module 720 enables communication between the digital assistance system 700 and other devices via the network communication interface 708. The communication module 720 communicates, for example, with the RF circuitry 208 of electronic devices, such as devices 200, 400, and 600 as shown in Fig. 2A, Fig. 4 and 6A-B, respectively. The communication module 720 also includes various components for processing data received via the wireless circuit 714 and / or the wired communication port 712.

[0148] The user interface module 722 receives commands and / or inputs from a user via the I / O interface 706 (e.g., from a keyboard, touchscreen, pointing device, controller, and / or microphone) and creates user interface objects on a display. The user interface module 722 also creates and delivers output (e.g., speech, sound, animation, text, icons, vibrations, haptic feedback, light, etc.) to the user via the I / O interface 706 (e.g., through displays, audio channels, speakers, touchpads, etc.).

[0149] Applications 724 include programs and / or modules configured for execution by one or more processors 704. When the digital assistance system is implemented on a standalone user device, applications 724 include, for example, user applications such as games, a calendar application, a navigation application, or an email application. When the digital assistance system 700 is implemented on a server, applications 724 include, for example, resource management applications, diagnostic applications, or scheduling applications.

[0150] The memory 702 also stores the digital assistant module 726 (or the server portion of a digital assistant). In some examples, the digital assistant module 726 includes the following submodules, or a subset or superset of the following: an input and output processing module 728, a speech-to-text (STT) processing module 730, a natural language processing module 732, a dialogue 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 of the following: ontology 760, vocabulary 744, user data 748, task flow models 754, service models 756, and ASR systems 758.

[0151] In some examples, using the processing modules, data, and models implemented in the digital assistant module 726, the digital assistant performs at least some of the following: converting speech input to text; identifying a user's intent expressed in natural language input received from the user; actively retrieving and obtaining information necessary to fully infer the user's intent (e.g., by disambiguating words, games, intentions, etc.); determining the task flow to fulfill the inferred intent; and executing the task flow to fulfill the inferred intent.

[0152] In some embodiments, as in Fig. 7B, the I / O processing module 728 interacts through the I / O devices 716 in Fig. 7A with the user or with a user device (e.g., devices 104, 200, 400, or 600) through the network communication interface 708 in Fig. 7A, to receive user input (e.g., voice input) and provide responses (e.g., as voice outputs) to the user input. The I / O processing module 728 optionally receives context information associated with the user input from the user device during or shortly after receiving the user input. The context information includes user-specific data, vocabulary, and / or preferences relevant to the user input. In some examples, the context information also includes the software and hardware status of the user device at the time the user request is received and / or information regarding the user's environment at the time the user request is received. In some examples, the I / O processing module 728 also sends follow-up questions to the user and receives responses from the user regarding the user requests.When a user request is received by the I / O processing module 728 and the user request includes speech input, the I / O processing module 728 forwards the speech input to the STT (or speech recognition) processing module 730 for speech-to-text conversion.

[0153] The SST processing module 730 includes one or more ASR systems 758. The one or more ASR systems 758 may process the speech input received via the I / O processing module 728 to generate a recognition result. Each ASR system 758 includes a front-end speech preprocessor. The front-end speech preprocessor extracts typical features from the speech input. For example, the front-end speech preprocessor performs a Fourier transform on the speech input to extract spectral features that characterize the speech input as a sequence of typical multidimensional vectors. Further, 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 modules.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 modules include dynamic time warping (DTW)-based modules and weighted finite-state transducer (WFST)-based modules. The one or more speech recognition models and the one or more speech recognition modules are used to process the extracted representative features of the front-end speech preprocessor to produce intermediate recognition results (e.g., phonemes, phoneme sequences, and sub-terms) and ultimately text recognition results (e.g., words, word sequences, or a token sequence). In some examples, the speech input is processed at least in part by a third-party service or on the user's device (e.g., device 104, 200, 400, or 600) to produce the recognition results.Once the STT processing module 730 generates recognition results with a text string (e.g., words or word sequences or token sequences), the recognition result is passed to the natural language processing module 732 for intent inference. In some examples, the STT processing module 730 generates multiple candidate text representations of the speech input. Each candidate text representation is a sequence of words or tokens that corresponds to the speech input. In some examples, each candidate text representation is associated with a speech recognition confidence score. Based on the speech recognition confidence scores, 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 passed to the natural language processing module 732 for intent inference. In another example, the five highest-ranked candidate text representations (n=5) are passed to the natural language processing module 732 for intent inference.

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

[0155] In some examples, the STT processing module 730 includes and / or accesses a vocabulary of recognizable words via a phonetic alphabet conversion module 731. Each word in the vocabulary is associated with one or more possible pronunciations of the word represented in a phonetic transcription for speech recognition. In particular, the vocabulary of recognizable words includes a word associated with a plurality of possible pronunciations. For example, the vocabulary includes the word "tomato," which is associated with the possible pronunciation / / and / / is linked. Furthermore, vocabulary words are linked to user-defined possible pronunciations based on previous speech inputs from the user. Such user-defined possible pronunciations are stored in the STT processing module 730 and associated with a particular user via the user profile on the device. In some examples, the possible pronunciations of words are determined based on the spelling of the word and one or more linguistic and / or phonetic rules. In some examples, the possible pronunciations are manually generated, e.g., based on known recognized pronunciations.

[0156] In some examples, the possible pronunciations are ranked based on the frequency of the possible pronunciation. The possible pronunciation / / is ranked higher than / , for example. / , because the former is the more common pronunciation (e.g., among all users, users in a particular geographical area, or for another appropriate user subset). In some examples, the possible pronunciation is ranked based on whether the possible pronunciation is a user-defined possible pronunciation assigned to the user. For example, a user-defined possible pronunciation is ranked higher than a recognized possible pronunciation. This can be useful for detecting proper nouns with a unique pronunciation that differs from the recognized pronunciation. In some examples, a possible pronunciation is assigned to one or more language properties, such as a geographical origin, nationality, or ethnicity. The possible pronunciation / / is associated with the United States, for example, whereas the possible pronunciation / / is associated with Great Britain. Furthermore, the ranking of the possible pronunciation is based on one or more of the user's characteristics (e.g., geographical origin, nationality, ethnicity, etc.) stored in the device user's profile. For example, the user profile can determine that the user is associated with the United States. Based on the user being associated with the United States, the possible pronunciation / / (associated with the United States) ranked higher than the possible pronunciation / / (associated with Great Britain). In some examples, one of the ranked possible pronunciations is selected as the predicted pronunciation (e.g., the most likely pronunciation).

[0157] When a speech input is received, the STT processing module 730 is used to determine the phonemes that correspond to the speech input (e.g., using an acoustic model) and then attempts to determine words that correspond to the phonemes (e.g., using a language model). For example, if the STT processing module 730 first determines the sequence of phonemes / / that correspond to a part of the speech input, it can determine from the vocabulary 744 that this sequence corresponds to the word "tomato".

[0158] In some examples, the STT processing module 730 uses approximate matching techniques to determine words in a statement. For example, the STT processing module 730 determines that the phoneme sequence / / corresponds to the word "tomato", even if this particular phoneme sequence is not among the possible phoneme sequences for this word.

[0159] The digital assistant's natural language processing module 732 ("natural language processor") takes the n-best candidate text representation(s) ("word sequence(s)" or "token sequence(s)") generated by the STT processing module 730 and attempts to associate each of the candidate text representations with one or more "actionable intents" recognized by the digital assistant. An "actionable intent" (or "user intent") represents a task that can be performed by the digital assistant and may have an associated task flow, which may be implemented in the task flow models 754. The associated task flow is a sequence of programmed actions and steps that the digital assistant takes to perform the task.The scope of a digital assistant's capabilities depends on the number and variety of task flows implemented and stored in task flow models 754, or in other words, on the number and variety of "feasible intents" known to the digital assistant. However, the effectiveness of the digital assistant also depends on the assistant's ability to derive the correct "feasible intents" from user requests expressed in natural language.

[0160] In some examples, in addition to the word or token sequence received from the STT processing module 730, the natural language processing module 732 also receives context information associated with the user request (e.g., from the I / O processing module 728). The natural language processing module 732 optionally uses the context information to clarify, supplement, and / or further define the information contained in the candidate text representation received from the STT processing module 730. The context information includes, for example, user preferences, the hardware and / or software status of the user device, sensor information acquired during or shortly after the user request, previous interactions (e.g., dialogue) between the digital assistant and the user, and the like.As described herein, in some examples, context information is dynamic and changes over time, depending on location or the content of the dialogue, and other factors.

[0161] In some examples, natural language processing is based on an ontology 760. The ontology 760 is a hierarchical structure with a plurality of nodes, where each node represents either an "actionable intent" or a "property" relevant to one or more of these "actionable intents" or "properties." As stated above, an "actionable intent" represents a task that the digital assistant can perform, i.e., it is "actionable" or can be acted upon. A "property" represents a parameter associated with an actionable intent or a sub-aspect of another property. A connection between an actionable intent node and a property node in ontology 760 defines how a parameter represented by the property node relates to the task represented by the actionable intent node.

[0162] In some examples, ontology 760 consists of actionable intent nodes and property nodes. Within ontology 760, each actionable intent node is connected to one or more property nodes, either directly or through one or more intermediate property nodes. Similarly, each property node is connected to one or more actionable intent nodes, either directly or through one or more intermediate property nodes. For example, ontology 760 includes, as shown in Fig. 7C, a "Restaurant Reservation" node (i.e., an actionable intent node) is included. The property nodes "Restaurant," "Date / Time" (for the reservation), and "Number of Guests" are each directly connected to the actionable intent node (i.e., the "Restaurant Reservation" node).

[0163] In addition, the property nodes "Cuisine," "Price Range," "Phone Number," and "Location" are subnetwork nodes of the property node "Restaurant" and are each connected to the node "Restaurant Reservation" (i.e., the actionable intent node) through the intermediate property node "Restaurant." In another example, the ontology 760 includes, as shown in Fig. 7C, also includes a "Set Reminder" node (i.e., another actionable intent node). The "Date / Time" (for setting the reminder) and "Subject" (for the reminder) property nodes are each connected to the "Set Reminder" node. Since the "Date / Time" property is relevant to both the task of making a restaurant reservation and the task of setting a reminder, the "Date / Time" property node in ontology 760 is connected to both the "Restaurant Reservation" node and the "Set Reminder" node.

[0164] A node for actionable intents, together with its associated property nodes, can be described as a “domain.” In the present discussion, each domain is associated with a corresponding actionable intent and refers to a set of nodes (and their relationships to each other) associated with the particular actionable intent. For example, the domain described in Fig. 7C includes an example restaurant reservation domain 762 and an example reminder domain 764 within the ontology 760. The restaurant reservation domain includes the actionable intent node "Restaurant Reservation," the property nodes "Restaurant," "Date / Time," and "Group Size," and the property subnodes "Cuisine," "Price Range," "Phone Number," and "Location." The reminder domain 764 includes the actionable intent node "Set Reminder" and the property nodes "Subject" and "Date / Time." In some examples, the ontology 760 is composed of many domains. Each domain shares one or more property nodes with one or more other domains. For example, the property node “Date / Time” is associated with many different domains (e.g., a schedule domain, a travel reservation domain, a movie ticket domain, etc.).) in addition to the restaurant reservation domain 762 and the reminder domain 764.

[0165] Although Fig. While Figure 7C shows two example domains within the ontology 760, other domains include, for example, "search for a movie," "make a call," "give directions," "schedule an appointment," "send a message," "answer a question," "read a list," "give navigation instructions," "give instructions for a task," and so on. A "send message" domain is associated with a "send message" actionable intent node and also includes property nodes such as "recipient," "message type," and "body." The "recipient" property node is further defined, for example, by property subnodes such as "recipient name" and "message address."

[0166] In some examples, the ontology 760 includes all domains (and thus, feasible intents) that the digital assistant can understand and manipulate. In some examples, the ontology 760 is modified, e.g., by adding or removing domains or nodes, or by modifying relationships between nodes within the ontology 760.

[0167] In some examples, nodes related to multiple relevant actionable intents are clustered under a "superdomain" in the ontology 760. For example, a "travel" superdomain includes a cluster of property nodes and nodes of actionable intents related to travel. The nodes of an actionable intent related to travel include "flight reservation," "hotel reservation," "car rental," "get directions," "find attractions," and so on. The nodes of an actionable intent under the same superdomain (e.g., the "travel" superdomain) share many property nodes.For example, the actionable intent nodes for “flight reservation,” “hotel reservation,” “car rental,” “get directions,” and “find attractions” share one or more of the property nodes “starting point,” “destination,” “departure date / time,” “arrival date / time,” and “group size.”

[0168] In some examples, each node in the ontology 760 is associated with a set of words and / or phrases relevant to the property or actionable intent that the node represents. The respective set of words and / or phrases associated with the respective node is the so-called “vocabulary” associated with the node. The respective set of words and / or phrases associated with the respective node is stored in the dictionary 744 in association with the property or actionable intent that the node represents. For example, Fig. Returning to Figure 7B, the vocabulary associated with the property node "restaurant" includes words such as "food," "drink," "kitchen," "hungry," "eat," "pizza," "fast food," "meal," etc. As another example, the vocabulary associated with the actionable intent node "make a call" includes words and phrases such as "call," "phone," "dial," "ring," "call this number," "call at," etc. The vocabulary 744 optionally includes words and phrases in various languages.

[0169] The natural language processing module 732 receives the candidate text representations (e.g., text string(s) or token string(s)) from the STT processing module 730 and, for each candidate representation, determines which nodes are implied by the words in the candidate text representation. In some examples, if a word or phrase in the candidate text representation is determined to be associated with one or more nodes in the ontology 760 (via the dictionary 744), these nodes are "triggered" or "activated" by the word or phrase. Based on the quantity and / or relative importance of the activated nodes, the natural language processing module 732 selects one of the actionable intents as the task the user intended the digital assistant to perform. In some examples, the domain having the most "triggered" nodes is selected.In some examples, the domain with the highest confidence score is selected (e.g., based on the relative importance of its various triggered nodes). In some examples, the domain is selected based on a combination of the number and importance of the triggered nodes. In some examples, additional factors are also considered when selecting the node, such as whether the digital assistant has previously correctly interpreted a similar request from a user.

[0170] The user data 748 includes user-specific information such as user-specific vocabulary, user preferences, user address, user defaults and second languages, the user's contact list, and other short- and long-term information for each user. In some examples, the natural language processing module 732 uses user-specific information to supplement information contained in the user input to further define the user's intent. For example, for a user request "invite friends to birthday party," the natural language processing module 732 accesses user data 748 to determine who the "friends" are and when and where the "birthday party" will take place, rather than requiring the user to explicitly provide such information in their request.

[0171] It should be noted that in some examples, the natural language processing module 732 is implemented using one or more machine learning mechanisms (e.g., neural networks). In particular, the one or more machine learning mechanisms are configured to receive a candidate text representation and contextual information associated with the candidate text representation. Based on the candidate text representation and the associated contextual information, the one or more machine learning mechanisms are configured to determine intent confidence scores about a set of candidate actionable intents. The natural language processing module 732 may select one or more candidate actionable intents from the set of candidate actionable intents based on the determined confidence scores. In some examples, an ontology (e.g.,Ontology 760) to select the one or more candidate feasible intentions from the set of candidate feasible intentions.

[0172] Further details on searching an ontology based on a token string are described in U.S. Utility Patent Application Serial No. 12 / 341,743, entitled "Method and Apparatus for Searching Using An Active Ontology," filed December 22, 2008, the entire disclosure of which is incorporated herein by reference.

[0173] Once the natural language processing module 732 identifies an actionable intent (or domain) based on the user request, in some embodiments the natural language processing module 732 generates a structured query to represent the identified actionable intent. In some examples, the structured query includes parameters for one or more nodes within the actionable intent domain, and at least some of the parameters are populated with the specific information and requirements specified in the user request. For example, the user says, "Make a reservation at 7 at a sushi restaurant." In this case, the natural language processing module 732 correctly identifies the actionable intent as "restaurant reservation" based on the user input.According to the ontology, a structured query for a restaurant reservation domain includes parameters such as {cuisine}, {time}, {date}, {number of guests}, and the like. In some examples, based on the speech input and the text derived from the speech input using the STT processing module 730, the natural language processing module 732 generates a partial structured query for the restaurant reservation domain, where the partial structured query includes the parameters {cuisine = "sushi") and {time = "7:00 PM"). However, in this example, the user's statement does not contain sufficient information to complete the structured query associated with the domain. Therefore, other necessary parameters such as {group size} and {date} are not specified in the structured query due to the currently available information.In some examples, the natural language processing module 732 populates some parameters of the structured query with received context information. For example, if the user queries a sushi restaurant "nearby," the natural language processing module 732 populates a {location} parameter in the structured query with GPS coordinates from the user's device.

[0174] In some examples, the natural language processing module 732 identifies a plurality of candidate actionable intents for each candidate text representation received from the STT processing module 730. Further, in some examples, a corresponding structured query (partial or complete) is generated for each identified candidate actionable intent. The natural language processing module 732 determines an intent confidence score for each candidate actionable intent and assigns the candidate actionable intents based on the intent confidence score. In some examples, the natural language processing module 732 passes the generated structured query (or queries), including each complete parameter, to the task flow processing module 736 ("task flow processor"). In some examples, the structured query (or queries) is executed for the m best (e.g.,m highest-ranked) candidate feasible intents are provided to the task flow processing module 736, where m is a predetermined integer greater than zero. In some examples, the structured query (or queries) for the m best candidate feasible intents are provided to the task flow processing module 736 with the corresponding candidate text representation(s).

[0175] Further details on inferring user intent based on multiple candidate actionable intents from multiple candidate text representations of speech input are contained in U.S. Utility Patent Application No. 14 / 298,725, entitled "System and Method for Inferring User Intent From Speech Inputs," filed June 6, 2014, the entire disclosure of which is incorporated herein by reference.

[0176] The task flow processing module 736 is configured to receive the structured query (or queries) from the natural language processing module 732, complete the structured query if necessary, and perform the actions required to "complete" the user's final request. In some examples, the various procedures necessary to complete these tasks are provided in task flow models 754. In some examples, the task flow models 754 include procedures for obtaining additional information from the user and task flows for performing actions related to the actionable intent.

[0177] To complete a structured query, the task flow processing module 736, as described above, must initiate an additional dialogue with the user to obtain additional information and / or clarify potentially ambiguous statements. When such interactions are necessary, the task flow processing module 736 invokes the dialog flow processing module 734 to enter into a dialogue with the user. In some examples, the dialog flow processing module 734 determines how (and / or when) to ask the user for additional information and receives and processes the user responses. The questions are posed to the users by the I / O processing module 728, and the users' responses are received by it.In some examples, the dialog flow processing module 734 provides the dialog output to the user via audible and / or visual output and receives input from the user via spoken or physical (e.g., clicking) responses. Continuing with the above example, when the task flow processing module 736 calls the dialog flow processing module 734 to determine the "guest count" and "date" information for the structured query associated with the "restaurant reservation" domain, the dialog flow processing module 734 generates questions such as "For how many people?" and "On what day?" to ask the user.Once responses are received from the user, the dialog flow processing module 734 then populates the structured query with the missing information or passes the information to the task flow processing module 736 to complete the missing information from the structured query.

[0178] Once the task flow processing module 736 has completed the structured query for an actionable intent, the task flow processing module 736 proceeds to execute the final task associated with the actionable intent. Accordingly, 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 actionable intent "restaurant reservation" includes steps and instructions for contacting a restaurant and actually requesting a reservation for a specific group size at a specific time. For example, if a structured query such as the following is used: {restaurant reservation, restaurant = ABC Cafe, date = 12.3.2012, time = 7:00 PM, group size = 5}; the task flow processing module 736 performs these steps: (1) logging into an ABC Café server or a restaurant reservation system such as OPENTABLER®, (2) entering the date, time, and group size information into a form on the website, (3) submitting the form, and (4) creating a calendar entry for the reservation in the user's calendar.

[0179] In some examples, the task flow processing module 736 employs the assistance of a service processing module 738 ("Service Processing Module") to complete a task posed in the user input or to provide an informational response to a question posed in the user input. For example, the service processing module 738 acts on behalf of the task flow processing module 736 to place a phone call, schedule a calendar entry, invoke a map search, invoke or interact with other user applications installed on the user device, and invoke or interact with third-party services (e.g., a restaurant reservation portal, a social network, a banking portal, etc.).In some examples, the protocols and application programming interfaces (APIs) required by the respective service are specified by a respective service model among the service models 756. The service processing module 738 accesses the appropriate service model for a service and generates requests for the service according to the protocols and APIs required for the service according to the service model.

[0180] For example, if a restaurant has enabled an online reservation service, the restaurant provides a service model that specifies the necessary parameters for making a reservation and the API for transmitting the values ​​of the necessary parameters to the online reservation service. When requested by the task flow processing module 736, the service processing module 738 establishes a network connection with the online reservation service using the web address stored in the service model and sends the necessary reservation parameters (e.g., time, date, number of guests) to the online reservation interface in a format according to the API of the online reservation service.

[0181] In some examples, the natural language processing module 732, the dialogue flow processing module 734, and the task flow processing module 736 are used collectively and iteratively to infer and define the user's intent, obtain information to further clarify and narrow the user's intent, and ultimately generate a response (e.g., an output for the user or the completion of a task) and satisfy the user's intent. The generated response is a dialogue response to the speech input that at least partially satisfies the user's intent. Further, in some examples, the generated response is output as speech output. In these examples, the generated response is sent to the speech synthesis processing module 740 (e.g., a speech synthesizer), where it may be processed to synthesize the dialogue response into speech form.In yet another example, the generated response is data content relevant to satisfying a user request during speech input.

[0182] In examples 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 queries to 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 feasible intent. In other examples, the first structured query is selected from the received structured queries based on a combination of the corresponding speech recognition confidence scores and the corresponding intent confidence scores.In some examples, if the task flow processing module 736 encounters an error during processing of the first structured query (e.g., due to an inability to determine a required parameter), the task flow processing module 736 may select and process a second structured query from the received structured queries that corresponds to a lower-ranked actionable intent. The second structured query is selected, for example, based on the speech recognition confidence score of the corresponding candidate text representation, the intent confidence score of the corresponding candidate actionable intent, a missing required parameter in the first structured query, or any combination thereof.

[0183] 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 text provided by the digital assistant. The generated dialog response is, for example, 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 suitable speech synthesis technique to generate speech output from text, including, but not limited to, concatenative synthesis, unit selection synthesis, diphone synthesis, domain-specific synthesis, formant synthesis, articulatory synthesis, HMM-based (Hidden Markov Model) synthesis, and sine wave synthesis.In some examples, the speech synthesis processing module 740 is configured to synthesize individual words based on phonemic strings corresponding to the words. For example, a phonemic string is associated with a word in the generated dialog response. The phonemic string is stored in the metadata associated with the word. The speech synthesis processing module 740 is configured to directly process the phonemic string in the metadata to synthesize the word in speech form.

[0184] In some examples, instead of (or in addition to) using 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. This may be the case, for example, in implementations where output for digital assistants is generated on a server system. And because server systems generally have more processing power or resources than a user device, it is possible to achieve higher-quality speech output than would be practical with client-side synthesis.

[0185] Further details on digital assistants can be found in U.S. Utility Patent Application No. 12 / 987,982, entitled "Intelligent Automated Assistant," filed January 10, 2011, and U.S. Utility Patent Application No. 13 / 251,088, entitled "Generating and Processing Data Items That Represent Tasks to Perform," filed September 30, 2011, the entire disclosures of which are incorporated herein by reference. 4. Example techniques for initiating and deactivating a virtual assistant

[0186] Fig. 8A-D illustrate example techniques for initiating a virtual assistant at an electronic device based on audio input and input representing movement of the electronic device.

[0187] Fig. 8A illustrates the electronic device 800 of user 802. In some examples, device 800 is one of devices 104, 106, 200, 400, or 600. In some examples, device 800, as illustrated, is a wearable electronic device such as a smart watch. In other examples, device 800 is a computer, a set-top box, a speaker, a phone, or a combination of any of the above-mentioned devices.

[0188] The electronic device 800 is located in Fig. 8A in a lowered position. As explained below, in some examples, user 802 raises device 800 from a lowered position and provides audio input to initiate a virtual assistant session with device 800 and cause the initiated virtual assistant session to respond to the audio input.

[0189] A lowered position is one of a plurality of positions (e.g., lowered, raising, raised, and lowering) of an electronic device. Fig. Figure 8B shows the device 800 in a lifting position, Fig. 8C-E show the device 800 in a raised position and Fig. Figure 8F shows the device 800 in a lowering position. However, it should be noted that the Fig. 8A-F are merely exemplary. That is, the positions of an electronic device may differ from the lowered, raising, raised, and lowered positions shown in the Fig. 8A-F. Likewise, the transitions of an electronic device between the Fig. 8A-F are merely exemplary. Example techniques for determining a position of an electronic device and for determining transitions between the positions are described with reference to Fig. 9 explained below.

[0190] Since, in the present example, the electronic device 800 is on the wrist of user 802 and the wrist of user 802 is lowered as shown, the electronic device 800 is in a lowered position. However, as previously mentioned, in some examples, a lowered position of an electronic device differs from the illustrated lowered position. For example, if user 802 is wearing device 800 on their wrist and user 802 is typing on a keyboard, device 800 is in a lowered position. As another example, if user 802 is wearing device 800 on their wrist and user 802 is lying with their wrist at their side (e.g., at waist level), device 800 is in a lowered position.Accordingly, in some examples, the device 800 is in a lowered position when it is not raised toward or away from the mouth of the user 802 and / or is positioned away from the mouth of a user 802 (e.g., more than 0.5, 1, 1.5, or 2 feet away, positioned an arm's length away from the user 802, etc.).

[0191] In some examples, the device 800, as in Fig. 8A, a display 804 (e.g., a touchscreen). User 802 is unlikely to look at display 804 or provide spoken requests when device 800 is in a lowered position. Accordingly, in some examples, display 804 is turned off (e.g., not displayed) because device 800 is in a lowered position. In some examples, because display 804 is turned off, one or more microphones of device 800 are also turned off (e.g., no audio input is being sampled). In this way, battery power is conserved by turning off device components that are unlikely to be used in the current device position. However, in other examples, display 804 and / or one or more microphones of device 800 are turned on even when device 800 is in a lowered position.

[0192] In Fig. 8B, the user 802 raises the device 800 from a lowered position to a raising position (e.g., the user 802 raises their wrist toward their mouth). As explained below, in some examples, such a raising causes the display 804 and one or more microphones of the device 800 to turn on. Turning on one or more microphones thus enables the sampling of audio inputs (e.g., audio input 806 "What's the weather like in Palo Alto?", which will be discussed below with respect to Fig. 8C). As explained further below, in some examples, a virtual assistant session is initiated based on the provided device movement and audio input 806, and a response to the audio input 806 is provided by the initiated virtual assistant session.

[0193] In some examples, while providing motion to a device, the device detects an input representing its motion, referred to herein as a motion input. In some examples, the motion input is detected by one or more motion sensors of the device. The one or more motion sensors include any sensors capable of detecting motion input, such as one or more accelerometers, one or more gyroscopes, one or more cameras, one or more proximity sensors, one or more ultrasonic sensors, one or more microwave motion sensors, and the like.

[0194] In some examples, capturing motion input to a device includes sampling the motion input using a first processor. In some examples, the first processor is a low-power processor of the device that is separate from a main processor of the device. Accordingly, in some examples, the first processor is capable of continuously capturing motion input (e.g., from one or more gyroscopes and / or accelerometers) without significantly impacting battery life. For example, the first processor continuously samples motion input by writing the motion input to a memory buffer (e.g., a circular buffer).

[0195] In some examples, an electronic device samples audio input using one or more microphones of the electronic device. In some examples, the one or more microphones continuously sample audio input. In some examples, the one or more microphones sample the audio input by turning them on according to the techniques described herein.

[0196] In some examples, an audio input is sampled while at least a portion of the motion input is captured. As in Fig. For example, as shown in Figure 8C, device 800 samples the audio input 806 "What's the weather like in Palo Alto?" while detecting motion inputs (e.g., with one or more accelerometers and / or one or more gyroscopes). Although the present example shows user 802 providing audio input after picking up device 800 (e.g., Fig. 8C), in some examples, the user 802 provides the audio input 806 upon lifting the device 800 (e.g., Fig. 8B) or before lifting the device 800 (e.g. Fig. 8A) is ready.

[0197] In some examples, sampling audio input at a device includes sampling the audio input using the device's first processor (e.g., the same processor that samples motion input to the device). For example, the first processor is capable of continuously sampling audio input (e.g., from one or more microphones) by writing the audio input to a memory buffer (e.g., a circular buffer).

[0198] In some examples, sampling the audio input at a device includes sampling the audio input using a second processor. In some examples, the second processor is the main processor (e.g., an application processor) of the device.

[0199] In some examples, the second processor is activated based on at least a portion of the motion input. In some examples, the portion of the motion input represents a wrist raise and / or wrist rotation gesture. For example, user 802 performs a wrist raise gesture when user 802 raises device 800 from a lowered position to a raising position. The first processor of device 800 detects the wrist raise gesture and activates the second processor, which then samples audio input 806, "What's the weather like in Palo Alto?" Example techniques for detecting a wrist raise and / or wrist rotation gesture are described in U.S. Patent Application No. 14 / 796,675, entitled "Raise Gesture Detection in a Device," filed July 10, 2015, the contents of which are hereby incorporated by reference in their entirety.

[0200] In some examples, activating the second processor includes causing the second processor to exit a power-saving mode. In some examples, the second processor is in a power-saving mode when it is limited by the number or type of operations it can perform while operating in the power-saving mode. In some examples, the second processor is in a power-saving mode when it operates while some of the processor circuitry is disabled. In some examples, the second processor is in a power-saving mode when it operates at a reduced clock frequency, reduced voltage, or reduced current compared to values ​​when the second processor is operating in a normal mode.In some examples, the second processor needs to exit power saving mode to provide certain functionality, such as launching or running applications, operating a virtual assistant, and / or sampling audio input.

[0201] In some examples, such as Fig. 8B, the display 804 is turned on based on at least a portion of the motion input of the device 800. In some examples, the portion of the motion input represents a wrist raise gesture and / or a wrist rotate gesture. For example, when the user 802 raises the device 802 from a lowered position to a raising position, the user 800 performs a wrist raise gesture and / or a wrist rotate gesture. The device 800 (e.g., the first processor) determines the wrist raise and / or wrist rotate gesture based on the motion input and then causes the display 804 to be turned on. For example, the display 804 displays a user interface with a current time of 12:45.

[0202] In some examples, turning on display 804 causes one or more microphones of device 800 to turn on. Accordingly, in some examples, an audio input 806 is sampled in accordance with turning on display 804. For example, after user 802 initiates a wrist raise gesture, device 800 turns on display 804 and one or more microphones and samples the audio input 806, "What's the weather like in Palo Alto?" with one or more microphones. Although turning on display 804 (and thus turning on one or more microphones) is described in some examples as being based on a motion input, in other examples, turning on display 804 is based on an input other than or in addition to the motion input. For example, in some examples, turning on display 804 is based on a tactile input (e.g.,a touch of the display 804, a button press on the device 800) or an audio input (e.g., receiving an audio input of sufficient amplitude).

[0203] As an example of the techniques described above, the first processor of device 800 continuously samples a motion input and detects a motion input representing a wrist raise and / or wrist rotate gesture of device 800. In response to detecting the motion input representing the wrist raise and / or wrist rotate gesture, the display 804 and one or more microphones of device 800 are turned on, and the first processor activates the second processor. The second processor samples the audio input (e.g., "What's the weather like in Palo Alto?") using the one or more microphones. In this way, the display 804, the one or more microphones, and the second processor of device 800 are turned off (or placed in a power-saving mode) when the user 802 is unlikely to issue voice commands (e.g.,when the device 800 is in a lowered position), thereby saving battery power.

[0204] In Fig. 8C, user 802 lifts device 800 to a raised position, as shown. For example, user 802 lifts device 800 near their mouth (e.g., lifts it from a raised position). In some examples, device 800 is relatively stable in a raised position (e.g., because user 802 is no longer lifting device 800). As explained, device 800 also samples audio input 806, "What's the weather like in Palo Alto?" provided by user 802 (e.g., by user 802 shortly after lifting device 800 to a raised position). Device 800 determines whether to initiate a virtual assistant session based on audio input 806 and based on the motion input, in accordance with example techniques discussed below. When the device 800 determines to initiate a virtual assistant session, a virtual assistant session is initiated (e.g.,by displaying a virtual assistant user interface on the display 804), as shown.

[0205] In some examples, the sampled audio input does not include a spoken trigger. For example, the audio input 806 "What's the weather in Palo Alto?" does not include a spoken trigger to initiate a virtual assistant, such as "Hey Siri." Accordingly, in some examples, a user simply utters a request to a virtual assistant (e.g., while picking up a device, or just before or after picking up a device) to cause the virtual assistant to initiate and respond to the user request.

[0206] In some examples, determining whether to initiate a virtual assistant session includes determining whether one or more criteria for initiating a virtual assistant session are met. In some examples, determining whether to initiate a virtual assistant session includes determining a probability of initiating a virtual assistant session. For example, if a criterion for initiating a virtual assistant session is met, a probability of initiating a virtual assistant session is increased. If a criterion for initiating a virtual assistant session is not met, the probability of initiating a virtual assistant session is decreased.In some examples, a determination is made to initiate a virtual assistant session when the probability of initiating the virtual assistant session is greater than a predetermined threshold and / or when one or more criteria for initiating the virtual assistant session are met.

[0207] In some examples, one or more of the above determinations are performed by a motion model, an audio model, and / or a virtual assistant initiation model (e.g., a raise-to-speak model). For example, a motion model determines a probability of initiating a virtual assistant session based on a motion input and makes a determination to initiate the virtual assistant session. An audio model determines a probability of initiating a virtual assistant session based on an audio input and makes a determination to initiate the virtual assistant session. An example motion model, an example audio model, and an example virtual assistant initiation model are described with reference to Fig. 9 explained below.

[0208] In some examples, the respective probabilities and respective determinations for initiating the virtual assistant session determined by the motion model and the audio model are separate. Accordingly, in some examples, a virtual assistant session is initiated in response to both the motion model and the audio model determining to initiate the virtual assistant session. In other examples, a virtual assistant session is initiated in response to either the motion model or the audio model, whichever determines to initiate the virtual assistant session. Thus, in some examples, two separate determinations (e.g., one based on a motion input and one based on an audio input) are used to initiate a virtual assistant session.

[0209] Example criteria for initiating a virtual assistant session are discussed below.

[0210] An example criterion includes whether an electronic device switches between two or more positions. An example switch is from a lifting position to a raised position, as in Fig. 8B and Fig. 8C. In some examples, if a transition from a lifting position to a raised position is determined, a criterion is met. In some examples, if a transition from a lifting position to a raised position is not determined, a criterion is not met. In this way, detecting a transition from a lifting position to a raised position (e.g., an arm / wrist movement to bring the device close to a user's mouth) may be an important criterion in determining whether to initiate a virtual assistant session.

[0211] Another example change is from a raised to a lowered position. An example lowering position of an electronic device is shown in Fig. 8E. In some examples, when a transition from a raised position to a lowered position is determined, a criterion is not met. Thus, if the movement of device 800 includes, for example, lowering the user's wrist, a virtual assistant is not initiated in some examples.

[0212] An exemplary criterion includes whether the respective times of transitions between positions are within a predetermined time. For example, a first time of transition from a raising position to a raised position is determined (e.g., when the device 800 first enters a raised position from a raising position) and a second time of transition from a raised position to a lowering position (e.g., when the device first enters a raised position from a lowering position). If the first time is within a predetermined duration (e.g., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2 seconds) of the second time, a criterion is not met. If the first time is not within the predetermined duration, a criterion is met.In this way, if the duration between a transition from a raising to a raised position and a transition from a raised to a lowered position is relatively short, a virtual assistant session will not be initiated. This prevents, in some examples, inadvertent initiation of the virtual assistant due to movements including transitions between raising to raised to lowered positions (e.g., while running, performing arm exercises, etc.). It should be understood that comparing the respective times of transitions between any positions in this manner is consistent with the teachings herein.

[0213] Example criteria also include corresponding durations of positions. For example, a duration of a raised position is determined and compared to a predetermined duration (e.g., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2 seconds). In some examples, if the duration of the raised position exceeds the predetermined duration, a criterion is met. In some examples, if the duration of the raised position does not exceed the predetermined duration, a criterion is not met. In this way, the stability of the electronic device in a raised position is considered when deciding whether to initiate the virtual assistant session (e.g., if the user 802 raises the device 800 near their mouth and makes a request, the device is likely to remain in the raised position for more than a predetermined duration).Although the above description focuses on the duration of a raised position, in some examples the duration of each position (e.g., lowered, raising, raised, lowering) is considered in a similar manner.

[0214] Example criteria also include corresponding durations of transitions between positions. For example, a duration of a transition from a raising to a raised position is determined and compared to a predetermined duration (e.g., 1 second, 2 seconds, 5 seconds). If the duration of a transition from a raising to a raised position exceeds the predetermined duration, a criterion is not met. If the duration of a transition from a raising to a raised position does not exceed the predetermined duration, a criterion is met. By comparing the duration of a transition from a raising to a raised position with a predetermined duration in this way, it can be ensured that transitions from a raising to a raised position of an appropriate duration initiate the virtual assistant session. For example, if the user 802 takes too long (e.g.,If the duration of a transition (e.g., 3, 4, 5, 6, 7, 8, 9, 10 seconds) is required to move the device 800 from the raising position to the raised position, it is unlikely that the user will lift the device 800 to issue a command, so the virtual assistant session is not initiated. Although the above discussion focuses on the duration of a transition from a raising position to a raised position, in some examples, the duration of the transition between any two positions (e.g., lowered to raising, lowered to raised) is considered analogously.

[0215] An example criterion also includes whether the audio input includes human speech. For example, a determination is made as to whether the audio input includes human speech. If the audio input includes human speech, a criterion is met. If the audio input does not include human speech, a criterion is not met. In this way, inadvertent initiation of a virtual assistant session in response to receiving audio input that does not include human speech (e.g., background noise) is avoided. For example, if the user 802 is in a noisy environment and raises the device 800 from a raised to a raised position (e.g., to check the time, respond to a message, etc.) without making a spoken request to the device 800, a virtual assistant should not inadvertently launch.

[0216] In some examples, determining whether the audio input includes human speech includes performing a frequency domain analysis of the audio input. For example, a spectrogram of the audio input is generated (e.g., using a Fourier transform) and the spectral components of the audio input are analyzed to determine whether at least a portion of the audio input corresponds to human speech. It is understood that in some examples, any suitable technique for determining whether an audio input includes human speech is used in accordance with the teachings herein.

[0217] An example criterion includes whether the audio input includes human speech spoken by an authorized user of a device. In some examples, the authorized user is a user closely associated with the device sampling the audio input (e.g., the owner or primary user of the device). In some examples, the authorized user is one of a limited set of registered users who share the user device. A determination is made as to whether an audio input includes human speech spoken by an authorized user. If the audio input includes human speech spoken by an authorized user of the device, a criterion is met. If the audio input does not include human speech spoken by an authorized user of the device, a criterion is not met.In this way, inadvertent activation of a virtual assistant session in response to receiving non-human speech audio input from an authorized user is avoided. For example, if the user 802 is in an environment that includes background speech (e.g., chatter) and raises the device 800 from a raised position to a raised position (e.g., to check the time, respond to a message, etc.) without making a spoken request to the device 800, a virtual assistant should not inadvertently launch.

[0218] In some examples, determining whether an audio input includes human speech spoken by an authorized user includes performing speech authentication. For example, the characteristics of the audio input are compared to those of one or more language models (e.g., Gaussian mixture models, hidden Markov models, neural networks, and the like). In some examples, the one or more language models include a predetermined universal background model and a predetermined authorized user language model. In some examples, the predetermined authorized user language model is based on authorized user speech (e.g., authorized user speech received prior to sampling the audio input).It is understood that in some examples, any suitable technique for determining whether an audio input includes human speech spoken by an authorized user is used in accordance with the teachings herein.

[0219] An example criterion includes a direction associated with the audio input. For example, a direction associated with the audio input is determined. If the audio input has a direction toward the device (e.g., toward one or more microphones or toward a screen of the device), a criterion is met. If the audio input has a direction away from the device (e.g., away from one or more microphones or away from a screen of the device), a criterion is not met. In this way, inadvertent activation of the virtual assistant in response to receiving audio input that is not directed toward the device (e.g., from another person standing adjacent to user 800) may be prevented. It should be understood that in some examples, any suitable sound localization technique (e.g., beamforming) used in accordance with the teachings herein is used.

[0220] An example criterion includes proximity of an audio input to an electronic device. For example, a proximity of the audio input to an electronic device is determined and compared to a threshold proximity (e.g., 2 cm, 5 cm, 10 cm, 15 cm, or 20 cm). If the determined proximity is less than or equal to the threshold proximity, a criterion is met. If the determined proximity is greater than the threshold proximity, a criterion is not met. In this way, audio input originating from a source near the device is considered a cue to initiate the virtual assistant session. Audio input originating from a source not near the device (e.g., from another person not within the threshold proximity of the device 800) must not inadvertently initiate a virtual assistant session.

[0221] In some examples, determining the proximity of the audio input to an electronic device is based on the amplitude of the audio input. In some examples, the amplitude of the audio input is analyzed within a particular spectral range (e.g., a frequency range characteristic of human speech) to determine the proximity of the audio input. In some examples, determining the proximity of the audio input is alternatively or additionally based on other acoustic characteristics of the audio input. For example, audio inputs originating from more distant sources often contain a greater degree of echo construction than audio inputs originating from closer sources. Accordingly, in some examples, audio inputs are analyzed to determine a degree of echo to determine the proximity of the audio input.

[0222] An example criterion includes a duration of the audio input. For example, a duration of an audio input is determined and compared to a predetermined duration (e.g., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.5, 2 seconds). In some examples, the duration of the audio input is the duration during which the audio input is within a predetermined amplitude and / or frequency range (e.g., an amplitude and / or frequency range typical of human speech and noise). If a duration of the audio input is greater than the predetermined duration, a criterion is met. If a duration of the audio input is less than the predetermined duration, a criterion is not met. Thus, in some examples, the virtual assistant session is not triggered by an audio input that is too short (e.g., one that is unlikely to be a spoken request).For example, if the user 802 raises the device 800 from a lifting position to a raised position to cover their mouth while coughing or sneezing (e.g., a brief audio input), the cough or sneeze will not inadvertently trigger a virtual assistant.

[0223] An exemplary criterion is based on the respective times associated with sampling audio input and a transition between positions. For example, an exemplary criterion includes whether the respective times associated with sampling the audio input and a transition between positions are within a predetermined duration. For example, the audio input is sampled at a first time (e.g., timing device 800 samples input 806 "What is the weather in Palo Alto?") and the transition of the device from a raising to a raised position has a second time (e.g., the time at which user 802 moves device 800 to the position shown in Fig. 8C). If the first time point is within a predetermined duration (e.g., 0.5 seconds, 1 second, 1.5 seconds, 2 seconds, 5 seconds) of the second time point, a criterion is met. If the first time point is not within a predetermined duration of the second time point, a criterion is not met. In this way, audio input sampled within a reasonable amount of time after detecting a transition from raising to raised is considered an indication of virtual assistant initiation. In some examples, this prevents inadvertent activation of the virtual assistant based on motion and audio input not occurring at approximately the same time.For example, if the user 802 lifts the device 800 from the lifting position to the raised position and then does not provide the audio input until well after the lifting, it is unlikely that the audio input will be directed to the device 800.

[0224] An example criterion includes whether respective times of separate determinations to initiate the virtual assistant session fall within a predetermined duration. For example, separate first and second determinations to initiate the virtual assistant session are made at the first and second times, respectively (e.g., at the respective times at which one or more criteria for initiating a virtual assistant session are met). In some examples, a motion model makes the first determination and the audio model makes the second determination (recall that in some examples, motion and audio models make respective determinations to initiate the virtual assistant session). If the first time is within a predetermined duration (e.g., 0.5 seconds, 1 second, 1.5 seconds, 2 seconds, 5 seconds) of the second time, a criterion is met.If the first time point is not within the predetermined duration of the second time point, a criterion is not met.

[0225] Accordingly, in some examples, initiating a virtual assistant session is based on detecting synchronous or near-synchronous motion and audio input suitable for initiating the virtual assistant session. Thus, inadvertent initiation based on motion input and / or audio input alone may be prevented, even though the motion input and / or audio input may each be suitable for initiating the virtual assistant (e.g., meet one or more criteria for doing so). Providing for activation of a virtual assistant in this manner thus provides an efficient and intuitive way to initiate a virtual assistant session while reducing the possibility of false initiation. For example, as in Fig. 8A-C, to initiate the virtual assistant session on device 800, user 802 lifts device 800 through the illustrated postures and provides audio input 806 "What's the weather like in Palo Alto?" shortly after lifting device 800 (or during or shortly before lifting device 800).

[0226] In some examples, the determination of whether to initiate a virtual assistant session is based on input other than or in addition to the motion and audio input described above. For example, it is determined whether these other inputs meet one or more criteria to initiate a virtual assistant session. Analogous to the techniques discussed above, in some examples, a probability to initiate a virtual assistant session is determined based on whether the one or more criteria are met. In some examples, a determination to initiate a virtual assistant session is made if the probability exceeds a threshold. In some examples, a model for initiating a virtual assistant session (e.g., a raise-to-speak model) performs one or more of these determinations.An example model for initiating a virtual assistant session is described below with reference to . Fig. 9 explained.

[0227] In some examples, an electronic device includes one or more light sensors (e.g., an ambient light sensor, a camera, and the like) on a front and / or a back surface of the device. An amount of light detected by the light sensor is compared to a threshold. If the amount of light is greater than a threshold, a criterion for initiating the virtual assistant is not met. If the amount of light is less than a threshold, a criterion for initiating the virtual assistant is met. For example, when the user 802 raises the device 800 to a raised position to speak to it, a front surface (e.g., the surface of the display 804) of the device 800 is closer to the user's lips. Accordingly, a front-facing light sensor of the device 802 detects a lower amount of light (e.g.,less than the predetermined threshold) compared to when the device 800 is in a lowered position (e.g. . Fig. 8A). In this way, a lower amount of light (e.g., indicating that a device is closer to a user's face) is considered a cue to initiate a virtual assistant session.

[0228] In some examples, an electronic device includes one or more color sensors (e.g., a camera, any suitable RGB color sensor) on a front and / or back surface of the device. The colors detected by the one or more color sensors are compared to predetermined colors (e.g., colors of human skin, human lips, and the like). If the detected colors match the predetermined colors (e.g., are within a predetermined wavelength), a criterion for initiating a virtual assistant is met. If the detected colors do not match the predetermined colors, a criterion for initiating a virtual assistant session is not met. For example, when the user 802 raises the device 800 to a raised position to speak to it, a front surface of the device 800 is close to the user's lips.Accordingly, a front-facing color sensor of device 800 detects color(s) that match the predetermined color(s). Thus, the detection of colors indicative of human skin and / or lips is considered an indication to initiate a virtual assistant session.

[0229] In some examples, an electronic device includes one or more cameras on a front and / or a back surface of the device. The facial features captured by one or more cameras (e.g., chin shape, mouth shape, face shape, etc.) are compared to predetermined facial features (e.g., human facial features, the facial features of an authorized user). If the captured facial features match the predetermined facial features, a criterion for initiating a virtual assistant is met. If the captured facial features do not match the predetermined facial features, a criterion for initiating the virtual assistant is not met. For example, when the user 802 lifts the device 800 to a raised position to speak to it, a front surface of the device 800 faces toward the user's face.Accordingly, a front-facing camera of the device 800 captures facial features that match predetermined facial features.

[0230] In some examples, one or more microphones of an electronic device emit signals (e.g., ultrasonic signals), and the one or more microphones detect signals reflected due to the emitted signals. In some examples, the detected signals are used to determine whether one or more criteria for initiating a virtual assistant are met. For example, if the detected signals indicate an object (e.g., a human face, human lips) within a threshold proximity (e.g., 2 cm, 5 cm, 10 cm, 20 cm) of the device, a criterion is met. If the detected signals indicate an object that is not near the device, a criterion is not met. In this way, the detection of nearby objects is considered an indication for initiating a virtual assistant session.

[0231] In some examples, an electronic device includes one or more proximity sensors on a front and / or back surface of the device. The one or more proximity sensors include any suitable proximity sensor (e.g., capacitive, photoelectric, inductive, time-of-flight, etc.). Inputs sensed by the one or more proximity sensors are analyzed to determine if they represent an indication to initiate a virtual assistant session. For example, if input from one or more proximity sensors indicates that the device is approaching an object (e.g., a user's face / mouth), a criterion is met. If input from one or more proximity sensors indicates that the device is moving away from an object, a criterion is not met.As another example, a criterion is met when input from one or more proximity sensors indicates that the device is within a threshold proximity (e.g., 2 cm, 5 cm, 10 cm, 20 cm) of an object.

[0232] In some examples, a virtual assistant interaction context (e.g., a user's context (e.g., sleeping, in a car, etc.) and information about a previous state of the virtual assistant) is taken into account when determining whether to initiate a virtual assistant. The virtual assistant interaction context provides additional device and / or user information that may be useful in determining whether to initiate a virtual assistant session. For example, if a user is asleep (e.g., as determined by time of day, motion inputs, user display, etc.), a virtual assistant session is less likely to be triggered than if the user were awake.

[0233] Example virtual assistant interaction contexts are discussed below. In some examples, a probability to initiate a virtual assistant session is determined based on a virtual assistant interaction context. In some examples, each of these determinations is performed by a virtual assistant initiation model (e.g., a raise-to-speak model).

[0234] An example virtual assistant interaction context includes a time at which the virtual assistant session was previously initiated. In some examples, if the time at which the virtual assistant session was previously initiated is within a threshold duration (e.g., 30 seconds, 1 minute, 5 minutes, etc.) of a current time, the probability of initiating the virtual assistant session is increased. In some examples, if the time at which the virtual assistant session was previously initiated is within the threshold duration of a current time, the probability of initiating the virtual assistant session is reduced.

[0235] An example virtual assistant interaction context includes whether previous sensor inputs (e.g., any of the sensor inputs discussed above) represent a near initiation of a virtual assistant session or a near initiation of a virtual assistant session. For example, a probability of initiating the virtual assistant session is determined based on one or more previous sensor inputs. If the probability exceeds a threshold probability of initiating the virtual assistant session by less than a first amount (e.g., a small amount), the one or more previous sensor inputs represent a near initiation. If the probability exceeds a threshold probability of initiating the virtual assistant session by at most a second amount (e.g.,a small amount) is less than the threshold probability for initiating the virtual assistant session, the one or more preceding sensor inputs represent a near initiation.

[0236] An example virtual assistant interaction context includes a time associated with a near initiation of the virtual assistant session. In some examples, a time associated with the near initiation of the virtual assistant session is compared to a current time (e.g., a time at which the current input is sampled). The time associated with the near initiation is, for example, the time at which the one or more previous sensor inputs (representing the near-miss initiation) were sampled or the time at which the probability associated with the one or more previous sensor inputs was determined. In some examples, if the time associated with a near initiation of the virtual assistant session is within a predetermined duration (e.g., 5 seconds, 15 seconds, 30 seconds, 1 minute, 5 minutes, etc.) of a current time, the probability of initiating a virtual assistant session is increased. In this way, recent previous inputs that narrowly missed initiating a virtual assistant session indicate that, in some examples, the virtual assistant session should be initiated more easily based on the current input. In other examples, a probability of initiating a virtual assistant session is decreased when the time associated with a near initiation of the virtual assistant session is within the predetermined duration of a current time. Note that comparing the time associated with a near initiation of the virtual assistant session to a current time in an analogous manner (e.g.,to increase or decrease a probability of initiating a virtual assistant) is consistent with the teachings herein.

[0237] An example virtual assistant interaction context includes a domain associated with a previous input (e.g., text or spoken input) provided to the virtual assistant. For example, it is determined whether a domain associated with the previous input is a predetermined domain type. If the domain is the predetermined domain type, the probability of initiating a virtual assistant session is increased. If the domain is not a predetermined domain type, the probability of initiating the virtual assistant session is decreased (or remains unchanged).

[0238] In some examples, the predetermined domain type is a domain configured to enable multi-turn virtual assistant interaction. A multi-turn virtual assistant interaction includes a virtual assistant interaction in which inputs are provided to the virtual assistant and the virtual assistant responds to the inputs, for example, by triggering further inputs. For example, the "Send a message" domain is configured to enable the "Send message to whom?" response (e.g., triggering further user inputs) in response to the provided "Send a message" input. Accordingly, if a domain associated with a previous input is configured to enable multi-turn interaction, the user may likely intend to initiate a virtual assistant session to provide further input.So, in some examples, if a domain associated with a previous input is configured to enable multi-turn interaction, the likelihood of initiating a virtual assistant session is increased.

[0239] An example interaction context of the virtual assistant includes a previous state of the virtual assistant. For example, a state of a virtual assistant represents whether the virtual assistant is waiting for further input. For example, if the virtual assistant was previously waiting for a response to the output "Send message to whom?", the previous state is a first state. For example, if the virtual assistant was not previously waiting for a response (e.g., the virtual assistant provided an output such as "It is sunny today"), the previous state is a second state. In some examples, a previous state of the virtual assistant is determined. In some examples, if the previous state is the first state, a probability of initiating the virtual assistant is increased.In some examples, if the previous state is the second state, a probability of initiating the virtual assistant is reduced. In some examples, if a previous state of the virtual assistant indicates that the virtual assistant is waiting for a response, a virtual assistant is more easily initiated.

[0240] An example interaction context of the virtual assistant includes contextual information (e.g., any of the contextual information discussed above). In some examples, an activity context of the device and / or user (e.g., whether the user is walking, sitting in a car, sleeping, at home, at work, at the movies, in a meeting, etc.) is determined from the contextual information. Certain activity contexts may indicate that a user is more or less likely to initiate a virtual assistant. Accordingly, in some examples, a probability of initiating a virtual assistant is increased or decreased based on the determined activity context. For example, if it is determined that a user is in a meeting (e.g.,based on a current time stored in a user's schedule within a meeting period), the likelihood of initiating a virtual assistant is reduced (e.g., because the user may not want to be interrupted by an initiated virtual assistant during the meeting).

[0241] In some examples, a virtual assistant session is initiated in accordance with a determination to initiate a virtual assistant session. For example, Fig. 8C, initiating a virtual assistant session includes displaying a user interface associated with the virtual assistant session (e.g., on display 804). However, in some examples, initiating a virtual assistant session does not include displaying a user interface of the virtual assistant. For example, in some examples, a virtual assistant session is initiated while display 804 is off. Another example description of initiating a virtual assistant is included in U.S. Patent Application No. 14 / 841,449, entitled "Virtual Assistant Activation," filed August 31, 2015, the contents of which are hereby incorporated by reference in their entirety.

[0242] In some examples, initiating a virtual assistant session includes providing audio output (e.g., device 800 provides audio output to indicate that the virtual assistant is listening). In some examples, initiating a virtual assistant session includes providing haptic output (e.g., a buzzer or vibration). In some examples, initiating a virtual assistant session includes turning on processor circuitry (e.g., main processor circuitry) configured to operate a virtual assistant. In some examples, initiating a virtual assistant includes initiating one or more programs or modules (e.g., digital assistant module 726).

[0243] In some examples, in accordance with the determination not to initiate a virtual assistant session, a virtual assistant session is not initiated. For example, none of the aforementioned processes associated with initiating a virtual assistant session are performed, and a display screen is turned off and / or a user interface other than a virtual assistant user interface (e.g., a user interface displaying a current time) is displayed (or continues to be displayed).

[0244] Fig. 8D shows a virtual assistant initiated on device 800 providing a response to audio input 806. Specifically, after user 802 provides audio input 806 "What's the weather like in Palo Alto?" (and device 802 samples it), the initiated virtual assistant session provides the response "It's 70 degrees Fahrenheit and it's sunny."

[0245] Accordingly, in some examples, in accordance with a determination to initiate a virtual assistant session, a user intent is determined based on an audio input, a task is performed based on the user intent, and an output associated with the task is provided. For example, as in Fig. 8D, a user intent is determined for the audio input 806, "What's the weather like in Palo Alto?", a task (e.g., retrieving weather information) is performed, and an output associated with the task is provided. For example, the device 800 displays the response "It's 70 degrees Fahrenheit and it's sunny" on the display 804. Optionally, the device 800 provides the audio output 808 "It's 70 degrees Fahrenheit and it's sunny." Example techniques for determining user intents and performing tasks based on the particular intent used are described above with reference to Fig. 7A-C explained.

[0246] In some examples, according to initiating a virtual assistant session on a device, the motion input and the audio input are provided to train a virtual assistant initiation model (e.g., raise-to-speak model). In some examples, additional inputs (e.g., inputs other than motion inputs and audio inputs) and / or virtual assistant interaction contexts are provided to train the model (e.g., if it has been determined that the virtual assistant session is initiated based on the additional input and / or context). For example, the model is implemented on the device and / or on another electronic device (e.g., server system 108), and the model is trained using the motion input, audio input, additional input, and / or virtual assistant interaction context as training data.Accordingly, inputs and / or interaction context of the virtual assistant that successfully initiated a virtual assistant session are used to train the model, thereby increasing the likelihood of successful initiation and reducing the likelihood of accidental initiation. Example techniques for training a model to initiate a virtual assistant are described with reference to [1]. Fig. 9 explained below.

[0247] In some examples, the virtual assistant's inputs and / or interaction context are not provided for training a virtual assistant initiation model. For example, the virtual assistant's inputs and / or interaction context are discarded.

[0248] In some examples, providing the virtual assistant inputs and / or interaction context to train a model for initiating a virtual assistant is performed in accordance with providing an output associated with the task. For example, after device 800 provides the audio output 808 "It is 70 degrees Fahrenheit and it is sunny," motion input and audio input 806 are provided to train a model. Providing motion input and audio input in this manner can further ensure that appropriate inputs are used to train the model. For example, if user 802 inadvertently initiates the virtual assistant session, they can deactivate the virtual assistant session before device 800 provides output 808.Accordingly, if output 808 is provided, it is likely that the user intended to initiate the virtual assistant session. Thus, correct inputs for initiating a virtual assistant session are provided to train the model.

[0249] In some examples, providing the virtual assistant inputs and / or interaction context for training a model for initiating a virtual assistant is performed upon determining that the virtual assistant session is initiated (e.g., a virtual assistant user interface is displayed for more than the predetermined duration) for more than a predetermined duration (e.g., 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 seconds). Providing inputs and / or context in this manner may further ensure that appropriate inputs and / or contexts are used to train the model. For example, if user 802 inadvertently initiates a virtual assistant session, the user may deactivate the virtual assistant session before the predetermined duration has elapsed.Accordingly, if the predetermined duration has elapsed, it is likely that user 802 intended to initiate the virtual assistant session. Thus, correct inputs and / or context for initiating a virtual assistant session are provided to train the model. Example techniques for deactivating a virtual assistant session are described with reference to FIG. Fig. 8D and Fig. 8E described below.

[0250] In some examples, the virtual assistant inputs and / or interaction context that inadvertently initiate a virtual assistant session (e.g., incorrect inputs and / or context) are provided to train a virtual assistant initiation model. For example, incorrect inputs and / or context train the model so that the model does not inadvertently initiate the virtual assistant session based on future incorrect inputs and / or context. Accordingly, in some examples, providing the virtual assistant inputs and / or interaction context to train a model to initiate a virtual assistant session is performed in accordance with determining that the inputs and / or context are incorrect for initiating a virtual assistant session.

[0251] In some examples, determining whether one or more inputs and / or the context for initiating a virtual assistant session are incorrect includes determining whether to deactivate the virtual assistant session based on one or more inputs and / or the context. For example, if it is determined to deactivate a virtual assistant session based on the motion and / or audio input according to the techniques described below, it is determined that the motion and / or audio inputs for initiating a virtual assistant session are incorrect.

[0252] In some examples, determining whether one or more inputs and / or the context for initiating a virtual assistant session is incorrect includes determining (e.g., by the digital assistant module 726) whether user feedback indicates dissatisfaction with the initiation of the virtual assistant. In some examples, user feedback indicating dissatisfaction with the virtual assistant session includes verbal and / or textual user input provided to the initiated virtual assistant (e.g., user inputs such as "Not now," "Why are you here?", "Go away," and the like). In some examples, user feedback indicating dissatisfaction with the initiation of the virtual assistant includes user input that deactivates the virtual assistant session after the virtual assistant session is initiated (e.g., briefly (e.g.,0.5, 1, 2, 3, 4, 5 seconds) afterward). A user input that disables the virtual assistant session includes, in some examples, a key press, a spoken input, and / or a gesture input.

[0253] Fig. 8E illustrates example techniques for deactivating a virtual assistant session. Specifically, user 802 has lifted device 800 from a raised position to a raised position and provides the audio input "Tina's vacation starts this Sunday, and she is flying to Hawaii with her husband to see volcanoes and dolphins on the beach...". In this example, the audio input is not directed to device 800, but rather to another person with whom user 802 is speaking (e.g., a person standing to the left of user 802 and whom user 802 is facing). However, based on the motion input and the audio input, a virtual assistant session is inadvertently initiated. For example, a virtual assistant user interface is displayed on display 804. In the present example, the virtual assistant session is deactivated after it has been initiated (e.g.,the display 804 ceases to display a virtual assistant user interface) according to the techniques discussed below.

[0254] In some examples, disabling a virtual assistant session includes stopping display of a user interface associated with the virtual assistant session. In some examples, disabling a virtual assistant session includes refraining from responding to audio input. In some examples, disabling a virtual assistant session includes turning off a display. In some examples, disabling a virtual assistant session includes providing audio and / or haptic output. In some examples, disabling a virtual assistant session includes turning off processor circuitry (e.g., main processor circuitry) configured to operate a virtual assistant. In some examples, disabling a virtual assistant includes disabling one or more programs or modules (e.g.,of the digital assistant module 726).

[0255] In some examples, deactivating a virtual assistant session and / or determining whether to deactivate a virtual assistant session is performed before displaying a user interface associated with the virtual assistant session. In other examples, deactivating a virtual assistant session and / or determining whether to deactivate a virtual assistant session is performed after displaying a user interface associated with the virtual assistant session.

[0256] In some examples, determining whether to deactivate a virtual assistant session includes determining whether one or more criteria for deactivating a virtual assistant session are met. In some examples, determining whether to deactivate a virtual assistant session includes determining a probability of deactivating a virtual assistant session. For example, if a criterion for deactivating a virtual assistant session is met, the probability of deactivating a virtual assistant session is increased. If a criterion for deactivating a virtual assistant is not met, the probability of deactivating a virtual assistant session is decreased.In some examples, a determination is made to deactivate a virtual assistant session when the probability of deactivating the virtual assistant session is greater than a predetermined threshold and / or when one or more criteria for deactivating the virtual assistant session are met. In some examples, any of the above determinations are performed using one or more models for deactivating a virtual assistant session (e.g., an audio model, a motion model, a raise-to-speak model).

[0257] Additionally, in some examples, each of the techniques for deactivating a virtual assistant session discussed below is applied analogously in determining whether to initiate a virtual assistant session. For example, if one or more of the criteria for deactivating a virtual assistant session described below are met (e.g., as determined by a motion model, an audio model, and / or a raise-to-speak model), a virtual assistant is not initiated and / or a likelihood of initiating a virtual assistant session is reduced. Similarly, in some examples, all of the techniques discussed above for determining that a virtual assistant session should not be initiated are applied analogously in determining whether to deactivate a virtual assistant session.For example, if one or more of the criteria described above for initiating a virtual assistant session are not met, a virtual assistant session will be deactivated and / or a likelihood of deactivating a virtual assistant session will be increased.

[0258] Example criteria for deactivating a virtual assistant session are now explained.

[0259] An example criterion includes whether the content of the audio input indicates that the audio input is directed to a device. Audio inputs that are unlikely to be directed to the device should, in some examples, deactivate the virtual assistant session. Example audio content analyzed (e.g., by device 800 and / or server system 108) to determine whether the audio input is directed to a device includes linguistic content (e.g., sentence structure, sentence length, whether words and / or keywords are included, sentence type (e.g., question or instruction), and the like) and whether the device can perform a task specified in the audio input. For example, based on the linguistic content, the audio input "Tina's vacation starts this Saturday and she is flying to Hawaii with her husband to see volcanoes and dolphins on the beach..."" is determined to be likely not directed to the device. According to a determination that the audio input is likely not directed to the device, a criterion for deactivating a virtual assistant session is met. Accordingly, in some examples, the virtual assistant session is deactivated (e.g., server system 108 sends a control signal to device 800 instructing device 800 to deactivate a virtual assistant session).

[0260] In some examples, a criterion for deactivating a virtual assistant session is not met according to a determination that the audio input is likely directed to the device. Accordingly, in some examples, a virtual assistant session is not deactivated (e.g., a virtual assistant user interface is displayed, the device samples audio input, and the like).

[0261] An example criterion includes whether an intent for the audio input can be determined (e.g., with sufficient certainty by device 800 and / or by server system 108). For example, certain audio inputs (e.g., coughs, sneezes, long sentences, short expressions such as "uhm," "yay," and the like) cannot be determined as corresponding intents, or the respective confidence values ​​of the determined intents are low (e.g., less than a predetermined threshold). Accordingly, in some examples, these audio inputs should disable a virtual assistant session. Thus, in some examples, if an intent for an audio input cannot be determined, a criterion is met. In some examples, if a confidence value of an intent for the audio input is low, a criterion is met. In some examples, if an intent for an audio input is determined, a criterion is not met.In some examples, if a confidence value of an intent for the audio input is high (e.g., greater than a predetermined threshold), a criterion is not met.

[0262] An example criterion includes a duration of the audio input. For example, short audio inputs (e.g., coughs, sneezes, short expressions such as "uhm," "yay," and the like) are unlikely to be directed to a device, so such audio inputs should disable a virtual assistant session. Accordingly, in some examples, an audio input duration is compared to a predetermined duration (e.g., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 second). If the audio input duration is shorter than the predetermined duration, a criterion is met. If the audio input duration is longer than the predetermined duration, a criterion is not met.

[0263] Fig. 8F further illustrates example techniques for deactivating a virtual assistant session. In particular, the user 802 in Fig. 8F, device 800 is raised from a raising position to a raised position and delivers the audio input "There is an important meeting on Saturday." In this example, the audio input is not directed to device 800, but rather to another person with whom user 802 is speaking. However, based on the motion input and the audio input, a virtual assistant session is inadvertently initiated. User 802 notices this unintentional initiation (e.g., sees a virtual assistant interface on display 804) and lowers device 800 from a raised position to a lowering position, as shown. For example, user 800 moves the device away from a raised position so that it is away from their mouth / face. According to such movement of device 800, the virtual assistant session is deactivated, as shown.

[0264] Accordingly, an example criterion for deactivating a virtual assistant session includes whether a motion input indicates a change from a raised position to a lowering position. In some examples, if a motion input indicates a change from a raised position to a lowering position, a criterion is met. If a motion input does not indicate a change from a raised position to a lowering position, a criterion is not met. Thus, lowering a device from a raised position to a lowering position deactivates an initiated virtual assistant session in some examples.

[0265] An example criterion includes whether a time associated with lowering a device from a raised position occurs before a time associated with the end of speech input in the audio input. For example, a first time associated with the end of speech input in the audio input “There is an important meeting on Saturday” is determined. A second time associated with changing from a raised position to a lowered position is determined. The first time is compared to the second time. In some examples, if the second time occurs before the first time, a criterion is met. In some examples, if the second time occurs after the first time, a criterion is not met.In this way, if user 802 lowers their wrist before finishing speaking, the speech input is likely not directed to device 800, thus deactivating a virtual assistant session. Example techniques for determining the end of a speech input (e.g., endpoint) in the audio input are described in U.S. Patent Application No. 14 / 846,667, filed September 4, 2015, entitled "Context-Based Endpoint Detection," and U.S. Patent Application No. 14 / 701,147, filed April 30, 2015, entitled "Robust End-Pointing of Speech Signals Using Speaker Recognition," the contents of which are hereby incorporated by reference in their entirety.

[0266] In some examples, a transition from a lowered position to a raising position is used to determine a speech endpoint in an audio input. Specifically, in some examples, the time associated with the transition of the device from a raised position to a lowered position is used to determine a speech endpoint. In some examples, the completed speech input is then processed to determine a user intent, and a task is performed based on the determined user intent in accordance with the techniques described above with respect to Fig. 7A-C. Accordingly, in some examples, the user 802 indicates that they have finished speaking by lowering the device 800, as in Fig. 8F shown. 5. Example techniques for transmitting a communication

[0267] In some examples, audio input and motion input are used to invoke device functions other than initiating a virtual assistant. These functions include, for example, answering a phone call and opening a communication channel in a communication session (e.g., a "walkie-talkie" session) with an external device. For example, when the device is in a communication session with one or more other (e.g., external) devices, a user can raise the device near their mouth as described above and provide audio input. The motion input and audio input are determined to be suitable for initiating communication with one or more other devices, and the audio input is provided (e.g., transmitted) to the one or more other devices.To communicate in this manner with other users / devices participating in a communication session with the user device, the user simply raises the device near his or her mouth and provides audio input, which is transmitted to one or the other device.

[0268] Because, in some examples, the same or a similar combination of motion input and audio input may invoke multiple device functions (e.g., initiating a virtual assistant, answering a phone call), it may be important to determine which device function to invoke. Otherwise, an audio input and a motion input with which a user intends to initiate a virtual assistant session may inadvertently cause a different function to be performed (e.g., causing another user's device to play the audio). Accordingly, in some examples, a context of the device is used to determine which device function the audio input and motion input should invoke.In this way, if the given context is suitable for initiating a virtual assistant session, the audio input and the motion input are considered when deciding whether to initiate a virtual assistant session. If the given context is suitable for answering a phone call, the audio input and the motion input are considered, for example, to determine whether to answer the phone call.

[0269] Accordingly, in some examples, a context of the electronic device is determined. It is determined whether the context is a predetermined type of context representing communication with an external electronic device. In some examples, if the context is the predetermined type of context, the detected audio inputs and the detected motion inputs are not used to determine whether to initiate a virtual assistant session, but rather to determine whether to perform another device function. In some examples, if the context is not the predetermined context, the detected audio inputs and the detected motion inputs are used to determine whether to initiate a virtual assistant session according to the techniques described above.

[0270] The context of a device is the predetermined type of context that represents, for example, communication with an external electronic device when one or more of the conditions listed below are met.

[0271] An example condition includes that the device is currently receiving a communication (e.g., a phone call, a text message, an email, a voice message, etc.) from an external electronic device. If the device is currently receiving the communication, a condition is met. If the device is not currently receiving the communication, a condition is not met. In this way, if a device is currently receiving a phone call and a user provides a motion input and an audio input, the audio input and the motion input are considered when determining whether to answer the phone call. The audio input and the motion input are not considered when determining whether, for example, to initiate a virtual assistant session. If a determination is made to answer the phone call, the audio input is sent, for example, to an external device (e.g.,the caller's device). This allows a user to simply raise their device and provide audio to both answer the phone call and cause the audio to be transmitted to the caller's device.

[0272] An example condition includes that the device recently received a communication (e.g., a phone call, a text message and email, a voice message, etc.) from an external electronic device. For example, when a device receives a communication, a condition is met for a short period of time (e.g., 1, 2, 3, 4, 5, 10, 15, 30 seconds) after receiving the communication. After the short period of time has elapsed, a condition is not met. Accordingly, in some examples, if a user provides motion input and audio input shortly after receiving a message (e.g., a text or email), the motion and audio input are considered when determining whether to respond to the message. The motion input and audio input are not considered when determining whether to initiate a virtual assistant session.This allows the user, upon receiving a message (e.g., text or email), to respond to the message by simply raising their device and providing audio input shortly after receiving the message. In some examples, the audio input is converted to text, and the text is transmitted to the message sender's device.

[0273] An example condition includes that the device is currently engaged in a communication session (e.g., a "walkie-talkie" session) with an external electronic device. If the device is currently engaged in the communication session, a condition is met. If the device is not currently engaged in the communication session, a condition is not met. Accordingly, if the device is currently engaged in a communication session (e.g., one or more programs configured to provide the communication session are running) and the user provides motion input and audio input, the motion input and audio input are considered when determining whether to transmit a communication.In this way, a user can transmit audio to another device participating in a communication session with the user's device by simply raising their device and speaking the audio.

[0274] In some examples, when the context is the predetermined type of context representing communication with an external electronic device, a determination is made based on detected audio input and detected motion input whether to transmit a communication associated with the audio input to the external electronic device. In some examples, determining whether to transmit the communication is performed analogously to the techniques discussed above for determining whether to initiate a virtual assistant session (e.g., based on audio input, motion input, and / or other input(s)). That is, if motion input, audio input, and / or other input(s) are suitable for initiating a virtual assistant session, then the motion input, audio input, and / or other input(s) are similarly suitable for causing transmission of the communication.In some examples, the audio input, the motion input, and / or other input(s) are provided to a model (e.g., raise-to-speak model 924), and the model determines whether to transmit the communication.

[0275] In some examples, if the context is not the predetermined type of context representing communication with an external electronic device, a determination is made whether to initiate a virtual assistant session based on the audio input and the motion input (e.g., according to the techniques discussed above).

[0276] In some examples, in accordance with a provision to transmit the communication associated with the audio input to the external electronic device, the communication associated with the audio input is transmitted to the external electronic device. In some examples, the communication associated with the audio input includes a signal representing the audio content of the audio input (e.g., when the user answers a phone call or participates in a communication session). In some examples, the audio input is converted to text, and the communication associated with the audio input includes a signal representing the text (e.g., when the user replies to a text or email message).

[0277] In some examples, in accordance with a determination not to transmit the communication associated with the audio input to the external electronic device, transmission of the communication associated with the audio input to the external electronic device is omitted. For example, the detected audio input and the detected motion input are discarded and / or no signal is generated to be transmitted to the external electronic device.

[0278] In some examples, after determining to transmit the communication associated with the audio input to the external electronic device, a user lowers the device (e.g., from a raised position, as in Fig. 8F). In some examples, lowering the device causes one or more functions to be performed depending on the state of the device (e.g., the device is participating in a communication session, the device is answering a phone call, the device received a message, etc.). For example, lowering the device when the device is involved in a phone call causes the phone call to terminate in some examples. Accordingly, to terminate a phone call (e.g., after answering the phone call), in some examples, a user simply lowers the device.

[0279] As another example, lowering the device after the user has raised the device to respond to a message causes the message to be sent (e.g., transmitted). Thus, to respond to a message, a user can raise the device and speak a response to the message. The user's response is converted to text, and lowering the device causes the message to be sent (e.g., to the message sender).

[0280] As yet another example, when the device is participating in a communication session (e.g., a walkie-talkie session) with one or more external devices, lowering the device closes a communication channel with the one or more external devices (e.g., the captured audio input at the device is not transmitted to the one or more external devices). In this manner, to send audio to another device participating in a communication session with a user's device, the user raises their device and makes the audio available. The user can then lower their device to stop transmitting audio to the other device.

[0281] In some examples, the audio input, the motion input, and / or the particular context are provided to train a model (e.g., raise-to-speak model 924). For example, audio inputs, motion inputs, and / or a particular context that caused the transmission of a communication are provided to train the model (e.g., to successfully cause transmission of communications based on future correct audio inputs, motion inputs, and / or context). As another example, audio inputs, motion inputs, and / or the particular context that did not cause transmission of a communication are provided to train the model (e.g., to prevent inadvertent transmission of communications based on future incorrect audio inputs, motion inputs, and / or context).

[0282] In some examples, the model (e.g., model 924) that determines whether to transmit a communication associated with the audio input to an external electronic device is the same model that determines whether to initiate a virtual assistant session. Accordingly, training such a model enables the model to correctly determine whether to initiate a virtual assistant session or to perform another device function based on the provided motion input, the provided audio input, and the context. As noted, this may be desirable in examples where a same or similar combination of motion input and audio input may invoke multiple device functions.

[0283] In some examples, after determining to transmit the communication associated with the audio input to an external electronic device, transmission of the communication is prevented. This allows users to prevent the unintentional transmission of communications (e.g., if a device has mistakenly determined to transmit a communication based on audio input and motion input). For example, after determining to transmit the communication, a device issues an indication (e.g., a visual indication, an audible indication, and / or a haptic indication) for a short period of time (e.g., 1 second, 2 seconds, 3 seconds, etc.) indicating that the device will transmit the communication (e.g., after the short period of time has expired). During this short period, if a determination is made to prevent transmission of the communication, transmission of the communication is prevented (e.g.,the communication is not transmitted and / or discarded).

[0284] In some examples, determining whether to prevent transmission of the communication is performed analogously to the techniques described above for determining whether to deactivate a virtual assistant session. For example, a user lowers the device (e.g., as in Fig. 8F) during the short period of time to prevent transmission of the communication. In some examples, when transmission of the communication is prevented, the input(s) and context from which transmission of the communication was determined are considered incorrect input(s) and context. In some examples, the incorrect input(s) and / or context are provided to train a model (e.g., to prevent future incorrect determinations to transmit a communication).

[0285] Fig. 9 illustrates a block diagram of a system 900 configured to process audio inputs and motion inputs according to some examples. In some examples, the system 900 is implemented on a standalone computer system (e.g., any of the devices 104, 106, 200, 400, 600, or 800). In some examples, the system 900 is distributed across multiple devices. For example, some of the components and functions of the system 900, such as in Fig. 1, divided into a server portion and a client portion, wherein the client portion is located on one or more user devices (e.g., devices 104, 106, 200, 400, 600, or 800) and communicates with the server portion (e.g., server system 108) over one or more networks.

[0286] The corresponding functions of each of the blocks of Fig. 9, discussed below, are optionally implemented by hardware, software, or a combination of hardware and software to implement the principles of the examples described herein. It should further be understood that system 900 is only one example of a system for processing audio inputs and motion inputs, and that system 900 may include more or fewer components than illustrated, combine two or more components, or have a different configuration or arrangement of components. Further, it should be understood that although the following discussion describes functions performed on a single component of system 900, such functions may be performed on other components of system 900, and that such functions may be performed on more than one component of system 900.

[0287] The system 900 includes an input unit 902 coupled to the processing unit 916 and to the model unit 922. The input unit includes various input devices, such as one or more microphones 904, one or more accelerometers 906, and optionally one or more gyroscopes 908, one or more cameras 910, one or more color sensors 912, one or more light sensors 914, and / or one or more proximity sensors 932. The inputs collected by the respective input devices of the input unit 902 are provided to the processing unit 916 and the model unit 922.

[0288] Processing unit 916 includes one or more processors (e.g., any of processor(s) 220, 616, and 704). For example, processing unit 916 includes main processor 918 and low-power processor 920. In some examples, main processor 918 is an application processor that executes, for example, the operating system and applications, including the device's digital assistant. In some examples, low-power processor 920 consumes less power during operation than main processor 918, executes different computer-executable instructions than main processor 918, and / or is physically smaller than main processor 918.

[0289] In some examples, the low-power processor 920 samples input from the input unit 902. In some examples, the low-power processor 920 is limited in the types of inputs it samples from the input unit 902. For example, the low-power processor 920 only samples motion inputs from one or more accelerometers 906 and / or from one or more gyroscopes 908. In some examples, the low-power processor 920 is not limited in the types of inputs it samples from the input unit 902. In some examples, the low-power processor 920 activates the main processor 918 based on the input from the input unit 902, according to the examples described above.

[0290] In some examples, main processor 918 samples input from input device 902. For example, main processor 918 samples audio input from one or more microphones 904 and / or motion input from one or more accelerometers 906 and / or one or more gyroscopes 908. In some examples, main processor 918 samples audio input according to activation by low-power processor 920, according to the examples described above.

[0291] The model unit 922 includes the raise-to-speak model 924, the model training unit 930, and the context unit 934. The raise-to-speak model 924 optionally includes a motion model 926 and an audio model 928. Those skilled in the art will appreciate that, although the functions of the model unit 922 are described separately from the processing unit 916, in some examples, the functions of the model unit 922 are implemented by the processing unit 916. For example, the functions of the raise-to-speak model 924 and / or the model training unit 930 are implemented as computer-executable instructions that execute on the main processor 918 and / or on the low-power processor 920.

[0292] The context unit 934 determines a context of an electronic device. For example, the context unit 934 determines whether an electronic device context is a predetermined type of context representing communication with an external electronic device according to the techniques discussed above.

[0293] The raise-to-speak model 924 receives input from the input unit 902. In some examples, the raise-to-speak model 934 determines, based on the context determined by the context unit 924, either (1) whether to initiate a virtual assistant session or (2) whether to transmit a communication associated with the audio input to an external electronic device.

[0294] If the context of the electronic device is not the predetermined type of context, the raise-to-talk model 924 determines whether to initiate or deactivate a virtual assistant session according to the techniques discussed above (e.g., based on input from input unit 902). In some examples, the raise-to-talk model 924 determines and / or receives a virtual assistant interaction context (e.g., from digital assistance system 700) and determines to initiate or deactivate a virtual assistant session based on the virtual assistant interaction context according to any of the techniques discussed above.The raise-to-speak model 924 optionally determines whether to initiate or deactivate a virtual assistant session based on corresponding determinations by the motion model 926 and the audio model 928 to initiate or deactivate a virtual assistant session. In some examples, the raise-to-speak model 924 initiates and / or deactivates a virtual assistant session.

[0295] If the context of the electronic device is the predetermined type of context, the raise-to-speak model 924 determines whether a communication associated with an audio input should be sent to an external electronic device according to the techniques discussed above (e.g., based on input from the input unit 902). In some examples, the raise-to-speak model 924 causes the communication associated with the audio input to be transmitted to the external electronic device (e.g., using the RF circuitry 208). In some examples, in accordance with determining that a device is lowering (or has been lowered), the raise-to-speak model 924 causes one or more device functions to be performed according to the techniques discussed above.In some examples, the lift-to-talk model 924 prevents transmission of the communication according to the techniques described above.

[0296] In some examples, the lift-to-speak model 924 includes a neural network (e.g., a recurrent neural network (RNN), a convolutional neural network (CNN), and the like). In some examples, the lift-to-speak model 924 includes a decision tree (e.g., a gradient-boosted decision tree) and / or is implemented using any suitable machine learning technique.

[0297] In some examples, motion model 926 receives motion input and, based on the motion input, determines whether to perform a device function (e.g., initiating a virtual assistant session, transmitting a communication associated with an audio input) according to the examples discussed above. For example, motion model 926 determines poses of an electronic device (e.g., lowered, raising, raised, lowering) and / or corresponding pose probabilities using motion inputs. In some examples, motion model 926 further determines transitions between poses, the respective probabilities of such transitions, the respective durations of poses and pose transitions, and / or the corresponding times associated with the transitions between poses based on motion inputs.

[0298] In some examples, determining one of the above posture characteristics includes analyzing accelerometer and / or gyroscope data (e.g., over time). For example, a lowered posture (e.g., Fig. 8A) are associated with accelerometer readings that indicate, for example, little to no acceleration in one or more directions. A lifting position (e.g. Fig. 8B) is connected to accelerometer values ​​that indicate, for example, acceleration in one direction and rotational acceleration in another direction. A raised position (e.g. Fig. 8C) is associated with accelerometer readings indicating little to no acceleration in all directions after, for example, accelerometer readings corresponding to a lifting position were acquired. A lowering position (e.g. Fig. 8F) is associated with accelerometer readings indicating, for example, acceleration in one direction and rotational acceleration in another direction after, for example, accelerometer readings corresponding to a raised position have been acquired.

[0299] In some examples, the motion model 926 includes a neural network (e.g., a recurrent neural network (RNN), a convolutional neural network (CNN), and the like). In some examples, the motion model includes a decision tree (e.g., a gradient-boosted decision tree) and / or is implemented using any suitable machine learning technique.

[0300] In some examples, the motion model 926 is specific to a user (e.g., an authorized user) of an electronic device. For example, the motion model 926 is selectively trained and / or optimized to accurately determine whether to perform a device function (e.g., initiating a virtual assistant session, transmitting a communication associated with an audio input) based on motion input from a particular user. For example, if a user has long / short arms and / or a particular way of lifting a device to initiate a virtual assistant, the motion model 926 takes these user-specific characteristics into account when determining poses, pose transitions, pose durations, and the like. Accordingly, the present disclosure contemplates user registration to train and / or optimize the motion model 926.For example, during registration, a user specifies one or more device movements with which he or she wishes to effect the execution of a function, and the movement model 926 is trained based on the provided movement input.

[0301] In some examples, audio model 928 receives audio input (e.g., from one or more microphones 904) and determines whether to perform a device function (e.g., initiating a virtual assistant session, transmitting communication associated with audio input) based on the audio input, according to the examples discussed above. For example, audio model 928 is configured to, among other things, determine whether audio input includes human speech spoken by an authorized user and determine proximity of audio input to a device, according to the examples discussed above.

[0302] In some examples, the audio model 928 includes a neural network (e.g., a recurrent neural network (RNN), a convolutional neural network (CNN), and the like). In some examples, the audio model 928 includes a decision tree (e.g., a gradient-boosted decision tree) and / or is implemented using any suitable machine learning technique.

[0303] In some examples, the audio model 928 is specific to a user (e.g., an authorized user) of an electronic device. For example, the audio model 928 is optionally trained and / or optimized to accurately determine whether an audio input should cause a device function to be performed based on user-specific audio characteristics. For example, if a user has a particular manner (e.g., intonation, pitch, accent, speaking rate, etc.) of speaking to a device when intending to initiate a virtual assistant session, the audio model 928 considers these user-specific characteristics to determine whether to initiate a virtual assistant session. Accordingly, the present disclosure contemplates user registration to train and / or optimize the audio model 928.For example, during registration, a user provides audio inputs and the audio model 928 is trained and / or optimized based on the audio inputs.

[0304] In some examples, registration is performed based on audio inputs and motion inputs simultaneously, simultaneously, or in an otherwise overlapping manner. For example, a user provides simultaneous audio and motion inputs, which, in combination, the user wishes to cause a function to be performed. In some examples, the raise-to-speak model 924 is trained using the motion and audio inputs (e.g., the motion model 926 and the audio model 928 are each trained using the motion and audio inputs, respectively).

[0305] In some examples, training the raise-to-speak model 924 (e.g., based on user-specific preferences for performing a device function) includes adjusting one or more of the aforementioned time durations and / or one or more of the thresholds discussed above. For example, based on the virtual assistant interaction context, the device context, motion, audio, and / or other inputs, one or more of the time durations and / or one or more of the aforementioned thresholds are adjusted. In this way, the raise-to-speak model 924 is adjusted (e.g., over time and / or during enrollment) to cause device functions to be performed based on user-specific preferences.

[0306] The model training unit 930 is configured to train the raise-to-speak model 924 according to the examples described above. For example, the model training unit receives inputs from the input unit 902 and trains the raise-to-speak model 924 using the received inputs as training data. For example, the model training unit 930 is configured to train the motion model 926 and / or the audio model 928, e.g., based on a respective motion and audio input as training data.

[0307] If the raise-to-speak model 924 includes a neural network, training the raise-to-speak model 924 includes determining a set of optimal weight values, for example, for connections between nodes of the neural network. If the raise-to-speak model 924 includes a gradient-boosted tree model, training the raise-to-speak model 924 includes, for example, minimizing a loss function. Training the raise-to-speak model 924 in this manner increases the likelihood that audio inputs, motion inputs, other input(s), device contexts, and / or virtual assistant interaction contexts will cause the device to perform a correct function and decreases the likelihood that an incorrect function will be performed.In this way, for example, motion and audio inputs intended to initiate a communication will not inadvertently initiate a virtual assistant session. As another example, motion and audio inputs intended to initiate a virtual assistant session can correctly initiate a virtual assistant session, and inappropriate motion and audio inputs will not inadvertently initiate a virtual assistant session.

[0308] Fig. 10A-D illustrate a process 1000 for operating a digital assistant according to various examples. For example, the process 1000 is performed using one or more electronic devices (e.g., devices 104, 106, 200, 400, 600, or 800) that implement a digital assistant. In some examples, the process 1000 is performed using a client-server system (e.g., system 100), and the process blocks 1000 are distributed in any manner between the server (e.g., DA server 106) and a client device. In other examples, the process blocks 1000 are distributed between the server and multiple client devices (e.g., a mobile phone and a smart watch). While portions of process 1000 are described herein as being performed by certain devices of a client-server system, it should be understood that process 1000 is not so limited.In other examples, process 1000 is performed with only one client device (e.g., user device 104) or only with multiple client devices. In process 1000, some blocks are optionally combined, the order of some blocks is optionally changed, and some blocks are optionally omitted. In some examples, additional steps may be performed in combination with process 1000.

[0309] As described below, process 1000 includes capturing inputs representing movement of an electronic device (e.g., raising the electronic device toward a user's mouth) and sampling audio input (e.g., a spoken user request such as "What's the weather like in Palo Alto?") with a microphone of the electronic device. Process 1000 further includes determining whether to initiate a virtual assistant session based on the audio input and the input representing movement of the electronic device. In accordance with a determination to initiate the virtual assistant session, process 1000 includes initiating the virtual assistant session (e.g., displaying a user interface associated with the virtual assistant session).According to a determination not to initiate the virtual assistant session, the process 1000 includes failing to initiate the virtual assistant session.

[0310] Determining whether to initiate a virtual assistant session based on audio input and input representing movement of the electronic device (e.g., "motion input") provides a natural and efficient way to initiate and interact with a virtual assistant. For example, to initiate a virtual assistant and have the virtual assistant perform a task based on a spoken request, a user simply raises a device near their mouth and utters the request at approximately the same time (e.g., without the request including a spoken trigger such as "Hey Siri"). Interaction with virtual assistants enabled in this way enables efficient interaction with virtual assistants (e.g.,no spoken trigger is required before each interaction) and a quick response from the virtual assistant to spoken requests. Furthermore, the use of audio input and motion input to initiate a virtual assistant session prevents accidental activation of the virtual assistant based on either audio input or motion input alone. This reduces the likelihood of accidentally initiating a virtual assistant and saves battery power that would otherwise be consumed due to unwanted operation of a virtual assistant. In this way, the user device interface is made more efficient (e.g.,by reducing the number of audio inputs provided by the user, by reducing the response time of the virtual assistant, by preventing unintentional activation of the virtual assistant), which further reduces power consumption and improves the battery life of the device by allowing the user to use the device faster and more efficiently.

[0311] At block 1002, for an electronic device having a microphone and a display (e.g., device 800), an input representing the movement of the electronic device is captured. In some examples, the electronic device is a computer, a speaker, a smart watch, a phone, or a combination thereof.

[0312] In some examples, the input representing movement of the electronic device is detected by one or more accelerometers (e.g., 906) of the electronic device. In some examples, the input representing movement of the electronic device is detected by one or more gyroscopes (e.g., 908) of the electronic device. In some examples, detecting the input representing movement of the electronic device includes sampling the input representing movement of the electronic device using a first processor (e.g., 920), as shown in optional block 1004.

[0313] In some examples, moving the electronic device includes changing the electronic device between two or more of a plurality of positions. In some examples, the plurality of positions includes a lowered position (e.g., in Fig. 8A), a lifting position (e.g. in Fig. 8B), a raised position (e.g. in Fig. 8C-E) and a lowering position (e.g. in Fig. 8F).

[0314] At optional block 1006, a display of the electronic device (e.g., 804) is enabled based on a first portion of the input representing the movement of the electronic device. In some examples, the first portion of the input representing the movement of the electronic device represents a wrist raise gesture and / or a wrist rotation gesture (e.g., in Fig. 8B).

[0315] At block 1008, an audio input (e.g., 806) is sampled with the microphone (e.g., 904) of the electronic device. In some examples, the sampling of the audio input is performed according to the powering up of the display. In some examples, the audio input is sampled while capturing at least a second portion of the input representing the movement of the electronic device (e.g., the audio input 806 is sampled while the motion input in Fig. 8C). Sampling the audio input while detecting the motion input allows a user to provide (and a device to sense and / or detect) simultaneous (or near-simultaneous) audio and motion input for initiating a virtual assistant session. As explained, providing virtual assistant initiation in this manner provides a natural and efficient way to initiate a virtual assistant session and reduces the likelihood of inadvertent virtual assistant initiation. Accordingly, the user device interface is made more efficient (e.g., by quickly and easily initiating a virtual assistant), which further reduces power consumption and improves device battery life by allowing the user to use the device more quickly and efficiently.

[0316] In some examples, sampling the audio input includes sampling the audio input using the first processor, as shown in optional block 1010. In some examples, sampling the audio input includes sampling the audio input using the second processor (e.g., 918), as shown in optional block 1012. In some examples, the second processor consumes more power during operation than the first processor. In some examples, the second processor is activated based on at least a third portion of the input representing movement of the electronic device.

[0317] In some examples, the audio input (e.g., 806) does not include a spoken trigger (e.g., a spoken trigger to initiate a virtual assistant such as "Hey Siri"). Sampling an audio input that does not include a spoken trigger and using such an audio input to initiate a virtual assistant session enables natural and efficient initiation of / interaction with the virtual assistant. For example, a user can simply send a request (that does not include "Hey Siri") to a virtual assistant to initiate the virtual assistant and have it respond to the request. In this way, the user device interface is made more efficient (e.g.,by reducing the amount of audio input a user provides), which further reduces power consumption and improves the battery life of the device by allowing the user to use the device faster and more efficiently.

[0318] At block 1014, based on the audio input and the input representing the movement of the electronic device, it is determined (e.g., through the raise-to-speak model 924) whether to initiate a virtual assistant session. As discussed, the example techniques for determining whether to initiate a virtual assistant session, discussed below, may enable appropriate movement and / or audio input to initiate a virtual assistant session and prevent inappropriate movement and / or audio input from initiating a virtual assistant session. In this way, the usability of the device is improved and the human-machine interface is made more efficient (e.g.,by accurately and efficiently triggering a virtual assistant session when requested, by preventing a user from being disturbed by an inadvertently initiated virtual assistant session, by reducing or eliminating battery power otherwise consumed by an inadvertently initiated virtual assistant session, and by reducing or eliminating user input that would need to be provided to deactivate the inadvertently initiated virtual assistant session).

[0319] In some examples, determining whether to initiate the virtual assistant session includes determining whether to initiate the virtual assistant session based on a motion model (e.g., 926), as shown in optional block 1016. In some examples, the motion model includes a first neural network. In some examples, the motion model is specific to a first user of the electronic device. In some examples, using the motion model, a probability of the electronic device transitioning between two or more of the plurality of positions is determined, as shown in optional block 1018. In some examples, using the motion model, a probability of a position from the plurality of positions is determined, as shown in optional block 1020.

[0320] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 926) based on the input representing movement of the electronic device whether the movement of the electronic device includes a transition from the raising position to the raised position (e.g., as described in the Fig. 8B and Fig. 8C), as shown in optional block 1022.

[0321] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 926) a duration of the transition from the raising position to the raised position, as shown in optional block 1024.

[0322] In some examples, the audio input is sampled at a first time, the transition from the raising position to the raised position is associated with a second time, and the determination (e.g., by model 924) of whether to initiate the virtual assistant session is made based on the first time and the second time, as shown in optional block 1026. In this way, a virtual assistant session may be initiated by detecting approximately synchronous motion and audio inputs suitable for initiating a virtual assistant. Furthermore, inadvertent initiation of the virtual assistant based on motion input alone or audio input alone may be prevented (e.g.,If the motion input and the audio input are not received within a reasonable time of each other, it is unlikely that the inputs are used to initiate a virtual assistant.

[0323] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by Model 926) based on the input representing movement of the electronic device whether a duration of the raised position (e.g., in Fig. 8C) exceeds a first predetermined duration, as shown in optional block 1028.

[0324] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 926) based on the input representing the movement of the electronic device whether the movement of the electronic device includes a first transition from the raised position to the lowered position (e.g., as in Fig. 8F), as shown in optional block 1030.

[0325] In some examples, determining whether to initiate the virtual assistant session includes determining whether to initiate the virtual assistant session based on an audio model (e.g., 928), as shown in optional block 1032. In some examples, the audio model includes a second neural network. In some examples, the audio model is specific to a second user of the electronic device.

[0326] In some examples, determining whether to initiate the virtual session includes determining (e.g., by model 928) whether the audio input includes human speech, as shown in optional block 1034. In some examples, determining whether the audio input includes human speech includes determining whether the audio input includes human speech spoken by an authorized user of the electronic device, as shown in optional block 1036. In this way, inadvertent initiation of the virtual assistant due to sensing background noise (and / or speech from an unauthorized user) may be prevented. Furthermore, accurate initiation of the virtual assistant based on receiving requests spoken by a human (and / or an authorized user) may be provided.

[0327] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 928) a direction associated with the audio input, as shown in optional block 1038. In this way, inadvertent initiation of the virtual assistant due to sampling of audio not directed to the device configured for virtual assistant operation may be prevented. Furthermore, accurate initiation of the virtual assistant based on receipt of audio input directed to the device may be provided.

[0328] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 928) a proximity of the audio input to the electronic device, as shown in optional block 1040. In this way, inadvertent initiation of the virtual assistant by sampling audio data originating from a source too far from the device configured for virtual assistant operation may be prevented (e.g., because, in some examples, a user speaks to a device when the device is near the user's mouth). Furthermore, accurate initiation of the virtual assistant based on receiving audio input originating from a source proximate the device may be provided.

[0329] In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 928) at a third time whether to initiate the virtual assistant session based on the audio input, as shown in optional block 1042. In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 926) at a fourth time whether to initiate the virtual assistant session based on input representing movement of the electronic device, as shown in optional block 1044. In some examples, determining whether to initiate the virtual assistant session includes determining (e.g., by model 924) whether the third time and the fourth time are within a second predetermined duration, as shown in optional block 1046.In some examples, initiating the virtual assistant session is performed according to a determination that the third time and the fourth time are within the second predetermined duration. Accordingly, in some examples, initiating a virtual assistant session is based on detecting synchronous or near-synchronous motion and audio input suitable for initiating the virtual assistant session. Thus, inadvertent initiation based on motion input and / or audio input alone may be prevented, although motion input and / or audio input may each be suitable for initiating the virtual assistant. Providing for activation of the virtual assistant in this manner thus provides an efficient and intuitive way to initiate a virtual assistant session while reducing the possibility of inadvertent initiation.

[0330] At block 1048, in accordance with the determination to initiate the virtual assistant session, the virtual assistant session is initiated (e.g., by model 924). In some examples, initiating the virtual assistant session includes displaying a first user interface associated with the virtual assistant (e.g., as shown on the right display 804 in Fig. 8C), as shown in optional block 1050. In some examples, initiating the virtual assistant session includes providing audio output, as shown in optional block 1052. In some examples, initiating the virtual assistant session includes providing haptic output, as shown in optional block 1054.

[0331] At optional block 1056, a time point associated with a third transition from the raised position to the lowered position is determined (e.g., by model 924). At optional block 1058, an end point of the audio input is determined based on the time point associated with the third transition from the raised position to the lowered position (e.g., by model 924). Determining an end point of the audio input in this manner provides an efficient and accurate way to determine the end time of audio inputs. For example, a user can simply lower their wrist (e.g., as in Fig. 8F) to indicate that he has stopped speaking.

[0332] At block 1060, initiation of the virtual assistant session is omitted in accordance with the determination not to initiate the virtual assistant session.

[0333] At optional block 1062, in accordance with initiating the virtual assistant session based on the audio input (e.g., by the Fig. 7B). At optional block 1064, a task is performed based on the user intent in accordance with initiating the virtual assistant session. At optional block 1066, an output associated with the task is provided (e.g., output 808) in accordance with initiating the virtual assistant session.

[0334] At optional block 1068, in accordance with initiating the virtual assistant session and not determining user intent based on the audio input, providing output responsive to the audio input is omitted.

[0335] At optional block 1070, in accordance with initiating the virtual assistant session, the virtual assistant session is deactivated (e.g., by model 924). In some examples, deactivating the virtual assistant session includes stopping the display of a second user interface associated with the digital assistant (e.g., as described in Fig. 8E and Fig. 8F), as shown in optional block 1072. In some examples, deactivating the virtual assistant session includes refraining from responding to audio input, as shown in optional block 1074.

[0336] Deactivating a virtual assistant session allows for the termination of an inadvertently initiated virtual assistant session. Accordingly, the battery and processing power otherwise consumed by the operation of an inadvertently activated virtual assistant is reduced. Furthermore, deactivating a virtual assistant session when it is not desired improves the usability and operability of the device (e.g., a user can continue using the device for other purposes without being disturbed by an initiated virtual assistant). In this way, the user device interface is made more efficient (e.g.,by preemptively deactivating a virtual assistant session when it is not desired), which further reduces energy consumption and improves the battery life of the device by allowing the user to use the device more quickly and efficiently.

[0337] Furthermore, the techniques described below for deactivating a virtual assistant session can provide an accurate and efficient determination of whether the virtual assistant session should be deactivated, as well as an accurate and efficient deactivation of the virtual assistant session. Improving virtual assistant deactivation in this manner improves the usability and efficiency of the device (e.g., by deactivating a virtual assistant session when it is not desired and by preventing a desired initiated virtual assistant session from being deactivated). Accordingly, the user device interface is made more efficient (e.g.,by accurately determining whether the virtual assistant session should be deactivated), which further reduces energy consumption and improves the battery life of the device by allowing the user to use the device faster and more efficiently.

[0338] At optional block 1076, in accordance with initiating the virtual assistant session, it is determined based on the input representing the movement of the electronic device (e.g., by the model 924) whether the movement of the electronic device includes a second transition from the raised position to the lowered position (e.g., as in Fig. 8F).

[0339] In optional block 1078, a time is determined that is associated with the second change from the raised position to the lowered position (e.g., by the model 924).

[0340] At optional block 1080, a time point associated with an end of speech in the audio input is determined (e.g., by model 924).

[0341] At optional block 1082, the virtual assistant session is deactivated (e.g., by model 924) in accordance with a determination that the movement of the electronic device includes the second transition from the raised position to the lowered position. In some examples, deactivating the virtual assistant session is further performed in accordance with a determination (e.g., by model 924) that the time associated with the second transition from the raised position to the lowered position is prior to the time associated with the end of speech in the audio input, as shown in optional block 1084.

[0342] At optional block 1086, initiating the virtual assistant session based on the linguistic content of the audio input (e.g., the Fig. 8E), determines (e.g., by model 924) whether to deactivate the virtual assistant session. At optional block 1088, the virtual assistant session is deactivated (e.g., by model 924) in accordance with the determination to deactivate the virtual assistant session. At optional block 1090, deactivation of the virtual assistant session is omitted in accordance with a determination not to deactivate the virtual assistant session (e.g., by model 924).

[0343] At optional block 1092, in accordance with initiating the virtual assistant session, it is determined whether a duration of the audio input is less than a threshold duration (e.g., by model 924). At optional block 1094, in accordance with a determination that the duration of the audio input is less than the threshold duration, the virtual assistant session is deactivated (e.g., by model 924).

[0344] The above-described processes relating to the Fig. 10A-D are optionally replaced by the Fig. 1-4, 6A-B, 7A-C, 8A-F, and 9. For example, the operations of process 1000 may be implemented by processing unit 916 and / or model unit 922.

[0345] For average professionals it is clear how other processes based on the Fig. 1-4, 6A-B, 7A-C, 8A-F and 9.

[0346] Fig. 11 illustrates a process 1100 for transmitting communications according to various examples. For example, the process 1100 is performed using one or more electronic devices (e.g., devices 104, 106, 200, 400, 600, or 800). In some examples, the process 1100 is performed using a client-server system (e.g., system 100), and the process blocks 1100 are distributed in any manner between the server (e.g., DA server 106) and a client device. In other examples, the process blocks 1100 are distributed between the server and multiple client devices (e.g., a mobile phone and a smart watch). While portions of the process 1100 are described herein as being performed by particular devices of a client-server system, it should be noted that the process 1100 is not so limited. In other examples, the process 1100 is associated only with a client device (e.g.,User device 104) or only with multiple client devices. In process 1100, some blocks are optionally combined, the order of some blocks is optionally changed, and some blocks are optionally omitted. In some examples, additional steps may be performed in combination with process 1100.

[0347] As described below, process 1100 includes capturing inputs representing movement of an electronic device (e.g., raising the electronic device toward a user's mouth) and sampling audio input (e.g., "Hey Shawn, how are you?") with a microphone of the electronic device. Process 1100 further includes determining a context of the electronic device (e.g., that the device is currently receiving a phone call (e.g., from a contact named "Shawn")). Upon determining that the context is a predetermined context that enables communication with an external electronic device (e.g.,the context of receiving a phone call), process 1110 includes determining, based on the audio input and the input representing movement of the device, whether to transmit a communication associated with the audio input to the external electronic device. For example, whether to transmit the audio "Hey Shawn, how are you?" to Shawn's device. In accordance with a determination to transmit the communication associated with the audio input to the external electronic device, process 1110 includes transmitting that communication associated with the audio input to the external electronic device. For example, the device answers Shawn's phone call and transmits "Hey Shawn, how are you?" to Shawn's device.In accordance with a determination not to transmit the communication associated with the audio input to the external electronic device, process 1100 includes refraining from transmitting that communication associated with the audio input to the external electronic device.

[0348] By determining a context of an electronic device, the electronic device can determine exactly which device function to perform based on an audio input and a motion input. Particularly in examples where a same or similar combination of motion input and audio input can cause multiple device functions to perform (e.g., answering a phone call, initiating a virtual assistant session), it may be important to distinguish (e.g., based on a particular device context) which device function to invoke based on audio input and motion input. Otherwise, for example, audio and motion inputs intended to answer a phone call may inadvertently initiate a virtual assistant session.Accordingly, using context information to determine the device function to be performed enables the execution of a correct device function. This makes the user device interface more efficient (e.g., by causing the correct execution of a device function, by preventing the incorrect execution of a device function, by reducing or eliminating user input to abort an incorrectly executed device function), which further reduces power consumption and improves the battery life of the device by allowing the user to use the device more quickly and efficiently.

[0349] Determining, based on the audio input and the input representing the movement of the electronic device (e.g., "motion input"), whether a communication associated with the audio input should be transmitted to an external electronic device provides a natural and efficient way to communicate with external electronic devices. For example, to answer a telephone call, a user simply raises a device near their mouth and provides a response to the telephone call at approximately the same time (e.g., without providing tactile input to answer the telephone call). Communication with external electronic devices enabled in this manner enables rapid communication with external devices (e.g., a user simply raises their device and speaks to initiate transmission of a communication).Additionally, using both audio input and motion input to transmit a communication can prevent inadvertent communication transmission based on either audio input or motion input alone. This reduces the likelihood of sending communications when not desired. In this way, the user device interface is made more efficient (e.g., by enabling a quick response to communications from external devices by preventing accidental communication transmission), which further reduces power consumption and improves the device's battery life by allowing the user to use the device more quickly and efficiently.

[0350] At block 1102, an input representing the movement of an electronic device is detected (e.g., by input unit 902).

[0351] At block 1104, the audio input is sampled with a microphone of the electronic device (e.g., by microphone(s) 904).

[0352] At block 1106, a context of the electronic device is determined (e.g., by context unit 934).

[0353] At block 1108, it is determined whether the context of the electronic device is a predetermined type of context that represents communication with an external electronic device (e.g., by context unit 934).

[0354] At block 1110, in accordance with a determination that the context is the predetermined type of context representing communication with the external electronic device (block 1108, YES), based on the audio input and the input representing movement of the electronic device, it is determined (e.g., by model 924) whether a communication associated with the audio input should be transmitted to the external electronic device.

[0355] At block 1112, in accordance with a determination to transmit the communication associated with the audio input to the external electronic device, the communication associated with the audio input is transmitted to the external electronic device (e.g., by the RF circuitry 208).

[0356] At block 1114, in accordance with a determination not to transmit the communication associated with the audio input to the external electronic device, transmission of the communication associated with the audio input to the external electronic device is omitted.

[0357] At block 1116, in accordance with a determination that the context is not the predetermined type of context representing communication with the external electronic device (block 1108 NO), based on the audio input and the input representing movement of the electronic device, it is determined whether to initiate a virtual assistant session (e.g., based on the information discussed above with respect to the Fig. 10A-D).

[0358] The above-described processes relating to Fig. 11 are optionally replaced by the Fig. 1-4, 6A-B, 7A-C, 8A-F and 9. For example, the operations of process 1100 may be implemented by processing unit 916 and / or model unit 922. It will be apparent to those of ordinary skill in the art how other processes may be implemented based on the components illustrated in the Fig. 1-4, 6A-B, 7A-C, 8A-F and 9.

[0359] According to some implementations, a computer-readable storage medium (e.g., a non-transitory computer-readable storage medium) is provided, wherein the computer-readable storage medium has stored thereon one or more programs for execution by one or more processors of an electronic device, the program(s) including instructions for performing any of the methods or processes described herein.

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

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

[0362] According to some implementations, an electronic device (e.g., a portable electronic device) is provided that includes one or more processors and memory having instructions stored thereon for execution by the processor(s), wherein the program(s) includes instructions for performing any of the methods and processes described herein.

[0363] The foregoing description has been made with reference to specific embodiments for the purpose of explanation. However, the foregoing illustrative discussions are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments were chosen and described in order to best explain the principles of the techniques and their practical applications. Others skilled in the art will thereby be enabled to best utilize the techniques and various embodiments with various modifications as are suited to the particular use contemplated.

[0364] Although the disclosure and examples have been fully described with reference to the accompanying drawings, it is to be noted that various changes and modifications will be apparent to those skilled in the art. Such changes and modifications are to be understood as being within the scope of the disclosure and examples as defined by the claims.

[0365] As described above, one aspect of the present technology is the collection and use of data available from various sources to improve a model for initiating / deactivating a virtual assistant. The present disclosure contemplates that, in some cases, this collected data may include personal information that uniquely identifies a specific individual or that can be used to contact or locate that individual. Such personal information may include demographic data, location-based data, phone numbers, email addresses, Twitter IDs, home addresses, data or records regarding a user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or other identifying or personal information.

[0366] The present disclosure recognizes that the use of such personal information in the present technology can be used to benefit users. For example, the personal information can be used to generate and / or train a personalized model for initiating a virtual assistant. Accordingly, the use of such personalized information data enables improved virtual assistant initiation models tailored to the way a particular user initiates a virtual assistant. Furthermore, the present disclosure also contemplates other uses of personal information that are beneficial to the user.For example, health and fitness data can be used to provide insights into a user's overall well-being, or it can be used as positive feedback to people using technology to pursue wellness goals.

[0367] This disclosure contemplates that entities responsible for the collection, analysis, disclosure, transmission, storage, or other use of such personal data will adhere to generally established privacy policies and / or practices. In particular, such entities should implement and consistently apply privacy rules and practices generally recognized as meeting or exceeding industry- or government-established requirements for the confidential and secure storage of personal data. Such policies should be readily accessible to users and should be updated as the collection and / or use of data changes. Users' personal information should be collected for legitimate and meaningful uses by the entities and should not be shared or sold outside of those legitimate uses.Furthermore, such collection / disclosure should take place after obtaining the informed consent of the users. Furthermore, such entities should consider taking all necessary steps to protect and secure access to such personal data and ensure that others who have access to the personal data adhere to their data protection policies and procedures.

[0368] Furthermore, such entities may submit to third-party evaluation to confirm their adherence to generally accepted data protection rules and practices. Furthermore, policies and practices should be tailored to the specific types of personal data collected and / or accessed and to applicable laws and standards, including jurisdiction-specific considerations. For example, in the United States, the collection of or access to certain health information may be regulated by federal and / or state law, such as the Health Insurance Portability and Accountability Act (HIPAA); whereas, health information in other countries may be subject to different rules and guidelines and should be treated accordingly. Therefore, different data protection practices should be followed for different types of personal information in each country.

[0369] Notwithstanding the above, the present disclosure also contemplates embodiments in which users selectively block the use of or access to personal data. That is, the present disclosure contemplates that hardware and / or software elements may be provided to prevent or block access to such personal data. In the case of capturing user-specific gesture and audio inputs to initiate a virtual assistant (e.g., during a login process), the present technology may be configured to provide users with the opportunity to "opt in" or "opt out" of participating in the collection of personal data when registering for services or at a later time.In another example, users may choose to limit the amount of time user-specific gesture and / or audio inputs are stored, or to prohibit the collection of user-specific gesture and / or audio inputs entirely. In addition to the "accept" and "decline" options, the present disclosure contemplates providing notifications regarding access to or use of personal data. For example, a user may be notified when downloading an app that their personal data is being accessed and then reminded again shortly before the app accesses the personal data.

[0370] Furthermore, it is the intent of the present disclosure that personal data be managed and handled in a manner that minimizes the risk of accidental or unauthorized access or use. This risk can be minimized by limiting the collection of data and deleting data when it is no longer needed. In addition, and where necessary, including in certain health-related applications, data de-identification can be used to protect a user's privacy. De-identification can be facilitated, where appropriate, by removing specific identifiers (e.g., date of birth, etc.), controlling the amount or specificity of the data stored (e.g., collecting location data at the city level rather than the address level), controlling how data is stored (e.g., aggregating data across users), and / or by employing other methods.

[0371] Although the present disclosure broadly covers the use of personal data to implement one or more of the various disclosed embodiments, the present disclosure also contemplates that the various embodiments may be implemented without the need for access to such personal data. That is, the various embodiments of the present technology will not be rendered inoperable due to the absence of all or a portion of such personal data. For example, a virtual assistant may be implemented using a generic (e.g.,non-user-specific and / or associated with a specific group of users) virtual assistant initiation model based on non-personal data or an absolute minimum amount of personal data, such as the content requested by the device associated with a user, other non-personal information available to the virtual assistant initiation model, or publicly available information.

Claims

[1] Method comprising: on an electronic device with a microphone and a display: detecting an input representing movement of the electronic device; Sampling an audio input with the microphone; Determining, based on the audio input and the input representing movement of the electronic device, whether to initiate a virtual assistant session, wherein determining whether to initiate the virtual assistant session includes: Determining, at a first time, to initiate the virtual assistant session based on the audio input; Determining, at a second time, to initiate the virtual assistant session based on the input representing the movement of the electronic device; and finally determining to initiate the virtual assistant session based on the first time and the second time being within a predetermined duration; and pursuant to a final determination to initiate the virtual assistant session, initiating the virtual assistant session; and pursuant to a provision not to initiate the virtual assistant session, failure to initiate the virtual assistant session. [2] The method of claim 1, further comprising: according to the initiation of the virtual assistant session: Determining a user intent based on the audio input; Performing a task based on user intent; and Provide an output associated with the task. [3] The method of claim 1, further comprising: according to the initiation of the virtual assistant session: according to failing to determine a user intent based on the audio input, failing to provide an output in response to the audio input. [4] A method according to any one of claims 1 to 3, wherein the audio input does not include a spoken trigger. [5] Method according to one of claims 1 to 4, further comprising: Turning on the display based on a first portion of the input representing a movement of the electronic device; and where the audio input is sampled according to the display power-up. [6] The method of claim 5, wherein the first part of the input representing the movement of the electronic device represents a wrist raise gesture and / or a wrist rotate gesture. [7] The method of claim 5, wherein sampling of the audio input is performed in accordance with turning on the display. [8] The method of any of claims 1-7, wherein the audio input is sampled while detecting at least a second portion of the input representing the movement of the electronic device. [9] The method of any one of claims 1 to 8, wherein the input representing the movement of the electronic device is detected by one or more accelerometers of the electronic device. [10] The method of any one of claims 1 to 9, wherein the input representing the movement of the electronic device is detected by one or more gyroscopes of the electronic device. [11] A method according to any one of claims 1 to 10, wherein moving the electronic device includes changing the electronic device between two or more of a plurality of positions. [12] The method of claim 11, wherein the plurality of positions include a lowered position, a raising position, a raised position, and a lowering position. [13] The method of claim 12, wherein determining whether to initiate the virtual assistant session includes: Determining, based on the input representing the movement of the electronic device, that the movement of the electronic device includes changing from the raising position to the raised position. [14] The method of claim 13, wherein determining whether to initiate the virtual assistant session includes: Determining a duration of the change from the lifting position to the raised position. [15] The method of any one of claims 12 to 14, wherein determining whether to initiate the virtual assistant session includes: Determining, based on the input representing movement of the electronic device, whether a duration of the raised position exceeds a first predetermined duration. [16] The method of any one of claims 12 to 15, wherein determining whether to initiate the virtual assistant session includes: Determining, based on the input representing the movement of the electronic device, whether the movement of the electronic device includes a first transition from the raised to the lowered position. [17] A method according to any one of claims 12 to 16, further comprising: according to the initiation of the virtual assistant session: Determining, based on the input representing the movement of the electronic device, whether the movement of the electronic device includes a second transition from the raised to the lowered position; and in accordance with a determination that the movement of the electronic device includes the second transition from the raised position to the lowered position, deactivating the virtual assistant session. [18] The method of claim 17, further comprising: Determining a time associated with the second change from the raised position to the lowered position; Determining a time point associated with an end of speech in the audio input; and wherein deactivating the virtual assistant session is further performed according to a Determination is made that the time associated with the second change from the raised position to the lowered position is before the time associated with an end of speech in the audio input. [19] A method according to any one of claims 12 to 18, further comprising: Determining a time associated with a third change from the raised position to the lowered position; and Determining an endpoint of the audio input based on the time associated with the third transition from the raised position to the lowered position. [20] The method of any of claims 12 to 19, wherein determining whether to initiate the virtual assistant session includes determining whether to initiate the virtual assistant session based on a motion model, and wherein the motion model is specific to a first user of the electronic device. [21] The method of claim 20, further comprising: Determining, using the motion model, a probability of the electronic device changing between two or more positions of the plurality of positions; and Determining, using the motion model, a probability of a position of the plurality of positions. [22] The method of any one of claims 1 to 21, wherein detecting the input representing the movement of the electronic device includes scanning the input representing the movement of the electronic device using a first processor. [23] The method of claim 22, wherein sampling the audio input includes sampling the audio input using the first processor. [24] The method of claim 22, wherein sampling the audio input includes sampling the audio input using a second processor. [25] The method of claim 24, wherein the second processor consumes more power during operation than the first processor. [26] The method of any one of claims 24 to 25, wherein the second processor is activated based on at least a portion of the input representing the movement of the electronic device. [27] The method of any one of claims 1 to 26, wherein determining whether to initiate the virtual session includes determining whether the audio input includes human speech. [28] The method of claim 27, wherein determining whether the audio input includes human speech includes determining whether the audio input includes human speech spoken by an authorized user of the electronic device. [29] The method of any of claims 1 to 28, wherein determining whether to initiate a virtual assistant session includes determining a direction associated with the audio input. [30] The method of any of claims 1 to 29, wherein determining whether to initiate the virtual assistant session includes determining a proximity of the audio input to the electronic device. [31] The method of any of claims 1 to 30, wherein determining whether to initiate the virtual assistant session includes determining whether to initiate the virtual assistant session based on an audio model. [32] The method of claim 31, wherein the audio model is specific to a second user of the electronic device. [33] The method of any one of claims 1 to 32, further comprising: in accordance with the initiation of the virtual assistant session: Determine, based on the linguistic content of the audio input, whether to deactivate the virtual assistant session; pursuant to a provision to deactivate the virtual assistant session, deactivating the virtual assistant session; and pursuant to a provision not to deactivate the virtual assistant session, Failure to deactivate the virtual assistant session. [34] The method of any one of claims 1 to 33, further comprising: in accordance with the initiation of the virtual assistant session: Determining whether a duration of the audio input is shorter than a threshold duration; and pursuant to a determination that the duration of the audio input is less than the threshold duration, deactivating the virtual assistant session. [35] A method according to any one of claims 1 to 34, further comprising: according to the initiation of the virtual assistant session, deactivating the virtual assistant session. [36] The method of claim 35, wherein deactivating the virtual assistant session includes stopping the display of a second user interface associated with the virtual assistant session. [37] The method of any of claims 35 to 36, wherein deactivating the virtual assistant session includes failing to respond to the audio input. [38] Electronic device comprising: one or more processors; a memory; and one or more programs, the one or more programs stored in memory and configured to be executed by the one or more processors, the one or more programs including instructions for performing the method of any one of claims 1 to 37. [39] A non-transitory, computer-readable data storage medium having one or more programs stored therein, the one or more programs comprising instructions which, when executed by one or more processors of an electronic device, cause the electronic device to perform the method of any one of claims 1 to 37.

Citation Information

Patent Citations

  • Reducing the need for manual start / end-pointing and trigger phrases

    US20150348548A1

  • Competing devices responding to voice triggers

    US20160260431A1