Reduced Latency Speech Processing
A staged keyword detection system on low-power processors initiates high-performance core processing for voice services before confirmation, addressing latency issues in voice assistants while conserving power.
Patent Information
- Application Number
- JP2023553710
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-03-12
- Publication Date
- 2025-12-09
- Estimated Expiration
- 2041-03-12
AI Technical Summary
Voice assistant applications experience increased latency due to complex speech recognition models, leading to a detrimental user experience, particularly when transitioning from a low-power state to active processing.
Implement a first-stage keyword detector on a low-power processor to initiate a state change and schedule voice services on reserved high-performance cores before confirming keyword detection, using a staged approach to reduce latency without significantly increasing power consumption.
Reduces latency by quickly transitioning to active speech recognition, maintaining low power consumption, and improving user experience by minimizing delays in voice assistant operations.
Smart Images

Figure 0007783290000001 
Figure 0007783290000002 
Figure 0007783290000003
Abstract
Description
[Technical Field]
[0001]
[0001] This disclosure relates generally to reduced latency speech processing. [Background technology]
[0002]
[0002] Advances in technology have resulted in smaller and more powerful computing devices. For example, there are now a variety of portable personal computing devices, including wireless telephones such as mobile phones and smartphones, tablets, and laptop computers, that are small, lightweight, and easily carried by users. These devices can communicate voice and data packets over wireless networks. Furthermore, many such devices incorporate additional functionality, such as digital still cameras, digital video cameras, digital recorders, audio recording, audio and / or video conferencing, and audio file players. Such devices are also capable of processing executable instructions, including software applications, such as web browser applications that may be used to access the Internet.
[0003]
[0003] It is becoming increasingly common for such devices to include speech recognition applications. For example, voice assistant applications that use speech recognition are widely used in devices such as mobile phones, headphones, smart speakers, and vehicles. As voice assistant applications improve, their speech detection models and other related software increase in complexity, leading to higher processing requirements and greater latency. In some cases, the latency increase may be sufficient to be detectable by a user, adversely affecting the user experience associated with using the voice assistant application. For example, a large latency increase may be experienced when the voice assistant application is in a sleep or standby state and is woken up in response to the utterance of a keyword. Summary of the Invention
[0004] A device includes a first stage keyword detector and a processor configured to initiate a state change based on a signal indicative of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0005] The method includes generating, by a first stage keyword detector, a signal indicative of keyword detection. The method also includes initiating a change of state based on the signal indicative of keyword detection and prior to confirmation of keyword detection to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0006] An apparatus includes means for generating a signal indicative of keyword detection. The apparatus includes means for initiating a state change based on the signal and prior to confirmation of keyword detection, where the state change enables a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0007] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain a signal indicative of keyword detection from a first stage keyword detector, the instructions being further executable to initiate a change of state based on the signal indicative of keyword detection and prior to confirmation of keyword detection to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0008] A device includes a first stage keyword detector and a processor configured to execute a scheduler to manage allocation of processes to two or more cores, the scheduler configured to receive an indication that the first stage keyword detector has detected a keyword and, based on the indication, to schedule processes of a voice service that are in a low power mode for execution on one or more reserved processor cores.
[0009] The method includes receiving an indication that the first stage keyword detector has detected a keyword. The method also includes, based on the indication, scheduling, in a scheduler that manages allocation of processes to two or more cores, a process of the voice service that is in a low power mode for execution on one or more reserved processor cores.
[0010] The apparatus includes means for receiving an indication that a first stage keyword detector has detected a keyword. The apparatus includes means for managing an allocation of processes to two or more cores, the means for managing the allocation of processes being configured to schedule processes of the voice service that are in a low power mode for execution on one or more reserved processor cores based on the indication.
[0011] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication that a first stage keyword detector has detected a keyword. The instructions are further executable to, based on the indication, schedule, in a scheduler that manages allocation of processes to two or more cores, processes of the voice service that are in a low power mode for execution on one or more reserved processor cores.
[0012] A device includes a first-stage keyword detector and a processor configured to execute a scheduler to manage allocation of processes to two or more cores, the scheduler configured to receive an indication that the first-stage keyword detector has detected a keyword and, based on the indication, to increase a priority assigned to a process of a voice service.
[0013] The method includes receiving, at a scheduler that manages allocation of processes to two or more cores, an indication that a first stage keyword detector has detected a keyword. The method also includes increasing a priority assigned to a process of the voice service based on the indication.
[0014] The apparatus includes means for receiving an indication that the first stage keyword detector detected a keyword. The apparatus includes means for managing an allocation of processes to two or more cores, the means for managing the allocation of processes configured to increase a priority assigned to a process of the voice service based on the indication.
[0015] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication that a first stage keyword detector has detected a keyword. The instructions are further executable to, based on the indication, increase a priority assigned to a process of the voice service in a scheduler that manages allocation of processes to two or more cores.
[0016] The device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected. The device also includes a second processor including two or more cores. The second processor is coupled to the first processor and configured to transition the second processor from an idle state to an active state upon an indication from the first processor that a keyword has been detected and to initiate a voice service prior to confirmation of keyword detection.
[0017] The method includes obtaining an indication of keyword detection by a first stage keyword detector. The method also includes transitioning a processor from an idle state to an active state upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, and initiating a voice service.
[0018] The apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for transitioning the processor from an idle state to an active state upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection. The apparatus also includes means for initiating a voice service upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection.
[0019] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first-stage keyword detector. The instructions are further executable to transition the processor from an idle state to an active state and initiate a voice service upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection.
[0020] The device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected. The device also includes a second processor including two or more cores. The second processor is coupled to the first processor and configured to initiate a change in the state of a scheduler to increase a priority assigned to a process of a voice service upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0021] The method includes obtaining an indication of keyword detection by a first stage keyword detector. The method also includes, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in state of a scheduler to increase a priority assigned to a process of the voice service.
[0022] The apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector. The apparatus includes means for initiating a change in state of the scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection. The change in state increases the priority assigned to the process of the voice service.
[0023] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first-stage keyword detector. The instructions are further executable to initiate a change in the state of a scheduler upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection to increase the priority assigned to a process of the voice service.
[0024] The device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected. The device also includes a second processor including two or more cores. The second processor is coupled to the first processor and configured to initiate a change in the state of a scheduler to move a process of a voice service from a background task to a foreground task upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0025] The method includes obtaining an indication of keyword detection by a first-stage keyword detector. The method also includes, upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, initiating a change in state of a scheduler to move a process of the voice service from a background task to a foreground task.
[0026] The apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector. The apparatus includes means for initiating a change in the state of the scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection. The change in state moves the process of the voice service from a background task to a foreground task.
[0027] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first-stage keyword detector. The instructions are further executable to initiate a change in state of a scheduler upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection to move a process of the voice service from a background task to a foreground task.
[0028] The device includes a first processor. The first processor is configured to execute a first stage keyword detector to generate an indication that a keyword has been detected. The device also includes a second processor including two or more cores. The second processor is coupled to the first processor and configured to initiate a change in the state of a scheduler upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection to allow a process of a voice service to be reassigned from a first core of the two or more cores to a second core of the two or more cores. The second core is a core with higher performance than the first core.
[0029] The method includes obtaining an indication of keyword detection by a first stage keyword detector. The method also includes, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in state of a scheduler to allow a process of a voice service to be reassigned from a first core of two or more cores of a processor to a second core of the two or more cores, the second core being a higher performance core than the first core.
[0030] The apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector. The apparatus includes means for initiating a change in state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, wherein the change in state enables a process of a voice service to be reassigned from a first core of two or more cores of a processor to a second core of the two or more cores, the second core being a core with higher performance than the first core.
[0031] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first-stage keyword detector. The instructions are further executable to, upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, initiate a change in the state of a scheduler to allow a process of a voice service to be reassigned from a first core of two or more cores of a processor to a second core of the two or more cores. The second core is a core with higher performance than the first core.
[0032] The device includes a first processor. The first processor is configured to execute a first stage keyword detector to generate an indication that a keyword has been detected. The device also includes a second processor including two or more cores. The second processor is coupled to the first processor and configured to initiate a change in the state of a scheduler to reassign processes of a voice service from a first scheduling group to a second scheduling group upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection. The processes assigned to the second scheduling group are enabled to run on at least one of the two or more cores on which the processes assigned to the first scheduling group are not enabled to run.
[0033] The method includes obtaining an indication of keyword detection by a first-stage keyword detector. The method also includes, upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, initiating a change in a state of a scheduler to reassign processes of the voice service from a first scheduling group to a second scheduling group. The processes assigned to the second scheduling group are enabled to execute on at least one core of the processor on which the processes assigned to the first scheduling group are not enabled to execute.
[0034] The apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. The apparatus includes means for initiating a change in state of a scheduler upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, wherein the change in state reassigns processes of the voice service from a first scheduling group to a second scheduling group. The processes assigned to the second scheduling group are enabled to run on at least one core of the processor on which processes assigned to the first scheduling group are not enabled to run.
[0035] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first-stage keyword detector. The instructions are further executable to initiate a change in the state of a scheduler upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection to reassign processes of the voice service from a first scheduling group to a second scheduling group. The processes assigned to the second scheduling group are enabled to run on at least one core of the processor that is not enabled to run processes assigned to the first scheduling group.
[0036] The device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected. The device also includes a second processor including two or more cores. The second processor is coupled to the first processor and configured, upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, to initiate a change in the state of a scheduler to set scheduling parameters associated with a process of a voice service to allow the process to run on a reserved core of the two or more cores.
[0037] The method includes obtaining an indication of keyword detection by a first stage keyword detector. The method also includes, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in state of a scheduler to set scheduling parameters associated with the process to allow the process of the voice service to run on a reserved core of the processor.
[0038] The apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector. The apparatus includes means for initiating a change in state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection. The change in state sets scheduling parameters associated with the process of the voice service to allow the process to run on a reserved core of the processor.
[0039] A non-transitory computer-readable medium stores instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first-stage keyword detector. The instructions are further executable to, upon the indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, initiate a change in state of a scheduler to set scheduling parameters associated with the process to allow the process of the voice service to run on a reserved core of the processor.
[0040]
[0040] Other aspects, advantages, and features of the present disclosure will become apparent after reviewing the entire application, including the following sections: Brief Description of the Drawings, Detailed Description of the Invention, and Claims. [Brief explanation of the drawings]
[0041] [Figure 1]
[0041] FIG. 1 is a block diagram of an example system configured to reduce latency following an indication of keyword detection. [Figure 2]
[0042] 1 is a block diagram of an example of a device configured to reduce latency following an indication of keyword detection. [Figure 3]
[0043] 1 is a block diagram of an example of a device configured to reduce latency following an indication of keyword detection. [Figure 4]
[0044] 1 is a block diagram of an example of a device configured to reduce latency following an indication of keyword detection. [Figure 5]
[0045] 1 is a block diagram of an example system including two or more devices configured to reduce latency following an indication of keyword detection. [Figure 6A]
[0046] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 6B] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 6C] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 7A]
[0047] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 7B] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 7C] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 8A]
[0048] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 8B] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 8C] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 9A]
[0049] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 9B] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 9C]10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 10A]
[0050] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 10B] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 10C] 10 illustrates an example of operations performed by a scheduler to reduce latency following an indication of keyword detection. [Figure 11]
[0051] FIG. 1 illustrates an integrated circuit configured to reduce latency following an indication of keyword detection. [Figure 12]
[0052] 1 illustrates a mobile device configured to reduce latency following an indication of keyword detection. [Figure 13]
[0053] FIG. 10 illustrates an earbud configured to reduce latency following an indication of keyword detection. [Figure 14]
[0054] FIG. 1 illustrates a headset configured to reduce latency following an indication of keyword detection. [Figure 15]
[0055] FIG. 1 illustrates a wearable device configured to reduce latency following an indication of keyword detection. [Figure 16]
[0056] FIG. 1 illustrates a voice-controlled speaker system configured to reduce latency following an indication of keyword detection. [Figure 17]
[0057] FIG. 10 illustrates a camera configured to reduce latency following an indication of keyword detection. [Figure 18]
[0058] FIG. 1 illustrates a headset configured to reduce latency following an indication of keyword detection. [Figure 19]
[0059] FIG. 10 illustrates an airborne device configured to reduce latency following an indication of keyword detection. [Figure 20]
[0060] FIG. 1 illustrates a vehicle configured to reduce latency following an indication of keyword detection. [Figure 21]
[0061] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 22]
[0062] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 23]
[0063] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 24]
[0064] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 25]
[0065] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 26]
[0066] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 27]
[0067] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 28]
[0068] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 29]
[0069] 1 is a flow chart illustrating aspects of an example method for reducing latency following an indication of keyword detection. [Figure 30]
[0070] FIG. 1 is a block diagram of a particular illustrative example of a device operable to reduce latency following an indication of keyword detection, in accordance with certain aspects. DETAILED DESCRIPTION OF THE INVENTION
[0042]
[0071] In certain aspects, voice assistant operation is performed in multiple stages to conserve power and computing resources, and the execution of the stages and / or the resources used to execute the stages are controlled in a manner that reduces latency without significantly increasing power demands. In some implementations, a staged approach is used to separate the execution of a complex speech recognition model that processes natural language speech from a less complex keyword detection model. Using such an approach, the complex speech recognition model can remain in a low-power state (e.g., standby, sleep, off, or another low-power state) until a keyword is detected. For example, the first stage of the staged approach may include a first-stage keyword detector running on a low-power processor such as a digital signal processor (DSP) or an application-specific integrated circuit (ASIC). In this example, the first-stage keyword detector monitors audio data from one or more microphones to detect utterances containing a keyword. In this context, a "keyword" is the use of a word or phrase that alerts the voice assistant that a command or query is coming. When the first-stage keyword detector indicates that a keyword has been detected, a more complex and resource-intensive portion of the voice assistant is activated.
[0043]
[0072] In certain aspects, the first-stage keyword detector uses a relatively simple speech reignition model and may generate more false alarms than desired due to keyword detection. To address this issue, some implementations use second-stage keyword detection with a more complex algorithm to confirm keyword detection before executing a full natural language voice assistant application. The second-stage keyword detector may run on a low-power processor (e.g., a DSP or ASIC) or on one or more processing cores of an application processor (e.g., a central processing unit (CPU) or a graphics processing unit (GPU), or another general-purpose processor). In one example, the first-stage keyword detector and the second-stage keyword detector are embedded system components operating under a higher-level operating system. In another example, the first-stage keyword detector is an embedded system component and the second-stage keyword detector is a component or aspect of the higher-level operating system. In yet another example, the first-stage keyword detector is an embedded system component and the second-stage keyword detector is part of an application (e.g., a voice service or voice assistant application) operating within the higher-level operating system.
[0044]
[0073] When keyword detection is confirmed by the second stage, the complete voice assistant application is used to perform voice assistant operations based on the voice command or query that includes or follows the keyword. If the voice assistant application is in a low-power mode (e.g., sleep) when the keyword is detected, there may be a significant delay between detecting the keyword and when the voice assistant application is ready to receive and process speech. This delay, referred to herein as the latency of the voice service or voice assistant application, may be longer with more complex speech recognition models. Thus, while more complex speech recognition models can result in improved speech recognition accuracy, more complex speech recognition models may also result in increased latency that is detrimental to the user experience.
[0045]
[0074] At least a portion of the increased latency of complex speech recognition models results from delaying execution of the speech recognition model on the most powerful available processing core to conserve power, particularly in portable battery-powered devices. Many such devices include several different types of processing cores. By way of example, these different types of processing cores may include low-power processing cores and high-power processing cores. In this example, the low-power processing cores have lower power demands than the high-power processing cores, but the low-power processing cores also have reduced performance with respect to various metrics. By way of example, relative to the high-power processing cores, the low-power processing cores may have slower clock cycles, execute fewer instructions per second, perform fewer operations per second, etc.
[0046]
[0075] When a device has multiple processing cores, the device may use a scheduler to control which processes run on each processing core. In some implementations, the scheduler is configured to reserve one or more processing cores (referred to herein as “reserved processing cores”) for particular types of processes. In such implementations, the reserved processing cores are reserved for use by processes that require or desire the improved performance of a high-power processing core, even though this results in increased power demands. In some such implementations, the scheduler is configured to use other processing cores (referred to herein as “additional processing cores” or “non-reserved processing cores”) for any process, but may schedule certain processes before other processes, such as due to scheduling priority. As an example, the scheduler may assign a foreground application's process to a reserved processing core or to one of the non-reserved processing cores, but may assign a background application's process to only one of the non-reserved processing cores.
[0047]
[0076] In certain aspects disclosed herein, the latency of a speech service is reduced by reducing the delay between the detection of a keyword in a first-stage keyword detector and the execution of a speech recognition model on one or more reserved processing cores. For example, in some implementations, latency is reduced by transitioning a processor (e.g., an application processor) from an idle state to a awake state and starting the speech service prior to confirmation of keyword detection. In this example, the wake-up process is initiated based on the first-stage keyword detector generating an indication of keyword detection. If the second-stage keyword detector or speech service determines that keyword detection cannot be confirmed, the processor may be returned to an idle state. In contrast, if the second-stage keyword detector or speech service confirms keyword detection, the speech service is ready to perform speech recognition operations more quickly than if the process of waking up the processor and starting the speech service were delayed until keyword detection was confirmed.
[0048]
[0077] In some implementations, based on a signal indicating keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, a state change is initiated to allow the voice service in the low power mode to be scheduled for execution on one or more reserved processor cores. For example, the state change to allow the voice service to be scheduled for execution on one or more reserved processor cores may include scheduling a process of the voice service for execution on one or more reserved processor cores or instructing a scheduler to schedule a process of the voice service on one or more reserved processor cores. As another example, the state change to allow the voice service to be scheduled for execution on one or more reserved processor cores may include setting or modifying parameters (e.g., scheduling parameters) used by the scheduler to determine which processes are assigned to which processing cores. By way of example, the scheduler may maintain or have access to scheduling priority values associated with various applications or processes. In this illustrative example, the state change may include increasing a scheduling priority value associated with the voice service or a process of the voice service. As another example, the change in state to allow the voice service to be scheduled for execution on one or more reserved processor cores may include moving the voice service's process from a background task to a foreground task. In this example, the scheduler may be configured to allow the foreground task to use the reserved processing cores and restrict the background task from using the reserved processing cores. As yet another example, the change in state to allow the voice service to be scheduled for execution on one or more reserved processor cores may include reassigning the voice service's process from a first scheduling group to a second scheduling group.In this example, the scheduler may be configured to allow the second scheduling group to use the reserved processing cores and restrict the first scheduling group from using the reserved processing cores. In yet other examples, the scheduler uses more, fewer, or different scheduling parameters to assign processes to processing cores. In such examples, any one or more scheduling parameters that enable the scheduler to schedule voice services for execution on one or more reserved processor cores may be set or modified based on a signal indicating keyword detection by the first stage keyword detector and prior to confirmation of keyword detection to reduce latency.
[0049]
[0078] In some examples, the state change to allow the voice service to be scheduled for execution on one or more reserved processor cores includes modifying one or more scheduling parameters associated with a different application or service (e.g., other than the voice service) and causing the voice service to inherit these one or more scheduling parameters. By way of example, the state change may include binding the voice service with a second-stage keyword detector and setting or modifying scheduling parameters associated with the second-stage keyword detector. By way of example, the scheduling priority of the second-stage keyword detector may be increased. As another illustrative example, the second-stage keyword detector may be designated a foreground task.
[0050]
[0079] In certain aspects, changes made based on a signal indicating keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection are reset or undone if keyword detection is not confirmed. For illustrative purposes, if a scheduling parameter associated with a voice service (or second-stage keyword detector) changes from a first value to a second value based on a signal indicating keyword detection, the scheduling parameter is changed from the second value back to the first value if the second-stage keyword detector (or voice service) denies keyword detection. By resetting the scheduling parameter in this manner, the voice service is not allowed to run on the reserved processor core. As another illustrative example, if an application processor is woken from a sleep state based on a signal indicating keyword detection, the application processor is returned to a sleep state or shut down if the second-stage keyword detector (or voice service) denies keyword detection. Accordingly, various aspects disclosed herein significantly reduce latency without significantly increasing power demands.
[0051]
[0080] Certain aspects of the present disclosure are described below with reference to the drawings. In the description, common features are designated by common reference numerals. Various terms used herein are used only to describe particular implementations and are not intended to limit the implementations. For example, the singular forms "a," "an," and "the" are intended to include the plural unless the context clearly indicates otherwise. Furthermore, some features described herein are singular in some implementations and plural in other implementations. For illustrative purposes, FIG. 1 shows a system 100 including one or more application processors ("application processor 120" in FIG. 1), indicating that in some implementations, the system 100 includes a single application processor 120 and in other implementations, the system 100 includes multiple application processors 120. For ease of reference herein, such features will generally be introduced as "one or more" features and will thereafter be referred to in the singular or optional plural (generally indicated by a term ending in "s"), unless an aspect relating to a plurality of the feature is described.
[0052]
[0081] The terms “comprise,” “comprises,” and “comprising” are used interchangeably herein with “include,” “includes,” or “including.” Furthermore, the term “wherein” is used interchangeably with “where.” As used herein, “exemplary” indicates one example, one implementation, and / or one aspect and should not be construed as limiting or as indicating a preferred or preferred implementation. As used herein, ordinal terms (e.g., “,” “second,” “third,” etc.) used to modify elements of a structure, component, operation, etc. do not by themselves indicate any priority or order of that element relative to another element, but rather merely distinguish that element from other elements having the same name (except for the use of the ordinal term). As used herein, the term “set” refers to one or more of a particular element, and the term “plurality” refers to a plurality (e.g., two or more) of a particular element.
[0053]
[0082] As used herein, "coupled" may include "communicatively coupled," "electrically coupled," or "physically coupled," and (alternatively) may include any combination thereof. Two devices (or components) may be coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) directly or indirectly via one or more other devices, components, wires, buses, networks (e.g., wired networks, wireless networks, or combinations thereof), etc. Two devices (or components) that are electrically coupled may be included in the same device or in different devices and may be connected via electronic circuits, one or more connectors, or inductive coupling, as illustrative, non-limiting examples. In some implementations, two devices (or components) that are communicatively coupled, such as in electrical communication, may send and receive electrical signals (digital or analog signals) directly or indirectly, such as via one or more wires, buses, networks, etc. As used herein, "directly coupled" refers to two devices that are coupled (e.g., communicatively coupled, electrically coupled, or physically coupled) with no intervening components.
[0054]
[0083] In this disclosure, terms such as “determining,” “calculating,” “estimating,” “shifting,” and “adjusting” may be used to describe how one or more operations are performed. It should be noted that such terms should not be construed as limiting, and other techniques may be utilized to perform similar operations. Furthermore, “generating,” “calculating,” “estimating,” “using,” “selecting,” “accessing,” and “determining” referred to herein may be used interchangeably. For example, “generating,” “calculating,” “estimating,” or “determining” a parameter (or signal) may refer to actively generating, estimating, calculating, or determining the parameter (or signal), or may refer to using, selecting, or accessing a parameter (or signal) that has already been generated, such as by another component or device.
[0055]
[0084] 1 is a block diagram of an example system 100 configured to reduce latency following an indication of keyword detection. The system 100 includes one or more microphones 102, a first-stage keyword detector 108, a scheduler 112, and one or more processors (e.g., application processor 120 in FIG. 1 ) including multiple processing cores 122. In some implementations, the microphones 102, first-stage keyword detector 108, scheduler 112, and application processor 120 are integrated into a single device, such as a mobile device, a computer (e.g., a laptop, desktop, or tablet computer), a wearable electronic device, an Internet of Things device (e.g., a smart appliance, a smart speaker, a home automation system, etc.), a vehicle, or another device configured to recognize and respond to keywords and user speech. In other implementations, the microphones 102, first-stage keyword detector 108, scheduler 112, and application processor 120 are distributed among several devices that communicate via wired or wireless transmission. For example, in some implementations, the microphone 102 and the first-stage keyword detector 108 are incorporated within a first device, and the scheduler 112 and the application processor 120 are incorporated within a second device. In some examples of such implementations, the second device and the first device are co-located and communicate via short-range transmission, such as via a Universal Serial Bus (USB) connection or via Bluetooth® communication (BLUETOOTH® is a registered trademark of BLUETOOTH SIG, Inc., Kirkland, Washington, USA). In other examples of such implementations, the second device and the first device are remote from each other and communicate via long-range transmission (such as via a cellular network or Ethernet®).By way of example, the first device may include, correspond to, or be included within a portable user device (e.g., a mobile phone), and the second device may include, correspond to, or be included within a server computer of a voice assistant service.
[0056]
[0085] In the example of FIG. 1 , the first-stage keyword detector 108 executes on one or more always-on processors 106. In this context, “always-on” indicates that under normal circumstances, the always-on processor 106 is operational when the system 100 is operational. However, the always-on processor 106 may be powered off when the system 100 is powered off. Additionally, user settings for the system 100 may allow a user to turn off the always-on processor 106 in some situations (e.g., when the user does not want to use a voice service). The always-on processor 106 is generally a low-power processor, such as an application-specific integrated circuit (ASIC), digital signal processor (DSP), or other low-power integrated circuit. Thus, the first-stage keyword detector 108 is generally a relatively small model (e.g., compared to a complete natural language model that may be used by a voice service). In this context, a “voice service” refers to a set of applications or processes executable to respond to commands or queries provided via natural language speech (generally after a keyword is provided). The first-stage keyword detector 108 may include or correspond to a hidden Markov model, a universal speech model for independent speakers, a neural network, or another model configured to monitor the audio data 104 from the microphone 102 for utterances containing one or more keywords. Keywords are generally single words or short phrases that are easy for a user to remember and ideally easily detectable using a relatively small model.
[0057]
[0086] In some implementations, while the first-stage keyword detector 108 listens for a keyword, other components 100 of the system may return to a power-saving mode, such as a standby mode, a sleep mode, or a power-down mode. As used herein, the terms “power-saving mode,” “standby mode,” “sleep mode,” and “low-power mode” are used interchangeably to refer to any mode or state in which a device or component consumes less power than when the device or component is in a normal operating mode. Furthermore, in this context, a power-down mode indicates that a device or component is not powered. Additionally or alternatively, while the first-stage keyword detector 108 listens for a keyword, other components 100 of the system may perform operations unrelated to speech detection and speech recognition. For example, the voice service processes (e.g., voice service processes 130A and 130B) of FIG. 1 execute based on keyword detection 110 by the first-stage keyword detector 108 and are dormant, powered down, or otherwise not executed if not (e.g., there is no keyword detection 110).
[0058]
[0087] Scheduler 112 is configured to assign processes to run on particular ones of processor cores 122. For example, scheduler 112 may assign a first process of an application to run on a first core and assign a second process of the same application or a different application to run on a second core. As used herein, an application may include multiple processes, and each process may include multiple tasks. In certain implementations, scheduler 112 is a built-in function of the system, e.g., scheduler 112 operates at the basic input / output system (BIOS) level. In other implementations, scheduler 112 is a function of a higher-level operating system, such as the Android® operating system, the iOS® operating system, the macOS® operating system, the Windows® operating system, or the Linux® operating system (Android is a registered trademark of Google, Inc., Mountain View, Calif., USA; iOS is a trademark of Apple Inc., Cupertino, Calif., USA, used under license from Cisco Technologies, Inc., San Jose, Calif., USA; macOS is a registered trademark of Apple Inc., Cupertino, Calif., USA; Windows is a registered trademark of Microsoft Corporation, Seattle, Washington, USA; and Linux is a registered trademark of Lena Torvalds). In still other implementations, scheduler 112 is an application running within the framework of the higher-level operating system.
[0059]
[0088] Scheduler 112 assigns processes to processor cores 122 based on scheduling privileges associated with the processes (e.g., first scheduling privilege 114 and second scheduling privilege 116 in FIG. 1 ). As used herein, “scheduling privilege” is a governing term that refers to any mechanism or algorithm for prioritizing the assignment of processes to processor cores 122. Scheduling privileges 114 and 116 are allocated to processes differently depending on the particular implementation. For example, scheduling privileges 114 and 116 may be assigned based on a priority value or other scheduling parameter value associated with each process, based on whether the process is a foreground or background process, based on the scheduling group to which the process is assigned, based on other factors, or based on a combination of two or more of the above.
[0060]
[0089] In some implementations, the processing cores 122 of the application processor 120 include one or more reserved processor cores 124 and one or more additional processor cores 126. In this context, a “reserved processor core” refers to a core that can be used only by processes with a particular scheduling privilege. For example, in FIG. 1 , the scheduler 112 can assign a process with a first scheduling privilege 114 to the reserved processor core 124 or the additional processor core 126. In contrast, the scheduler 112 can assign a process with a second scheduling privilege 116 only to the additional processor core 126. In some implementations, the scheduling privileges are dynamically assigned, so a process may have the first scheduling privilege 114 at a first time and the second scheduling privilege 116 at a second time, as conditions change. Generally, the reserved processor core 124 is a higher-performance core than the additional processor core 126, in which case the reserved processor core 124 may have a greater power demand than the additional processor core 126. As a result, power is conserved by reserving reserved processor cores 124 for specific processes.
[0061]
[0090] 1 also shows one or more sensors 132 coupled to the application processor 120. In particular implementations, the sensors 132 are configured to generate context data 134 that can be used by the voice service process 130 to process speech input received via the audio data 104. In some implementations, the context data 134 is accessible only to authorized applications or processes, in which case the context data 134 may be accessible to the voice service process 130A by a scheduling privilege associated with the voice service process 130A, by the voice service process 130A running on a reserved processor core 124, or by factors that lead to the assignment of particular scheduling privileges to the voice service process 130A. For example, the context data 134 may be accessible to a foreground application, and the voice service process 130A may be assigned a first scheduling privilege by virtue of the voice service being designated the foreground application.
[0062]
[0091] FIG. 1 also illustrates one or more output devices 136 coupled to the application processor 120. In particular implementations, the output device 136 is configured to generate a user-perceptible output of a user notification 138. The output can include or correspond to sound, vibration or other haptic output, visual output (e.g., light, text, icon, etc.). In some implementations, the particular output corresponding to the user notification 138 is user-configurable. In some implementations, the operating system is configured to automatically generate a user notification based on some operation being performed on the application processor 120. For example, the operating system may automatically generate a user notification 138 when a process or application is brought to the foreground, when a process or application runs on a reserved processor core 124, when a process or application accesses context data 134, or under other circumstances. In particular aspects, the user notification 138 associated with the voice service process 130 is suppressed, inhibited, or delayed until keyword detection is confirmed.
[0063]
[0092] During operation, the voice service may be in a low power state until the first-stage keyword detector 108 indicates keyword detection 110. A voice service in a low power state conserves power associated with executing a voice service application. In some implementations, when the voice service is in a low power state, one or more of the application processors 120 may also be in a low power state. In this context, an application or service is in a low power state when the application or service is not running, when only a background or monitoring process of the application or service is running (e.g., when a listener process for the voice service is listening for keyword detection 110 but no other processes of the voice service are running), or when one or more processes of the voice service are associated with scheduling privileges that do not allow processes to run on reserved processor cores 124. In this context, a processor or core is in a low power state when the processor or core is not being used to execute instructions. In some cases, a processor or core in a low power state may be unpowered (e.g., off), may be powered but not provided with a clock signal, may be powered but disconnected from operating memory, or may be powered at a lower power level than the processor or core uses when executing instructions.
[0064]
[0093] Based on a signal indicating keyword detection 110 by first-stage keyword detector 108, and prior to confirmation of keyword detection (e.g., keyword confirmation 128 of FIG. 1 ), system 100 may initiate a state change to allow a voice service or a process thereof (e.g., voice service process 130A) to be scheduled for execution on one or more of the reserved processor cores 124. By initiating a state change to allow a voice service or a process thereof to be executed on reserved processor core 124 prior to keyword confirmation 128, latency associated with the execution of the voice service is reduced. For example, because reserved processor core 124 is generally the highest-performance core of application processor 120, processes executing in reserved processor core 124 may execute more quickly than processes executing on additional processor cores 126. FIGS. 6A-10C show various examples of state changes that may be initiated based on keyword detection 110 to allow a voice service or a process thereof (e.g., voice service process 130) to be scheduled for execution on one or more of the reserved processor cores 124.
[0065]
[0094] To limit power consumption associated with the always-on processor 106, the first-stage keyword detector 108 uses a relatively small model to detect keywords. Therefore, the first-stage keyword detector 108 may occasionally generate false keyword detections. To limit the extra power consumption resulting from using the reserved processor core 124 to execute the voice service process 130, a second-stage keyword detector may be used to confirm or deny keyword detection 110. In the implementation shown in FIG. 1, the voice service performs the operations of the second-stage keyword detector. In other implementations, such as those described with reference to FIGS. 2-5, the second-stage keyword detector is separate from the voice service and separate from the first-stage keyword detector 108. Using the reserved processor core 124 increases the power demands of the system 100. In certain aspects, if the keyword detection 110 is not confirmed (or denied), a return signal 140 may be generated to return the system 100 to the state it was in prior to the signal indicating the keyword detection 110. The wake-up signal 140 may be generated by the second stage keyword detector or by the voice service process 130. Thus, the system 100 is able to significantly reduce the latency associated with voice services without significantly increasing power demands.
[0066]
[0095] 2 is a block diagram of an example device 200 configured to reduce latency following an indication of keyword detection. In FIG. 2, device 200 includes various components of system 100 of FIG. 1, each operating as described with reference to FIG. 1 unless otherwise specified below. In the example shown in FIG. 2, device 200 includes a first power domain 210 and a second power domain 220. In this example, first power domain 210 is a higher-power domain than second power domain 220, which is a lower-power domain. For example, second power domain 220 is configured to power low-power always-on components, such as always-on processor 106, and first power domain 210 is configured to power high-power components, such as application processor 120, scheduler 112, etc.
[0067]
[0096] 2, device 200 also includes a second-stage keyword detector 212 executing on one or more of processor cores 122 of application processor 120. Second-stage keyword detector 212 is configured to confirm or denies keyword detection 110. For example, after first-stage keyword detector 108 indicates, via keyword detection 110, that a keyword has been detected in audio data 104, audio data 104 is provided to second-stage keyword detector 212 for keyword confirmation 128.
[0068]
[0097] 2 , the second-stage keyword detector 212 is associated with the first power domain 210. Thus, the second-stage keyword detector 212 may be in a low-power state when the first-stage keyword detector 108 generates the keyword detection 110, in which case the second-stage keyword detector 212 may be woken up or powered up based on (e.g., in response to) the first-stage keyword detector 108 generating the keyword detection 110. Furthermore, as described above, a change in state of the device 200 may be initiated based on (e.g., in response to) the first-stage keyword detector 108 generating the keyword detection 110. For example, a scheduling privilege associated with a voice service may be set, updated, or changed such that a process for the voice service is allowed to run on a reserved processor core 124. In a particular implementation, the change in state includes binding the voice service and the second-stage keyword detector 212 such that the scheduling privilege of the voice service is based on the scheduling privilege of the second-stage keyword detector 212. In such an implementation, the scheduling privilege of the second-stage keyword detector 212 may be elevated to enhance the scheduling privilege of the voice service. For example, after the voice service and the second-stage keyword detector 212 are bound, the scheduler 112 may change the designation of the second-stage keyword detector 212 from a background application to a foreground application. In this example, if the second-stage keyword detector 212 confirms keyword detection, the voice service process 130 is launched as a foreground service and therefore can run on the reserved processor core 124. In some implementations, a user notification is automatically generated when the application is designated the foreground application.In such an implementation, the application processor 120 may be configured to execute instructions to delay or suppress the generation of a user notification associated with changing the designation of the second stage keyword detector 212 from a background application to a foreground application so that the user is not notified at least until keyword confirmation 128 is complete.
[0069]
[0098] In another example, after the voice service and second-stage keyword detector 212 are bound, the scheduler 112 may increase the scheduling privilege of the second-stage keyword detector 212 or change the scheduling priority of the second-stage keyword detector 212 to allow the second-stage keyword detector 212 to run on the reserved processor core 124. In this example, if the second-stage keyword detector 212 confirms the keyword detection 110, the voice service process 130 may run on the reserved processor core 124 when started.
[0070]
[0099] In some implementations, the voice service is not bound to the second-stage keyword detector 212, or the scheduling privilege of the voice service is changed regardless of the scheduling privilege of the second-stage keyword detector 212. For example, a state change to modify (e.g., increase) the scheduling privilege of the voice service may be initiated directly based on keyword detection independent of binding the voice service with the second-stage keyword detector 212. To illustrate, upon keyword detection 110 by the first-stage keyword detector 108, the scheduler 112 may change the designation of the voice service from a background application to a foreground application. As another illustrative example, upon keyword detection 110 by the first-stage keyword detector 108, the scheduler 112 may change the scheduling priority value of the voice service (e.g., to a higher scheduling priority value) or other scheduling privilege of the voice service to allow the voice service process to be scheduled for execution on the reserved processor cores 124.
[0071]
[0100] 3 is a block diagram of another example of a device 300 configured to reduce latency following an indication of keyword detection. In FIG. 3, device 300 includes various components of device 200 of FIG. 2, each of which operates as described with reference to FIG. 2 unless otherwise specified below.
[0072]
[0101] 3, scheduler 112 and application processor 120 execute in first power domain 210. However, second stage keyword detector 212 executes in second power domain 220. For example, scheduler 112 may execute on one or more processor cores 122 of application processor 120. In a particular implementation of the example of FIG. 3, second stage keyword detector 212 executes on always-on processor 106. As a result, second stage keyword detector 212 has a lower power demand than second stage keyword detector 212 in the example of FIG. 2.
[0073]
[0102] 4 is a block diagram of another example of a device 400 configured to reduce latency following an indication of keyword detection. In FIG. 4, device 400 includes various components of device 200 of FIG. 2, each of which operates as described with reference to FIG. 2 unless otherwise specified below.
[0074]
[0103] 4, the scheduler 112 and the second stage keyword detector 212 execute in the second power domain 220, and the application processor 120 executes in the first power domain 210. For example, the scheduler 112 and the second stage keyword detector 212 may execute on the always-on processor 106. As a result, the second stage keyword detector 212 and the scheduler 112 have lower power demands than the second stage keyword detector 212 and the scheduler 112 in the examples of FIGS.
[0075]
[0104] 5 is a block diagram of an example of a system 500 configured to reduce latency following an indication of keyword detection. In FIG. 5, the system 500 includes two or more devices, such as a first device 502 and a second device 504. In the example shown in FIG. 5, the first device 502 includes the always-on processor 106 and the first-stage keyword detector 108, and the second device 504 includes the scheduler 112, the application processor 120, and the second-stage keyword detector 212. In other implementations of the system 500, the scheduler 112, the second-stage keyword detector 212, or both are included in the first device 502. For example, the first device 502 may include or correspond to a user device, and the second device 504 may include or correspond to a server or a smart hub device.
[0076]
[0105] In certain aspects, the first device 502 and the second device 504 communicate over one or more networks 506, each including a communication link. In some implementations, one or more of the communication links are wireless links conforming to a proprietary or public standard. Examples of wireless links include personal area network links, such as links conforming to the BLUETOOTH protocol specification, wireless local area network links, such as links conforming to the IEEE 802.11 protocol specification, and / or wireless wide area network links, such as the Long Term Evolution protocol specification (BLUETOOTH is a registered trademark of BLUETOOTH SIG, Inc., Kirkland, WA, USA, and IEEE is a registered trademark of the Institute of Electrical and Electronics Engineers, Piscataway, NJ, USA). Examples of wired links include short-range links, such as Universal Serial Bus links, and / or long-range links, such as Ethernet links, digital subscriber line links, and fiber optic links.
[0077]
[0106] 5, the first device 502 is configured to perform first-tier keyword detection by monitoring the audio data 104. When the first-tier keyword detector 108 generates an indication of keyword detection 110, the first device 502 sends the indication of keyword detection 110 to the second device 504 via the network 506. The first device 502 also sends at least a portion of the audio data 104 to the second device 504 based on detecting the keyword.
[0078]
[0107] Upon receiving an indication of keyword detection 110 from the first device 502 and prior to confirmation of keyword detection, the second device 504 initiates a state change to allow the voice service in the low power mode to be scheduled for execution on one or more reserved processor cores, as described with reference to FIG. 1. If the second stage keyword detector 212 confirms keyword detection 110, the voice service process 130 analyzes the audio data 104 and sends result data 510 to the first device 502 over the network 506. In some implementations, the result data 510 includes data indicative of words detected in the speech represented by the audio data 104 (e.g., a voice command or voice query following a keyword). In some implementations, the result data 510 includes data responsive to words detected in the speech represented by the audio data 104 (e.g., a voice command or voice query following a keyword). By way of example, if the voice query requested weather data, the result data 510 may include the requested weather data. In some implementations, the results data 510 includes data indicative of words detected in the speech represented by the audio data 104 (e.g., voice commands or voice queries following keywords) and data responsive to the words detected in the speech represented by the audio data 104. For example, if the audio data includes a voice query to search for particular information, the results data 510 may include a list of search results and text identifying the search used to generate the search results (e.g., the text of the voice query).
[0079]
[0108] If the second-stage keyword detector 212 denies the keyword detection 110, or if more than a threshold amount of time has passed without receipt of audio data 104 after the keyword detection 110 was received, the second-stage keyword detector 212 (or another process in the application processor 120) may generate a return signal 140. In the example shown in FIG. 5, the return signal 140 resets the second device 504 to the state of the second device 504 before the indication of keyword detection 110 was received. The return signal 140 may also be transmitted to the first device 502 via the network 506 to return the first device 502 to the state of the first device 502 before the first-stage keyword detector 108 generated the indication of keyword detection 110.
[0080]
[0109] 6A, 6B, and 6C illustrate an example of operations performed by scheduler 112 to reduce latency following an indication of keyword detection. In the example illustrated in FIGS. 6A, 6B, and 6C, scheduler 112 assigns a process to a particular processor core (e.g., first core 610 or second core 612 in FIGS. 6A-6C) based on a scheduling privilege assigned to the process. FIG. 6A illustrates a state 602 of scheduler 112 prior to detection of a keyword by first-stage keyword detector 108 of FIGS. 1-5. In FIG. 6A, second scheduling privilege 116 is assigned to voice service process 130, resulting in voice service process 130 being assigned to first core 610. In this example, the process associated with second scheduling privilege 116 is allowed to run on additional processor core 126 of FIGS. 1-5 but is not allowed to run on reserved processor core 124. Thus, the first core 610 is one of the additional processor cores 126.
[0081]
[0110] 6B illustrates a state 604 of the scheduler 112 after detection of a keyword by the first-stage keyword detector 108 of FIGS. 1-5. In FIG. 6B, the first scheduling privilege 114 is assigned to the voice service process 130, which in turn is assigned to the second core 612. In this example, the process associated with the first scheduling privilege 114 is allowed to run on the reserved processor cores 124 and the additional processor cores 126 of FIGS. 1-5. Thus, the second core 612 is one of the reserved processor cores 124 or one of the additional processor cores 126. The change in state of the scheduler 112 from state 602 to state 604 is initiated upon detection of a keyword 110 from the first-stage keyword detector 108.
[0082]
[0111] 6C illustrates a state 606 of the scheduler 112 after keyword detection has been denied (e.g., by the second-stage keyword detector 212 of FIGS. 2-5 or by the voice service process 130). The scheduler 112 may also or alternatively be in state 606 after the speech recognition operations of the voice service have completed (e.g., when the end of the voice interaction has been reached). In FIG. 6C, the state change from state 602 to state 604 has been reversed. Thus, in state 606, the second scheduling privilege 116 is assigned to the voice service process 130, and the voice service process 130 is assigned to the first core 610.
[0083]
[0112] 7A, 7B, and 7C illustrate an example of operations performed by scheduler 112 to reduce latency following an indication of keyword detection. In the example shown in FIGS. 7A, 7B, and 7C, scheduler 112 assigns tasks, processes, or applications to scheduling groups, and the scheduling group to which the task, process, or application is assigned indicates on which processor cores the task, process, or application is allowed to execute. FIG. 7A illustrates a state 702 of scheduler 112 prior to detection of a keyword by first-stage keyword detector 108 of FIGS. 1-5. In FIG. 7A, voice service process 130 is assigned to second scheduling group 710. In this example, processes associated with second scheduling group 710 are allowed to execute on additional processing cores 126 of FIGS. 1-5, but are not allowed to execute on reserved processor cores 124.
[0084]
[0113] 7B shows a state 704 of the scheduler 112 after detection of a keyword by the first-stage keyword detector 108 of FIGS. 1-5. In FIG. 7B, the voice service process 130 is assigned to a first scheduling group 712. In this example, the first scheduling group 712 is a higher processing group than the second scheduling group 710. The processes associated with the first scheduling group 712 are allowed to execute on the reserved processor core 124 and the additional processing core 126 of FIGS. 1-5. The change in state of the scheduler 112 from state 702 to state 704 is initiated upon detection of a keyword 110 from the first-stage keyword detector 108.
[0085]
[0114] 7C illustrates state 706 of scheduler 112 after keyword detection has been rejected (e.g., by second-stage keyword detector 212 of FIGS. 2-5 or by voice service process 130). Scheduler 112 may also, or alternatively, be in state 706 after speech recognition operations of the voice service have completed (e.g., when the end of the voice interaction has been reached). In FIG. 7C, the state change from state 702 to state 704 has been reversed. Thus, in state 706, voice service process 130 is again assigned to the second scheduling group 710.
[0086]
[0115] 8A, 8B, and 8C illustrate an example of operations performed by scheduler 112 to reduce latency following an indication of keyword detection. In the example shown in FIGS. 8A, 8B, and 8C, scheduler 112 designates each application or process as a background application 810 or a foreground application 812. FIG. 8A illustrates a state 802 of scheduler 112 prior to detection of a keyword by first-stage keyword detector 108 of FIGS. 1-5. In FIG. 8A, voice service process 130 is designated as background application 810. In this example, background application 810 is enabled to run on additional processing core 126 of FIGS. 1-5, but is not enabled to run on reserved processor core 124.
[0087]
[0116] 8B shows a state 804 of the scheduler 112 after detection of a keyword by the first-stage keyword detector of FIGS. 1-5. In FIG. 8B, the voice service process 130 is designated the foreground application 812. In this example, the foreground application 812 is allowed to run on the reserved processor core 124 and the additional processor core 126 of FIGS. 1-5. The change in state of the scheduler 112 from state 802 to state 804 is initiated upon detection of a keyword 110 from the first-stage keyword detector 108.
[0088]
[0117] 8C illustrates state 806 of scheduler 112 after keyword detection has been denied (e.g., by second-stage keyword detector 212 of FIGS. 2-5 or by voice service process 130). Scheduler 112 may also, or alternatively, be in state 806 after speech recognition operations of the voice service have completed (e.g., when the end of the voice interaction has been reached). In FIG. 8C, the state change from state 802 to state 804 has been reversed. Thus, in state 806, voice service process 130 is assigned background application 810.
[0089]
[0118] 9A, 9B, and 9C illustrate an example of operations performed by scheduler 112 to reduce latency following an indication of keyword detection. In the example shown in Figures 9A, 9B, and 9C, scheduler 112 modifies scheduling parameters 910 to schedule a process such as voice service process 130. In particular, scheduler 112 changes one or more values of scheduling parameters 910.
[0090]
[0119] 9A illustrates a state 902 of the scheduler 112 prior to detection of a keyword by the first-stage keyword detector 108 of FIGS. 1-5. In FIG. 9A, a second value 912 of the scheduling parameter 910 is assigned to the voice service process 130. In this example, the process assigned the second value 912 of the scheduling parameter 910 is enabled to run on the additional processing core 126 of FIGS. 1-5, but is not enabled to run on the reserved processor core 124.
[0091]
[0120] 9B shows a state 904 of the scheduler 112 after detection of a keyword by the first stage keyword detector of FIGS. 1-5. In FIG. 9B, a first value 914 of the scheduling parameter 910 is assigned to the voice service process 130. In this example, the process assigned the first value 914 of the scheduling parameter 910 is allowed to run on the reserved processor core 124 and the additional processor core 126 of FIGS. 1-5. The change of state of the scheduler 112 from state 902 to state 904 is initiated upon detection of a keyword 110 from the first stage keyword detector 108.
[0092]
[0121] 9C illustrates state 906 of scheduler 112 after keyword detection has been rejected (e.g., by second-stage keyword detector 212 of FIGS. 2-5 or by voice service process 130). Scheduler 112 may also, or alternatively, be in state 906 after speech recognition operations of the voice service have completed (e.g., when the end of the voice interaction has been reached). In FIG. 9C, the state change from state 902 to state 904 has been reversed. Thus, in state 906, the second value 912 of scheduling parameter 910 is again assigned to voice service process 130.
[0093]
[0122] 10A, 10B, and 10C illustrate an example of operations performed by scheduler 112 to reduce latency following an indication of keyword detection. In the example shown in FIGS. 10A, 10B, and 10C, scheduler 112 assigns a priority 1010 to each task 1020 to be executed, where task 1020 comprises an application, process, or portion of a process, and the tasks 1020 are scheduled for execution according to their assigned priority 1010. For example, in FIG. 10A, the first task 1022 is associated with the first priority 1012, which is the highest priority in this example, and therefore the first task 1022 is scheduled for execution before the others of the tasks 1020.
[0094]
[0123] 1-5. In FIG. 10A, a first priority 1012 is assigned to a first task 1022, a second priority 1014 is assigned to a second task 1024, a third priority 1016 is assigned to a third task 1026, and an Nth priority 1018 is assigned to the voice service process 130 or a task of the voice service process 130. In FIGS. 10A-10C, N represents an integer greater than or equal to 4. In this example, the task assigned the first priority 1012 (e.g., the first task 1022) is the highest priority task and is scheduled for execution before the other task 1020. In some implementations, only tasks assigned at least a threshold priority level are allowed to execute on the reserved processor cores 124.
[0095]
[0124] Figure 10B shows a state 1004 of the scheduler 112 after detection of a keyword by the first-stage keyword detector of Figures 1-5. In Figure 10B, the voice service process 130 or one or more tasks of the voice service process 130 are assigned a first priority 1012, and other tasks 1020 are shifted down in priority. The change of state of the scheduler 112 from state 1002 to state 1004 is initiated upon detection 110 of a keyword from the first-stage keyword detector 108.
[0096]
[0125] 10C illustrates state 1006 of scheduler 112 after keyword detection has been rejected (e.g., by second-stage keyword detector 212 of FIGS. 2-5 or by voice service process 130). Scheduler 112 may also, or alternatively, be in state 1006 after speech recognition operations for a voice service have completed (e.g., when the end of the voice interaction has been reached). In FIG. 10C, the state change from state 1002 to state 1004 has been reversed. Thus, in state 1006, voice service process 130 or a task of voice service process 130 is again assigned to the Nth priority 1018.
[0097]
[0126] 11 shows an implementation of system 100 as an integrated circuit 1100 including always-on processor 106 and application processor 120. Integrated circuit 1100 includes inputs 1104, such as one or more bus interfaces, to allow input data 1102 to be received. Input data 1102 may include or correspond to audio data 104, context data 134, or other data. Integrated circuit 1100 also includes outputs 1106, such as bus interfaces, to allow output signals 1108, such as user notifications 138, to be sent.
[0098]
[0127] 11, the always-on processor 106 includes a first-stage keyword detector 108. Additionally, the always-on processor 106 is coupled to an application processor 120. In the particular implementation shown in FIG. 11, the application processor 120 includes a scheduler 112, a reserved processor core 124, and an additional processor core 126. In other implementations, the always-on processor 106 includes the scheduler 112. The integrated circuit 1100 enables the implementation of speech recognition with low latency while conserving power. In some implementations, the integrated circuit 1100 may be incorporated into another device to enable the other device to provide speech recognition with low latency while conserving power.
[0099]
[0128] FIG. 12 illustrates a mobile device 1200 incorporating aspects of the system 100 of FIG. 1. For example, in FIG. 12, the mobile device 1200 includes the system 100 of FIG. 1, the device 200 of FIG. 2, the device 300 of FIG. 3, the device 400 of FIG. 4, the integrated circuit 1100 of FIG. 11, or a combination thereof. In FIG. 12, the mobile device 1200 includes an always-on processor 106, a first-stage keyword detector 108, a scheduler 112, a reserved processor core 124, and an additional processor core 126, each of which is shown with dotted lines to indicate that they are generally invisible to the user. The mobile device 1200 includes, as illustrative and non-limiting examples, a phone or a tablet. The mobile device 1200 includes a display screen 1204 and one or more sensors, such as the microphone 102 of FIG. 1.
[0100]
[0129] During operation, the mobile device 1200 may perform certain actions in response to speech input from a user. For example, the user may speak a keyword to activate or launch a voice assistant application that uses or includes the voice service process 130 of FIGS. 1-5. In this example, the first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in the scheduler 112 to allow the voice service process 130 to execute on the reserved processor core 124.
[0101]
[0130] Figure 13 illustrates an earbud 1300 incorporating aspects of the system 100 of Figure 1. For example, in Figure 13, the earbud 1300 includes the system 100 of Figure 1, the device 200 of Figure 2, the device 300 of Figure 3, the device 400 of Figure 4, the integrated circuit 1100 of Figure 11, or a combination thereof. For example, in Figure 13, the first earbud 1302 of the earbud 1300 includes the always-on processor 106, the first stage keyword detector 108, the scheduler 112, the reserved processor core 124, and the additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user. In some implementations, the second earbud 1304 includes separate instances of each of the always-on processor 106, the first stage keyword detector 108, the scheduler 112, the reserved processor core 124, and the additional processor core 126. In still other implementations, the always-on processor 106, the first stage keyword detector 108, the scheduler 112, the reserved processor core 124, and the additional processor core 126 are split between the first earbud 1302 and the second earbud 1304.
[0102]
[0131] The earbuds 1300 include microphones 102, at least one of which is positioned primarily to capture the user's speech. The earbuds 1300 may also include one or more additional microphones positioned primarily to capture environmental sounds (e.g., for noise cancellation operation).
[0103]
[0132] In certain aspects, during operation, the earbud 1300 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or launch a voice assistant application that uses or includes the voice service process 130 of FIGS. 1-5. In this example, the first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in the scheduler 112 to allow the voice service process 130 to execute on the reserved processor core 124.
[0104]
[0133] Figure 14 shows a headset 1400 incorporating aspects of the system 100 of Figure 1. For example, in Figure 14, the headset 1400 includes the system 100 of Figure 1, the device 200 of Figure 2, the device 300 of Figure 3, the device 400 of Figure 4, the integrated circuit 1100 of Figure 11, or a combination thereof. In Figure 14, the headset 1400 includes an always-on processor 106, a first-stage keyword detector 108, a scheduler 112, a reserved processor core 124, and an additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user. The headset 1400 includes a microphone 102 positioned primarily to capture the user's speech and one or more additional microphones (e.g., microphones 1402A and 1402B) positioned primarily to capture environmental sounds (e.g., for noise cancellation operations).
[0105]
[0134] In certain aspects, during operation, headset 1400 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or launch a voice assistant application that uses or includes voice service process 130 of FIGS. 1-5. In this example, first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in scheduler 112 to allow voice service process 130 to execute on reserved processor core 124.
[0106]
[0135] 15 illustrates an example of system 100 incorporated into a wearable electronic device 1500, shown as a "smart watch," that includes a display 1504 and sensors such as microphone 102. For example, in FIG. 15, wearable electronic device 1500 includes system 100 of FIG. 1, device 200 of FIG. 2, device 300 of FIG. 3, device 400 of FIG. 4, integrated circuit 1100 of FIG. 11, or a combination thereof. In FIG. 15, wearable electronic device 1500 includes always-on processor 106, first stage keyword detector 108, scheduler 112, reserved processor core 124, and additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user.
[0107]
[0136] In certain aspects, during operation, the wearable electronic device 1500 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or launch a voice assistant application that uses or includes the voice service process 130 of FIGS. 1-5. In this example, the first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in the scheduler 112 to allow the voice service process 130 to execute on the reserved processor core 124.
[0108]
[0137] FIG. 16 is an illustrative example of a voice-controlled speaker system 1600 including an aspect of the system 100 of FIG. 1. The voice-controlled speaker system 1600 can have wireless network connectivity and is configured to perform voice assistant operations. In FIG. 16, the voice-controlled speaker system 1600 includes the system 100 of FIG. 1, the device 200 of FIG. 2, the device 300 of FIG. 3, the device 400 of FIG. 4, the integrated circuit 1100 of FIG. 11, or a combination thereof. In FIG. 16, the voice-controlled speaker system 1600 includes the always-on processor 106, the first-stage keyword detector 108, the scheduler 112, the reserved processor core 124, and the additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user. The voice-controlled speaker system 1600 also includes one or more speakers 1602 and the microphone 102 of FIG. 1 for receiving voice input or other audio input.
[0109]
[0138] In certain aspects, during operation, the voice-controlled speaker system 1600 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or launch a voice assistant application that uses or includes the voice service process 130 of FIGS. 1-5. In this example, the first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in the scheduler 112 to allow the voice service process 130 to execute on the reserved processor core 124.
[0110]
[0139] Figure 17 illustrates a camera 1700 incorporating aspects of the system 100 of Figure 1. For example, in Figure 17, the camera 1700 includes the system 100 of Figure 1, the device 200 of Figure 2, the device 300 of Figure 3, the device 400 of Figure 4, the integrated circuit 1100 of Figure 11, or a combination thereof. In Figure 17, the camera 1700 includes the always-on processor 106, the first-stage keyword detector 108, the scheduler 112, the reserved processor core 124, and the additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user. The camera 1700 also includes an image sensor 1702.
[0111]
[0140] In certain aspects, during operation, camera 1700 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or launch a voice assistant application that uses or includes voice service process 130 of FIGS. 1-5. In this example, first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in scheduler 112 to allow voice service process 130 to execute on reserved processor core 124.
[0112]
[0141] FIG. 18 illustrates an example of system 100 coupled to or incorporated within a headset 1800, such as a virtual reality headset, an augmented reality headset, a mixed reality headset, an extended reality headset, a head-mounted display, or a combination thereof. A visual interface device, such as a display 1804, is positioned in front of a user's eyes to enable the display of augmented reality or virtual reality images or scenes to the user while the headset 1800 is worn. For example, in FIG. 18, headset 1800 includes system 100 of FIG. 1, device 200 of FIG. 2, device 300 of FIG. 3, device 400 of FIG. 4, integrated circuit 1100 of FIG. 11, or a combination thereof. In FIG. 18, headset 1800 includes always-on processor 106, first-stage keyword detector 108, scheduler 112, reserved processor core 124, and additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user. The headset 1800 also includes one or more sensors, such as the microphone 102 of FIG. 1, a camera, other sensors, or a combination thereof.
[0113]
[0142] In certain aspects, during operation, headset 1800 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or launch a voice assistant application that uses or includes voice service process 130 of FIGS. 1-5. In this example, first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in scheduler 112 to allow voice service process 130 to execute on reserved processor core 124.
[0114]
[0143] Figure 19 illustrates a vehicle (e.g., airborne device 1900) incorporating aspects of system 100 of Figure 1. For example, in Figure 19, airborne device 1900 includes system 100 of Figure 1, device 200 of Figure 2, device 300 of Figure 3, device 400 of Figure 4, integrated circuit 1100 of Figure 11, or a combination thereof. In Figure 19, airborne device 1900 includes always-on processor 106, first stage keyword detector 108, scheduler 112, reserved processor core 124, and additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user.
[0115]
[0144] Aerial device 1900 is a manned, unmanned, or remotely piloted aerial device (e.g., a package delivery drone). Aerial device 1900 includes a control system 1902 and one or more sensors, such as microphone 102 of FIG. 1. Control system 1902 controls various operations of aerial device 1900, such as cargo release, sensor activation, takeoff, navigation, landing, or a combination thereof. For example, control system 1902 may control the flight of aerial device 1900 between a designated point and the deployment of cargo at a particular location.
[0116]
[0145] In operation, the airborne device 1900 may perform certain actions in response to speech input from a user. For example, the user may speak a keyword to activate or launch a voice assistant application that uses or includes the voice service process 130 of FIGS. 1-5. In this example, the first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in the scheduler 112 to allow the voice service process 130 to execute on the reserved processor core 124.
[0117]
[0146] FIG. 20 is an illustrative example of a vehicle 2000 incorporating aspects of the system 100 of FIG. 1. According to one implementation, the vehicle 2000 is an autonomous vehicle. According to other implementations, the vehicle 2000 is a car, truck, motorcycle, aircraft, watercraft, or the like. In FIG. 20, the vehicle 2000 includes a screen 2002, one or more sensors 2004, and the microphone 102 of FIG. 1. For example, in FIG. 20, the vehicle 2000 includes the system 100 of FIG. 1, the device 200 of FIG. 2, the device 300 of FIG. 3, the device 400 of FIG. 4, the integrated circuit 1100 of FIG. 11, or a combination thereof. In FIG. 20, the vehicle 2000 includes the always-on processor 106, the first-stage keyword detector 108, the scheduler 112, the reserved processor core 124, and the additional processor core 126, each shown with dotted lines to indicate that they are generally invisible to the user. The system 100 may be incorporated into or coupled to the vehicle 2000 .
[0118]
[0147] In particular implementations, sensors 2004 include vehicle occupancy sensors, eye tracking sensors, or external environmental sensors (e.g., lidar sensors or cameras). In particular aspects, sensor data from sensors 2004 indicates the location of the user. For example, sensors 2004 are associated with various locations within vehicle 2000.
[0119]
[0148] In certain aspects, during operation, vehicle 2000 may perform certain actions in response to speech input from a user. For example, a user may speak a keyword to activate or initiate a voice assistant application that uses or includes voice service process 130 of FIGS. 1-5. In this example, first-stage keyword detector 108 detects the keyword and generates an indication of keyword detection. In response to the indication of keyword detection, and before keyword detection is confirmed, a state change is initiated in scheduler 112 to allow voice service process 130 to execute on reserved processor core 124.
[0120]
[0149] 21 is a flowchart illustrating an example aspect of a method 2100 for reducing latency following an indication of keyword detection. Method 2100 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from a memory to perform method 2100.
[0121]
[0150] The method 2100 includes generating, by a first-stage keyword detector, a signal indicative of keyword detection, at block 2102. For example, the first-stage keyword detector 108 may monitor audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword.
[0122]
[0151] The method 2100 includes, at block 2104, initiating a state change to allow a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores based on the signal indicating keyword detection and prior to confirmation of keyword detection. For example, the state change may be initiated before keyword confirmation 128 is completed. Specific non-limiting examples of state changes were described with reference to FIGS. 6A-10C.
[0123]
[0152] 22 is a flow chart illustrating an example aspect of a method 2200 for reducing latency following an indication of keyword detection. Method 2200 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from a memory to perform method 2200.
[0124]
[0153] The method 2200 includes receiving an indication that a first-stage keyword detector has detected a keyword, at block 2202. For example, the first-stage keyword detector 108 may monitor audio data 104 from the microphone 102 and generate an indication of keyword detected 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detected 110 may be received at the scheduler 112, at the application processor 120, or both.
[0125]
[0154] At block 2204, method 2200 includes, based on the indication, scheduling, at a scheduler that manages allocation of processes to two or more cores, a process of the voice service that is in the low power mode for execution on one or more reserved processor cores. For example, scheduler 112 of any of FIGS. 1-10C may schedule voice service process 130 for execution on reserved processor core 124, as described above.
[0126]
[0155] 23 is a flow chart illustrating an example aspect of a method 2300 for reducing latency following an indication of keyword detection. Method 2300 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from a memory to perform method 2300.
[0127]
[0156] The method 2300 includes receiving an indication that a first-stage keyword detector has detected a keyword at a scheduler that manages the allocation of processes to two or more cores, at block 2302. For example, the first-stage keyword detector 108 may monitor audio data 104 from the microphone 102 and generate an indication of keyword detected 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detected 110 is received at least at the scheduler 112.
[0128]
[0157] The method 2300 includes increasing the priority assigned to the process of the voice service based on the indication, at block 2304. For example, the scheduler 112 of any of FIGS. 1-10C may increase the priority assigned to any of the voice service processes 130, as described with reference to FIGS.
[0129]
[0158] 24 is a flow chart illustrating an example aspect of a method 2400 for reducing latency following an indication of keyword detection. Method 2400 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from memory to perform method 2400.
[0130]
[0159] The method 2400 includes, at block 2402, obtaining an indication of keyword detection by the first-stage keyword detector. For example, the first-stage keyword detector 108 may monitor the audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 is obtained by the scheduler 112, by the application processor 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from memory accessible to the always-on processor 106, the scheduler 112, and the application processor 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor 120, or both via a signal including the indication of keyword detection 110 from the always-on processor 106.
[0131]
[0160] Method 2400 includes transitioning the processor from an idle state to an awake state upon an indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, at block 2404, and initiating a voice service, at block 2406. For example, prior to keyword detection 110 of FIG. 1, application processor 120 may be in an idle state, a sleep state, a standby state, or another low power state, and application processor 120 may be woken up (e.g., transitioned to an awake state) in response to the indication of keyword detection 110.
[0132]
[0161] 25 is a flowchart illustrating an example aspect of a method 2500 for reducing latency following an indication of keyword detection. Method 2500 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from memory to perform method 2500.
[0133]
[0162] The method 2500 includes, at block 2502, obtaining an indication of keyword detection by the first-stage keyword detector. For example, the first-stage keyword detector 108 may monitor the audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 is obtained by the scheduler 112, by the application processor 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from memory accessible to the always-on processor 106, the scheduler 112, and the application processor 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor 120, or both via a signal including the indication of keyword detection 110 from the always-on processor 106.
[0134]
[0163] At block 2504, the method 2500 includes initiating a change in the state of the scheduler to increase the priority assigned to the process of the voice service upon indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection. For example, the scheduler 112 of any of FIGS. 1-10C may increase the priority assigned to one of the voice service processes 130, as described with reference to FIGS. 10A-10C. In other examples, the priority assigned to the voice service process 130 may be increased as a result of changing the voice service or voice service process 130 from a background task to a foreground task, or by changing the scheduling group associated with the voice service or voice service process 130. In some implementations, the state change may be initiated by binding the voice service process 130 to a second-stage keyword detector and increasing the priority assigned to the second-stage keyword detector.
[0135]
[0164] 26 is a flowchart illustrating an example aspect of a method 2600 for reducing latency following an indication of keyword detection. Method 2600 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from memory to perform method 2600.
[0136]
[0165] The method 2600 includes, at block 2602, obtaining an indication of keyword detection by the first-stage keyword detector. For example, the first-stage keyword detector 108 may monitor the audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 is obtained by the scheduler 112, by the application processor 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from memory accessible to the always-on processor 106, the scheduler 112, and the application processor 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor 120, or both via a signal including the indication of keyword detection 110 from the always-on processor 106.
[0137]
[0166] The method 2600 includes initiating a change in the state of a scheduler to move the process of the voice service from a background task to a foreground task upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, at block 2604. For example, the scheduler 112 of any of Figures 1-10C may change the voice service or voice service process 130 from a background application 810 to a foreground application 812, as described with reference to Figures 8A-8C.
[0138]
[0167] 27 is a flowchart illustrating an example aspect of a method 2700 for reducing latency following an indication of keyword detection. Method 2700 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from memory to perform method 2700.
[0139]
[0168] The method 2700 includes, at block 2702, obtaining an indication of keyword detection by the first-stage keyword detector. For example, the first-stage keyword detector 108 may monitor the audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 is obtained by the scheduler 112, by the application processor 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from memory accessible to the always-on processor 106, the scheduler 112, and the application processor 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor 120, or both via a signal including the indication of keyword detection 110 from the always-on processor 106.
[0140]
[0169] At block 2704, the method 2700 includes initiating a change in the state of a scheduler upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection to allow a process of the voice service to be reassigned from a first core of two or more cores of the processor to a second core of the two or more cores, where the second core is a higher performance core than the first core. For example, the scheduler 112 of any of Figures 1-10C may reassign the voice service or voice service process 130 from the first core 610 to the second core 612, as described with reference to Figures 6A-6C.
[0141]
[0170] 28 is a flow chart illustrating an example aspect of a method 2800 for reducing latency following an indication of keyword detection. Method 2800 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from memory to perform method 2800.
[0142]
[0171] The method 2800 includes, at block 2802, obtaining an indication of keyword detection by the first-stage keyword detector. For example, the first-stage keyword detector 108 may monitor the audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 is obtained by the scheduler 112, by the application processor 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from memory accessible to the always-on processor 106, the scheduler 112, and the application processor 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor 120, or both via a signal including the indication of keyword detection 110 from the always-on processor 106.
[0143]
[0172] The method 2800 includes, at block 2804, initiating a change in the state of the scheduler to reassign processes of the voice service from the first scheduling group to the second scheduling group upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, wherein the processes assigned to the second scheduling group are enabled to execute on at least one core of the processor on which the processes assigned to the first scheduling group are not enabled to execute. For example, the scheduler 112 of any of Figures 1-10C may reassign a voice service or voice service process 130 from the second scheduling group 710 to the first scheduling group 712, as described with reference to Figures 7A-7C.
[0144]
[0173] 29 is a flowchart illustrating an example aspect of a method 2900 for reducing latency following an indication of keyword detection. Method 2900 may be initiated, controlled, or performed by system 100 of FIG. 1, by device 200 of FIG. 2, by device 300 of FIG. 3, by device 400 of FIG. 4, or a combination thereof. In certain aspects, one or more processors, such as always-on processor 106, application processor 120, or both, may execute instructions from a memory to perform method 2900.
[0145]
[0174] The method 2900 includes, at block 2902, obtaining an indication of keyword detection by the first-stage keyword detector. For example, the first-stage keyword detector 108 may monitor the audio data 104 from the microphone 102 and generate an indication of keyword detection 110 when the first-stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 is obtained by the scheduler 112, by the application processor 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from memory accessible to the always-on processor 106, the scheduler 112, and the application processor 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor 120, or both via a signal including the indication of keyword detection 110 from the always-on processor 106.
[0146]
[0175] At block 2904, the method 2900 includes initiating a change in the state of a scheduler to set a scheduling parameter associated with the process to allow the process of the voice service to execute on a reserved core of the processor upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection. For example, the scheduler 112 of any of Figures 1-10C may change the value of the scheduling parameter 910 of the voice service or voice service process 130, such as from a second value 912 to a first value 914, as described with reference to Figures 9A-9C.
[0147]
[0176] Referring to Figure 30, a block diagram of a particular illustrative example of a device is shown, generally referred to as 3000. In various aspects, device 3000 may have fewer or more components than those shown in Figure 30. In an exemplary aspect, device 3000 may correspond to or include system 100 of Figure 1, device 200 of Figure 2, device 300 of Figure 3, device 400 of Figure 4, or a combination thereof. In one exemplary aspect, device 3000 may perform one or more operations described with reference to the systems and methods of Figures 1-29.
[0148]
[0177] In particular aspects, the device 3000 includes an application processor 120 that includes a reserved processor core 124 and an additional processor core 126. The device 3000 also includes an always-on processor 106 that is configured to execute a first-stage keyword detector 108. The always-on processor 106, the application processor 120, or both, may execute instructions 3016 from a memory 3014 to initiate, control, or implement the operation of the scheduler 112, the voice service 3018, or both. In some implementations, the memory 3014 is a shared memory accessible to the always-on processor 106 and the application processor 120. In such an implementation, keyword detection 110 of FIGS. 1-5 may be represented by an always-on processor 106 storing a value (e.g., setting a flag) in memory 3014, in which case application processor 120 or another component (e.g., a particular always-on processor 106 running scheduler 112) may periodically or from time to time check the value in memory 3014 to determine whether a keyword has been detected.
[0149]
[0178] 30, the device 3000 also includes a modem 3030 coupled to a transceiver 3032 and an antenna 3034. The transceiver 3032 may include a receiver, a transmitter, or both. The always-on processor 106, the application processor 120, or a combination thereof, is coupled to the transceiver 3032 via the modem 3030.
[0150]
[0179] The device 3000 may include a display 3040 coupled to a display controller 3022. The speaker 3006 and the microphone 102 may be coupled to a codec 3008 via one or more interfaces. The codec 3008 may include a digital-to-analog converter (DAC) 3010 and an analog-to-digital converter (ADC) 3012. The display 3040, the speaker 3006, or both may correspond to the output device(s) 136 of FIG. 1 .
[0151]
[0180] The memory 3014 may store instructions 3016 executable by the always-on processor 106, the application processor 120, or a combination thereof, to perform one or more operations described with reference to Figures 1-29. The memory 3014 may store data, one or more signals, one or more parameters, one or more thresholds, one or more indicators, or a combination thereof, described with reference to Figures 1-29.
[0152]
[0181] One or more components of device 3000 may be implemented via dedicated hardware (e.g., circuitry), by a processor (e.g., always-on processor 106 or application processor 120) that executes instructions 3016 to perform one or more tasks, or a combination thereof. As an example, memory 3014 may include or correspond to a memory device (e.g., a computer-readable storage device) such as random access memory (RAM), magnetoresistive random access memory (MRAM), spin torque transfer MRAM (STT-MRAM), flash memory, read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), registers, a hard disk, a removable disk, or a compact disc read-only memory (CD-ROM). The memory device may include (e.g., store) instructions (e.g., instructions 3016) that, when executed by a computer (e.g., one or more processors, such as always-on processor 106 and / or application processor 120), may cause the computer to perform one or more operations described with reference to Figures 1-29. As an example, memory 3014 or one or more components of always-on processor 106 and / or application processor 120 may be a non-transitory computer-readable medium that includes instructions (e.g., instructions 3016) that, when executed by a computer (e.g., one or more processors, such as always-on processor 106 and / or application processor 120), cause the computer to perform one or more operations described with reference to Figures 1-29.
[0153]
[0182] In certain aspects, the device 3000 may be included in a system-in-package or system-on-chip device 3002. In certain aspects, the always-on processor 106, the application processor 120, the display controller 3022, the memory 3014, the codec 3008, the modem 3030, and the transceiver 3032 are included in the system-in-package or system-on-chip device 3002. In certain aspects, the input device 3024, such as a touchscreen and / or keypad, and the power supply 3020 are coupled to the system-in-package or system-on-chip device 3002. Moreover, in certain aspects, as shown in FIG. 30 , the display 3040, the input device 3024, the speaker 3006, the microphone 102, the antenna 3034, and the power supply 3020 are external to the system-in-package or system-on-chip device 3002. However, each of the display 3040, input device 3024, speaker 3006, microphone 102, antenna 3034, and power supply 3020 may be coupled to a component of the system-in-package or system-on-chip device 3002, such as an interface or controller.
[0154]
[0183] The device 3000 may include a wireless telephone, a mobile communication device, a mobile device, a mobile phone, a smartphone, a cellular phone, a virtual reality headset, an augmented reality headset, a mixed reality headset, a vehicle (e.g., a car), a laptop computer, a desktop computer, a computer, a tablet computer, a set-top box, a personal digital assistant (PDA), a display device, a television, a gaming console, a music player, a radio, a video player, an entertainment unit, a communications device, a fixed location data unit, a personal media player, a digital video player, a digital video disc (DVD) player, a tuner, a camera, a navigation device, an earbud, an audio headset (e.g., headphones), or any combination thereof.
[0155]
[0184] It should be noted that various functions performed by one or more components of the system and device 3000 described with reference to FIGS. 1-29 are described as being performed by several components or modules. This division of components and modules is for illustrative purposes only. In alternative embodiments, the functionality performed by a particular component or module may be divided among multiple components or modules. Moreover, in alternative embodiments, two or more components or modules described with reference to FIGS. 1-30 may be combined into a single component or module. Each component or module described with reference to FIGS. 1-30 may be implemented using hardware (e.g., a field programmable gate array (FPGA) device, an application specific integrated circuit (ASIC), a DSP, a controller, etc.), software (e.g., instructions executable by a processor), or any combination thereof.
[0156]
[0185] In some aspects, with the described implementations, the apparatus includes means for generating a signal indicative of keyword detection. For example, the means for generating a signal indicative of keyword detection includes always-on processor 106, first-stage keyword detector 108, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to generate a signal indicative of keyword detection.
[0157]
[0186] The apparatus also includes means for initiating a change of state based on the signal and prior to confirmation of keyword detection, where the change of state enables the voice service in the low power mode to be scheduled for execution on one or more reserved processor cores. For example, the means for initiating a change of state based on the signal and prior to confirmation of keyword detection includes always-on processor 106, first-stage keyword detector 108, application processor 120, second-stage keyword detector 212, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate a change of state based on the signal and prior to confirmation of keyword detection.
[0158]
[0187] In some aspects, with the described implementations, the apparatus includes means for receiving an indication that the first-stage keyword detector has detected a keyword. For example, the means for receiving an indication that the first-stage keyword detector has detected a keyword includes always-on processor 106, second-stage keyword detector 212, scheduler 112, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to receive an indication that the first-stage keyword detector has detected a keyword.
[0159]
[0188] The apparatus also includes means for managing an allocation of processes to the two or more cores, where the means for managing the allocation of processes is configured to schedule processes of the voice service that are in the low power mode for execution on the one or more reserved processor cores based on the indication. For example, the means for managing the allocation of processes to the two or more cores includes always-on processor 106, scheduler 112, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to manage the allocation of processes to the two or more cores.
[0160]
[0189] In some aspects, with the described implementations, the apparatus includes means for receiving an indication that the first-stage keyword detector has detected a keyword. For example, the means for receiving an indication that the first-stage keyword detector has detected a keyword includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to receive an indication that the first-stage keyword detector has detected a keyword.
[0161]
[0190] The apparatus also includes means for managing an allocation of processes to the two or more cores, where the means for managing the allocation of processes is configured to increase the priority assigned to the process of the voice service based on the indication. For example, the means for managing the allocation of processes includes always-on processor 106, scheduler 112, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to manage the allocation of processes.
[0162]
[0191] In some aspects, with the described implementations, the apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. For example, the means for obtaining an indication of keyword detection by the first-stage keyword detector includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to obtain an indication of keyword detection by the first-stage keyword detector.
[0163]
[0192] In some aspects, with the described implementations, the apparatus includes means for transitioning the processor from an idle state to an awake state upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection. For example, the means for transitioning the processor from an idle state to an awake state includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to transition the processor from the idle state to an awake state.
[0164]
[0193] The apparatus also includes means for initiating the voice service upon indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection. For example, the means for initiating the voice service includes always-on processor 106, first-stage keyword detector 108, application processor 120, second-stage keyword detector 212, scheduler 112, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate the voice service.
[0165]
[0194] In some aspects, with the described implementations, the apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. For example, the means for obtaining an indication of keyword detection by the first-stage keyword detector includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to obtain an indication of keyword detection by the first-stage keyword detector.
[0166]
[0195] The apparatus also includes means for initiating a change in the state of the scheduler upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, where the change in state increases the priority assigned to the process of the voice service. For example, the means for initiating a change in the state of the scheduler includes always-on processor 106, first-stage keyword detector 108, application processor 120, scheduler 112, second-stage keyword detector 212, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate a change in the state of the scheduler.
[0167]
[0196] In some aspects, with the described implementations, the apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. For example, the means for obtaining an indication of keyword detection by the first-stage keyword detector includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to obtain an indication of keyword detection by the first-stage keyword detector.
[0168]
[0197] The apparatus also includes means for initiating a change in the state of the scheduler upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, where the change in state moves the process of the voice service from a background task to a foreground task. For example, the means for initiating a change in the state of the scheduler includes always-on processor 106, first-stage keyword detector 108, application processor 120, scheduler 112, second-stage keyword detector 212, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate the change in the state of the scheduler.
[0169]
[0198] In some aspects, with the described implementations, the apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. For example, the means for obtaining an indication of keyword detection by the first-stage keyword detector includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to obtain an indication of keyword detection by the first-stage keyword detector.
[0170]
[0199] The apparatus also includes means for initiating a change in the state of the scheduler upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, where the change in state enables a process of the voice service to be reassigned from a first core of two or more cores of the processor to a second core of the two or more cores, where the second core is a higher performance core than the first core. For example, the means for initiating a change in the state of the scheduler includes always-on processor 106, first-stage keyword detector 108, application processor 120, scheduler 112, second-stage keyword detector 212, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate a change in the state of the scheduler.
[0171]
[0200] In some aspects, with the described implementations, the apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. For example, the means for obtaining an indication of keyword detection by the first-stage keyword detector includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to obtain an indication of keyword detection by the first-stage keyword detector.
[0172]
[0201] The apparatus also includes means for initiating a change in the state of the scheduler upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, where the change in state reassigns processes of the voice service from the first scheduling group to the second scheduling group, and where the processes assigned to the second scheduling group are enabled to run on at least one core of the processor that is not enabled to run on processes assigned to the first scheduling group. For example, the means for initiating a change in the state of the scheduler includes always-on processor 106, first-stage keyword detector 108, application processor 120, scheduler 112, second-stage keyword detector 212, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate the change in the state of the scheduler.
[0173]
[0202] In some aspects, with the described implementations, the apparatus includes means for obtaining an indication of keyword detection by the first-stage keyword detector. For example, the means for obtaining an indication of keyword detection by the first-stage keyword detector includes always-on processor 106, scheduler 112, second-stage keyword detector 212, application processor 120, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to obtain an indication of keyword detection by the first-stage keyword detector.
[0174]
[0203] The apparatus also includes means for initiating a change in the state of a scheduler upon an indication of keyword detection by the first-stage keyword detector and prior to confirmation of keyword detection, where the change in state sets scheduling parameters associated with the process of the voice service to allow the process to execute on a reserved core of the processor. For example, the means for initiating a change in the state of the scheduler includes always-on processor 106, first-stage keyword detector 108, application processor 120, scheduler 112, second-stage keyword detector 212, system 100, device 200, device 300, device 400, one or more other circuits or components, or any combination thereof, configured to initiate the change in the state of the scheduler.
[0175]
[0204] Furthermore, those skilled in the art will understand that the various illustrative logical blocks, configurations, modules, circuits, and algorithm steps described in connection with the implementations disclosed herein can be implemented as electronic hardware, computer software executed by a processor, or a combination of both. The various illustrative components, blocks, configurations, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or as processor-executable instructions depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
[0176]
[0205] The steps of a method or algorithm described in connection with the implementations disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. The software module may reside in random access memory (RAM), flash memory, read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), registers, a hard disk, a removable disk, a compact disk read-only memory (CD-ROM), or any other form of non-transitory storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. Alternatively, the storage medium may be integral to the processor. The processor and the storage medium may reside in an application-specific integrated circuit (ASIC). The ASIC may reside in a computing device or a user terminal. Alternatively, the processor and the storage medium may reside as discrete components in a computing device or a user terminal.
[0177]
[0206] Certain aspects of the disclosure are described below in a first set of interrelated clauses.
[0178]
[0207] According to clause 1, the device includes a first stage keyword detector and a processor configured to initiate a state change based on a signal indicating keyword detection by the first stage keyword detector and prior to confirmation of keyword detection to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0179]
[0208] Clause 2 includes the device of clause 1, wherein initiating the state change includes binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector.
[0180]
[0209] Clause 3 includes the device of clause 1, wherein initiating the change of state includes elevating scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0181]
[0210] Clause 4 includes the device of clause 3, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0182]
[0211] Clause 5 includes the device of clause 3, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0183]
[0212] Clause 6 includes the device of clause 5, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0184]
[0213] Clause 7 includes the device of clause 1, wherein initiating the state change includes elevating scheduling privileges for voice services.
[0185]
[0214] Clause 8 includes the device of clause 7, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0186]
[0215] Clause 9 includes the device of clause 7, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0187]
[0216] Clause 10 includes the device of clause 9, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0188]
[0217] Clause 11 includes the device of clause 1, wherein the first stage keyword detector corresponds to, includes, is contained within, or is executed by, a digital signal processor or a low power integrated circuit, and the one or more reserved processor cores are cores of one or more application processors.
[0189]
[0218] Clause 12 includes the device of clause 1, wherein the processor is further configured to reverse the state change based on the second stage keyword detector failing to confirm keyword detection.
[0190]
[0219] Clause 13 includes the device of clause 1, further including one or more reserved processor cores and one or more additional processor cores.
[0191]
[0220] Clause 14 includes the device of clause 13, wherein by allowing the voice service to be scheduled for execution on one or more reserved processor cores, latency of the voice service is reduced compared to restricting execution of the voice service to one or more additional processor cores.
[0192]
[0221] Clause 15 includes the device of clause 13, further including a scheduler configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0193]
[0222] Clause 16 includes the device of clause 13, further including a scheduler configured to enable a first group of processes to execute on one or more additional processor cores and to enable a second group of processes to execute on one or more reserved processor cores, wherein the second group of processes includes or corresponds to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0194]
[0223] Clause 17 includes the device of clause 13, further including a scheduler configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0195]
[0224] Clause 18 includes the device of clause 1, further including one or more microphones configured to generate audio data and to provide the audio data to a first stage keyword detector, a second stage keyword detector, a voice service, or any combination thereof.
[0196]
[0225] Clause 19 includes the device of clause 1, further including one or more sensors configured to generate context data and to provide the context data to the voice service based on a change in state.
[0197]
[0226] Clause 20 includes the device of clause 1, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service.
[0198]
[0227] Clause 21 includes the device of clause 1, where the voice service includes a voice assistant.
[0199]
[0228] Clause 22 includes the device of clause 1, further including a second stage keyword detector configured to confirm keyword detection.
[0200]
[0229] According to clause 23, the method includes generating, by a first stage keyword detector, a signal indicative of keyword detection, and initiating a change of state based on the signal indicative of keyword detection and prior to confirmation of keyword detection to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0201]
[0230] Clause 24 includes the method of clause 23, wherein initiating the state change includes binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector.
[0202]
[0231] Clause 25 includes the method of clause 23, wherein initiating the change of state includes elevating scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0203]
[0232] Clause 26 includes the method of clause 25, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0204]
[0233] Clause 27 includes the method of clause 25, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0205]
[0234] Clause 28 includes the method of clause 27, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0206]
[0235] Clause 29 includes the method of clause 23, wherein initiating the change of state includes elevating scheduling privileges for voice services.
[0207]
[0236] Clause 30 includes the method of clause 29, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0208]
[0237] Clause 31 includes the method of clause 29, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0209]
[0238] Clause 32 includes the method of clause 31, further including delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0210]
[0239] Clause 33 includes the method of clause 23, further including assigning the voice service to a scheduling group, wherein the voice service is scheduled for execution on one or more reserved processor cores based on the scheduling group being associated with the voice service.
[0211]
[0240] Clause 34 includes the method of clause 23, further including assigning a priority level to the voice service for the scheduling group, wherein the voice service is scheduled for execution on one or more reserved processor cores based on the priority level satisfying a threshold priority level.
[0212]
[0241] Clause 35 includes the method of clause 23, further including designating the voice service as a foreground application, wherein the voice service is scheduled for execution on one or more reserved processor cores based on the voice service being designated the foreground application.
[0213]
[0242] Clause 36 includes the method of clause 23, further including confirming keyword detection by the second stage keyword detector or by the voice service, and based on the confirmation of keyword detection, performing a voice-assisted action based on the voice command processed by the voice service.
[0214]
[0243] According to clause 37, the apparatus includes means for generating a signal indicative of keyword detection, and means for initiating a change of state based on the signal and prior to confirmation of keyword detection, wherein the change of state enables a voice service in the low power mode to be scheduled for execution on one or more reserved processor cores.
[0215]
[0244] Clause 38 includes the apparatus of clause 37, wherein the generating means and the initiating means are incorporated within a mobile computing device.
[0216]
[0245] Clause 39 includes the apparatus of clause 37, wherein the generating means and the initiating means are incorporated within a vehicle.
[0217]
[0246] Clause 40 includes the apparatus of clause 37, wherein the generating means and the actuating means are incorporated within a wearable device.
[0218]
[0247] Clause 41 includes the apparatus of clause 37, wherein the generating means and the initiating means are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0219]
[0248] Clause 42 includes the apparatus of clause 37, wherein the means for generating and the means for initiating are included in an integrated circuit.
[0220]
[0249] According to clause 43, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain a signal indicative of keyword detection from a first stage keyword detector, and based on the signal indicative of keyword detection and prior to confirmation of keyword detection, initiate a change of state to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores.
[0221]
[0250] According to clause 44, the device includes a processor configured to execute a scheduler to manage allocation of processes to two or more processor cores, wherein the scheduler is configured to receive an indication that a first stage keyword detector has detected a keyword, and based on the indication, schedule a process of a voice service that is in a low power mode for execution on one or more reserved processor cores.
[0222]
[0251] Clause 45 includes the device of clause 44, wherein scheduling a process of the voice service for execution on the one or more reserved processor cores includes binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector.
[0223]
[0252] Clause 46 includes the device of clause 44, wherein the processor is further configured to elevate scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0224]
[0253] Clause 47 includes the device of clause 46, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0225]
[0254] Clause 48 includes the device of clause 46, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application.
[0226]
[0255] Clause 49 includes the device of clause 48, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0227]
[0256] Clause 50 includes the device of clause 44, wherein scheduling a process of the voice service for execution on one or more reserved processor cores includes elevating scheduling privileges of the voice service.
[0228]
[0257] Clause 51 includes the device of clause 50, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0229]
[0258] Clause 52 includes the device of clause 50, wherein elevating the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0230]
[0259] Clause 53 includes the device of clause 52, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0231]
[0260] Clause 54 includes the device of clause 44, further including a digital signal processor or low power integrated circuit including the first stage keyword detector and one or more application processors including two or more processor cores.
[0232]
[0261] Clause 55 includes the device of clause 44, further including a second stage keyword detector configured to confirm keyword detection based on the indication.
[0233]
[0262] Clause 56 includes the device of clause 44, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores.
[0234]
[0263] Clause 57 includes the device of clause 56, wherein by scheduling a process of the voice service for execution on one or more reserved processor cores, latency of the voice service is reduced compared to restricting execution of the voice service to one or more additional processor cores.
[0235]
[0264] Clause 58 includes the device of clause 56, wherein the scheduler is further configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0236]
[0265] Clause 59 includes the device of clause 56, wherein the scheduler is further configured to enable a first group of processes to run on one or more additional processor cores and to enable a second group of processes to run on one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0237]
[0266] Clause 60 includes the device of clause 56, wherein the scheduler is further configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0238]
[0267] Clause 61 includes the device of clause 44, further including one or more microphones configured to generate audio data and to provide the audio data to a first stage keyword detector, to a second stage keyword detector, to a voice service, or any combination thereof.
[0239]
[0268] Clause 62 includes the device of clause 44, further including one or more sensors configured to generate context data and to provide the context data to the voice service based on execution of the voice service on the one or more reserved processor cores.
[0240]
[0269] Clause 63 includes the device of clause 44, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service.
[0241]
[0270] Clause 64 includes the device of clause 44, where the voice service includes a voice assistant.
[0242]
[0271] Clause 65 includes the device of clause 44, further including a second stage keyword detector configured to confirm keyword detection.
[0243]
[0272] According to clause 66, the method includes receiving an indication that the first stage keyword detector has detected a keyword, and, based on the indication, scheduling, in a scheduler that manages allocation of processes to two or more processor cores, a process of the voice service that is in a low power mode for execution on one or more reserved processor cores.
[0244]
[0273] Clause 67 includes the method of clause 66, further including binding the voice service and the second stage keyword detector such that a scheduling privilege of the voice service is based on a scheduling privilege of the second stage keyword detector, wherein a process of the voice service is scheduled for execution on one or more reserved processor cores based on the second stage keyword detector being scheduled for execution on the one or more reserved processor cores.
[0245]
[0274] Clause 68 includes the method of clause 66, wherein a process for the voice service is scheduled for execution on one or more reserved processor cores based on elevated scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0246]
[0275] Clause 69 includes the method of clause 68, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0247]
[0276] Clause 70 includes the method of clause 68, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0248]
[0277] Clause 71 includes the method of clause 70, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0249]
[0278] Clause 72 includes the method of clause 66, wherein a process of the voice service is scheduled for execution on one or more reserved processor cores based on elevated scheduling privileges of the voice service.
[0250]
[0279] Clause 73 includes the method of clause 72, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0251]
[0280] Clause 74 includes the method of clause 72, wherein elevating the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0252]
[0281] Clause 75 includes the method of clause 74, further including delaying or suppressing generation of a user notification related to changing the designation of the voice service from a background application to a foreground application.
[0253]
[0282] Clause 76 includes the method of clause 66, further including assigning the voice service to a scheduling group, wherein processes for the voice service are scheduled for execution on one or more reserved processor cores based on the scheduling group being associated with the voice service.
[0254]
[0283] Clause 77 includes the method of clause 66, further including assigning a priority level to the voice service, wherein a process of the voice service is scheduled for execution on one or more reserved processor cores based on the priority level satisfying a threshold priority level.
[0255]
[0284] Clause 78 includes the method of clause 66, further including designating the voice service as a foreground application, wherein a process for the voice service is scheduled for execution on one or more reserved processor cores based on the voice service being designated the foreground application.
[0256]
[0285] Clause 79 includes the method of clause 66, further including confirming keyword detection by the second stage keyword detector or by the voice service, and based on the confirmation of keyword detection, performing a voice-assisted action based on the voice command processed by the voice service.
[0257]
[0286] According to clause 80, the apparatus includes means for receiving an indication that the first stage keyword detector has detected a keyword; means for managing an allocation of processes to two or more processor cores; and the means for managing the allocation of processes configured to schedule processes of the voice service that are in the low power mode for execution on one or more reserved processor cores based on the indication.
[0258]
[0287] Clause 81 includes the apparatus of clause 80, wherein the means for receiving and the means for managing the allocation of processes are incorporated within a mobile computing device.
[0259]
[0288] Clause 82 includes the apparatus of clause 80, wherein the means for receiving and the means for managing the allocation of processes are incorporated within the vehicle.
[0260]
[0289] Clause 83 includes the apparatus of clause 80, wherein the means for receiving and the means for managing the allocation of processes are incorporated within a wearable device.
[0261]
[0290] Clause 84 includes the apparatus of clause 80, wherein the means for receiving and the means for managing the allocation of processes are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0262]
[0291] Clause 85 includes the apparatus of clause 80, wherein the means for receiving and the means for managing the allocation of processes are included in an integrated circuit.
[0263]
[0292] According to clause 86, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication that a first stage keyword detector has detected a keyword, and based on the indication, schedule, in a scheduler that manages allocation of processes to two or more processor cores, a process of a voice service that is in a low power mode for execution on one or more reserved processor cores.
[0264]
[0293] According to clause 87, the device includes a processor configured to execute a scheduler to manage allocation of processes to two or more processor cores, wherein the scheduler is configured to receive an indication that the first stage keyword detector has detected a keyword, and based on the indication, increase a priority assigned to a process of a voice service.
[0265]
[0294] Clause 88 includes the device of clause 87, wherein increasing the priority assigned to the process of the voice service includes binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector.
[0266]
[0295] Clause 89 includes the device of clause 87, wherein the processor is further configured to elevate scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0267]
[0296] Clause 90 includes the device of clause 89, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0268]
[0297] Clause 91 includes the device of clause 89, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application.
[0269]
[0298] Clause 92 includes the device of clause 91, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0270]
[0299] Clause 93 includes the device of clause 87, wherein increasing the priority of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0271]
[0300] Clause 94 includes the device of clause 93, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0272]
[0301] Clause 95 includes the device of clause 87, further including a digital signal processor or low power integrated circuit including the first stage keyword detector and one or more application processors including two or more processor cores.
[0273]
[0302] Clause 96 includes the device of clause 87, further including a second stage keyword detector configured to confirm keyword detection based on the indication.
[0274]
[0303] Clause 97 includes the device of clause 96, wherein the processor is further configured to reverse the high priority of the voice service based on the second stage keyword detector failing to confirm keyword detection.
[0275]
[0304] Clause 98 includes the device of clause 87, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores.
[0276]
[0305] Clause 99 includes the device of clause 98, wherein increasing the priority assigned to a process of a voice service allows the process to be scheduled for execution on one or more reserved processor cores, thereby reducing latency of the voice service compared to restricting execution of the voice service to one or more additional processor cores.
[0277]
[0306] Clause 100 includes the device of clause 98, wherein the scheduler is further configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0278]
[0307] Clause 101 includes the device of clause 98, wherein the scheduler is further configured to enable a first group of processes to execute on one or more additional processor cores and to enable a second group of processes to execute on one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0279]
[0308] Clause 102 includes the device of clause 98, wherein the scheduler is further configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0280]
[0309] Clause 103 includes the device of clause 87, further including one or more microphones configured to generate audio data and to provide the audio data to a first stage keyword detector, a second stage keyword detector, a voice service, or any combination thereof.
[0281]
[0310] Clause 104 includes the device of clause 87, further including one or more sensors configured to generate context data and to provide the context data to the voice service based on a priority assigned to a process of the voice service.
[0282]
[0311] Clause 105 includes the device of clause 87, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service.
[0283]
[0312] Clause 106 includes the device of clause 87, where the voice service includes a voice assistant.
[0284]
[0313] Clause 107 includes the device of clause 87, further including a second stage keyword detector configured to confirm keyword detection.
[0285]
[0314] Clause 108, the method includes, in a scheduler that manages allocation of processes to two or more processor cores, receiving an indication that a first stage keyword detector has detected a keyword, and, based on the indication, increasing a priority assigned to a process of the voice service.
[0286]
[0315] Clause 109 includes the method of clause 108, further including binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector, wherein the priority assigned to the process of the voice service is based on the priority assigned to the second stage keyword detector.
[0287]
[0316] Clause 110 includes the method of clause 108, wherein the priority assigned to the process of the voice service is increased based on increasing the priority of a second stage keyword detector configured to verify keyword detection.
[0288]
[0317] Clause 111 includes the method of clause 110, wherein increasing the priority of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0289]
[0318] Clause 112 includes the method of clause 111, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0290]
[0319] Clause 113 includes the method of clause 108, wherein increasing the priority of the process of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0291]
[0320] Clause 114 includes the method of clause 113, further including delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0292]
[0321] Clause 115 includes the method of clause 108, wherein increasing the priority assigned to a process of the voice service includes assigning the process to a particular scheduling group.
[0293]
[0322] Clause 116 includes the method of clause 108, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0294]
[0323] According to clause 117, the apparatus includes means for receiving an indication that the first stage keyword detector has detected a keyword; means for managing an allocation of processes to two or more processor cores; and the means for managing the allocation of processes is configured to increase a priority assigned to a process of the voice service based on the indication.
[0295]
[0324] Clause 118 includes the apparatus of clause 117, wherein the means for receiving and the means for managing the allocation of processes are incorporated within a mobile computing device.
[0296]
[0325] Clause 119 includes the apparatus of clause 117, wherein the means for receiving and the means for managing the allocation of processes are incorporated within a vehicle.
[0297]
[0326] Clause 120 includes the apparatus of clause 117, wherein the means for receiving and the means for managing the allocation of processes are incorporated within a wearable device.
[0298]
[0327] Clause 121 includes the apparatus of clause 117, wherein the means for receiving and the means for managing the allocation of processes are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0299]
[0328] Clause 122 includes the apparatus of clause 117, wherein the means for receiving and the means for managing the allocation of processes are included in an integrated circuit.
[0300]
[0329] According to clause 123, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication that a first stage keyword detector has detected a keyword, and based on the indication, increase a priority assigned to a process of a voice service in a scheduler that manages allocation of processes to two or more processor cores.
[0301]
[0330] According to clause 124, the device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected, and a second processor including two or more processor cores, the second processor coupled to the first processor and configured to, upon an indication from the first processor that a keyword has been detected, transition the second processor from an idle state to an active state, and initiate a voice service prior to confirmation of keyword detection.
[0302]
[0331] Clause 125 includes the device of clause 124, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, such that scheduling privileges for the voice service are based on scheduling privileges of the second-stage keyword detector.
[0303]
[0332] Clause 126 includes the device of clause 125, wherein the second processor is further configured to elevate scheduling privileges of the second stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0304]
[0333] Clause 127 includes the device of clause 126, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0305]
[0334] Clause 128 includes the device of clause 126, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0306]
[0335] Clause 129 includes the device of clause 128, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0307]
[0336] Clause 130 includes the device of clause 124, wherein the second processor is further configured to elevate scheduling privileges for the voice service upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0308]
[0337] Clause 131 includes the device of clause 130, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0309]
[0338] Clause 132 includes the device of clause 130, wherein elevating the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0310]
[0339] Clause 133 includes the device of clause 132, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0311]
[0340] Clause 134 includes the device of clause 124, wherein the first processor is a digital signal processor or a low power integrated circuit and the second processor is an application processor.
[0312]
[0341] Clause 135 includes the device of clause 124, wherein the second processor is further configured to terminate the voice service based on the second stage keyword detector failing to confirm keyword detection.
[0313]
[0342] Clause 136 includes the device of clause 124, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores, and further includes a scheduler configured to assign processes to execute on particular processor cores.
[0314]
[0343] Clause 137 includes the device of clause 136, wherein initiating the voice service includes scheduling one or more processes of the voice service for execution on one or more reserved processor cores, which reduces latency of the voice service compared to restricting execution of the one or more processes of the voice service to one or more additional processor cores.
[0315]
[0344] Clause 138 includes the device of clause 137, wherein the scheduler is configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0316]
[0345] Clause 139 includes the device of clause 137, wherein the scheduler is configured to enable a first group of processes to run on one or more additional processor cores and to enable a second group of processes to run on one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0317]
[0346] Clause 140 includes the device of clause 137, wherein the scheduler is configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0318]
[0347] Clause 141 includes the device of clause 124, further including one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both.
[0319]
[0348] Clause 142 includes the device of clause 124, further including one or more sensors configured to generate context data and to provide the context data to the voice service.
[0320]
[0349] Clause 143 includes the device of clause 124, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
[0321]
[0350] Clause 144 includes the device of clause 124, wherein the voice service includes a voice assistant.
[0322]
[0351] Clause 145 includes the device of clause 124, further including a second stage keyword detector configured to confirm keyword detection.
[0323]
[0352] According to clause 146, the method includes obtaining an indication of keyword detection by the first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, transitioning the processor from an idle state to an active state, and initiating a voice service.
[0324]
[0353] Clause 147 includes the method of clause 146, wherein the voice service is launched for execution on one or more reserved processor cores based on elevated scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0325]
[0354] Clause 148 includes the method of clause 147, wherein increasing the scheduling privilege of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0326]
[0355] Clause 149 includes the method of clause 147, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0327]
[0356] Clause 150 includes the method of clause 149, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0328]
[0357] Clause 151 includes the method of clause 146, further including assigning the voice service to a scheduling group, wherein the voice service is launched for execution on one or more reserved processor cores based on the scheduling group being associated with the voice service.
[0329]
[0358] Clause 152 includes the method of clause 146, further including assigning a priority level to the voice service, wherein the voice service is launched for execution on one or more reserved processor cores based on the priority level satisfying a threshold priority level.
[0330]
[0359] Clause 153 includes the method of clause 146, further including designating the voice service as a foreground application, wherein the voice service is launched for execution on one or more reserved processor cores based on the voice service being designated the foreground application.
[0331]
[0360] Clause 154 includes the method of clause 146, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0332]
[0361] According to clause 155, the apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector; means for transitioning the processor from an idle state to an active state upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection; and means for initiating a voice service upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection.
[0333]
[0362] Clause 156 includes the apparatus of clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are incorporated within a mobile computing device.
[0334]
[0363] Clause 157 includes the apparatus of clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are incorporated within a vehicle.
[0335]
[0364] Clause 158 includes the apparatus of clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are incorporated within a wearable device.
[0336]
[0365] Clause 159 includes the apparatus of clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0337]
[0366] Clause 160 includes the apparatus of clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are included in an integrated circuit.
[0338]
[0367] According to clause 161, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, transition the processor from an idle state to an active state, and start a voice service.
[0339]
[0368] According to clause 162, the device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected, and a second processor including two or more processor cores, the second processor coupled to the first processor and configured to initiate a change in the state of a scheduler to increase the priority assigned to a process of the voice service upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0340]
[0369] Clause 163 includes the device of clause 162, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, such that scheduling privileges for the voice service are based on scheduling privileges of the second-stage keyword detector.
[0341]
[0370] Clause 164 includes the device of clause 163, wherein initiating a change in the state of the scheduler to increase the priority assigned to the process of the voice service includes increasing the scheduling privilege of the second stage keyword detector after binding the voice service and the second stage keyword detector.
[0342]
[0371] Clause 165 includes the device of clause 164, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0343]
[0372] Clause 166 includes the device of clause 164, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0344]
[0373] Clause 167 includes the device of clause 166, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0345]
[0374] Clause 168 includes the device of clause 162, wherein increasing the priority assigned to the process of the voice service includes changing the scheduling priority of the voice service.
[0346]
[0375] Clause 169 includes the device of clause 162, wherein increasing the priority assigned to the process of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0347]
[0376] Clause 170 includes the device of clause 169, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0348]
[0377] Clause 171 includes the device of clause 162, wherein the first processor is a digital signal processor or a low-power integrated circuit and the second processor is an application processor.
[0349]
[0378] Clause 172 includes the device of clause 162, wherein the second processor is further configured to reduce a priority assigned to the process of the voice service based on the second stage keyword detector failing to confirm keyword detection.
[0350]
[0379] Clause 173 includes the device of clause 162, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores, and the scheduler is configured to assign processes to run on particular processor cores.
[0351]
[0380] Clause 174 includes the device of clause 173, including enabling the scheduler to schedule the process of the voice service for execution on one or more reserved processor cores, where increasing the priority assigned to the process of the voice service reduces latency for the voice service compared to restricting execution of the process of the voice service to one or more additional processor cores.
[0352]
[0381] Clause 175 includes the device of clause 174, wherein the scheduler is configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0353]
[0382] Clause 176 includes the device of clause 174, wherein the scheduler is configured to enable a first group of processes to run on one or more additional processor cores and to enable a second group of processes to run on one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0354]
[0383] Clause 177 includes the device of clause 174, wherein the scheduler is configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0355]
[0384] Clause 178 includes the device of clause 162, further including one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both.
[0356]
[0385] Clause 179 includes the device of clause 162, further including one or more sensors configured to generate context data and to provide the context data to the voice service based on a priority assigned to a process of the voice service.
[0357]
[0386] Clause 180 includes the device of clause 162, further comprising one or more output devices configured to provide a user notification indicating the execution of the voice service.
[0358]
[0387] Clause 181 includes the device of clause 162, where the voice service includes a voice assistant.
[0359]
[0388] Clause 182 includes the device of clause 162, further including a second stage keyword detector configured to confirm keyword detection.
[0360]
[0389] According to clause 183, the method includes obtaining an indication of keyword detection by the first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in the state of the scheduler to increase the priority assigned to the process of the voice service.
[0361]
[0390] Clause 184 includes the method of clause 183, further including binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector, wherein the priority assigned to the process of the voice service is increased based on the increased priority assigned to the second stage keyword detector.
[0362]
[0391] Clause 185 includes the method of clause 183, wherein the priority assigned to the process of the voice service is increased based on increasing the scheduling privilege of a second stage keyword detector configured to verify keyword detection.
[0363]
[0392] Clause 186 includes the method of clause 185, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0364]
[0393] Clause 187 includes the method of clause 185, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0365]
[0394] Clause 188 includes the method of clause 187, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0366]
[0395] Clause 189 includes the method of clause 183, wherein increasing the priority of the process of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0367]
[0396] Clause 190 includes the method of clause 189, further including delaying or suppressing generation of a user notification related to changing the designation of the voice service from a background application to a foreground application.
[0368]
[0397] Clause 191 includes the method of clause 183, wherein increasing the priority assigned to the process of the voice service includes assigning the voice service to a higher scheduling group.
[0369]
[0398] Clause 192 includes the method of clause 183, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0370]
[0399] According to clause 193, the apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector, and means for initiating a change in state of the scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, wherein the change in state increases a priority assigned to the process of the voice service.
[0371]
[0400] Clause 194 includes the apparatus of clause 193, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device.
[0372]
[0401] Clause 195 includes the device of clause 193, wherein the means for obtaining and the means for initiating are incorporated within a vehicle.
[0373]
[0402] Clause 196 includes the apparatus of clause 193, wherein the means for obtaining and the means for initiating are incorporated within a wearable device.
[0374]
[0403] Clause 197 includes the apparatus of clause 193, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0375]
[0404] Clause 198 includes the apparatus of clause 193, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
[0376]
[0405] According to clause 199, a non-transitory computer readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiate a change in the state of a scheduler to increase the priority assigned to a process of the voice service.
[0377]
[0406] According to clause 200, the device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected, and a second processor including two or more processor cores, the second processor coupled to the first processor and configured to initiate a change in the state of a scheduler to move a process of a voice service from a background task to a foreground task upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0378]
[0407] Clause 201 includes the device of clause 200, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector such that upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, a scheduling privilege of the voice service is based on a scheduling privilege of the second-stage keyword detector, and a process of the voice service is moved from a background task to a foreground task based on designating the second-stage keyword detector as a foreground application.
[0379]
[0408] Clause 202 includes the device of clause 201, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with designating the second-stage keyword detector as a foreground application.
[0380]
[0409] Clause 203 includes the device of clause 200, wherein the second processor is further configured to elevate scheduling privileges for the voice service upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0381]
[0410] Clause 204 includes the device of clause 203, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0382]
[0411] Clause 205 includes the device of clause 204, wherein elevating the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0383]
[0412] Clause 206 includes the device of clause 205, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0384]
[0413] Clause 207 includes the device of clause 200, wherein the first processor is a digital signal processor or a low-power integrated circuit and the second processor is an application processor.
[0385]
[0414] Clause 208 includes the device of clause 200, wherein the second processor is further configured to terminate the voice service based on the second stage keyword detector failing to confirm keyword detection.
[0386]
[0415] Clause 209 includes the device of clause 200, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores, and further includes a scheduler configured to assign processes to execute on particular processor cores.
[0387]
[0416] Clause 210 includes the device of clause 209, wherein moving a process of the voice service from a background task to a foreground task includes scheduling one or more processes of the voice service for execution on one or more reserved processor cores, which reduces latency of the voice service compared to restricting execution of the one or more processes of the voice service to one or more additional processor cores.
[0388]
[0417] Clause 211 includes the device of clause 210, wherein the scheduler is configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0389]
[0418] Clause 212 includes the device of clause 210, wherein the scheduler is configured to enable a first group of processes to run on one or more additional processor cores and to enable a second group of processes to run on one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0390]
[0419] Clause 213 includes the device of clause 210, wherein the scheduler is configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0391]
[0420] Clause 214 includes the device of clause 200, further including one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both.
[0392]
[0421] Clause 215 includes the device of clause 200, further including one or more sensors configured to generate context data and to provide the context data to a process of the voice service based on the process being designated a foreground task.
[0393]
[0422] Clause 216 includes the device of clause 200, further including one or more output devices configured to provide a user notification indicating the execution of the voice service.
[0394]
[0423] Clause 217 includes the device of clause 200, wherein the voice service includes a voice assistant.
[0395]
[0424] Clause 218 includes the device of clause 200, further including a second stage keyword detector configured to confirm keyword detection.
[0396]
[0425] According to clause 219, the method includes obtaining an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in the state of a scheduler to move a process of the voice service from a background task to a foreground task.
[0397]
[0426] Clause 220 includes the method of clause 219, further including binding the voice service and the second-stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second-stage keyword detector, wherein the process of the voice service is moved from the background task to the foreground task based on the second-stage keyword detector being moved from the background task to the foreground task.
[0398]
[0427] Clause 221 includes the method of clause 219, wherein the process of the voice service is moved from a background task to a foreground task based on elevated scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0399]
[0428] Clause 222 includes the method of clause 221, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0400]
[0429] Clause 223 includes the method of clause 219, further including delaying or suppressing generation of a user notification associated with moving the process of the voice service from a background task to a foreground task.
[0401]
[0430] Clause 224 includes the method of clause 219, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0402]
[0431] According to clause 225, the apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector, and means for initiating a change in state of the scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, wherein the change in state moves a process of the voice service from a background task to a foreground task.
[0403]
[0432] Clause 226 includes the apparatus of clause 225, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device.
[0404]
[0433] Clause 227 includes the device of clause 225, wherein the means for obtaining and the means for initiating are incorporated within a vehicle.
[0405]
[0434] Clause 228 includes the apparatus of clause 225, wherein the means for obtaining and the means for initiating are incorporated within a wearable device.
[0406]
[0435] Clause 229 includes the apparatus of clause 225, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0407]
[0436] Clause 230 includes the apparatus of clause 225, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
[0408]
[0437] According to clause 231, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiate a change in the state of a scheduler to move a process of a voice service from a background task to a foreground task.
[0409]
[0438] According to clause 232, the device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected, and a second processor including two or more processor cores, the second processor coupled to the first processor and configured, upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, to initiate a change in the state of a scheduler to allow a process of a voice service to be reassigned from a first processor core of the two or more processor cores to a second processor core of the two or more processor cores, wherein the second processor core is a processor core with higher performance than the first processor core.
[0410]
[0439] Clause 233 includes the device of clause 232, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, such that scheduling privileges for the voice service are based on scheduling privileges of the second-stage keyword detector.
[0411]
[0440] Clause 234 includes the device of clause 233, wherein the second processor is further configured to elevate scheduling privileges of the second stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0412]
[0441] Clause 235 includes the device of clause 234, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0413]
[0442] Clause 236 includes the device of clause 234, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0414]
[0443] Clause 237 includes the device of clause 236, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0415]
[0444] Clause 238 includes the device of clause 232, wherein the second processor is further configured to elevate scheduling privileges for the voice service upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0416]
[0445] Clause 239 includes the device of clause 238, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0417]
[0446] Clause 240 includes the device of clause 238, wherein elevating the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0418]
[0447] Clause 241 includes the device of clause 240, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0419]
[0448] Clause 242 includes the device of clause 232, wherein the first processor is a digital signal processor or a low power integrated circuit and the second processor is an application processor.
[0420]
[0449] Clause 243 includes the device of clause 232, wherein the second processor is further configured to reallocate a process of the voice service from the second processor core to the first processor core based on the second stage keyword detector failing to confirm keyword detection.
[0421]
[0450] Clause 244 includes the device of clause 232, wherein the two or more processor cores include one or more reserved processor cores including the second processor core, and the two or more processor cores include one or more additional processor cores including the first processor core, and further includes a scheduler configured to assign processes to execute on particular processor cores.
[0422]
[0451] Clause 245 includes the device of clause 244, wherein by allowing a process for the voice service to be reallocated to a second processor core, latency of the voice service is reduced compared to restricting execution of the process for the voice service to the first processor core.
[0423]
[0452] Clause 246 includes the device of clause 245, wherein the scheduler is configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group, and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups.
[0424]
[0453] Clause 247 includes the device of clause 245, wherein the scheduler is configured to enable a first group of processes to run on one or more additional processor cores and to enable a second group of processes to run on one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to the threshold priority level.
[0425]
[0454] Clause 248 includes the device of clause 245, wherein the scheduler is configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores.
[0426]
[0455] Clause 249 includes the device of clause 232, further including one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both.
[0427]
[0456] Clause 250 includes the device of clause 232, further including one or more sensors configured to generate the context data and to provide the context data to the voice service.
[0428]
[0457] Clause 251 includes the device of clause 232, further comprising one or more output devices configured to provide a user notification indicating the execution of the voice service.
[0429]
[0458] Clause 252 includes the device of clause 232, wherein the voice service includes a voice assistant.
[0430]
[0459] Clause 253 includes the device of clause 232, further including a second stage keyword detector configured to confirm keyword detection.
[0431]
[0460] According to clause 254, the method includes obtaining an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in state of a scheduler to enable a process of the voice service to be reassigned from a first processor core of two or more processor cores of a processor to a second processor core of the two or more processor cores, wherein the second processor core is a processor core with higher performance than the first processor core.
[0432]
[0461] Clause 255 includes the method of clause 254, further including binding the voice service and the second stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second stage keyword detector, wherein a process of the voice service is reassigned from the first processor core to the second processor core based on the second stage keyword detector being reassigned from the first processor core to the second processor core.
[0433]
[0462] Clause 256 includes the method of clause 254, wherein a process for the voice service is reallocated from the first processor core to the second processor core based on elevated scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0434]
[0463] Clause 257 includes the method of clause 256, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0435]
[0464] Clause 258 includes the method of clause 256, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0436]
[0465] Clause 259 includes the method of clause 258, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0437]
[0466] Clause 260 includes the method of clause 254, further including changing the designation of the voice service from a background application to a foreground application, wherein a process of the voice service is reassigned from the first processor core to the second processor core based on changing the designation of the voice service from a background application to a foreground application.
[0438]
[0467] Clause 261 includes the method of clause 260, further including delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0439]
[0468] Clause 262 includes the method of clause 254, further including assigning the voice service to a higher scheduling group, wherein a process of the voice service is reassigned from the first processor core to the second processor core based on assigning the voice service to the higher scheduling group.
[0440]
[0469] Clause 263 includes the method of clause 254, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0441]
[0470] According to clause 264, the apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector; and means for initiating a change in state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, wherein the change in state enables a process of the voice service to be reassigned from a first processor core of two or more processor cores of the processor to a second processor core of the two or more processor cores, wherein the second processor core is a processor core with higher performance than the first processor core.
[0442]
[0471] Clause 265 includes the apparatus of clause 264, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device.
[0443]
[0472] Clause 266 includes the apparatus of clause 264, wherein the means for obtaining and the means for initiating are incorporated within a vehicle.
[0444]
[0473] Clause 267 includes the apparatus of clause 264, wherein the means for obtaining and the means for initiating are incorporated within a wearable device.
[0445]
[0474] Clause 268 includes the apparatus of clause 264, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0446]
[0475] Clause 269 includes the apparatus of clause 264, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
[0447]
[0476] According to clause 270, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiate a change in state of a scheduler to enable a process of a voice service to be reassigned from a first processor core of two or more processor cores of the processor to a second processor core of the two or more processor cores, wherein the second processor core is a processor core with higher performance than the first processor core.
[0448]
[0477] According to clause 271, a device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected, and a second processor including two or more processor cores, the second processor coupled to the first processor and configured, upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, to initiate a change in the state of a scheduler to reassign processes of a voice service from a first scheduling group to a second scheduling group, wherein processes assigned to the second scheduling group are enabled to execute on at least one of the two or more processor cores on which processes assigned to the first scheduling group are not enabled to execute.
[0449]
[0478] Clause 272 includes the device of clause 271, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, such that scheduling privileges for the voice service are based on scheduling privileges of the second-stage keyword detector.
[0450]
[0479] Clause 273 includes the device of clause 272, wherein the second processor is further configured to elevate scheduling privileges of the second stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection.
[0451]
[0480] Clause 274 includes the device of clause 273, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector.
[0452]
[0481] Clause 275 includes the device of clause 273, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0453]
[0482] Clause 276 includes the device of clause 275, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0454]
[0483] Clause 277 includes the devices of clause 271, where the second scheduling group is associated with a higher scheduling priority than the first scheduling group.
[0455]
[0484] Clause 278 includes the device of clause 271, wherein the second scheduling group is associated with foreground applications and the first scheduling group is associated with background applications.
[0456]
[0485] Clause 279 includes the device of clause 271, wherein the first processor is a digital signal processor or a low power integrated circuit and the second processor is an application processor.
[0457]
[0486] Clause 280 includes the device of clause 271, wherein the second processor is further configured to reassign processes of the voice service to the first scheduling group based on the second stage keyword detector failing to confirm keyword detection.
[0458]
[0487] Clause 281 includes the device of clause 271, wherein the two or more processor cores include one or more reserved processor cores that are not enabled to execute processes assigned to the first scheduling group and one or more additional processor cores that are enabled to execute processes assigned to the first scheduling group.
[0459]
[0488] Clause 282 includes the device of clause 281, wherein executing a process for the voice service on one or more reserved processor cores reduces latency of the voice service compared to executing a process for the voice service on one or more additional processor cores.
[0460]
[0489] Clause 283 includes the device of clause 271, wherein the second scheduling group is associated with foreground processes and the first scheduling group is associated with background processes.
[0461]
[0490] Clause 284 includes the device of clause 271, further including one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both.
[0462]
[0491] Clause 285 includes the device of clause 271, further including one or more sensors configured to generate context data and to provide the context data to the voice service.
[0463]
[0492] Clause 286 includes the device of clause 271, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
[0464]
[0493] Clause 287 includes the device of clause 271, where the voice service includes a voice assistant.
[0465]
[0494] Clause 288 includes the device of clause 271, further including a second stage keyword detector configured to confirm keyword detection.
[0466]
[0495] According to clause 289, the method includes obtaining an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in a state of a scheduler to reassign processes of the voice service from a first scheduling group to a second scheduling group, wherein the processes assigned to the second scheduling group are enabled to run on at least one processor core of the processor on which the processes assigned to the first scheduling group are not enabled to run.
[0467]
[0496] Clause 290 includes the method of clause 289, further including binding the voice service and the second-stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second-stage keyword detector, wherein processes of the voice service are reassigned from the first scheduling group to the second scheduling group based on the second-stage keyword detector being reassigned from the first scheduling group to the second scheduling group.
[0468]
[0497] Clause 291 includes the method of clause 289, wherein a process of the voice service is reassigned from the first scheduling group to the second scheduling group based on elevated scheduling privileges of a second stage keyword detector configured to verify keyword detection.
[0469]
[0498] Clause 292 includes the method of clause 291, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0470]
[0499] Clause 293 includes the method of clause 291, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0471]
[0500] Clause 294 includes the method of clause 293, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0472]
[0501] Clause 295 includes the method of clause 289, further including changing the designation of the voice service from a background application to a foreground application, wherein the process of the voice service is reassigned from the first scheduling group to the second scheduling group based on the change in the designation of the voice service from a background application to a foreground application.
[0473]
[0502] Clause 296 includes the method of clause 295, further including delaying or suppressing generation of a user notification related to changing the designation of the voice service from a background application to a foreground application.
[0474]
[0503] Clause 297 includes the method of clause 289, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0475]
[0504] According to clause 298, the apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector; and means for initiating a change in state of the scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, wherein the change in state reassigns processes of the voice service from the first scheduling group to a second scheduling group, wherein the processes assigned to the second scheduling group are enabled to run on at least one processor core of the processor on which the processes assigned to the first scheduling group are not enabled to run.
[0476]
[0505] Clause 299 includes the apparatus of clause 298, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device.
[0477]
[0506] Clause 300 includes the apparatus of clause 298, wherein the means for obtaining and the means for initiating are incorporated within a vehicle.
[0478]
[0507] Clause 301 includes the apparatus of clause 298, wherein the means for obtaining and the means for initiating are incorporated within a wearable device.
[0479]
[0508] Clause 302 includes the apparatus of clause 298, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0480]
[0509] Clause 303 includes the apparatus of clause 298, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
[0481]
[0510] According to clause 304, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiate a change in state of a scheduler to reassign processes of the voice service from a first scheduling group to a second scheduling group, wherein the processes assigned to the second scheduling group are enabled to execute on at least one processor core of the processor on which the processes assigned to the first scheduling group are not enabled to execute.
[0482]
[0511] According to clause 305, the device includes a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected, and a second processor including two or more processor cores, the second processor coupled to the first processor and configured, upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, to initiate a change in the state of a scheduler to set scheduling parameters associated with the process to enable the process of the voice service to be executed on a reserved processor core of the two or more processor cores.
[0483]
[0512] Clause 306 includes the device of clause 305, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, such that scheduling privileges for the voice service are based on scheduling privileges of the second-stage keyword detector.
[0484]
[0513] Clause 307 includes the device of clause 306, wherein the second processor is further configured to increase a scheduling privilege of the second-stage keyword detector upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, and wherein scheduling parameters associated with a process of the voice service are set based on increasing the scheduling privilege of the second-stage keyword detector.
[0485]
[0514] Clause 308 includes the device of clause 307, wherein increasing the scheduling privilege of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0486]
[0515] Clause 309 includes the device of clause 307, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0487]
[0516] Clause 310 includes the device of clause 309, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0488]
[0517] Clause 311 includes the device of clause 305, wherein the second processor is further configured to elevate scheduling privileges for the voice service upon an indication from the first processor that a keyword has been detected and prior to confirmation of keyword detection, and wherein scheduling parameters associated with a process for the voice service are set based on elevating scheduling privileges for the voice service.
[0489]
[0518] Clause 312 includes the device of clause 311, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service.
[0490]
[0519] Clause 313 includes the device of clause 311, wherein elevating the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application.
[0491]
[0520] Clause 314 includes the device of clause 313, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from a background application to a foreground application.
[0492]
[0521] Clause 315 includes the device of clause 305, wherein the first processor is a digital signal processor or a low-power integrated circuit and the second processor is an application processor.
[0493]
[0522] Clause 316 includes the device of clause 305, wherein the second processor is further configured to reset scheduling parameters associated with the process to not allow the process of the voice service to run on the reserved processor core based on the second stage keyword detector failing to confirm keyword detection.
[0494]
[0523] Clause 317 includes the device of clause 305, wherein executing a process on the reserved processor core reduces latency of the voice service compared to executing a process on one or more additional processor cores of the two or more processor cores, and wherein the one or more additional processor cores are not the reserved processor cores.
[0495]
[0524] Clause 318 includes the device of clause 317, wherein the scheduler is configured to assign processes to execute on particular processor cores based on scheduling groups of the processes, wherein one or more additional processor cores are available for use by each scheduling group and wherein one or more reserved processor cores are not available for use by one or more of the scheduling groups, and wherein the scheduling parameters are associated with the scheduling groups of the processes.
[0496]
[0525] Clause 319 includes the device of clause 317, wherein the scheduler is configured to enable a first group of processes to run on one or more additional processor cores and to enable a second group of processes to run on one or more reserved processor cores, wherein the second group of processes includes or corresponds to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level, and wherein the scheduling parameter is associated with the priority levels of the processes.
[0497]
[0526] Clause 320 includes the device of clause 317, wherein the scheduler is configured to allow foreground processes and background processes to run on one or more additional processor cores and to restrict background processes from running on one or more reserved processor cores, and the scheduling parameter indicates whether the process is a foreground process or a background process.
[0498]
[0527] Clause 321 includes the device of clause 305, further including one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both.
[0499]
[0528] Clause 322 includes the device of clause 305, further including one or more sensors configured to generate context data and to provide the context data to the voice service.
[0500]
[0529] Clause 323 includes the device of clause 305, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
[0501]
[0530] Clause 324 includes the device of clause 305, wherein the voice service includes a voice assistant.
[0502]
[0531] Clause 325 includes the device of clause 305, further including a second stage keyword detector configured to confirm keyword detection.
[0503]
[0532] According to clause 326, the method includes obtaining an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiating a change in state of a scheduler to set scheduling parameters associated with the process to enable the process of the voice service to run on a reserved processor core of the processor.
[0504]
[0533] Clause 327 includes the method of clause 326, further including binding the voice service and the second-stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second-stage keyword detector, wherein scheduling parameters associated with the process of the voice service are set based on scheduling parameters of the second-stage keyword detector.
[0505]
[0534] Clause 328 includes the method of clause 326, based on scheduling parameters associated with the process of the voice service having elevated scheduling privileges for a second stage keyword detector configured to verify keyword detection.
[0506]
[0535] Clause 329 includes the method of clause 328, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the scheduling priority of the second-stage keyword detector.
[0507]
[0536] Clause 330 includes the method of clause 328, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
[0508]
[0537] Clause 331 includes the method of clause 330, further including delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from a background application to a foreground application.
[0509]
[0538] Clause 332 includes the method of clause 326, further including changing the designation of the voice service from a background application to a foreground application, wherein scheduling parameters associated with a process of the voice service are set based on changing the designation of the voice service from a background application to a foreground application.
[0510]
[0539] Clause 333 includes the method of clause 332, further including delaying or suppressing generation of a user notification related to changing the designation of the voice service from a background application to a foreground application.
[0511]
[0540] Clause 334 includes the method of clause 326, further including confirming keyword detection by the second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection.
[0512]
[0541] According to clause 335, the apparatus includes means for obtaining an indication of keyword detection by the first stage keyword detector, and means for initiating a change in state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, wherein the change in state sets scheduling parameters associated with the process to enable the process of the voice service to be executed on a reserved processor core of the processor.
[0513]
[0542] Clause 336 includes the apparatus of clause 335, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device.
[0514]
[0543] Clause 337 includes the device of clause 335, wherein the means for obtaining and the means for initiating are incorporated within a vehicle.
[0515]
[0544] Clause 338 includes the apparatus of clause 335, wherein the means for obtaining and the means for initiating are incorporated within a wearable device.
[0516]
[0545] Clause 339 includes the apparatus of clause 335, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
[0517]
[0546] Clause 340 includes the apparatus of clause 335, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
[0518]
[0547] According to clause 341, a non-transitory computer-readable medium having stored thereon instructions executable by one or more processors to cause the one or more processors to obtain an indication of keyword detection by a first stage keyword detector, and upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiate a change in state of a scheduler to set scheduling parameters associated with the process to enable the process of the voice service to be executed on a reserved processor core of the processor.
[0519]
[0548] The above description of the disclosed aspects is provided to enable any person skilled in the art to make or use the disclosed aspects. Various modifications to these aspects will be readily apparent to those skilled in the art, and the principles defined herein may be applied to other aspects without departing from the scope of the present disclosure. Thus, the present disclosure is not intended to be limited to the aspects shown herein, but is to be accorded the widest possible scope consistent with the principles and novel features as defined by the following claims. The inventions described in the claims of the present application as originally filed are set forth below. [C1] A device, a first-stage keyword detector; a processor, the processor comprising: Initiating a change of state based on a signal indicating keyword detection by the first stage keyword detector and prior to confirmation of keyword detection to enable a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores. The device is configured to: [C2] The device of C1, wherein initiating the change of state includes binding the voice service and the second stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second stage keyword detector. [C3] The device of C1, wherein initiating the change of state includes increasing scheduling privileges of a second stage keyword detector configured to verify the keyword detection. [C4] The device of C3, wherein increasing the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C5] The device of C3, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing a designation of the second-stage keyword detector from a background application to a foreground application. [C6] The device of C5, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C7] The device of C1, wherein initiating the change of state includes increasing scheduling privileges for the voice service. [C8] The device of C7, wherein increasing the scheduling privilege of the voice service includes changing a scheduling priority of the voice service. [C9] The device of C7, wherein increasing the scheduling privilege of the voice service includes changing a designation of the voice service from a background application to a foreground application. [C10] The device of C9, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C11] The device of C1, wherein the first stage keyword detector corresponds to, includes, is contained within, or is executed by, a digital signal processor or a low power integrated circuit, and the one or more reserved processor cores are cores of one or more application processors. [C12] The device of C1, wherein the processor is further configured to reverse the change of state based on a second stage keyword detector failing to confirm the keyword detection. [C13] The device of C1, further comprising the one or more reserved processor cores and one or more additional processor cores. [C14] The device of C13, wherein by allowing the voice service to be scheduled for execution on the one or more reserved processor cores, latency of the voice service is reduced compared to restricting execution of the voice service to the one or more additional processor cores. [C15] The device of C13, further comprising a scheduler configured to assign the process to execute on a particular processor core based on a scheduling group of the process, wherein the one or more additional processor cores are available for use by each scheduling group, and the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C16] The device of C13, further comprising a scheduler configured to enable a first group of processes to execute on the one or more additional processor cores and to enable a second group of processes to execute on the one or more reserved processor cores, wherein the second group of processes includes or corresponds to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C17] The device of C13, further comprising a scheduler configured to allow foreground processes and background processes to execute on the one or more additional processor cores and to restrict background processes from executing on the one or more reserved processor cores. [C18] The device of C1, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first stage keyword detector, to the second stage keyword detector, to the voice service, or any combination thereof. [C19] The device of C1, further comprising one or more sensors configured to generate context data and to provide the context data to the voice service based on the change in state. [C20] The device of C1, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service. [C21] The device of C1, wherein the voice service includes a voice assistant. [C22] The device of C1, further comprising a second stage keyword detector configured to verify the keyword detection. [C23] 1. A method comprising: generating, by a first stage keyword detector, a signal indicative of keyword detection; based on the signal indicative of the keyword detection and prior to confirmation of the keyword detection, initiating a change of state to allow a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores; A method comprising: [C24] The method of C23, wherein initiating the change of state includes binding the voice service and the second stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second stage keyword detector. [C25] The method of C23, wherein initiating the change of state includes increasing scheduling privileges of a second stage keyword detector configured to verify the keyword detection. [C26] The method of C25, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector. [C27] The method of C25, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application. [C28] The method of C27, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C29] The method of C23, wherein initiating the change of state includes increasing scheduling privileges for the voice service. [C30] The method of C29, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service. [C31] The method of C29, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C32] The method of C31, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C33] The method of C23, further comprising assigning the voice service to a scheduling group, wherein the voice service is scheduled for execution on the one or more reserved processor cores based on the scheduling group being associated with the voice service. [C34] The method of C23, further comprising assigning a priority level to the voice service for a scheduling group, wherein the voice service is scheduled for execution on the one or more reserved processor cores based on the priority level meeting a threshold priority level. [C35] The method of C23, further comprising designating the voice service as a foreground application, wherein the voice service is scheduled for execution on the one or more reserved processor cores based on the voice service being designated as a foreground application. [C36] The method of C23, further comprising: confirming the keyword detection by a second stage keyword detector or by the voice service; and performing a voice-assisted action based on a voice command processed by the voice service based on the confirmation of the keyword detection. [C37] 1. An apparatus comprising: means for generating a signal indicative of keyword detection; means for initiating a change of state based on said signal and prior to confirmation of said keyword detection, wherein said change of state enables a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores. An apparatus comprising: [C38] The apparatus of C37, wherein the means for generating and the means for initiating are incorporated within a mobile computing device. [C39] The apparatus of C37, wherein the means for generating and the means for initiating are incorporated within a vehicle. [C40] The apparatus of C37, wherein the means for generating and the means for initiating are incorporated within a wearable device. [C41] The apparatus of C37, wherein the means for generating and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset. [C42] The apparatus of C37, wherein the means for generating and the means for initiating are included in an integrated circuit. [C43] A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining a signal indicative of a keyword detection from a first stage keyword detector; based on the signal indicative of the keyword detection and prior to confirmation of the keyword detection, initiating a change of state to allow a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores; a non-transitory computer-readable medium executable by one or more processors to cause the one or more processors to perform [C44] A device, a processor configured to execute a scheduler to manage allocation of processes to two or more processor cores, wherein the scheduler: receiving an indication that the first stage keyword detector detected a keyword; scheduling a process of the voice service in a low power mode for execution on one or more reserved processor cores based on the indication; and A device configured to: [C45] The device described in C44, wherein scheduling the process of the voice service for execution on the one or more reserved processor cores includes binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector. [C46] The device of C44, wherein the processor is further configured to increase scheduling privileges of a second stage keyword detector configured to verify keyword detection. [C47] The device of C46, wherein increasing the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C48] The device of C46, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application. [C49] The device of C48, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C50] The device of C44, wherein scheduling the process of the voice service for execution on the one or more reserved processor cores includes elevating scheduling privileges of the voice service. [C51] The device of C50, wherein increasing the scheduling privilege of the voice service includes changing a scheduling priority of the voice service. [C52] The device of C50, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C53] The device of C52, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C54] The device of C44, further comprising: a digital signal processor or low power integrated circuit including the first stage keyword detector; and one or more application processors including the two or more processor cores. [C55] The device of C44, further comprising a second stage keyword detector configured to confirm keyword detection based on the indication. [C56] The device of C44, wherein the two or more processor cores include the one or more reserved processor cores and one or more additional processor cores. [C57] The device of C56, wherein by scheduling the process of the voice service for execution on the one or more reserved processor cores, latency of the voice service is reduced compared to restricting execution of the voice service to the one or more additional processor cores. [C58] The device of C56, wherein the scheduler is further configured to assign the process for execution on a particular processor core based on a scheduling group of the process, wherein the one or more additional processor cores are available for use by each scheduling group, and the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C59] The device of C56, wherein the scheduler is further configured to enable a first group of processes to execute on the one or more additional processor cores and to enable a second group of processes to execute on the one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C60] 5. The device of claim 4, wherein the scheduler is further configured to allow foreground and background processes to execute on the one or more additional processor cores and to restrict background processes from executing on the one or more reserved processor cores. [C61] The device of C44, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first stage keyword detector, to the second stage keyword detector, to the voice service, or any combination thereof. [C62] The device of C44, further comprising one or more sensors configured to generate context data and to provide the context data to the voice service based on execution of the voice service on the one or more reserved processor cores. [C63] The device of C44, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service. [C64] The device of C44, wherein the voice service includes a voice assistant. [C65] The device of C44, further comprising a second stage keyword detector configured to verify keyword detection. [C66] 1. A method comprising: receiving an indication that the first stage keyword detector detected a keyword; scheduling, in a scheduler that manages allocation of processes to two or more processor cores, a process of the voice service that is in a low power mode for execution on one or more reserved processor cores based on the indication; A method comprising: [C67] The method of C66, further comprising binding the voice service and the second stage keyword detector such that a scheduling privilege of the voice service is based on a scheduling privilege of the second stage keyword detector, wherein the process of the voice service is scheduled for execution on one or more reserved processor cores based on the second stage keyword detector being scheduled for execution on the one or more reserved processor cores. [C68] The method of C66, wherein the process of the voice service is scheduled for execution on one or more reserved processor cores based on elevated scheduling privileges of a second stage keyword detector configured to verify keyword detection. [C69] The method of C68, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector. [C70] The method of C68, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application. [C71] The method of C70, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C72] The method of C66, wherein the process of the voice service is scheduled for execution on one or more reserved processor cores based on elevated scheduling privileges of the voice service. [C73] The method of C72, wherein increasing the scheduling privilege of the voice service includes changing the scheduling priority of the voice service. [C74] The method of C72, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C75] The method of C74, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C76] The method of C66, further comprising assigning the voice service to a scheduling group, wherein the process of the voice service is scheduled for execution on the one or more reserved processor cores based on the scheduling group being associated with the voice service. [C77] The method of C66, further comprising assigning a priority level to the voice service, wherein the process of the voice service is scheduled for execution on the one or more reserved processor cores based on the priority level meeting a threshold priority level. [C78] The method of C66, further comprising designating the voice service as a foreground application, wherein the process of the voice service is scheduled for execution on the one or more reserved processor cores based on the voice service being designated a foreground application. [C79] The method of C66, further comprising confirming keyword detection by a second stage keyword detector or by the voice service, and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection. [C80] 1. An apparatus comprising: means for receiving an indication that the first stage keyword detector has detected a keyword; means for managing an allocation of processes to two or more processor cores, wherein said means for managing the allocation of processes is configured to schedule processes of the voice service that are in a low power mode for execution on one or more reserved processor cores based on said indication; An apparatus comprising: [C81] The apparatus of C80, wherein the means for receiving and the means for managing process allocation are incorporated within a mobile computing device. [C82] The apparatus of C80, wherein the means for receiving and the means for managing process allocation are incorporated within a vehicle. [C83] The apparatus of C80, wherein the means for receiving and the means for managing process allocation are incorporated within a wearable device. [C84] The apparatus of C80, wherein the means for receiving and the means for managing process allocation are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset. [C85] The apparatus of C80, wherein the means for receiving and the means for managing process allocation are included in an integrated circuit. [C86] A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining an indication that the first stage keyword detector detected a keyword; scheduling, in a scheduler that manages allocation of processes to two or more processor cores, a process of the voice service that is in a low power mode for execution on one or more reserved processor cores based on the indication; a non-transitory computer-readable medium executable by one or more processors to cause the one or more processors to perform [C87] A device, a processor configured to execute a scheduler to manage allocation of processes to two or more processor cores, wherein the scheduler: receiving an indication that the first stage keyword detector detected a keyword; increasing the priority assigned to the process of the voice service based on said indication; A device configured to: [C88] The device described in C87, wherein increasing the priority assigned to the process of the voice service includes binding the voice service and the second stage keyword detector such that the scheduling privilege of the voice service is based on the scheduling privilege of the second stage keyword detector. [C89] The device of C87, wherein the processor is further configured to increase scheduling privileges of a second stage keyword detector configured to verify keyword detection. [C90] The device of C89, wherein increasing the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C91] The device of C89, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application. [C92] The device of C91, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C93] The device of C87, wherein increasing the priority of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C94] The device of C93, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C95] The device of C87, further comprising: a digital signal processor or low power integrated circuit including the first stage keyword detector; and one or more application processors including the two or more processor cores. [C96] The device of C87, further comprising a second stage keyword detector configured to confirm keyword detection based on the indication. [C97] The device of C96, wherein the processor is further configured to reverse the priority level of the voice service based on the second stage keyword detector failing to confirm the keyword detection. [C98] The device of C87, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores. [C99] The device of C98, wherein increasing the priority assigned to the process of the voice service allows the process to be scheduled for execution on the one or more reserved processor cores, thereby reducing latency of the voice service compared to restricting execution of the voice service to the one or more additional processor cores. [C100] 9. The device of claim 8, wherein the scheduler is further configured to assign the processes for execution on particular processor cores based on scheduling groups of the processes, wherein the one or more additional processor cores are available for use by each scheduling group, and wherein the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C101] 10. The device of claim 98, wherein the scheduler is further configured to enable a first group of processes to execute on the one or more additional processor cores and to enable a second group of processes to execute on the one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C102] 10. The device of claim 98, wherein the scheduler is further configured to allow foreground and background processes to execute on the one or more additional processor cores and to restrict background processes from executing on the one or more reserved processor cores. [C103] The device of C87, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first stage keyword detector, to the second stage keyword detector, to the voice service, or any combination thereof. [C104] The device of C87, further comprising one or more sensors configured to generate context data and to provide the context data to the voice service based on the priority level assigned to the process of the voice service. [C105] The device of C87, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service. [C106] The device of C87, wherein the voice service includes a voice assistant. [C107] The device of C87, further comprising a second stage keyword detector configured to confirm keyword detection. [C108] 1. A method comprising: receiving an indication that a first stage keyword detector has detected a keyword in a scheduler that manages allocation of processes to two or more processor cores; increasing the priority assigned to the process of the voice service based on said indication; A method comprising: [C109] The method of C108, further comprising binding the voice service and the second stage keyword detector such that a scheduling privilege of the voice service is based on a scheduling privilege of the second stage keyword detector, wherein the priority assigned to the process of the voice service is based on a priority assigned to the second stage keyword detector. [C110] The method of C108, wherein the priority assigned to the process of the voice service is increased based on increasing the priority of a second stage keyword detector configured to verify keyword detection. [C111] The method of C110, wherein increasing the priority of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application. [C112] The method of C111, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the second-stage keyword detector from the background application to the foreground application. [C113] The method of C108, wherein increasing the priority of the process of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C114] The method of C113, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C115] The method of C108, wherein increasing the priority assigned to the process of the voice service includes assigning the process to a particular scheduling group. [C116] The method of C108, further comprising: confirming keyword detection by a second stage keyword detector or by the voice service; and performing a voice-assisted action based on the voice command processed by the voice service based on the confirmation of keyword detection. [C117] 1. An apparatus comprising: means for receiving an indication that the first stage keyword detector has detected a keyword; means for managing allocation of processes to two or more processor cores; and said means for managing allocation of processes configured to increase a priority assigned to a process of the voice service based on said indication. An apparatus comprising: [C118] The apparatus of C117, wherein the means for receiving and the means for managing process allocation are incorporated within a mobile computing device. [C119] The apparatus of C117, wherein the means for receiving and the means for managing process allocation are incorporated within a vehicle. [C120] The apparatus of C117, wherein the means for receiving and the means for managing process allocation are incorporated within a wearable device. [C121] The apparatus of C117, wherein the means for receiving and the means for managing process allocation are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset. [C122] The apparatus of C117, wherein the means for receiving and the means for managing process allocation are included in an integrated circuit. [C123] A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining an indication that the first stage keyword detector detected a keyword; increasing the priority assigned to the voice service process in a scheduler that manages allocation of processes to two or more processor cores based on the indication; a non-transitory computer-readable medium executable by one or more processors to cause the one or more processors to perform [C124] A device, a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected; a second processor including two or more processor cores, the second processor coupled to the first processor, and upon the indication from the first processor that the keyword has been detected, transitioning the second processor from an idle state to an active state; The voice service must be started before the keyword detection is confirmed. A device configured to: [C125] The device of C124, wherein the second processor is further configured to bind the voice service and the second stage keyword detector upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, such that scheduling privileges of the voice service are based on scheduling privileges of the second stage keyword detector. [C126] The device of C125, wherein the second processor is further configured to increase the scheduling privilege of the second stage keyword detector upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection. [C127] The device of C126, wherein increasing the scheduling privilege of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C128] The device of C126, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application. [C129] The device of C128, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C130] The device of C124, wherein the second processor is further configured to increase scheduling privileges of the voice service upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection. [C131] The device of C130, wherein increasing the scheduling privilege of the voice service includes changing a scheduling priority of the voice service. [C132] The device of C130, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C133] The device of C132, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C134] The device of C124, wherein the first processor is a digital signal processor or a low-power integrated circuit, and the second processor is an application processor. [C135] The device of C124, wherein the second processor is further configured to terminate the voice service based on a second stage keyword detector failing to confirm the keyword detection. [C136] The device of C124, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores, further comprising a scheduler configured to assign processes to execute on particular processor cores. [C137] The device of C136, wherein starting the voice service includes scheduling the one or more processes of the voice service for execution on the one or more reserved processor cores, which reduces latency of the voice service compared to restricting execution of the one or more processes of the voice service to the one or more additional processor cores. [C138] The device of C137, wherein the scheduler is configured to assign the process to execute on a particular processor core based on a scheduling group of the process, wherein the one or more additional processor cores are available for use by each scheduling group, and the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C139] The device of C137, wherein the scheduler is configured to enable a first group of processes to run on the one or more additional processor cores and to enable a second group of processes to run on the one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C140] 10. The device of claim 9, wherein the scheduler is configured to allow foreground and background processes to execute on the one or more additional processor cores and to restrict background processes from executing on the one or more reserved processor cores. [C141] The device of C124, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both. [C142] The device of C124, further comprising one or more sensors configured to generate context data and to provide the context data to the voice service. [C143] The device of C124, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service. [C144] The device of C124, wherein the voice service includes a voice assistant. [C145] The device of C124, further comprising a second stage keyword detector configured to confirm the keyword detection. [C146] 1. A method comprising: obtaining an indication of keyword detection by the first stage keyword detector; Upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, transitioning the processor from an idle state to an active state; Launching voice services A method comprising: [C147] The method of C146, wherein the voice service is launched for execution on one or more reserved processor cores based on elevating scheduling privileges of a second stage keyword detector configured to verify the keyword detection. [C148] The method of C147, wherein increasing the scheduling privilege of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector. [C149] The method of C147, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application. [C150] The method of C149, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C151] The method of C146, further comprising assigning the voice service to a scheduling group, wherein the voice service is launched for execution on one or more reserved processor cores based on the scheduling group being associated with the voice service. [C152] The method of C146, further comprising assigning a priority level to the voice service, wherein the voice service is activated for execution on one or more reserved processor cores based on the priority level meeting a threshold priority level. [C153] The method of C146, further comprising designating the voice service as a foreground application, wherein the voice service is launched for execution on the one or more reserved processor cores based on the voice service being designated as a foreground application. [C154] The method of C146, further comprising: confirming the keyword detection by a second stage keyword detector or by the voice service; and performing a voice-assisted action based on a voice command processed by the voice service based on the confirmation of the keyword detection. [C155] 1. An apparatus comprising: means for obtaining an indication of keyword detection by the first stage keyword detector; means for transitioning a processor from an idle state to an active state upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection; means for initiating a voice service upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection; An apparatus comprising: [C156] The apparatus of C155, wherein the means for obtaining, the means for transitioning, and the means for initiating are incorporated within a mobile computing device. [C157] The apparatus of C155, wherein the means for acquiring, the means for transitioning, and the means for initiating are incorporated within a vehicle. [C158] The apparatus of C155, wherein the means for acquiring, the means for transitioning, and the means for initiating are incorporated within a wearable device. [C159] The apparatus of C155, wherein the means for acquiring, the means for transitioning, and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset. [C160] The apparatus of C155, wherein the means for acquiring, the means for transitioning, and the means for initiating are included in an integrated circuit. [C161] A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining an indication of keyword detection by the first stage keyword detector; Upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, transitioning the processor from an idle state to an active state; Launching voice services a non-transitory computer-readable medium executable by one or more processors to cause the one or more processors to perform [C162] A device, a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected; a second processor including two or more processor cores, the second processor coupled to the first processor and configured to initiate a change in the state of a scheduler to increase a priority assigned to a process of a voice service upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection; device. [C163] The device of C162, wherein the second processor is further configured to bind the voice service and the second stage keyword detector upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, such that scheduling privileges of the voice service are based on scheduling privileges of the second stage keyword detector. [C164] The device of C163, wherein initiating the change in the state of the scheduler to increase the priority assigned to the process of the voice service includes increasing the scheduling privilege of the second stage keyword detector after binding the voice service and the second stage keyword detector. [C165] The device of C164, wherein increasing the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C166] The device of C164, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application. [C167] The device of C166, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C168] The device of C162, wherein increasing the priority assigned to the process of the voice service includes changing a scheduling priority of the voice service. [C169] The device of C162, wherein increasing the priority assigned to the process of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C170] The device of C169, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C171] The device of C162, wherein the first processor is a digital signal processor or a low-power integrated circuit, and the second processor is an application processor. [C172] The device of C162, wherein the second processor is further configured to reduce the priority assigned to the process of the voice service based on a second stage keyword detector failing to confirm the keyword detection. [C173] 16. The device of claim 15, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores, and wherein the scheduler is configured to assign processes to execute on particular processor cores. [C174] The device of C173, wherein increasing the priority assigned to the process of the voice service includes enabling the scheduler to schedule the process of the voice service for execution on the one or more reserved processor cores, which reduces latency of the voice service compared to restricting execution of the process of the voice service to the one or more additional processor cores. [C175] The device of C174, wherein the scheduler is configured to assign the process to execute on a particular processor core based on a scheduling group of the process, wherein the one or more additional processor cores are available for use by each scheduling group, and the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C176] The device of C174, wherein the scheduler is configured to enable a first group of processes to execute on the one or more additional processor cores and to enable a second group of processes to execute on the one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C177] 10. The device of claim 9, wherein the scheduler is configured to allow foreground and background processes to execute on the one or more additional processor cores and to restrict background processes from executing on the one or more reserved processor cores. [C178] The device of C162, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both. [C179] The device of C162, further comprising one or more sensors configured to generate context data and to provide the context data to the voice service based on the priority assigned to the process of the voice service. [C180] The device of C162, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service. [C181] The device of C162, wherein the voice service includes a voice assistant. [C182] The device of C162, further comprising a second stage keyword detector configured to confirm the keyword detection. [C183] 1. A method comprising: obtaining an indication of keyword detection by the first stage keyword detector; upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, initiating a change in the state of a scheduler to increase the priority assigned to a process of a voice service; A method comprising: [C184] The method of C183, further comprising binding the voice service and the second stage keyword detector such that a scheduling privilege of the voice service is based on a scheduling privilege of the second stage keyword detector, wherein the priority assigned to the process of the voice service is increased based on the priority assigned to the second stage keyword detector being increased. [C185] The method of C183, wherein the priority assigned to the process of the voice service is increased based on increasing scheduling privileges of a second stage keyword detector configured to verify the keyword detection. [C186] The method of C185, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the scheduling priority of the second stage keyword detector. [C187] The method of C185, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application. [C188] The method of C187, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C189] The method of C183, wherein increasing the priority of the process of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C190] The method of C189, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C191] The method of C183, wherein increasing the priority assigned to the process of the voice service includes assigning the voice service to a higher scheduling group. [C192] The method of C183, further comprising: confirming the keyword detection by a second stage keyword detector or by the voice service; and performing a voice-assisted action based on a voice command processed by the voice service based on the confirmation of the keyword detection. [C193] 1. An apparatus comprising: means for obtaining an indication of keyword detection by the first stage keyword detector; means for initiating a change in state of a scheduler upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, wherein said change in state increases a priority assigned to a process of a voice service; An apparatus comprising: [C194] The apparatus of C193, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device. [C195] The apparatus of C193, wherein the means for obtaining and the means for initiating are incorporated within a vehicle. [C196] The apparatus of C193, wherein the means for acquiring and the means for initiating are incorporated within a wearable device. [C197] The apparatus of C193, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset. [C198] The apparatus of C193, wherein the means for acquiring and the means for initiating are included in an integrated circuit. [C199] A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining an indication of keyword detection by the first stage keyword detector; upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, initiating a change in the state of a scheduler to increase the priority assigned to a process of a voice service; a non-transitory computer-readable medium executable by one or more processors to cause the one or more processors to perform [C200] A device, a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected; a second processor including two or more processor cores, the second processor coupled to the first processor and configured to initiate a change in the state of a scheduler to move a process of a voice service from a background task to a foreground task upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection; device. [C201] The device of C200, wherein the second processor is further configured to bind the voice service and the second-stage keyword detector upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, such that a scheduling privilege of the voice service is based on a scheduling privilege of the second-stage keyword detector, and the process of the voice service is moved from the background task to the foreground task based on designating the second-stage keyword detector as a foreground application. [C202] The device of C201, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with designating the second stage keyword detector as a foreground application. [C203] The device of C200, wherein the second processor is further configured to increase scheduling privileges of the voice service upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection. [C204] The device of C203, wherein increasing the scheduling privilege of the voice service includes changing a scheduling priority of the voice service. [C205] The device of C204, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C206] The device of C205, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C207] The device of C200, wherein the first processor is a digital signal processor or a low-power integrated circuit, and the second processor is an application processor. [C208] The device of C200, wherein the second processor is further configured to terminate the voice service based on a second stage keyword detector failing to confirm the keyword detection. [C209] The device of C200, wherein the two or more processor cores include one or more reserved processor cores and one or more additional processor cores, further comprising the scheduler configured to assign processes to run on particular processor cores. [C210] The device of C209, wherein moving the process(es) of the voice service from the background task to the foreground task includes scheduling one or more processes of the voice service for execution on the one or more reserved processor cores, which reduces latency of the voice service compared to limiting execution of the one or more processes of the voice service to the one or more additional processor cores. [C211] 10. The device of claim 9, wherein the scheduler is configured to assign the process to execute on a particular processor core based on a scheduling group of the process, wherein the one or more additional processor cores are available for use by each scheduling group, and the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C212] 10. The device of claim 9, wherein the scheduler is configured to enable a first group of processes to execute on the one or more additional processor cores and to enable a second group of processes to execute on the one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C213] 10. The device of claim 9, wherein the scheduler is configured to allow foreground and background processes to run on the one or more additional processor cores and to restrict background processes from running on the one or more reserved processor cores. [C214] The device of C200, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first processor, the second processor, or both. [C215] The device of C200, further comprising one or more sensors configured to generate context data and to provide the context data to the process of the voice service based on the process being designated the foreground task. [C216] The device of C200, further comprising one or more output devices configured to provide a user notification indicating execution of the voice service. [C217] The device of C200, wherein the voice service includes a voice assistant. [C218] The device of C200, further comprising a second stage keyword detector configured to verify the keyword detection. [C219] 1. A method comprising: obtaining an indication of keyword detection by the first stage keyword detector; upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, initiating a change in state of a scheduler to move a process of a voice service from a background task to a foreground task; A method comprising: [C220] The method of C219, further comprising binding the voice service and the second-stage keyword detector such that a scheduling privilege of the voice service is based on a scheduling privilege of the second-stage keyword detector, wherein the process of the voice service is moved from the background task to the foreground task based on the second-stage keyword detector being moved from the background task to the foreground task. [C221] The method of claim 219, wherein the process of the voice service is moved from the background task to the foreground task based on increasing scheduling privileges of a second stage keyword detector configured to verify the keyword detection. [C222] The method of C221, wherein increasing the scheduling privilege of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C223] The method of C219, further comprising delaying or suppressing generation of a user notification associated with moving the process of the voice service from the background task to the foreground task. [C224] The method of C219, further comprising: confirming the keyword detection by a second stage keyword detector or by the voice service; and performing a voice-assisted action based on a voice command processed by the voice service based on the confirmation of the keyword detection. [C225] 1. An apparatus comprising: means for obtaining an indication of keyword detection by the first stage keyword detector; means for initiating a change in state of a scheduler upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, wherein said change in state moves a process of a voice service from a background task to a foreground task; An apparatus comprising: [C226] The apparatus of C225, wherein the means for obtaining and the means for initiating are incorporated within a mobile computing device. [C227] The apparatus of C225, wherein the means for obtaining and the means for initiating are incorporated within a vehicle. [C228] The apparatus of C225, wherein the means for acquiring and the means for initiating are incorporated within a wearable device. [C229] The apparatus of C225, wherein the means for obtaining and the means for initiating are incorporated within an augmented reality headset, a mixed reality headset, or a virtual reality headset. [C230] The apparatus of C225, wherein the means for acquiring and the means for initiating are included in an integrated circuit. [C231] A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining an indication of keyword detection by the first stage keyword detector; upon said indication of keyword detection by said first stage keyword detector and prior to confirmation of said keyword detection, initiating a change in state of a scheduler to move a process of a voice service from a background task to a foreground task; a non-transitory computer-readable medium executable by one or more processors to cause the one or more processors to perform [C232] A device, a first processor configured to execute a first stage keyword detector to generate an indication that a keyword has been detected; a second processor including two or more processor cores, the second processor coupled to the first processor and configured to initiate a change in a state of a scheduler upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection to allow a process of a voice service to be reallocated from a first processor core of the two or more processor cores to a second processor core of the two or more processor cores, wherein the second processor core is a processor core with higher performance than the first processor core; device. [C233] The device of C232, wherein the second processor is further configured to bind the voice service and the second stage keyword detector upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, such that scheduling privileges of the voice service are based on scheduling privileges of the second stage keyword detector. [C234] The device of C233, wherein the second processor is further configured to increase the scheduling privileges of the second stage keyword detector upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection. [C235] The device of C234, wherein increasing the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector. [C236] The device of C234, wherein increasing the scheduling privileges of the second stage keyword detector includes changing the designation of the second stage keyword detector from a background application to a foreground application. [C237] The device of C236, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application. [C238] The device of C232, wherein the second processor is further configured to increase scheduling privileges of the voice service upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection. [C239] The device of C238, wherein increasing the scheduling privilege of the voice service includes changing a scheduling priority of the voice service. [C240] The device of C238, wherein increasing the scheduling privilege of the voice service includes changing the designation of the voice service from a background application to a foreground application. [C241] The device of C240, wherein the second processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application. [C242] The device of C232, wherein the first processor is a digital signal processor or a low power integrated circuit, and the second processor is an application processor. [C243] The device of C232, wherein the second processor is further configured to reallocate the process of the voice service from the second processor core to the first processor core based on a second stage keyword detector failing to confirm the keyword detection. [C244] 10. The device of claim 9, wherein the two or more processor cores include one or more reserved processor cores including the second processor core, and the two or more processor cores include one or more additional processor cores including the first processor core, and further comprising the scheduler configured to assign processes to execute on particular processor cores. [C245] The device described in C244, wherein by allowing the process of the voice service to be reassigned to the second processor core, latency of the voice service is reduced compared to restricting execution of the process of the voice service to the first processor core. [C246] The device of C245, wherein the scheduler is configured to assign the process to execute on a particular processor core based on a scheduling group of the process, wherein the one or more additional processor cores are available for use by each scheduling group, and the one or more reserved processor cores are not available for use by one or more of the scheduling groups. [C247] The device of C245, wherein the scheduler is configured to enable a first group of processes to execute on the one or more additional processor cores and to enable a second group of processes to execute on the one or more reserved processor cores, the second group of processes including or corresponding to a subset of the first group of processes having a priority level greater than or equal to a threshold priority level. [C248] 10. The device of claim 9, wherein the scheduler is configured to allow foreground and background proces...
Claims
1. A device, a first stage keyword detector; a processor, the processor comprising: Based on a signal indicating keyword detection by the first stage keyword detector and prior to confirmation of keyword detection, initiate a change of state to allow a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores. It is configured as follows: Initiating the change in state includes binding the voice service and a second-stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of a second-stage keyword detector configured to verify the keyword detection.
2. The device of claim 1 , wherein initiating the change of state includes increasing scheduling privileges of the second stage keyword detector.
3. The device of claim 2 , wherein increasing the scheduling privileges of the second-stage keyword detector comprises changing a scheduling priority of the second-stage keyword detector.
4. The device of claim 2 , wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
5. 5. The device of claim 4, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the second-stage keyword detector from the background application to the foreground application.
6. The device of claim 1 , wherein initiating the change of state includes increasing scheduling privileges for the voice service.
7. The device of claim 6 , wherein increasing the scheduling privilege of the voice service comprises changing the scheduling priority of the voice service.
8. The device of claim 6 , wherein increasing the scheduling privileges of the voice service includes changing the designation of the voice service from a background application to a foreground application.
9. 10. The device of claim 8, wherein the processor is further configured to execute instructions for delaying or suppressing generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
10. 2. The device of claim 1, wherein the first stage keyword detector corresponds to, includes, is contained within, or is executed by, a digital signal processor or a low power integrated circuit, and the one or more reserved processor cores are one or more application processor cores.
11. The device of claim 1 , wherein the processor is further configured to reverse the change of state based on the second stage keyword detector failing to confirm the keyword detection.
12. The device of claim 1 , further comprising the one or more reserved processor cores and one or more additional processor cores.
13. 13. The device of claim 12, wherein by allowing the voice service to be scheduled for execution on the one or more reserved processor cores, latency of the voice service is reduced compared to restricting execution of the voice service to the one or more additional processor cores.
14. 13. The device of claim 12, further comprising a scheduler configured to assign processes for execution on particular processor cores based on scheduling groups of the processes, wherein the one or more additional processor cores are available for use by each scheduling group and the one or more reserved processor cores are not available for use by one or more of the scheduling groups.
15. 13. The device of claim 12, wherein tasks assigned a threshold priority level are allowed to run on the one or more reserved processor cores.
16. 13. The device of claim 12, further comprising a scheduler configured to allow foreground and background processes to run on the one or more additional processor cores and to restrict background processes from running on the one or more reserved processor cores.
17. 10. The device of claim 1, further comprising one or more microphones configured to generate audio data and to provide the audio data to the first-stage keyword detector, the second-stage keyword detector, the voice service, or any combination thereof.
18. The device of claim 1 , further comprising one or more sensors configured to generate contextual data and to provide the contextual data to the voice service based on the change in state.
19. The device of claim 1 , further comprising one or more output devices configured to provide a user notification indicating execution of the voice service.
20. The device of claim 1 , wherein the voice service includes a voice assistant.
21. The device of claim 1 further comprising the second stage keyword detector.
22. 1. A method comprising: generating, by a first stage keyword detector, a signal indicative of keyword detection; based on the signal indicative of the keyword detection and prior to confirmation of the keyword detection, initiating a change of state to allow an audio service in a low power mode to be scheduled for execution on one or more reserved processor cores; The method, wherein initiating the change of state includes binding the voice service and a second-stage keyword detector such that scheduling privileges of the voice service are based on scheduling privileges of the second-stage keyword detector configured to verify the keyword detection.
23. 23. The method of claim 22, wherein initiating the change of state comprises increasing scheduling privileges of the second stage keyword detector.
24. 24. The method of claim 23, wherein increasing the scheduling privileges of the second-stage keyword detector comprises changing the scheduling priority of the second-stage keyword detector.
25. 24. The method of claim 23, wherein increasing the scheduling privileges of the second-stage keyword detector includes changing the designation of the second-stage keyword detector from a background application to a foreground application.
26. 26. The method of claim 25, further comprising delaying or suppressing generation of a user notification associated with changing the designation of the second-stage keyword detector from the background application to the foreground application.
27. 1. An apparatus comprising: means for generating a signal indicative of keyword detection; means for initiating a change of state based on said signal and prior to confirmation of said keyword detection, wherein said change of state enables a voice service in a low power mode to be scheduled for execution on one or more reserved processor cores; Equipped with The apparatus, wherein initiating the change of state includes increasing scheduling privileges for the voice service.
28. A non-transitory computer-readable medium having instructions stored thereon, the instructions comprising: obtaining a signal indicative of a keyword detection from a first stage keyword detector; based on the signal indicative of keyword detection and prior to confirmation of keyword detection, initiate a change of state to enable an audio service in a low power mode to be scheduled for execution on one or more reserved processor cores; a second-stage keyword detector configured to detect whether a scheduling privilege of the voice service is based on a scheduling privilege of the second-stage keyword detector;
Citation Information
Patent Citations
Speech recognition method and device, and storage medium
JP2020527754A
Keyword detection modeling using contextual information
US20180012593A1