The present disclosure is generally related to reduced-latency speech processing.
Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless telephones such as mobile and smart phones, tablets and laptop computers that are small, lightweight, and easily carried by users. These devices can communicate voice and data packets over wireless networks. Further, many such devices incorporate additional functionality such as a digital still camera, a digital video camera, a digital recorder, audio recording, audio and/or video conferencing, and an audio file player. Also, such devices can process executable instructions, including software applications, such as a web browser application, that can be used to access the Internet.
It has become 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, vehicles, etc. As voice assistant applications improve, the speech detection models and other related software of the voice assistant applications grow in complexity, leading to higher processing requirements and greater latency. In some instances, the latency increase may be sufficient to be detectable by the user, which negatively impacts the user experience associated with using the voice assistant application. For example, a large latency increase may be experienced when a voice assistant application is in a sleep or standby state and is awakened responsive to utterance of a keyword.
A device includes a first stage keyword detector and a processor. The processor is configured to, based on a signal indicating a keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiate a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
A method includes generating, by a first stage keyword detector, a signal indicating a keyword detection. The method also includes, based on the signal indicating the keyword detection and prior to confirmation of the keyword detection, initiating a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
An apparatus includes means for generating a signal indicating a keyword detection. The apparatus includes means for initiating a change of state based on the signal and prior to confirmation of the keyword detection, where the change of state enables a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
A non-transitory computer-readable medium stores instructions that are executable by one or more processors to cause the one or more processors to obtain a signal indicating a keyword detection from a first stage keyword detector. The instructions are further executable to, based on the signal indicating the keyword detection and prior to confirmation of the keyword detection, initiate a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
A device includes a first stage keyword detector and a processor. The processor is configured to execute a scheduler to manage assignment of processes to two or more cores. 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.
A method includes receiving an indication that a first stage keyword detector has detected a keyword. The method also includes, based on the indication, scheduling, at a scheduler that manages assignment of processes to two or more cores, a process of a voice service that is in a low-power mode for execution on one or more reserved processor cores.
An apparatus includes means for receiving an indication that a first stage keyword detector has detected a keyword. The apparatus includes means for managing assignment of processes to two or more cores, the means for managing assignment of processes configured to, 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.
A non-transitory computer-readable medium stores instructions that are 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, at a scheduler that manages assignment of processes to two or more cores, a process of a voice service that is in a low-power mode for execution on one or more reserved processor cores.
A device includes a first stage keyword detector and a processor. The processor is configured to execute a scheduler to manage assignment of processes to two or more cores. The scheduler is configured to receive an indication that a first stage keyword detector has detected a keyword and, based on the indication, elevate a priority assigned to a process of a voice service.
A method includes receiving, at a scheduler that manages assignment of processes to two or more cores, an indication that a first stage keyword detector has detected a keyword. The method also includes, based on the indication, elevating a priority assigned to a process of a voice service.
An apparatus includes means for receiving an indication that a first stage keyword detector has detected a keyword. The apparatus includes means for managing assignment of processes to two or more cores, the means for managing assignment of processes configured to, based on the indication, elevate a priority assigned to a process of a voice service.
A non-transitory computer-readable medium stores instructions that are 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, elevate, at a scheduler that manages assignment of processes to two or more cores, a priority assigned to a process of a voice service.
A 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, upon the indication from the first processor that the keyword has been detected transition the second processor from an idle state to a wake-up state and prior to confirmation of keyword detection, initiate a voice service.
A 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 the keyword detection, transitioning a processor from an idle state to a wake-up state and initiating a voice service.
An apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for transitioning a processor from an idle state to a wake-up state upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the 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 the keyword detection.
A non-transitory computer-readable medium stores instructions that are 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 the keyword detection transition a processor from an idle state to a wake-up state and initiate a voice service.
A 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, upon the indication from the first processor that the keyword has been detected, and prior to confirmation of keyword detection, initiate a change of state of a scheduler to elevate a priority assigned to a process of a voice service.
A 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 the keyword detection, initiating a change of state of a scheduler to elevate a priority assigned to a process of a voice service.
An apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection. The change of state elevates a priority assigned to a process of a voice service.
A non-transitory computer-readable medium stores instructions that are 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 the keyword detection, initiate a change of state of a scheduler to elevate a priority assigned to a process of a voice service.
A 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, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to move a process of a voice service from a background task to a foreground task.
A 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 the keyword detection, initiating a change of state of a scheduler to move a process of a voice service from a background task to a foreground task.
An apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection. The change of state causes a process of a voice service to move from a background task to a foreground task.
A non-transitory computer-readable medium stores instructions that are 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 the keyword detection, initiate a change of state of a scheduler to move a process of a voice service from a background task to a foreground task.
A 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, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to enable 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 higher performance core than the first core.
A 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 the keyword detection, initiating a change of state of a scheduler to enable 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 higher performance core than the first core.
An apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, where the change of 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 is a higher performance core than the first core.
A non-transitory computer-readable medium stores instructions that are 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 the keyword detection, initiate a change of state of a scheduler to enable 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 higher performance core than the first core.
A 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, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group. Processes assigned to the second scheduling group are allowed to execute on at least one core of the two or more cores on which processes assigned to the first scheduling group are not allowed to execute.
A 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 the keyword detection, initiating a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group. Processes assigned to the second scheduling group are allowed to execute on at least one core of a processor on which processes assigned to the first scheduling group are not allowed to execute.
An apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, wherein the change of state reassigns a process of a voice service from a first scheduling group to a second scheduling group. Processes assigned to the second scheduling group are allowed to execute on at least one core of a processor on which processes assigned to the first scheduling group are not allowed to execute.
A non-transitory computer-readable medium stores instructions that are 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 the keyword detection, initiate a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group. Processes assigned to the second scheduling group are allowed to execute on at least one core of a processor on which processes assigned to the first scheduling group are not allowed to execute.
A 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, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved core of the two or more cores.
A 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 the keyword detection, initiating a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved core of a processor.
An apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. The apparatus includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection. The change of state sets a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved core of a processor.
A non-transitory computer-readable medium stores instructions that are 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 the keyword detection, initiate a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved core of a processor.
Other aspects, advantages, and features of the present disclosure will become apparent after review of the entire application, including the following sections: Brief Description of the Drawings, Detailed Description, and the Claims.
In a particular aspect, voice assistant operations are performed in multiple stages to conserve power and computing resources, and execution of the stages and/or resources used to execute the stages is controlled in a manner that reduces latency without significantly increasing power demands. In some implementations, a staged approach is used to separate execution of complex speech recognition models that process natural language speech from less complex keyword detection models. Using such an approach, the complex speech recognition models can remain in a low-power state (e.g., in standby, asleep, off, or another low-power state) until a keyword is detected. For example, a first stage of the staged approach may include a first stage keyword detector that runs 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 an utterance that includes a keyword. In this context, a “keyword” is a word or phrase use to alert the voice assistant that a command or query is coming. When the first stage keyword detector indicates that a keyword is detected, more complex and resource intensive portions of the voice assistant are initiated.
In a particular aspect, the first stage keyword detector uses a relatively simple speech reignition model and may generate more false alarms for keyword detection than desired. To address this issue, some implementations use a 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 be executed at a low-power processor (e.g., a DSP or ASIC), or may be executed at 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). As one example, the first stage keyword detector and the second stage keyword detector are embedded system components that operate below 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 a part of an application (e.g., a voice service or voice assistant application) that operates within the higher level operating system.
When keyword detection is confirmed by the second stage, a full voice assistant application is used to perform a voice assistant operation based on a voice command or inquiry that includes or follows the keyword. If the voice assistant application is in a low-power mode (e.g., asleep) when the keyword is detected, there can be 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 latency of the voice service or voice assistant application, can be longer for more complex speech recognition models. Thus, while more complex speech recognition models can lead to improved accuracy of speech recognition, the more complex speech recognition models can also increase latency, which is detrimental to the user experience.
At least a portion of the latency increase for complex speech recognition models is due to delaying execution of the speech recognition model on the most powerful available processing cores in order to conserve power, especially for portable, battery-operated devices. Many such devices include several different types of processing cores. As an example, the different types of processing cores can include lower-power processing cores and higher-power processing cores. In this example, a lower-power processing core has lower power demand than a higher-power processing core, but the lower-power processing core also has reduced performance in terms of various metrics. To illustrate, relative to the higher-power processing core, the lower power processing core may have a slower clock cycle, may execute fewer instructions per second, may perform fewer operations per second, etc.
When a device has multiple processing cores, the device may use a scheduler to control which processes are executed 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 where the improved performance of a higher-power processing core is needed or desirable, despite the resulting increased power demand. 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 particular processes ahead of others due to scheduling priority, etc. As one example, the scheduler may assign a process of a foreground application to a reserved processing core or to one of the non-reserved processing cores but may assign a process of a background application only to one of the non-reserved processing cores.
In a particular aspect disclosed herein, latency of a voice service is decreased by decreasing the delay between detection of a keyword at the first stage keyword detector and execution of the speech recognition model on one or more reserved processing cores. For example, in some implementations, the latency is decreased by transitioning a processor (e.g., an application processor) from an idle state to a wake-up state and initiating a voice service prior to confirmation of keyword detection. In this example, a wake-up process is started based on the first stage keyword detector generating an indication of keyword detection. If a second stage keyword detector or the voice service determines that the keyword detection cannot be confirmed, the processor can be returned to an idle state. In contrast, if the second stage keyword detector or the voice service confirms the keyword detection, the voice service is ready to perform speech recognition operations sooner than if the processes of waking up the processor and initiating the voice service were delayed until after keyword detection was confirmed.
In some implementations, based on a signal indicating a keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, a change of state is initiated to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores. For example, the change of state to enable the voice service to be scheduled for execution on one or more reserved processor cores can include scheduling a process of the voice service for execution on the one or more reserved processor cores or instructing the scheduler to schedule a process of the voice service at one or more reserved processor cores. As another example, the change of state to enable the voice service to be scheduled for execution on one or more reserved processor cores can include setting or modifying a parameter (e.g., a scheduling parameter) that the scheduler uses to determine which processes are assigned to which processing core(s). To illustrate, the scheduler may maintain or have access to scheduling priority values associated with various applications or processes. In this illustrative example, the change of state can include elevating a scheduling priority value associated with the voice service or with a process of the voice service. As another example, the change of state to enable the voice service to be scheduled for execution on one or more reserved processor cores can include moving a process of the voice service from a background task to a foreground task. In this example, the scheduler may be configured to allow foreground tasks to use the reserved processing core(s) and may restrict background tasks from using the reserved processing core(s). As yet another example, the change of state to enable the voice service to be scheduled for execution on one or more reserved processor cores can include reassigning a process of a voice service 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 core(s) and may restrict first scheduling group from using the reserved processing core(s). In still 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 the voice service for execution on one or more reserved processor cores can be set or modified based on a signal indicating a keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection to reduce latency.
In some examples, the change of state to enable the voice service to be scheduled for execution on one or more reserved processor cores includes changing 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 the one or more scheduling parameters. To illustrate, the change of state can include binding the voice service and a second stage keyword detector and setting or modifying a scheduling parameter associated with the second stage keyword detector. To illustrate, the scheduling priority of the second stage keyword detector can be elevated. As another illustrative example, the second stage keyword detector can be designated a foreground task.
In a particular aspect, changes made based on a signal indicating a keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection are reset or revoked if the keyword detection is not confirmed. To illustrate, if a scheduling parameters associated with the voice service (or the second stage keyword detector) is change from a first value to a second value based on the signal indicating keywork detection, the scheduling parameter is changed from the second value back to the first value if the second stage keyword detector (or the voice service) disconfirms the keyword detection. Resetting the scheduling parameter in this manner disallows the voice service from executing on the reserved processor core(s). As another illustrative example, if an application processor is awakened from a sleep state based on the signal indicating keywork detection, the application processor is returned to the sleep state or shutdown if the second stage keyword detector (or the voice service) disconfirms the keyword detection. Thus, the various aspects disclosed herein significantly reduce latency without significantly increasing power demand.
Particular aspects of the present disclosure are described below with reference to the drawings. In the description, common features are designated by common reference numbers. As used herein, various terminology is used for the purpose of describing particular implementations only and is not intended to be limiting of implementations. For example, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. Further, some features described herein are singular in some implementations and plural in other implementations. To illustrate,
The terms “comprise,” “comprises,” and “comprising” are used herein interchangeably with “include,” “includes,” or “including.” Additionally, the term “wherein” is used interchangeably with “where.” As used herein, “exemplary” indicates an example, an implementation, and/or an aspect, and should not be construed as limiting or as indicating a preference or a preferred implementation. As used herein, an ordinal term (e.g., “,” “second,” “third,” etc.) used to modify an element, such as a structure, a component, an operation, etc., does not by itself indicate any priority or order of the element with respect to another element, but rather merely distinguishes the element from another element having a same name (but for 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 multiple (e.g., two or more) of a particular element.
As used herein, “coupled” may include “communicatively coupled,” “electrically coupled,” or “physically coupled,” and may also (or alternatively) include any combinations 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., a wired network, a wireless network, or a combination 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 electronics, 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 signals 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) without intervening components.
In the present disclosure, terms such as “determining,” “calculating,” “estimating,” “shifting,” “adjusting,” etc. may be used to describe how one or more operations are performed. It should be noted that such terms are not to be construed as limiting and other techniques may be utilized to perform similar operations. Additionally, as referred to herein, “generating,” “calculating,” “estimating,” “using,” “selecting,” “accessing,” and “determining” may be used interchangeably. For example, “generating,” “calculating,” “estimating,” or “determining” a parameter (or a signal) may refer to actively generating, estimating, calculating, or determining the parameter (or the signal) or may refer to using, selecting, or accessing the parameter (or signal) that is already generated, such as by another component or device.
In the example of
In some implementations, while the first stage keyword detector 108 listens for a keyword, other components of the system 100 can revert to a power-saving mode, such as a standby mode, a sleep mode, or a powered off mode. As used herein, the terms “power-saving mode”, “standby mode”, “sleep mode”, and “low-power mode” are used interchangeably to indicate 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. Further, in this context, a powered off mode indicates that the device or component is not powered. Additionally, or alternatively, while the first stage keyword detector 108 listens for a keyword, other components of the system 100 can perform operations unrelated to speech detection and speech recognition. For example, processes of a voice service (e.g., voice service process(es) 130A and 130B) of
The scheduler 112 is configured to assign processes to execute at particular ones of the processor cores 122. For example, the scheduler 112 may assign a first process of an application to run at a first core and a second process of the same application or of a different application to run at a second core. As used herein, an application can include multiple processes, and each process can include multiple tasks. In a particular implementation, the scheduler 112 is an embedded function of the system, e.g., the scheduler 112 operates at basic input/output system (BIOS) level. In other implementations, the scheduler 112 is a function of a high-order operating system, such as an Android® operating system, an iOS® operating system, a macOS® operating system, a Windows® operating system, or a Linux® operating system (Android is a registered trademark of Google LLC of Mountain View, California, USA; iOS is a trademark of Apple Inc. of Cupertino, California, USA-used under license from CISCO Technology, INC. of San Jose, California, USA; macOS is a registered trademark of Apple Inc. of Cupertino, California, USA; Windows is a registered trademark of Microsoft Corporation of Seattle, Washington, USA; Linux is a registered trademark of Linus Torvalds). In still other implementations, the scheduler 112 is an application that operates within a framework of the high-order operating system.
The scheduler 112 assigns processes to the processor cores 122 based on scheduling privileges (e.g., first scheduling privileges 114 and second scheduling privileges 116 in
In some implementations, the processing cores 122 of the application processor(s) 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 only be used by processes that have particular scheduling privileges. For example, in
During operation, a voice service may be in a low-power state until the first stage keyword detector 108 indicates the keyword detection 110. The voice service being in a low-power state conserves power associated with execution of the voice service application. In some implementations, when the voice service is in the low-power state, one or more of the application processor(s) 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 being executed, when only background or monitoring processes of the application or service are being executed (e.g., when a listener process of the voice service is listening for the keyword detection 110, but other processes of the voice service are not being executed), or when one or more processes of the voice service are associated with scheduling privileges that do not allow execution of the process(es) on the reserved processor core(s) 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 instances, a processor or core in a low-power state may be unpowered (e.g., off); may be powered but not provided a clock signal, may be powered but disconnected from operational memory, or may be powered at a lower power level than the processor or core uses when executing instructions.
Based on a signal indicating the keyword detection 110 by the first stage keyword detector 108 and prior to confirmation of the keyword detection (e.g., keyword confirmation 128 of
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. Accordingly, the first stage keyword detector 108 may occasionally generate a false keyword detection. To limit excess power consumption due to using the reserved processor core(s) 124 to execute voice service process(es) 130, a second stage keyword detector can be used to confirm or disconfirm the keyword detection 110. In the implementation illustrated in
In the example illustrated in
In the implementation illustrated in
In another example, after the voice service and the second stage keyword detector 212 are bound, the scheduler 112 may elevate the scheduling privileges of the second stage keyword detector 212 or change a scheduling priority of the second stage keyword detector 212 to enable the second stage keyword detector 212 to execute on the reserved processor core(s) 124. In this example, if the second stage keyword detector 212 confirms the keyword detection 110, the voice service process(es) 130 are able to execute on the reserved processor core(s) 124 when initiated.
In some implementations, the voice service is not bound to the second stage keyword detector 212, or the scheduling privileges of the voice service are changed irrespective of the scheduling privileges of the second stage keyword detector 212. For example, a change of state to modify (e.g., elevate) the scheduling privileges of the voice service can be initiated directly based on the keyword detection independent of binding the voice service and the second stage keyword detector 212. To illustrate, upon keyword detection 110 by the first stage keyword detector 108, the scheduler 112 may change a 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 a scheduling priority value (e.g., to a higher scheduling priority value) or other scheduling privileges of the voice service to enable the voice service process(es) to be scheduled for execution on the reserved processor core(s) 124.
In the example illustrated in
In the example illustrated in
In a particular aspect, the first device 502 and the second device 504 communicate via one or more networks 506 that each include communication links. In some implementations, one or more of the communication links is a wireless link that conforms to a proprietary standard or a published standard. Examples of wireless links include personal area network links, such as a link conforming to a BLUETOOTH® protocol specification; wireless local area network links, such as a link conforming to an IEEE 802.11 protocol specification; and/or wireless wide area network links, such as a Long Term Evolution protocol specification (BLUETOOTH is a registered trademark of BLUETOOTH SIG, INC. of Kirkland, Washington, USA; IEEE is a registered trademark of The Institute of Electrical and Electronics Engineers, Inc. Piscataway New Jersey, USA). Examples of wired links include short range links, such as a universal serial bus link; and/or long range links, such as an ethernet link, a digital subscriber line link, a fiber optic link, etc.
In the example illustrated in
Upon receipt of the indication of keyword detection 110 from the first device 502 and prior to confirmation of the keyword detection, the second device 504 initiates a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores, as described with reference to
If the second stage keyword detector 212 disconfirms the keyword detection 110 or if more than a threshold amount of time passes after the keyword detection 110 is received without receipt of the audio data 104, the second stage keyword detector 212 (or another process of the application processor(s) 120), may generate the reversion signal(s) 140. In the example illustrated in
In
During operation, the mobile device 1200 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
The earbuds 1300 include the microphone(s) 102, at least one of which is positioned to primarily capture speech of a user. The earbuds 1300 may also include one or more additional microphones positioned to primarily capture environmental sounds (e.g., for noise canceling operations).
In a particular aspect, during operation, the earbuds 1300 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
In a particular aspect, during operation, the headset 1400 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
In a particular aspect, during operation, the wearable electronic device 1500 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
In a particular aspect, during operation, the voice-controlled speaker system 1600 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
In a particular aspect, during operation, the camera 1700 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
In a particular aspect, during operation, the headset 1800 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
The aerial device 1900 is a manned, unmanned, or remotely piloted aerial device (e.g., a package delivery drone). The aerial device 1900 includes a control system 1902 and one or more sensors, such as the microphone(s) 102 of
During operation, the aerial device 1900 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
In a particular implementation, the sensor(s) 2004 include vehicle occupancy sensors, eye tracking sensor, or external environment sensors (e.g., lidar sensors or cameras). In a particular aspect, sensor data from the sensor(s) 2004 indicates a location of the user. For example, the sensor(s) 2004 are associated with various locations within the vehicle 2000.
In a particular aspect, during operation, the vehicle 2000 may perform particular actions in response to speech input from a user. For example, a user can speak a keyword to wake up or initiate a voice assistant application that uses or includes the voice service process(es) 130 of
The method 2100 includes, at block 2102, generating, by a first stage keyword detector, a signal indicating a keyword detection. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 102 and generate an indication of keyword detection 110 when the first stage keyword detector 108 detects a keyword.
The method 2100 includes, at block 2104, based on the signal indicating the keyword detection and prior to confirmation of the keyword detection, initiating a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores. For example, the change of state may be initiated before the keyword confirmation 128 is completed. Particular non-limiting examples of the change of state are described with reference to
The method 2200 includes, at block 2202, receiving an indication that a first stage keyword detector has detected a keyword. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 102 and generate the indication of keyword detection 110 when the first stage keyword detector 108 detects a keyword. In this example, the indication of keyword detection 110 may be received at the scheduler 112, at the application processor(s) 120, or both.
The method 2200 includes, at block 2204, based on the indication, scheduling, at a scheduler that manages assignment of processes to two or more cores, a process of a voice service that is in a low-power mode for execution on one or more reserved processor cores. For example, the scheduler 112 of any of
The method 2300 includes, at block 2302, receiving, at a scheduler that manages assignment of processes to two or more cores, an indication that a first stage keyword detector has detected a keyword. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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 received at least at the scheduler 112.
The method 2300 includes, at block 2304, based on the indication, elevating a priority assigned to a process of a voice service. For example, the scheduler 112 of any of
The method 2400 includes, at block 2402, obtaining an indication of keyword detection by a first stage keyword detector. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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(s) 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from a memory that is accessible to the always-on processor(s) 106, the scheduler 112, and the application processor(s) 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor(s) 120, or both, via a signal that includes the indication of keyword detection 110 from the always-on processor(s) 106.
The method 2400 includes, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, at block 2404 transitioning a processor from an idle state to a wake-up state and, at block 2406, initiating a voice service. For example, prior to the keyword detection 110 of
The method 2500 includes, at block 2502, obtaining an indication of keyword detection by a first stage keyword detector. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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(s) 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from a memory that is accessible to the always-on processor(s) 106, the scheduler 112, and the application processor(s) 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor(s) 120, or both, via a signal that includes the indication of keyword detection 110 from the always-on processor(s) 106.
The method 2500 includes, at block 2504, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiating a change of state of a scheduler to elevate a priority assigned to a process of a voice service. For example, the scheduler 112 of any of
The method 2600 includes, at block 2602, obtaining an indication of keyword detection by a first stage keyword detector. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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(s) 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from a memory that is accessible to the always-on processor(s) 106, the scheduler 112, and the application processor(s) 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor(s) 120, or both, via a signal that includes the indication of keyword detection 110 from the always-on processor(s) 106.
The method 2600 includes, at block 2604, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiating a change of state of a scheduler to move a process of a voice service from a background task to a foreground task. For example, the scheduler 112 of any of
The method 2700 includes, at block 2702, obtaining an indication of keyword detection by a first stage keyword detector. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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(s) 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from a memory that is accessible to the always-on processor(s) 106, the scheduler 112, and the application processor(s) 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor(s) 120, or both, via a signal that includes the indication of keyword detection 110 from the always-on processor(s) 106.
The method 2700 includes, at block 2704, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiating a change of state of a scheduler to enable 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, wherein the second core is a higher performance core than the first core. For example, the scheduler 112 of any of
The method 2800 includes, at block 2802, obtaining an indication of keyword detection by a first stage keyword detector. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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(s) 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from a memory that is accessible to the always-on processor(s) 106, the scheduler 112, and the application processor(s) 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor(s) 120, or both, via a signal that includes the indication of keyword detection 110 from the always-on processor(s) 106.
The method 2800 includes, at block 2804, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiating a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group, wherein processes assigned to the second scheduling group are allowed to execute on at least one core of a processor on which processes assigned to the first scheduling group are not allowed to execute. For example, the scheduler 112 of any of
The method 2900 includes, at block 2902, obtaining an indication of keyword detection by a first stage keyword detector. For example, the first stage keyword detector 108 may monitor the audio data 104 from the microphone(s) 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(s) 120, or both. In some implementations, the indication of keyword detection 110 is obtained by reading the indication of keyword detection 110 from a memory that is accessible to the always-on processor(s) 106, the scheduler 112, and the application processor(s) 120. In other implementations, the indication of keyword detection 110 is obtained by the scheduler 112, the application processor(s) 120, or both, via a signal that includes the indication of keyword detection 110 from the always-on processor(s) 106.
The method 2900 includes, at block 2904, upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiating a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved core of a processor. For example, the scheduler 112 of any of
Referring to
In a particular aspect, the device 3000 includes the application processor(s) 120, which include the reserved processor core(s) 124 and the additional processor core(s) 126. The device 3000 also includes the always-on processor(s) 106, which are configured to run the first stage keyword detector 108. The always-on processor(s) 106, the application processor(s) 120, or both, may execute instructions 3016 from a memory 3014 to initiate, control or perform operations of the scheduler 112, a voice service 3018, or both. In some implementations, the memory 3014 is a shared memory that is accessible to the always-on processor(s) 106 and the application processor(s) 120. In such implementations, the keyword detection 110 of
In
The device 3000 may include a display 3040 coupled to a display controller 3022. The speaker(s) 3006 and the microphone(s) 102 may be coupled, via one or more interfaces, to a CODEC 3008. 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(s) 3006, or both, may correspond to the output device(s) 136 of
The memory 3014 may store the instructions 3016, which are executable by the always-on processor(s) 106, the application processor(s) 120, or a combination thereof, to perform one or more operations described with reference to
One or more components of the device 3000 may be implemented via dedicated hardware (e.g., circuitry), by a processor (e.g., the always-on processor(s) 106 or the application processor(s) 120) executing the instructions 3016 to perform one or more tasks, or a combination thereof. As an example, the memory 3014 may include or correspond to a memory device (e.g., a computer-readable storage device), such as a 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, 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., the instructions 3016) that, when executed by a computer (e.g., one or more processors, such the always-on processor(s) 106 and/or the application processor(s) 120), may cause the computer to perform one or more operations described with reference to
In a particular aspect, the device 3000 may be included in a system-in-package or system-on-chip device 3002. In a particular aspect, the always-on processor(s) 106, the application processor(s) 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 a particular aspect, an input device 3024, such as a touchscreen and/or keypad, and a power supply 3020 are coupled to the system-in-package or system-on-chip device 3002. Moreover, in a particular aspect, as illustrated in
The device 3000 may include a wireless telephone, a mobile communication device, a mobile device, a mobile phone, a smart phone, 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 communication 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, earbuds, an audio headset (e.g., headphones), or any combination thereof.
It should be noted that various functions performed by the one or more components of the systems described with reference to
In some aspects, in conjunction with the described implementations, an apparatus includes means for generating a signal indicating a keyword detection. For example, the means for generating a signal indicating a keyword detection includes the always-on processor(s) 106, the first stage keyword detector 108, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to generate a signal indicating a keyword detection, or any combination thereof.
The apparatus also includes means for initiating a change of state based on the signal and prior to confirmation of the keyword detection, where the change of state enables a voice service that is in a 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 the keyword detection includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the second stage keyword detector 212, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a change of state based on the signal and prior to confirmation of the keyword detection, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for receiving an indication that a first stage keyword detector has detected a keyword. For example, the means for receiving an indication that a first stage keyword detector has detected a keyword includes the always-on processor(s) 106, the second stage keyword detector 212, the scheduler 112, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to receive an indication that a first stage keyword detector has detected a keyword, or any combination thereof.
The apparatus also includes means for managing assignment of processes to two or more cores, where the means for managing assignment of processes is configured to, 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. For example, the means for managing assignment of processes to two or more cores includes the always-on processor(s) 106, the scheduler 112, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to manage assignment of processes to two or more cores, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for receiving an indication that a first stage keyword detector has detected a keyword. For example, the means for receiving an indication that a first stage keyword detector has detected a keyword includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to receive an indication that a first stage keyword detector has detected a keyword, or any combination thereof.
The apparatus also includes means for managing assignment of processes to two or more cores, where the means for managing assignment of processes is configured to, based on the indication, elevate a priority assigned to a process of a voice service. For example, the means for managing assignment of processes includes the always-on processor(s) 106, the scheduler 112, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to manage assignment of processes, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. For example, the means for obtaining an indication of keyword detection by a first stage keyword detector includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to obtain an indication of keyword detection by a first stage keyword detector, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for transitioning a processor from an idle state to a wake-up state upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection. For example, the means for transitioning a processor from an idle state to a wake-up state includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to transition a processor from an idle state to a wake-up state, or any combination thereof.
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 the keyword detection. For example, the means for initiating a voice service includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the second stage keyword detector 212, the scheduler 112, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a voice service, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. For example, the means for obtaining an indication of keyword detection by a first stage keyword detector includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to obtain an indication of keyword detection by a first stage keyword detector, or any combination thereof.
The apparatus also includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, where the change of state elevates a priority assigned to a process of a voice service. For example, the means for initiating a change of state of a scheduler includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the scheduler 112, the second stage keyword detector 212, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a change of state of a scheduler, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. For example, the means for obtaining an indication of keyword detection by a first stage keyword detector includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to obtain an indication of keyword detection by a first stage keyword detector, or any combination thereof.
The apparatus also includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, where the change of state causes a process of a voice service to move from a background task to a foreground task. For example, the means for initiating a change of state of a scheduler includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the scheduler 112, the second stage keyword detector 212, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a change of state of a scheduler, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. For example, the means for obtaining an indication of keyword detection by a first stage keyword detector includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to obtain an indication of keyword detection by a first stage keyword detector, or any combination thereof.
The apparatus also includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, where the change of 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, and where the second core is a higher performance core than the first core. For example, the means for initiating a change of state of a scheduler includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the scheduler 112, the second stage keyword detector 212, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a change of state of a scheduler, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. For example, the means for obtaining an indication of keyword detection by a first stage keyword detector includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to obtain an indication of keyword detection by a first stage keyword detector, or any combination thereof.
The apparatus also includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, where the change of state reassigns a process of a voice service from a first scheduling group to a second scheduling group, and where processes assigned to the second scheduling group are allowed to execute on at least one core of a processor on which processes assigned to the first scheduling group are not allowed to execute. For example, the means for initiating a change of state of a scheduler includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the scheduler 112, the second stage keyword detector 212, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a change of state of a scheduler, or any combination thereof.
In some aspects, in conjunction with the described implementations, an apparatus includes means for obtaining an indication of keyword detection by a first stage keyword detector. For example, the means for obtaining an indication of keyword detection by a first stage keyword detector includes the always-on processor(s) 106, the scheduler 112, the second stage keyword detector 212, the application processor(s) 120, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to obtain an indication of keyword detection by a first stage keyword detector, or any combination thereof.
The apparatus also includes means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, where the change of state sets a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved core of a processor. For example, the means for initiating a change of state of a scheduler includes the always-on processor(s) 106, the first stage keyword detector 108, the application processor(s) 120, the scheduler 112, the second stage keyword detector 212, the system 100, the device 200, the device 300, the device 400, one or more other circuits or components configured to initiate a change of state of a scheduler, or any combination thereof.
Those of skill would further appreciate that the various illustrative logical blocks, configurations, modules, circuits, and algorithm steps described in connection with the implementations disclosed herein may be implemented as electronic hardware, computer software executed by a processor, or combinations of both. 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 processor executable instructions depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, such implementation decisions are not to be interpreted as causing a departure from the scope of the present disclosure.
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. A 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, hard disk, a removable disk, a compact disc read-only memory (CD-ROM), or any other form of non-transient storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor may read information from, and write information to, the storage medium. In the alternative, 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. In the alternative, the processor and the storage medium may reside as discrete components in a computing device or user terminal.
Particular aspects of the disclosure are described below in a first set of interrelated clauses:
According to Clause 1, a device includes: a first stage keyword detector; and a processor configured to: based on a signal indicating a keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, initiate a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
Clause 2 includes the device of Clause 1, 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.
Clause 3 includes the device of Clause 1, wherein initiating the change of state includes elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 4 includes the device of Clause 3, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 5 includes the device of Clause 3, wherein elevating 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.
Clause 6 includes the device of Clause 5, wherein the processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 7 includes the device of Clause 1, wherein initiating the change of state includes elevating scheduling privileges of the voice service.
Clause 8 includes the device of Clause 7, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 9 includes the device of Clause 7, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 10 includes the device of Clause 9, wherein the processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 11 includes the device of Clause 1, wherein the first stage keyword detector corresponds to, includes, is included within, or is executed by a digital signal processor or a low-power integrated circuit, and wherein the one or more reserved processor cores are cores of one or more application processors.
Clause 12 includes the device of Clause 1, wherein the processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, reverse the change of state.
Clause 13 includes the device of Clause 1, further including the one or more reserved processor cores and one or more additional processor cores.
Clause 14 includes the device of Clause 13, wherein enabling the voice service to be scheduled for execution on the one or more reserved processor cores reduces latency of the voice service as compared to restricting execution of the voice service to the one or more additional processor cores.
Clause 15 includes the device of Clause 13, further including a scheduler configured to assign processes to execute at 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.
Clause 16 includes the device of Clause 13, further including a scheduler that is configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 17 includes the device of Clause 13, further including a scheduler that is configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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 the first stage keyword detector, to a second stage keyword detector, to the voice service, or to any combination thereof.
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 the change of state.
Clause 20 includes the device of Clause 1, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
Clause 21 includes the device of Clause 1, wherein the voice service includes a voice assistant.
Clause 22 includes the device of Clause 1, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 23, a method includes: generating, by a first stage keyword detector, a signal indicating a keyword detection; and based on the signal indicating the keyword detection and prior to confirmation of the keyword detection, initiating a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
Clause 24 includes the method of Clause 23, 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.
Clause 25 includes the method of Clause 23, wherein initiating the change of state includes elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 26 includes the method of Clause 25, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 27 includes the method of Clause 25, wherein elevating 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.
Clause 28 includes the method of Clause 27, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 29 includes the method of Clause 23, wherein initiating the change of state includes elevating scheduling privileges of the voice service.
Clause 30 includes the method of Clause 29, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 31 includes the method of Clause 29, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 32 includes the method of Clause 31, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 33 includes the method of Clause 23, further including assigning the voice service to a scheduling group, and wherein the voice service is scheduled for execution on the one or more reserved processor cores based on the scheduling group associated with the voice service.
Clause 34 includes the method of Clause 23, further including assigning a priority level to the voice service to a scheduling group, and wherein the voice service is scheduled for execution on the one or more reserved processor cores based on the priority level satisfying a threshold priority level.
Clause 35 includes the method of Clause 23, further including designating the voice service as a foreground application, and wherein 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.
Clause 36 includes the method of Clause 23, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 37, an apparatus includes: means for generating a signal indicating a keyword detection; and means for initiating a change of state based on the signal and prior to confirmation of the keyword detection, wherein the change of state enables a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
Clause 38 includes the apparatus of Clause 37, wherein the means for generating and the means for initiating are integrated within a mobile computing device.
Clause 39 includes the apparatus of Clause 37, wherein the means for generating and the means for initiating are integrated within a vehicle.
Clause 40 includes the apparatus of Clause 37, wherein the means for generating and the means for initiating are integrated within a wearable device.
Clause 41 includes the apparatus of Clause 37, wherein the means for generating and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 42 includes the apparatus of Clause 37, wherein the means for generating and the means for initiating are included in an integrated circuit.
According to Clause 43, a non-transitory computer-readable medium storing instructions that are executable by one or more processors to cause the one or more processors to: obtain a signal indicating a keyword detection from a first stage keyword detector; and based on the signal indicating the keyword detection and prior to confirmation of the keyword detection, initiate a change of state to enable a voice service that is in a low-power mode to be scheduled for execution on one or more reserved processor cores.
According to Clause 44, a device includes: a processor configured to execute a scheduler to manage assignment 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.
Clause 45 includes the device of Clause 44, wherein scheduling the process of the voice service for execution on the one or more reserved processor cores 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.
Clause 46 includes the device of Clause 44, wherein the processor is further configured to elevate scheduling privileges of a second stage keyword detector that is configured to confirm keyword detection.
Clause 47 includes the device of Clause 46, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 48 includes the device of Clause 46, wherein elevating 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.
Clause 49 includes the device of Clause 48, wherein the processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 50 includes the device of Clause 44, 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.
Clause 51 includes the device of Clause 50, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 52 includes the device of Clause 50, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 53 includes the device of Clause 52, wherein the processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 54 includes the device of Clause 44, further including a digital signal processor or a low-power integrated circuit that includes the first stage keyword detector, and one or more application processors including the two or more processor cores.
Clause 55 includes the device of Clause 44, further including a second stage keyword detector configured to, based on the indication, confirm keyword detection.
Clause 56 includes the device of Clause 44, wherein the two or more processor cores include the one or more reserved processor cores and one or more additional processor cores.
Clause 57 includes the device of Clause 56, wherein scheduling the process of the voice service for execution on the one or more reserved processor cores reduces latency of the voice service as compared to restricting execution of the voice service to the one or more additional processor cores.
Clause 58 includes the device of Clause 56, where the scheduler is further configured to assign processes to execute at 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.
Clause 59 includes the device of Clause 56, where the scheduler is further configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 60 includes the device of Clause 56, where the scheduler is further configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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 the first stage keyword detector, to a second stage keyword detector, to the voice service, or to any combination thereof.
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.
Clause 63 includes the device of Clause 44, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
Clause 64 includes the device of Clause 44, wherein the voice service includes a voice assistant.
Clause 65 includes the device of Clause 44, further including a second stage keyword detector configured to confirm keyword detection.
According to Clause 66, a method includes: receiving an indication that a first stage keyword detector has detected a keyword; and based on the indication, scheduling, at a scheduler that manages assignment 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.
Clause 67 includes the method of Clause 66, further including 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, 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.
Clause 68 includes the method of Clause 66, wherein the process of the voice service is scheduled for execution on one or more reserved processor cores based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm keyword detection.
Clause 69 includes the method of Clause 68, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 70 includes the method of Clause 68, wherein elevating 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.
Clause 71 includes the method of Clause 70, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 72 includes the method of Clause 66, wherein the process of the voice service is scheduled for execution on one or more reserved processor cores based on elevating scheduling privileges of the voice service.
Clause 73 includes the method of Clause 72, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 74 includes the method of Clause 72, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 75 includes the method of Clause 74, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 76 includes the method of Clause 66, further including assigning the voice service to a scheduling group, and wherein the process of the voice service is scheduled for execution on the one or more reserved processor cores based on the scheduling group associated with the voice service.
Clause 77 includes the method of Clause 66, further including assigning a priority level to the voice service, and wherein the process of the voice service is scheduled for execution on the one or more reserved processor cores based on the priority level satisfying a threshold priority level.
Clause 78 includes the method of Clause 66, further including designating the voice service as a foreground application, and 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.
Clause 79 includes the method of Clause 66, further including confirming keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 80, an apparatus includes: means for receiving an indication that a first stage keyword detector has detected a keyword; and means for managing assignment of processes to two or more processor cores, the means for managing assignment of processes configured to, 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.
Clause 81 includes the apparatus of Clause 80, wherein the means for receiving and the means for managing assignment of processes are integrated within a mobile computing device.
Clause 82 includes the apparatus of Clause 80, wherein the means for receiving and the means for managing assignment of processes are integrated within a vehicle.
Clause 83 includes the apparatus of Clause 80, wherein the means for receiving and the means for managing assignment of processes are integrated within a wearable device.
Clause 84 includes the apparatus of Clause 80, wherein the means for receiving and the means for managing assignment of processes are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 85 includes the apparatus of Clause 80, wherein the means for receiving and the means for managing assignment of processes are included in an integrated circuit.
According to Clause 86, a non-transitory computer-readable medium storing instructions that are 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, at a scheduler that manages assignment 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.
According to Clause 87, a device includes: a processor configured to execute a scheduler to manage assignment 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, elevate a priority assigned to a process of a voice service.
Clause 88 includes the device of Clause 87, wherein elevating the priority assigned to the process of the voice service 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.
Clause 89 includes the device of Clause 87, wherein the processor is further configured to elevate scheduling privileges of a second stage keyword detector that is configured to confirm keyword detection.
Clause 90 includes the device of Clause 89, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 91 includes the device of Clause 89, wherein elevating 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.
Clause 92 includes the device of Clause 91, wherein the processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 93 includes the device of Clause 87, wherein elevating the priority of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 94 includes the device of Clause 93, wherein the processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 95 includes the device of Clause 87, further including a digital signal processor or a low-power integrated circuit that includes the first stage keyword detector, and one or more application processors including the two or more processor cores.
Clause 96 includes the device of Clause 87, further including a second stage keyword detector configured to, based on the indication, confirm keyword detection.
Clause 97 includes the device of Clause 96, wherein the processor is further configured to, based on the second stage keyword detector failing to confirm the keyword detection, reverse the elevation of the priority of the voice service.
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.
Clause 99 includes the device of Clause 98, wherein elevating the priority assigned to the process of the voice service enables the process to be scheduled for execution on the one or more reserved processor cores, which reduces latency of the voice service as compared to restricting execution of the voice service to the one or more additional processor cores.
Clause 100 includes the device of Clause 98, where the scheduler is further configured to assign processes to execute at 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.
Clause 101 includes the device of Clause 98, where the scheduler is further configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 102 includes the device of Clause 98, where the scheduler is further configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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 the first stage keyword detector, to a second stage keyword detector, to the voice service, or to any combination thereof.
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 elevation of the priority assigned to the process of the voice service.
Clause 105 includes the device of Clause 87, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
Clause 106 includes the device of Clause 87, wherein the voice service includes a voice assistant.
Clause 107 includes the device of Clause 87, further including a second stage keyword detector configured to confirm keyword detection.
Clause 108 a method includes: receiving, at a scheduler that manages assignment of processes to two or more processor cores, an indication that a first stage keyword detector has detected a keyword; and based on the indication, elevating a priority assigned to a process of a voice service.
Clause 109 includes the method of Clause 108, further including 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, wherein the priority assigned to the process of the voice service is based on a priority assigned to the second stage keyword detector.
Clause 110 includes the method of Clause 108, wherein the priority assigned to the process of the voice service is elevated based on elevating a priority of a second stage keyword detector that is configured to confirm keyword detection.
Clause 111 includes the method of Clause 110, wherein elevating the priority of the second stage keyword detector includes changing a designation of the second stage keyword detector from a background application to a foreground application.
Clause 112 includes the method of Clause 111, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 113 includes the method of Clause 108, wherein elevating the priority of the process of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 114 includes the method of Clause 113, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 115 includes the method of Clause 108, wherein elevating the priority assigned to the process of the voice service includes assigning the process to a particular scheduling group.
Clause 116 includes the method of Clause 108, further including confirming keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 117, an apparatus including: means for receiving an indication that a first stage keyword detector has detected a keyword; and means for managing assignment of processes to two or more processor cores, the means for managing assignment of processes configured to, based on the indication, elevate a priority assigned to a process of a voice service.
Clause 118 includes the apparatus of Clause 117, wherein the means for receiving and the means for managing assignment of processes are integrated within a mobile computing device.
Clause 119 includes the apparatus of Clause 117, wherein the means for receiving and the means for managing assignment of processes are integrated within a vehicle.
Clause 120 includes the apparatus of Clause 117, wherein the means for receiving and the means for managing assignment of processes are integrated within a wearable device.
Clause 121 includes the apparatus of Clause 117, wherein the means for receiving and the means for managing assignment of processes are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 122 includes the apparatus of Clause 117, wherein the means for receiving and the means for managing assignment of processes are included in an integrated circuit.
According to Clause 123, a non-transitory computer-readable medium storing instructions that are 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, elevate, at a scheduler that manages assignment of processes to two or more processor cores, a priority assigned to a process of a voice service.
According to Clause 124, 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 to, upon the indication from the first processor that the keyword has been detected: transition the second processor from an idle state to a wake-up state; and prior to confirmation of keyword detection, initiate a voice service.
Clause 125 includes the device of Clause 124, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, bind 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.
Clause 126 includes the device of Clause 125, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate the scheduling privileges of the second stage keyword detector.
Clause 127 includes the device of Clause 126, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 128 includes the device of Clause 126, wherein elevating 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.
Clause 129 includes the device of Clause 128, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 130 includes the device of Clause 124, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate scheduling privileges of the voice service.
Clause 131 includes the device of Clause 130, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 132 includes the device of Clause 130, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 133 includes the device of Clause 132, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
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.
Clause 135 includes the device of Clause 124, wherein the second processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, shutdown the voice service.
Clause 136 includes the device of Clause 124, where the two or more processor cores include one or more reserved processor cores and one or more additional processor cores and further including a scheduler configured to assign processes to execute at particular processor cores.
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 the one or more reserved processor cores, which reduces latency of the voice service as compared to restricting execution of the one or more processes of the voice service to the one or more additional processor cores.
Clause 138 includes the device of Clause 137, wherein the scheduler is configured to assign processes to execute at 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.
Clause 139 includes the device of Clause 137, wherein the scheduler is configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 140 includes the device of Clause 137, wherein the scheduler is configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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, to the second processor, or both.
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.
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.
Clause 144 includes the device of Clause 124, wherein the voice service includes a voice assistant.
Clause 145 includes the device of Clause 124, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 146, a 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 the keyword detection: transitioning a processor from an idle state to a wake-up state; and initiating a voice service.
Clause 147 includes the method of Clause 146, wherein the voice service is initiated for execution on one or more reserved processor cores based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 148 includes the method of Clause 147, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 149 includes the method of Clause 147, wherein elevating 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.
Clause 150 includes the method of Clause 149, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 151 includes the method of Clause 146, further including assigning the voice service to a scheduling group, and wherein the voice service is initiated for execution on one or more reserved processor cores based on the scheduling group associated with the voice service.
Clause 152 includes the method of Clause 146, further including assigning a priority level to the voice service, and wherein the voice service is initiated for execution on one or more reserved processor cores based on the priority level satisfying a threshold priority level.
Clause 153 includes the method of Clause 146, further including designating the voice service as a foreground application, and wherein the voice service is initiated for execution on the one or more reserved processor cores based on the voice service being designated a foreground application.
Clause 154 includes the method of Clause 146, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 155, an apparatus including: means for obtaining an indication of keyword detection by a first stage keyword detector; means for transitioning a processor from an idle state to a wake-up state upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the 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 the keyword detection.
Clause 156 includes the apparatus of Clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are integrated within a mobile computing device.
Clause 157 includes the apparatus of Clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are integrated within a vehicle.
Clause 158 includes the apparatus of Clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are integrated within a wearable device.
Clause 159 includes the apparatus of Clause 155, wherein the means for obtaining, the means for transitioning, and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
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.
According to Clause 161, a non-transitory computer-readable medium storing instructions that are 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 the keyword detection: transition a processor from an idle state to a wake-up state; and initiate a voice service.
According to Clause 162, 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 to, upon the indication from the first processor that the keyword has been detected, and prior to confirmation of keyword detection, initiate a change of state of a scheduler to elevate a priority assigned to a process of a voice service.
Clause 163 includes the device of Clause 162, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, bind 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.
Clause 164 includes the device of Clause 163, wherein initiating the change of state of the scheduler to elevate the priority assigned to the process of the voice service includes, after binding the voice service and the second stage keyword detector, elevating the scheduling privileges of the second stage keyword detector.
Clause 165 includes the device of Clause 164, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 166 includes the device of Clause 164, wherein elevating 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.
Clause 167 includes the device of Clause 166, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 168 includes the device of Clause 162, wherein elevating the priority assigned to the process of the voice service includes changing a scheduling priority of the voice service.
Clause 169 includes the device of Clause 162, wherein elevating the priority assigned to the process of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 170 includes the device of Clause 169, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
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.
Clause 172 includes the device of Clause 162, wherein the second processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, reduce the priority assigned to the process of the voice service.
Clause 173 includes the device of Clause 162, where 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 at particular processor cores.
Clause 174 includes the device of Clause 173, wherein elevating the priority assigned to the process of the voice service includes enables 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 as compared to restricting execution of the process of the voice service to the one or more additional processor cores.
Clause 175 includes the device of Clause 174, wherein the scheduler is configured to assign processes to execute at 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.
Clause 176 includes the device of Clause 174, wherein the scheduler is configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 177 includes the device of Clause 174, wherein the scheduler is configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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, to the second processor, or both.
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 the priority assigned to the process of the voice service.
Clause 180 includes the device of Clause 162, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
Clause 181 includes the device of Clause 162, wherein the voice service includes a voice assistant.
Clause 182 includes the device of Clause 162, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 183, a 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 the keyword detection, initiating a change of state of a scheduler to elevate a priority assigned to a process of a voice service.
Clause 184 includes the method of Clause 183, further including 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, wherein the priority assigned to the process of the voice service is elevated based on a priority assigned to the second stage keyword detector being elevated.
Clause 185 includes the method of Clause 183, wherein the priority assigned to the process of the voice service is elevated based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 186 includes the method of Clause 185, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 187 includes the method of Clause 185, wherein elevating 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.
Clause 188 includes the method of Clause 187, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 189 includes the method of Clause 183, wherein elevating the priority of the process of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 190 includes the method of Clause 189, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 191 includes the method of Clause 183, wherein elevating the priority assigned to the process of the voice service includes assigning the voice service to a higher scheduling group.
Clause 192 includes the method of Clause 183, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 193. an apparatus includes: means for obtaining an indication of keyword detection by a first stage keyword detector; and means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, wherein the change of state elevates a priority assigned to a process of a voice service.
Clause 194 includes the apparatus of Clause 193, wherein the means for obtaining and the means for initiating are integrated within a mobile computing device.
Clause 195 includes the apparatus of Clause 193, wherein the means for obtaining and the means for initiating are integrated within a vehicle.
Clause 196 includes the apparatus of Clause 193, wherein the means for obtaining and the means for initiating are integrated within a wearable device.
Clause 197 includes the apparatus of Clause 193, wherein the means for obtaining and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 198 includes the apparatus of Clause 193, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
According to Clause 199, a non-transitory computer-readable medium storing instructions that are 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 the keyword detection, initiate a change of state of a scheduler to elevate a priority assigned to a process of a voice service.
According to Clause 200, 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 to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to move a process of a voice service from a background task to a foreground task.
Clause 201 includes the device of Clause 200, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, bind 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, and wherein the process of the voice service is moved from the background task to the foreground task based on designating the second stage keyword detector to a foreground application.
Clause 202 includes the device of Clause 201, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with designating the second stage keyword detector as a foreground application.
Clause 203 includes the device of Clause 200, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate scheduling privileges of the voice service.
Clause 204 includes the device of Clause 203, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 205 includes the device of Clause 204, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 206 includes the device of Clause 205, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
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.
Clause 208 includes the device of Clause 200, wherein the second processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, shutdown the voice service.
Clause 209 includes the device of Clause 200, where the two or more processor cores include one or more reserved processor cores and one or more additional processor cores and further including the scheduler configured to assign processes to execute at particular processor cores.
Clause 210 includes the device of Clause 209, wherein moving the process 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 as compared to restricting execution of the one or more processes of the voice service to the one or more additional processor cores.
Clause 211 includes the device of Clause 210, wherein the scheduler is configured to assign processes to execute at 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.
Clause 212 includes the device of Clause 210, wherein the scheduler is configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 213 includes the device of Clause 210, wherein the scheduler is configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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, to the second processor, or both.
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 the process of the voice service based on the process being designated the foreground task.
Clause 216 includes the device of Clause 200, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
Clause 217 includes the device of Clause 200, wherein the voice service includes a voice assistant.
Clause 218 includes the device of Clause 200, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 219, a 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 the keyword detection, initiating a change of state of a scheduler to move a process of a voice service from a background task to a foreground task.
Clause 220 includes the method of Clause 219, further including 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, 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 a background task to a foreground task.
Clause 221 includes the method of Clause 219, wherein the process of the voice service is moved from the background task to the foreground task based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 222 includes the method of Clause 221, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 223 includes the method of Clause 219, further including delaying or inhibiting generation of a user notification associated with moving move the process of the voice service from the background task to the foreground task.
Clause 224 includes the method of Clause 219, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 225, an apparatus includes: means for obtaining an indication of keyword detection by a first stage keyword detector; and means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, wherein the change of state causes a process of a voice service to move from a background task to a foreground task.
Clause 226 includes the apparatus of Clause 225, wherein the means for obtaining and the means for initiating are integrated within a mobile computing device.
Clause 227 includes the apparatus of Clause 225, wherein the means for obtaining and the means for initiating are integrated within a vehicle.
Clause 228 includes the apparatus of Clause 225, wherein the means for obtaining and the means for initiating are integrated within a wearable device.
Clause 229 includes the apparatus of Clause 225, wherein the means for obtaining and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 230 includes the apparatus of Clause 225, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
According to Clause 231, a non-transitory computer-readable medium storing instructions that are 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 the keyword detection, initiate a change of state of a scheduler to move a process of a voice service from a background task to a foreground task.
According to Clause 232, 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 to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to enable 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 higher performance processor core than the first processor core.
Clause 233 includes the device of Clause 232, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, bind 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.
Clause 234 includes the device of Clause 233, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate the scheduling privileges of the second stage keyword detector.
Clause 235 includes the device of Clause 234, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 236 includes the device of Clause 234, wherein elevating 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.
Clause 237 includes the device of Clause 236, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 238 includes the device of Clause 232, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate scheduling privileges of the voice service.
Clause 239 includes the device of Clause 238, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 240 includes the device of Clause 238, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 241 includes the device of Clause 240, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
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.
Clause 243 includes the device of Clause 232, wherein the second processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, reassigned the process of the voice service from the second processor core to the first processor core.
Clause 244 includes the device of Clause 232, where 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 including the scheduler configured to assign processes to execute at particular processor cores.
Clause 245 includes the device of Clause 244, wherein enabling the process of the voice service to be reassigned to the second processor core reduces latency of the voice service as compared to restricting execution of the process of the voice service to the first processor core.
Clause 246 includes the device of Clause 245, wherein the scheduler is configured to assign processes to execute at 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.
Clause 247 includes the device of Clause 245, wherein the scheduler is configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at the one or more reserved processor cores, and wherein the second group of processes includes or corresponds to a subset of the first group of processes that have a priority level greater than or equal to a threshold priority level.
Clause 248 includes the device of Clause 245, wherein the scheduler is configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores.
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, to the second processor, or both.
Clause 250 includes the device of Clause 232, further including one or more sensors configured to generate context data and to provide the context data to the voice service.
Clause 251 includes the device of Clause 232, further including one or more output devices configured to provide a user notification indicating execution of the voice service.
Clause 252 includes the device of Clause 232, wherein the voice service includes a voice assistant.
Clause 253 includes the device of Clause 232, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 254, a 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 the keyword detection, initiating a change of 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 a processor to a second processor core of the two or more processor cores, wherein the second processor core is a higher performance processor core than the first processor core.
Clause 255 includes the method of Clause 254, further including 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, wherein the 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.
Clause 256 includes the method of Clause 254, wherein the process of the voice service is reassigned from the first processor core to the second processor core based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 257 includes the method of Clause 256, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 258 includes the method of Clause 256, wherein elevating 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.
Clause 259 includes the method of Clause 258, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 260 includes the method of Clause 254, further including changing a 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 processor core to the second processor core based on changing the designation of the voice service from the background application to the foreground application.
Clause 261 includes the method of Clause 260, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 262 includes the method of Clause 254, further including assigning the voice service to a higher scheduling group, wherein the 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.
Clause 263 includes the method of Clause 254, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 264, an apparatus includes: means for obtaining an indication of keyword detection by a first stage keyword detector; and means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, wherein the change of state enable a process of a 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 higher performance processor core than the first processor core.
Clause 265 includes the apparatus of Clause 264, wherein the means for obtaining and the means for initiating are integrated within a mobile computing device.
Clause 266 includes the apparatus of Clause 264, wherein the means for obtaining and the means for initiating are integrated within a vehicle.
Clause 267 includes the apparatus of Clause 264, wherein the means for obtaining and the means for initiating are integrated within a wearable device.
Clause 268 includes the apparatus of Clause 264, wherein the means for obtaining and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 269 includes the apparatus of Clause 264, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
According to Clause 270, a non-transitory computer-readable medium storing instructions that are 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 the keyword detection, initiate a change of 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 a processor to a second processor core of the two or more processor cores, wherein the second processor core is a higher performance processor core than the first processor core.
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 to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group, wherein processes assigned to the second scheduling group are allowed to execute on at least one processor core of the two or more processor cores on which processes assigned to the first scheduling group are not allowed to execute.
Clause 272 includes the device of Clause 271, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, bind 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.
Clause 273 includes the device of Clause 272, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate the scheduling privileges of the second stage keyword detector.
Clause 274 includes the device of Clause 273, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 275 includes the device of Clause 273, wherein elevating 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.
Clause 276 includes the device of Clause 275, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 277 includes the device of Clause 271, wherein the second scheduling group is associated with a higher scheduling priority than the first scheduling group.
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.
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.
Clause 280 includes the device of Clause 271, wherein the second processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, reassign the process of the voice service to the first scheduling group.
Clause 281 includes the device of Clause 271, where the two or more processor cores include one or more reserved processor cores on which processes assigned to the first scheduling group are not allowed to execute and one or more additional processor cores on which processes assigned to the first scheduling group are allowed to execute.
Clause 282 includes the device of Clause 281, wherein execution of the process of the voice service on the one or more reserved processor cores reduces latency of the voice service as compared to execution of the process of the voice service on the one or more additional processor cores.
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.
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, to the second processor, or both.
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.
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.
Clause 287 includes the device of Clause 271, wherein the voice service includes a voice assistant.
Clause 288 includes the device of Clause 271, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 289, a 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 the keyword detection, initiating a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group, wherein processes assigned to the second scheduling group are allowed to execute on at least one processor core of a processor on which processes assigned to the first scheduling group are not allowed to execute.
Clause 290 includes the method of Clause 289, further including 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, wherein the process of the voice service is 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.
Clause 291 includes the method of Clause 289, wherein the process of the voice service is reassigned from the first scheduling group to the second scheduling group based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 292 includes the method of Clause 291, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 293 includes the method of Clause 291, wherein elevating 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.
Clause 294 includes the method of Clause 293, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 295 includes the method of Clause 289, further including changing a 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 changing the designation of the voice service from the background application to the foreground application.
Clause 296 includes the method of Clause 295, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 297 includes the method of Clause 289, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 298, an apparatus includes: means for obtaining an indication of keyword detection by a first stage keyword detector; and means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, wherein the change of state reassigns a process of a voice service from a first scheduling group to a second scheduling group, wherein processes assigned to the second scheduling group are allowed to execute on at least one processor core of a processor on which processes assigned to the first scheduling group are not allowed to execute.
Clause 299 includes the apparatus of Clause 298, wherein the means for obtaining and the means for initiating are integrated within a mobile computing device.
Clause 300 includes the apparatus of Clause 298, wherein the means for obtaining and the means for initiating are integrated within a vehicle.
Clause 301 includes the apparatus of Clause 298, wherein the means for obtaining and the means for initiating are integrated within a wearable device.
Clause 302 includes the apparatus of Clause 298, wherein the means for obtaining and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 303 includes the apparatus of Clause 298, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
According to Clause 304, a non-transitory computer-readable medium storing instructions that are 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 the keyword detection, initiate a change of state of a scheduler to reassign a process of a voice service from a first scheduling group to a second scheduling group, wherein processes assigned to the second scheduling group are allowed to execute on at least one processor core of a processor on which processes assigned to the first scheduling group are not allowed to execute.
According to Clause 305 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 to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of keyword detection, initiate a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved processor core of the two or more processor cores.
Clause 306 includes the device of Clause 305, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, bind 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.
Clause 307 includes the device of Clause 306, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate the scheduling privileges of the second stage keyword detector, wherein the scheduling parameter associated with the process of the voice service is set based on elevating the scheduling privileges of the second stage keyword detector.
Clause 308 includes the device of Clause 307, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 309 includes the device of Clause 307, wherein elevating 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.
Clause 310 includes the device of Clause 309, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 311 includes the device of Clause 305, wherein the second processor is further configured to, upon the indication from the first processor that the keyword has been detected and prior to confirmation of the keyword detection, elevate scheduling privileges of the voice service, wherein the scheduling parameter associated with the process of the voice service is set based on elevating the scheduling privileges of the voice service.
Clause 312 includes the device of Clause 311, wherein elevating the scheduling privileges of the voice service includes changing a scheduling priority of the voice service.
Clause 313 includes the device of Clause 311, wherein elevating the scheduling privileges of the voice service includes changing a designation of the voice service from a background application to a foreground application.
Clause 314 includes the device of Clause 313, wherein the second processor is further configured to execute instructions to delay or inhibit generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
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.
Clause 316 includes the device of Clause 305, wherein the second processor is further configured to, based on a second stage keyword detector failing to confirm the keyword detection, reset the scheduling parameter associated with the process of the voice service to disallow the process to execute on the reserved processor core.
Clause 317 includes the device of Clause 305, wherein executing the process on the reserved processor core reduces latency of the voice service as compared to executing the process on one or more additional processor cores of the two or more processor cores, wherein the one or more additional processor cores are not reserved processor cores.
Clause 318 includes the device of Clause 317, wherein the scheduler is configured to assign processes to execute at 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, and wherein the scheduling parameter is associated with a scheduling group of the process.
Clause 319 includes the device of Clause 317, wherein the scheduler is configured to allow a first group of processes to execute at the one or more additional processor cores and to allow a second group of processes to execute at 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 that have a priority level greater than or equal to a threshold priority level, and wherein the scheduling parameter is associated with a priority level of the process.
Clause 320 includes the device of Clause 317, wherein the scheduler is configured to allow foreground and background processes to execute at the one or more additional processor cores and to restrict background processes from executing at the one or more reserved processor cores, and wherein the scheduling parameter indicates whether the process is a foreground process or a background process.
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, to the second processor, or both.
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.
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.
Clause 324 includes the device of Clause 305, wherein the voice service includes a voice assistant.
Clause 325 includes the device of Clause 305, further including a second stage keyword detector configured to confirm the keyword detection.
According to Clause 326, a 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 the keyword detection, initiating a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved processor core of a processor.
Clause 327 includes the method of Clause 326, further including 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, wherein the scheduling parameter associated with the process of the voice service is set based on a scheduling parameter of the second stage keyword detector.
Clause 328 includes the method of Clause 326, wherein the scheduling parameter associated with the process of the voice service based on elevating scheduling privileges of a second stage keyword detector that is configured to confirm the keyword detection.
Clause 329 includes the method of Clause 328, wherein elevating the scheduling privileges of the second stage keyword detector includes changing a scheduling priority of the second stage keyword detector.
Clause 330 includes the method of Clause 328, wherein elevating 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.
Clause 331 includes the method of Clause 330, further including delaying or inhibiting generation of a user notification associated with changing the designation of the second stage keyword detector from the background application to the foreground application.
Clause 332 includes the method of Clause 326, further including changing a designation of the voice service from a background application to a foreground application, wherein the scheduling parameter associated with the process of the voice service is set based on changing the designation of the voice service from the background application to the foreground application.
Clause 333 includes the method of Clause 332, further including delaying or inhibiting generation of a user notification associated with changing the designation of the voice service from the background application to the foreground application.
Clause 334 includes the method of Clause 326, further including confirming the keyword detection by a second stage keyword detector or by the voice service; and based on confirmation of the keyword detection, performing a voice assistance operation based on a voice command processed by the voice service.
According to Clause 335, an apparatus includes: means for obtaining an indication of keyword detection by a first stage keyword detector; and means for initiating a change of state of a scheduler upon the indication of keyword detection by the first stage keyword detector and prior to confirmation of the keyword detection, wherein the change of state set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved processor core of a processor.
Clause 336 includes the apparatus of Clause 335, wherein the means for obtaining and the means for initiating are integrated within a mobile computing device.
Clause 337 includes the apparatus of Clause 335, wherein the means for obtaining and the means for initiating are integrated within a vehicle.
Clause 338 includes the apparatus of Clause 335, wherein the means for obtaining and the means for initiating are integrated within a wearable device.
Clause 339 includes the apparatus of Clause 335, wherein the means for obtaining and the means for initiating are integrated within an augmented reality headset, a mixed reality headset, or a virtual reality headset.
Clause 340 includes the apparatus of Clause 335, wherein the means for obtaining and the means for initiating are included in an integrated circuit.
According to Clause 341, a non-transitory computer-readable medium storing instructions that are 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 the keyword detection, initiate a change of state of a scheduler to set a scheduling parameter associated with a process of a voice service to allow the process to execute on a reserved processor core of a processor.
The previous description of the disclosed aspects is provided to enable a 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 disclosure. Thus, the present disclosure is not intended to be limited to the aspects shown herein but is to be accorded the widest scope possible consistent with the principles and novel features as defined by the following claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CN2021/080471 | 3/12/2021 | WO |