Adaptive clock scaling for echo cancellation noise suppression in a voice call processing system

The adaptive clock scaling system dynamically adjusts CPU and bus clock frequencies to address unstable CPU loads in voice call processing systems, ensuring timely ECNS processing and enhancing voice call quality.

WO2025123275A1PCT designated stage expired Publication Date: 2025-06-19QUALCOMM INC +4
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2023/138719
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-12-14
Publication Date
2025-06-19

AI Technical Summary

Technical Problem

Existing voice call processing systems face challenges in maintaining real-time performance for echo cancellation noise suppression (ECNS) due to unstable CPU load, leading to issues like late frame delivery, noise, and CPU power waste.

Method used

Implementing an adaptive clock scaling system that dynamically adjusts the CPU and bus clock based on processing time, resource utilization, and packet delivery timing to ensure timely and efficient ECNS processing.

Benefits of technology

The adaptive clock scaling system effectively manages CPU resources to achieve on-time voice frame delivery during both convergence and steady state stages of ECNS processing, improving voice call quality and reducing power consumption.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2023138719_19062025_PF_FP_ABST
    Figure CN2023138719_19062025_PF_FP_ABST
Patent Text Reader

Abstract

A process can include obtaining an audio frame from a sequence of audio frames associated with a voice call, the audio frame having a corresponding packet delivery time for use in the voice call. A voice call signal processing engine can generate a processed audio frame based on the audio frame and a processing time and processor resource utilization information of the voice call signal processing engine can be determined. A delivered time of the processed audio frame to a modem can be determined. An adaptive scaling engine can determine the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease a processor clock or memory bandwidth associated with the voice call signal processing engine. A second audio frame of the sequence can be processed using the corresponding clock scaling adjustment.
Need to check novelty before this filing date? Find Prior Art

Description

ADAPTIVE CLOCK SCALING FOR ECHO CANCELLATION NOISE SUPPRESSION IN A VOICE CALL PROCESSING SYSTEMFIELD

[0001] Aspects of the present disclosure generally relate to audio processing. In some implementations, examples are described for adaptive clock scaling to increase and / or decrease one or more of a processor clock or a bus clock associated with performing echo cancellation noise suppression (ECNS) .BACKGROUND

[0002] Electronic devices (cellular telephones, wireless modems, computers, digital music players, Global Positioning System units, Personal Digital Assistants, gaming devices, etc. ) have become a part of everyday life. Small computing devices are now placed in everything from automobiles to housing locks. The complexity of electronic devices has increased dramatically in the last few years. For example, many electronic devices have one or more processors that help control the device, as well as a number of digital circuits to support the processor and other parts of the device.

[0003] Wireless communications systems are deployed to provide various telecommunication services, including telephony, video, data, messaging, broadcasts, among others. For example, electronic devices can utilize wireless communications systems to perform voice calls, transmit and / or receive data, among other functions. These systems may be multiple-access systems capable of supporting simultaneous communication of multiple communication devices with one or more base stations.

[0004] To improve voice quality in a wireless communications system, a communication device may use various signal processing techniques. These techniques may attempt to recreate / preserve a speaker's voice while eliminating unwanted sounds, for example by performing echo cancellation and noise suppression (ECNS) .SUMMARY

[0005] The following presents a simplified summary relating to one or more aspects disclosed herein. Thus, the following summary should not be considered an extensive overview relating to all contemplated aspects, nor should the following summary be considered to identify key or critical elements relating to all contemplated aspects or to delineate the scope associated with any particular aspect. Accordingly, the following  summary has the sole purpose to present certain concepts relating to one or more aspects relating to the mechanisms disclosed herein in a simplified form to precede the detailed description presented below.

[0006] Disclosed are systems, methods, apparatuses, and computer-readable media for processing audio data. According to at least one illustrative example, an apparatus is provided. The apparatus includes one or more memories and one or more processors coupled to the one or more memories. The one or more processors are configured to and can: obtain an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call; process the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame; determine a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine; determine a delivered time of the processed audio frame to a modem of the apparatus, wherein the modem transmits the processed audio frame in association with the voice call; analyze, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine; and process a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0007] In another illustrative example, a method for processing audio data is provided, the method including: obtaining an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call; processing the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame; determining a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine; determining a delivered time of the processed audio frame to a modem, wherein the modem transmits the processed audio frame in association with the voice call; analyzing, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more  of a processor clock or a memory bandwidth associated with the voice call signal processing engine; and processing a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0008] In another illustrative example, a non-transitory computer-readable storage medium comprising instructions stored thereon which, when executed by at least one processor, causes the at least one processor to: obtain an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call; process the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame; determine a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine; determine a delivered time of the processed audio frame to a modem of the apparatus, wherein the modem transmits the processed audio frame in association with the voice call; analyze, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine; and process a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0009] In another illustrative example, an apparatus is provided. The apparatus includes: means for obtaining an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call; means for processing the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame; means for determining a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine; means for determining a delivered time of the processed audio frame to a modem, wherein the modem transmits the processed audio frame in association with the voice call; means for analyzing, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory  bandwidth associated with the voice call signal processing engine; and means for processing a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0010] Aspects generally include a method, apparatus, system, computer program product, non-transitory computer-readable medium, user equipment, base station, wireless communication device, and / or processing system as substantially described herein with reference to and as illustrated by the drawings and specification.

[0011] The foregoing has outlined rather broadly the features and technical advantages of examples according to the disclosure in order that the detailed description that follows may be better understood. Additional features and advantages will be described hereinafter. The conception and specific examples disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Such equivalent constructions do not depart from the scope of the appended claims. Characteristics of the concepts disclosed herein, both their organization and method of operation, together with associated advantages, will be better understood from the following description when considered in connection with the accompanying figures. Each of the figures is provided for the purposes of illustration and description, and not as a definition of the limits of the claims.

[0012] While aspects are described in the present disclosure by illustration to some examples, those skilled in the art will understand that such aspects may be implemented in many different arrangements and scenarios. Techniques described herein may be implemented using different platform types, devices, systems, shapes, sizes, and / or packaging arrangements. For example, some aspects may be implemented via integrated chip implementations or other non-module-component based devices (e.g., end-user devices, vehicles, communication devices, computing devices, industrial equipment, retail / purchasing devices, medical devices, and / or artificial intelligence devices) . Aspects may be implemented in chip-level components, modular components, non-modular components, non-chip-level components, device-level components, and / or system-level components. Devices incorporating described aspects and features may include additional components and features for implementation and practice of claimed and described aspects. For example, transmission and reception of wireless signals may include one or more components for analog and digital purposes (e.g., hardware components including  antennas, radio frequency (RF) chains, power amplifiers, modulators, buffers, processors, interleavers, adders, and / or summers) . It is intended that aspects described herein may be practiced in a wide variety of devices, components, systems, distributed arrangements, and / or end-user devices of varying size, shape, and constitution.

[0013] Other objects and advantages associated with the aspects disclosed herein will be apparent to those skilled in the art based on the accompanying drawings and detailed description. This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in isolation to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of this patent, any or all drawings, and each claim.

[0014] The foregoing, together with other features and aspects, will become more apparent upon referring to the following specification, claims, and accompanying drawings.BRIEF DESCRIPTION OF THE DRAWINGS

[0015] The accompanying drawings are presented to aid in the description of various aspects of the disclosure and are provided solely for illustration of the aspects and not limitation thereof.

[0016] FIG. 1 is a block diagram illustrating an example of a wireless communication network, in accordance with some examples;

[0017] FIG. 2 is a diagram illustrating a design of a base station and a User Equipment (UE) device that enable transmission and processing of signals exchanged between the UE and the base station, in accordance with some examples;

[0018] FIG. 3 is a diagram illustrating an example of a disaggregated base station, in accordance with some examples;

[0019] FIG. 4 is a block diagram illustrating components of a user equipment (UE) , in accordance with some examples;

[0020] FIG. 5 is a block diagram illustrating an example communication device including an echo cancellation and noise suppression (ECNS) engine, in accordance with some examples;

[0021] FIG. 6A is a diagram illustrating an example voice processing timeline associated with implementing ECNS, in accordance with some examples;

[0022] FIG. 6B is a diagram illustrating an example voice processing timeline associated with implementing ECNS with a relatively low CPU load vote, in accordance with some examples;

[0023] FIG. 6C is a diagram illustrating an example voice processing timeline associated with implementing ECNS with a relatively high CPU load vote, in accordance with some examples;

[0024] FIG. 7 is a diagram illustrating an example audio processing system that includes an adaptive scaling engine configured for dynamic adjustment of a CPU and / or bus clock associated with an ECNS engine, in accordance with some examples;

[0025] FIG. 8A is a diagram illustrating an example of a packet timeline offset engine, in accordance with some examples;

[0026] FIG. 8B is a diagram illustrating an example packet arrival timeline that can be used by the packet timeline offset engine of FIG. 8A, in accordance with some examples;

[0027] FIG. 9 is a diagram illustrating an example of a module processing time calculation engine, in accordance with some examples;

[0028] FIG. 10 is a diagram illustrating an example of a resource manager engine, in accordance with some examples;

[0029] FIG. 11 is a diagram illustrating an example of an adaptive scaling system including an adaptive scaling engine, in accordance with some examples;

[0030] FIG. 12 is a table illustrating example CPU and / or bus bandwidth adjustments that may be implemented by an adaptive scaling engine, in accordance with some examples;

[0031] FIG. 13 is a flow diagram illustrating an example of a process for wireless communications, in accordance with some examples; and

[0032] FIG. 14 is a block diagram illustrating an example of a computing system, in accordance with some examples.DETAILED DESCRIPTION

[0033] Certain aspects of this disclosure are provided below for illustration purposes. Alternate aspects may be devised without departing from the scope of the disclosure. Additionally, well-known elements of the disclosure will not be described in detail or will be omitted so as not to obscure the relevant details of the disclosure. Some of the aspects described herein may be applied independently and some of them may be applied in combination as would be apparent to those of skill in the art. In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of aspects of the application. However, it will be apparent that various aspects may be practiced without these specific details. The figures and description are not intended to be restrictive.

[0034] The ensuing description provides example aspects only, and is not intended to limit the scope, applicability, or configuration of the disclosure. Rather, the ensuing description of the example aspects will provide those skilled in the art with an enabling description for implementing an example aspect. It should be understood that various changes may be made in the function and arrangement of elements without departing from the scope of the application as set forth in the appended claims.

[0035] Wireless communication networks can be deployed to provide various communication services, such as voice, video, packet data, messaging, broadcast, any combination thereof, or other communication services. A wireless communication network may support both access links and sidelinks for communication between wireless devices. An access link may refer to any communication link between a client device (e.g., a user equipment (UE) , a station (STA) , or other client device) and a base station (e.g., a 3GPP gNB for 5G / NR, a 3GPP eNB for 4G / LTE, a Wi-Fi access point (AP) , or other base station) . For example, an access link may support uplink signaling, downlink signaling, connection procedures, etc. An example of an access link is a Uu link or interface (also referred to as an NR-Uu) between a 3GPP gNB and a UE.

[0036] A voice call processing system can be used to provide voice communication services between a wireless communication network and a communication device (e.g., such as a UE) . A voice call processing system can be used for various types of voice calls and / or voice call targets, including 4G LTE voice calls (e.g., Voice over LTE (VoLTE) ) , 5G NR voice calls (e.g., Voice over New Radio (VoNR) ) , Voice over Internet Protocol  (VoIP) voice calls, etc. The voice call processing system can be a real-time system that manages the end-to-end flow of voice data packets between communicating parties. For instance, a voice call processing system can be associated with the setup, maintenance, and / or teardown of voice calls to and / or from a user’s wireless communication device. A voice call processing system can implement various protocols, algorithms, and / or audio processing techniques to enhance a voice call signal and / or to meet a real-time delivery requirement of the voice data packets for the voice call.

[0037] Voice call processing, and the delivery of voice data packets from the voice call processing system to the network or associated modem, can be time sensitive processes. For instance, a voice call processing system may need to deliver transmit (Tx) voice packets to the modem or the network with strict timing requirements, often with little tolerance for a late or missed delivery of the Tx voice packet from the voice call processing system. In some examples, to maintain real-time performance for voice call processing, a modem network requirement for Tx voice packet delivery may require the voice call processing system to deliver every voice call data packet within a 20 millisecond (ms) window.

[0038] Delivering a processed Tx voice packet to the modem or network later than the delivery deadline (e.g., imposed by the modem or network on the voice call processing system, such as the 20ms or other packet delivery window) can reduce the quality of the corresponding voice call and / or can cause the voice call to drop or mute for at least a temporary period of time. For example, late delivery of Tx voice packets (e.g., outside of a configured time frame or time window) can be associated with one or more of jitter, packet loss, voice clipping, increased latency, echo generation, etc. Fluctuations in voice packet arrival time can introduce jitter to the voice call, which may correspond to a reduced call quality for the communicating parties. Packet loss can occur when one or more packets are dropped or missed due to late delivery from the voice call processing system. Dropped packets can cause gaps (e.g., mute issue) in the voice call data received by the communicating party at the other end of the voice call. Missing or late Tx voice packets from the voice call processing system can additionally be associated with clipped audio, where portions of words or sentences are missing, making it difficult for the communicating party at the other end of the voice call to understand the conversation. In some cases, increased latency can occur based on the re-transmission of lost or dropped packets, which can correspond to noticeable delays in conversation on the voice call. In  some cases, echo generation may occur based on lack of adherence to the timing requirements for voice calls using the modem or network associated with the voice call processing system of the user wireless communication device, which may further deteriorate the voice call quality.

[0039] As used herein, a voice frame may refer to a unit of digitized voice data (e.g., generated by a voice codec and / or based on raw voice data captured from a microphone, digitized, and compressed by the voice codec) . A voice frame may represent or correspond to a fixed duration of audio, such as 10ms or 20ms, etc. A generated voice frame may generally not yet be prepared for transmission over the network, and for instance, may lack the necessary headers and footers needed for network routing. As used herein, a voice data packet may refer to a larger data structure that encapsulates or includes one or more voice frames, along with additional information such as headers and footers (e.g., added based on configured network protocols for transmission of the voice call, etc. ) . In some examples, the timing requirement for Tx voice packet delivery can correspond to or be based on the voice frame duration used by the modem and / or network. For instance, a Tx voice packet delivery timing requirement of 20ms may correspond to a Tx voice packet that includes two voice frames of approximately 10ms duration, one voice frame of approximately 20ms duration, etc.

[0040] Tx voice data packet delivery timing of a voice call processing system can be based on one or more audio or signal processing operations performed by the voice call processing system for each voice frame and / or voice packet. For instance, the voice call processing system can implement various signal enhancement operations to improve voice call quality in harsh and / or adverse acoustic environments. In one example, the voice call processing system can include an echo cancellation noise suppression (ECNS) engine that may be used to perform echo cancellation (EC) and / or noise suppression (NS) to suppress residual echo and / or background noise, etc.

[0041] In some examples, the voice processing timeline associated with Tx voice packet delivery by a voice call processing system can include a processing time (e.g., also referred to as a pre-processing time) and an encoding time. For instance, for a 20ms voice packet delivery timing requirement, an ECNS module of a voice call processing system may need to finish the ECNS data processing for the current voice frame within approximately 10ms to leave sufficient time (e.g., approximately 10ms additional) for  encoding and delivering the processed voice frame to the modem or the network prior to the 20ms delivery deadline time.

[0042] In some cases, the process load of an ECNS module (e.g., and / or various other signal processing modules of a voice call processing system) may be unstable. For instance, the ECNS process load may be high (e.g., high CPU load) at the algorithm convergence stage (e.g., call setup, device switch, environment switch, etc. ) and may be low at the steady state stage (e.g., call maintenance, etc. ) . In some examples, the process load (e.g., CPU load) associated with implementing an ECNS engine and / or ECNS data processing for a voice frame can be two to three times greater during the convergence stage of a voice call than during the steady state stage of the voice call.

[0043] In some examples, a voice ECNS thread process may be implemented using static CPU load voting, for example with voting performed at voice call startup (e.g., the voice call setup stage) . In the static CPU load voting implementation at voice call startup, the CPU load can be voted low (e.g., corresponding to the steady state stage of the ECNS processing) or can be voted high (e.g., corresponding to the convergence stage of the ECNS processing) .

[0044] The low CPU load vote can be associated with noise and / or mute issues with the voice call, based on the low CPU load vote being underpowered to complete ECNS processing within the 20ms window during the algorithm convergence stage (s) noted above (e.g., call setup, device switch, environment switch, etc. ) . For example, the ECNS thread process configured with the low CPU load vote can experience process delay for a first voice frame (VFR) , with subsequent Tx voice frame delivery to the modem or network later than the 20ms second VFR deadline. The process delay associated with utilizing the low CPU load vote during ECNS convergence stages can correspond to the introduction of noise and / or audio gaps (e.g., muted periods) for the far-end user on the voice call.

[0045] The high CPU load vote can be associated with CPU load waste and / or excess power consumption at the CPU used to implement the ECNS engine and / or the ECNS thread process, based on the high CPU load vote being overpowered for completing steady state ECNS processing within the 20ms window. For example, the high CPU load vote may be appropriately configured to deliver the Tx voice frames to the modem or network at or within the 20ms delivery deadline during the ECNS convergence stage (s) ,  where the additional CPU load is needed. The high CPU load vote may cause the Tx voice frames to be delivered to the modem or network far ahead of the 20ms delivery deadline during the ECNS steady state stage (s) , where the additional CPU load of the high CPU load vote is not needed. Delivering the Tx voice frames far ahead of the frame delivery deadline can correspond to CPU load waste and power waste by the voice call processing system and / or the ECNS engine.

[0046] There is a need for systems and techniques that can be used to provide ECNS processing for a voice call system without experience process delay or late frame delivery during the convergence stage (s) of the ECNS processing. There is a need for systems and techniques that can further be used to provide ECNS processing for a voice call system without experiencing early frame delivery, CPU load waste, and / or CPU power waste during the steady state stage (s) of the ECNS processing. There is a further need for systems and techniques that can be used to implement adaptive CPU scaling for an ECNS engine of a voice call processing system by dynamically adjusting a CPU and / or bus clock.

[0047] Systems, apparatuses, processes (also referred to as methods) , and computer-readable media (collectively referred to as “systems and techniques” ) are described herein that can be used to perform adaptive clock scaling for echo cancellation noise suppression (ECNS) processing of audio data. For instance, the systems and techniques can be used to perform adaptive clock scaling for an ECNS engine of a voice call processing system. In some aspects, the adaptive clock scaling can be performed for each frame of a plurality of voice frames associated with a voice call using the voice call processing system. In some examples, the adaptive clock scaling may be performed for each frame until a stable state is reached, where the stable state corresponds to processed voice frame (VFR) delivery ahead of (e.g., at or near) a VFR delivery deadline associated with the voice call processing system.

[0048] In some cases, the systems and techniques can be used to provide adaptive clock scaling for an ECNS engine that utilizes one or more deep learning machine learning networks, one or more neural networks, etc., to perform ECNS signal processing for frames of audio data (e.g., voice frames associated with a voice call, etc. ) . In some aspects, the systems and techniques can include an adaptive scaling system and an adaptive scaling engine, and may be configured to dynamically adjust one or more of a CPU clock and / or  a DDR / bus clock or bandwidth. The dynamic adjustment of the adaptive scaling system and adaptive scaling engine can be based on monitoring voice packet timeline information and module process time information to determine whether CPU clock for the ECNS engine will be increased, will be decreased, or will be kept the same for a next or future VFR to be processed. In some cases, the voice packet timeline information and module process time information can be monitored and analyzed to additionally determine whether a DDR / bus bandwidth should be increased, decreased, or kept the same for the next or future VFR to be processed. In some examples, the systems and techniques may additionally monitor CPU state information and / or CPU statistics information to determine a dynamic adjustment for the adaptive scaling of CPU clock and / or DDR / bus bandwidth.

[0049] Further aspects of the systems and techniques will be described with respect to the figures.

[0050] As used herein, the phrase “based on” shall not be construed as a reference to a closed set of information, one or more conditions, one or more factors, or the like. In other words, the phrase “based on A” (where “A” may be information, a condition, a factor, or the like) shall be construed as “based at least on A” unless specifically recited differently.

[0051] As used herein, the terms “user equipment” (UE) and “network entity” are not intended to be specific or otherwise limited to any particular radio access technology (RAT) , unless otherwise noted. In general, a UE may be any wireless communication device (e.g., a mobile phone, router, tablet computer, laptop computer, and / or tracking device, etc. ) , wearable (e.g., smartwatch, smart-glasses, wearable ring, and / or an extended reality (XR) device such as a virtual reality (VR) headset, an augmented reality (AR) headset or glasses, or a mixed reality (MR) headset) , vehicle (e.g., automobile, motorcycle, bicycle, etc. ) , aircraft (e.g., an airplane, jet, unmanned aerial vehicle (UAV) or drone, helicopter, airship, glider, etc. ) , and / or Internet of Things (IoT) device, etc., used by a user to communicate over a wireless communications network. A UE may be mobile or may (e.g., at certain times) be stationary, and may communicate with a radio access network (RAN) . As used herein, the term “UE” may be referred to interchangeably as an “access terminal” or “AT, ” a “client device, ” a “wireless device, ” a “subscriber device, ” a “subscriber terminal, ” a “subscriber station, ” a “user terminal” or “UT, ” a “mobile device, ” a “mobile terminal, ” a “mobile station, ” or variations thereof. Generally, UEs  can communicate with a core network via a RAN, and through the core network the UEs can be connected with external networks such as the Internet and with other UEs. Of course, other mechanisms of connecting to the core network and / or the Internet are also possible for the UEs, such as over wired access networks, wireless local area network (WLAN) networks (e.g., based on IEEE 802.11 communication standards, etc. ) , and so on.

[0052] A network entity can be implemented in an aggregated or monolithic base station architecture, or alternatively, in a disaggregated base station architecture, and may include one or more of a central unit (CU) , a distributed unit (DU) , a radio unit (RU) , a Near-Real Time (Near-RT) RAN Intelligent Controller (RIC) , or a Non-Real Time (Non-RT) RIC. A base station (e.g., with an aggregated / monolithic base station architecture or disaggregated base station architecture) may operate according to one of several RATs in communication with UEs depending on the network in which it is deployed, and may be alternatively referred to as an access point (AP) , a network node, a NodeB (NB) , an evolved NodeB (eNB) , a next generation eNB (ng-eNB) , a New Radio (NR) Node B (also referred to as a gNB or gNodeB) , etc. A base station may be used primarily to support wireless access by UEs, including supporting data, voice, and / or signaling connections for the supported UEs. In some systems, a base station may provide edge node signaling functions while in other systems it may provide additional control and / or network management functions. A communication link through which UEs can send signals to a base station is called an uplink (UL) channel (e.g., a reverse traffic channel, a reverse control channel, an access channel, etc. ) . A communication link through which the base station can send signals to UEs is called a downlink (DL) or forward link channel (e.g., a paging channel, a control channel, a broadcast channel, or a forward traffic channel, etc. ) . The term traffic channel (TCH) , as used herein, can refer to either an uplink, reverse or downlink, and / or a forward traffic channel.

[0053] The term “network entity” or “base station” (e.g., with an aggregated / monolithic base station architecture or disaggregated base station architecture) may refer to a single physical transmit receive point (TRP) or to multiple physical TRPs that may or may not be co-located. For example, where the term “network entity” or “base station” refers to a single physical TRP, the physical TRP may be an antenna of the base station corresponding to a cell (or several cell sectors) of the base station. Where the term “network entity” or “base station” refers to multiple co-located physical TRPs, the  physical TRPs may be an array of antennas (e.g., as in a multiple-input multiple-output (MIMO) system or where the base station employs beamforming) of the base station. Where the term “base station” refers to multiple non-co-located physical TRPs, the physical TRPs may be a distributed antenna system (DAS) (e.g., a network of spatially separated antennas connected to a common source via a transport medium) or a remote radio head (RRH) (e.g., a remote base station connected to a serving base station) . Alternatively, the non-co-located physical TRPs may be the serving base station receiving the measurement report from the UE and a neighbor base station whose reference radio frequency (RF) signals (e.g., or simply “reference signals” ) the UE is measuring. Because a TRP is the point from which a base station transmits and receives wireless signals, as used herein, references to transmission from or reception at a base station are to be understood as referring to a particular TRP of the base station.

[0054] In some implementations that support positioning of UEs, a network entity or base station may not support wireless access by UEs (e.g., may not support data, voice, and / or signaling connections for UEs) , but may instead transmit reference signals to UEs to be measured by the UEs, and / or may receive and measure signals transmitted by the UEs. Such a base station may be referred to as a positioning beacon (e.g., when transmitting signals to UEs) and / or as a location measurement unit (e.g., when receiving and measuring signals from UEs) .

[0055] As described herein, a node (which may be referred to as a node, a network node, a network entity, or a wireless node) may include, be, or be included in (e.g., be a component of) a base station (e.g., any base station described herein) , a UE (e.g., any UE described herein) , a network controller, an apparatus, a device, a computing system, an integrated access and backhauling (IAB) node, a distributed unit (DU) , a central unit (CU) , a remote / radio unit (RU) (which may also be referred to as a remote radio unit (RRU) ) , and / or another processing entity configured to perform any of the techniques described herein. For example, a network node may be a UE. As another example, a network node may be a base station or network entity. As another example, a first network node may be configured to communicate with a second network node or a third network node. In one aspect of this example, the first network node may be a UE, the second network node may be a base station, and the third network node may be a UE. In another aspect of this example, the first network node may be a UE, the second network node may be a base station, and the third network node may be a base station. In yet other aspects  of this example, the first, second, and third network nodes may be different relative to these examples. Similarly, reference to a UE, base station, apparatus, device, computing system, or the like may include disclosure of the UE, base station, apparatus, device, computing system, or the like being a network node. For example, disclosure that a UE is configured to receive information from a base station also discloses that a first network node is configured to receive information from a second network node. Consistent with this disclosure, once a specific example is broadened in accordance with this disclosure (e.g., a UE is configured to receive information from a base station also discloses that a first network node is configured to receive information from a second network node) , the broader example of the narrower example may be interpreted in the reverse, but in a broad open-ended way. In the example above where a UE is configured to receive information from a base station also discloses that a first network node is configured to receive information from a second network node, the first network node may refer to a first UE, a first base station, a first apparatus, a first device, a first computing system, a first set of one or more one or more components, a first processing entity, or the like configured to receive the information; and the second network node may refer to a second UE, a second base station, a second apparatus, a second device, a second computing system, a second set of one or more components, a second processing entity, or the like.

[0056] As described herein, communication of information (e.g., any information, signal, or the like) may be described in various aspects using different terminology. Disclosure of one communication term includes disclosure of other communication terms. For example, a first network node may be described as being configured to transmit information to a second network node. In this example and consistent with this disclosure, disclosure that the first network node is configured to transmit information to the second network node includes disclosure that the first network node is configured to provide, send, output, communicate, or transmit information to the second network node. Similarly, in this example and consistent with this disclosure, disclosure that the first network node is configured to transmit information to the second network node includes disclosure that the second network node is configured to receive, obtain, or decode the information that is provided, sent, output, communicated, or transmitted by the first network node.

[0057] An RF signal comprises an electromagnetic wave of a given frequency that transports information through the space between a transmitter and a receiver. As used  herein, a transmitter may transmit a single “RF signal” or multiple “RF signals” to a receiver. However, the receiver may receive multiple “RF signals” corresponding to each transmitted RF signal due to the propagation characteristics of RF signals through multipath channels. The same transmitted RF signal on different paths between the transmitter and receiver may be referred to as a “multipath” RF signal. As used herein, an RF signal may also be referred to as a “wireless signal” or simply a “signal” where it is clear from the context that the term “signal” refers to a wireless signal or an RF signal.

[0058] Various aspects of the systems and techniques described herein will be discussed below with respect to the figures. According to various aspects, FIG. 1 illustrates an example of a wireless communications system 100. The wireless communications system 100 (e.g., which may also be referred to as a wireless wide area network (WWAN) ) can include various base stations 102 and various UEs 104. In some aspects, the base stations 102 may also be referred to as “network entities” or “network nodes. ” One or more of the base stations 102 can be implemented in an aggregated or monolithic base station architecture. Additionally, or alternatively, one or more of the base stations 102 can be implemented in a disaggregated base station architecture, and may include one or more of a central unit (CU) , a distributed unit (DU) , a radio unit (RU) , a Near-Real Time (Near-RT) RAN Intelligent Controller (RIC) , or a Non-Real Time (Non-RT) RIC. The base stations 102 can include macro cell base stations (e.g., high power cellular base stations) and / or small cell base stations (e.g., low power cellular base stations) . In an aspect, the macro cell base station may include eNBs and / or ng-eNBs where the wireless communications system 100 corresponds to a long-term evolution (LTE) network, or gNBs where the wireless communications system 100 corresponds to a NR network, or a combination of both, and the small cell base stations may include femtocells, picocells, microcells, etc.

[0059] The base stations 102 may collectively form a RAN and interface with a core network 170 (e.g., an evolved packet core (EPC) or a 5G core (5GC) ) through backhaul links 122, and through the core network 170 to one or more location servers 172 (e.g., which may be part of core network 170 or may be external to core network 170) . In addition to other functions, the base stations 102 may perform functions that relate to one or more of transferring user data, radio channel ciphering and deciphering, integrity protection, header compression, mobility control functions (e.g., handover, dual connectivity) , inter-cell interference coordination, connection setup and release, load  balancing, distribution for non-access stratum (NAS) messages, NAS node selection, synchronization, RAN sharing, multimedia broadcast multicast service (MBMS) , subscriber and equipment trace, RAN information management (RIM) , paging, positioning, and delivery of warning messages. The base stations 102 may communicate with each other directly or indirectly (e.g., through the EPC or 5GC) over backhaul links 134, which may be wired and / or wireless.

[0060] The base stations 102 may wirelessly communicate with the UEs 104. Each of the base stations 102 may provide communication coverage for a respective geographic coverage area 110. In an aspect, one or more cells may be supported by a base station 102 in each coverage area 110. A “cell” is a logical communication entity used for communication with a base station (e.g., over some frequency resource, referred to as a carrier frequency, component carrier, carrier, band, or the like) , and may be associated with an identifier (e.g., a physical cell identifier (PCI) , a virtual cell identifier (VCI) , a cell global identifier (CGI) ) for distinguishing cells operating via the same or a different carrier frequency. In some cases, different cells may be configured according to different protocol types (e.g., machine-type communication (MTC) , narrowband IoT (NB-IoT) , enhanced mobile broadband (eMBB) , or others) that may provide access for different types of UEs. Because a cell is supported by a specific base station, the term “cell” may refer to either or both of the logical communication entity and the base station that supports it, depending on the context. In addition, because a TRP is typically the physical transmission point of a cell, the terms “cell” and “TRP” may be used interchangeably. In some cases, the term “cell” may also refer to a geographic coverage area of a base station (e.g., a sector) , insofar as a carrier frequency can be detected and used for communication within some portion of geographic coverage areas 110.

[0061] While neighboring macro cell base station 102 geographic coverage areas 110 may partially overlap (e.g., in a handover region) , some of the geographic coverage areas 110 may be substantially overlapped by a larger geographic coverage area 110. For example, a small cell base station 102' may have a coverage area 110' that substantially overlaps with the coverage area 110 of one or more macro cell base stations 102. A network that includes both small cell and macro cell base stations may be known as a heterogeneous network. A heterogeneous network may also include home eNBs (HeNBs) , which may provide service to a restricted group known as a closed subscriber group (CSG) .

[0062] The communication links 120 between the base stations 102 and the UEs 104 may include uplink (e.g., also referred to as reverse link) transmissions from a UE 104 to a base station 102 and / or downlink (e.g., also referred to as forward link) transmissions from a base station 102 to a UE 104. The communication links 120 may use MIMO antenna technology, including spatial multiplexing, beamforming, and / or transmit diversity. The communication links 120 may be provided using one or more carrier frequencies. Allocation of carriers may be asymmetric with respect to downlink and uplink (e.g., a greater or lesser quantity of carriers may be allocated for downlink than for uplink) .

[0063] Beamforming, which may also be referred to as spatial filtering, directional transmission, or directional reception, is a signal processing technique that may be used at a transmitting device or a receiving device (e.g., one or more of the base stations 102, UEs 104, etc. ) to shape or steer an antenna beam (e.g., a transmit beam, a receive beam) along a spatial path between the transmitting device and the receiving device. Beamforming may be implemented based on combining the signals communicated via antenna elements of an antenna array such that some signals propagating at particular orientations with respect to an antenna array experience constructive interference while others experience destructive interference. The adjustment of signals communicated via the antenna elements may include a transmitting device or a receiving device applying amplitude offsets, phase offsets, or both to signals carried via the antenna elements associated with the device. The adjustments associated with each of the antenna elements may be defined by a beamforming weight set associated with a particular orientation (e.g., with respect to the antenna array of the transmitting device or receiving device, or with respect to some other orientation) .

[0064] A transmitting device and / or a receiving device (e.g., such as one or more of base stations 102 and / or UEs 104) may use beam sweeping techniques as part of beam forming operations. For example, a base station 102 (e.g., or other transmitting device) may use multiple antennas or antenna arrays (e.g., antenna panels) to conduct beamforming operations for directional communications with a UE 104 (e.g., or other receiving device) . Some signals (e.g., synchronization signals, reference signals, beam selection signals, or other control signals) may be transmitted by base station 102 (or other transmitting device) multiple times in different directions. For example, the base station 102 may transmit a signal according to different beamforming weight sets associated with  different directions of transmission. Transmissions in different beam directions may be used to identify (e.g., by a transmitting device, such as a base station 102, or by a receiving device, such as a UE 104) a beam direction for later transmission or reception by the base station 102.

[0065] Some signals, such as data signals associated with a particular receiving device, may be transmitted by a base station 102 in a single beam direction (e.g., a direction associated with the receiving device, such as a UE 104) . In some examples, the beam direction associated with transmissions along a single beam direction may be determined based on a signal that was transmitted in one or more beam directions. For example, a UE 104 may receive one or more of the signals transmitted by the base station 102 in different directions and may report to the base station 104 an indication of the signal that the UE 104 received with a highest signal quality or an otherwise acceptable signal quality.

[0066] In some examples, transmissions by a device (e.g., by a base station 102 or a UE 104) may be performed using multiple beam directions, and the device may use a combination of digital precoding or radio frequency beamforming to generate a combined beam for transmission (e.g., from a base station 102 to a UE 104, from a transmitting device to a receiving device, etc. ) . The UE 104 may report feedback that indicates precoding weights for one or more beam directions, and the feedback may correspond to a configured number of beams across a system bandwidth or one or more sub-bands. The base station 102 may transmit a reference signal (e.g., a cell-specific reference signal (CRS) , a channel state information reference signal (CSI-RS) , etc. ) , which may be precoded or unprecoded. The UE 104 may provide feedback for beam selection, which may be a precoding matrix indicator (PMI) or codebook-based feedback (e.g., a multi-panel type codebook, a linear combination type codebook, a port selection type codebook) . Although these techniques are described with reference to signals transmitted in one or more directions by a base station 102, a UE 104 may employ similar techniques for transmitting signals multiple times in different directions (e.g., for identifying a beam direction for subsequent transmission or reception by the UE 104) or for transmitting a signal in a single direction (e.g., for transmitting data to a receiving device) .

[0067] A receiving device (e.g., a UE 104) may try multiple receive configurations (e.g., directional listening) when receiving various signals from the base station 102, such as synchronization signals, reference signals, beam selection signals, or other control  signals. For example, a receiving device may try multiple receive directions by receiving via different antenna subarrays, by processing received signals according to different antenna subarrays, by receiving according to different receive beamforming weight sets (e.g., different directional listening weight sets) applied to signals received at multiple antenna elements of an antenna array, or by processing received signals according to different receive beamforming weight sets applied to signals received at multiple antenna elements of an antenna array, any of which may be referred to as “listening” according to different receive configurations or receive directions. In some examples, a receiving device may use a single receive configuration to receive along a single beam direction (e.g., when receiving a data signal) . The single receive configuration may be aligned in a beam direction determined based on listening according to different receive configuration directions (e.g., a beam direction determined to have a highest signal strength, highest signal-to-noise ratio (SNR) , or otherwise acceptable signal quality based on listening according to multiple beam directions) .

[0068] The wireless communications system 100 may further include a WLAN AP 150 in communication with WLAN stations (STAs) 152 via communication links 154 in an unlicensed frequency spectrum (e.g., 5 Gigahertz (GHz) ) . When communicating in an unlicensed frequency spectrum, the WLAN STAs 152 and / or the WLAN AP 150 may perform a clear channel assessment (CCA) or listen before talk (LBT) procedure prior to communicating in order to determine whether the channel is available. In some examples, the wireless communications system 100 can include devices (e.g., UEs, etc. ) that communicate with one or more UEs 104, base stations 102, APs 150, etc., utilizing the ultra-wideband (UWB) spectrum. The UWB spectrum can range from 3.1 to 10.5 GHz.

[0069] The small cell base station 102' may operate in a licensed and / or an unlicensed frequency spectrum. When operating in an unlicensed frequency spectrum, the small cell base station 102' may employ LTE or NR technology and use the same 5 GHz unlicensed frequency spectrum as used by the WLAN AP 150. The small cell base station 102', employing LTE and / or 5G in an unlicensed frequency spectrum, may boost coverage to and / or increase capacity of the access network. NR in unlicensed spectrum may be referred to as NR-U. LTE in an unlicensed spectrum may be referred to as LTE-U, licensed assisted access (LAA) , or MulteFire.

[0070] The wireless communications system 100 may further include a millimeter wave (mmW) base station 180 that may operate in mmW frequencies and / or near mmW frequencies in communication with a UE 182. The mmW base station 180 may be implemented in an aggregated or monolithic base station architecture, or alternatively, in a disaggregated base station architecture (e.g., including one or more of a CU, a DU, a RU, a Near-RT RIC, or a Non-RT RIC) . Extremely high frequency (EHF) is part of the RF in the electromagnetic spectrum. EHF has a range of 30 GHz to 300 GHz and a wavelength between 1 millimeter and 10 millimeters. Radio waves in this band may be referred to as a millimeter wave. Near mmW may extend down to a frequency of 3 GHz with a wavelength of 100 millimeters. The super high frequency (SHF) band extends between 3 GHz and 30 GHz, also referred to as centimeter wave. Communications using the mmW and / or near mmW radio frequency band have high path loss and a relatively short range. The mmW base station 180 and the UE 182 may utilize beamforming (e.g., transmit and / or receive) over an mmW communication link 184 to compensate for the extremely high path loss and short range. Further, it will be appreciated that in alternative configurations, one or more base stations 102 may also transmit using mmW or near mmW and beamforming. Accordingly, it will be appreciated that the foregoing illustrations are merely examples and should not be construed to limit the various aspects disclosed herein.

[0071] In some aspects relating to 5G, the frequency spectrum in which wireless network nodes or entities (e.g., base stations 102 / 180, UEs 104 / 182) operate is divided into multiple frequency ranges, FR1 (e.g., from 450 to 6,000 Megahertz (MHz) ) , FR2 (e.g., from 24,250 to 52,600 MHz) , FR3 (e.g., above 52,600 MHz) , and FR4 (e.g., between FR1 and FR2) . In a multi-carrier system, such as 5G, one of the carrier frequencies is referred to as the “primary carrier” or “anchor carrier” or “primary serving cell” or “PCell, ” and the remaining carrier frequencies are referred to as “secondary carriers” or “secondary serving cells” or “SCells. ” In carrier aggregation, the anchor carrier is the carrier operating on the primary frequency (e.g., FR1) utilized by a UE 104 / 182 and the cell in which the UE 104 / 182 either performs the initial radio resource control (RRC) connection establishment procedure or initiates the RRC connection re-establishment procedure. The primary carrier carries all common and UE-specific control channels and may be a carrier in a licensed frequency (however, this is not always the case) . A secondary carrier is a carrier operating on a second frequency (e.g., FR2) that  may be configured once the RRC connection is established between the UE 104 and the anchor carrier and that may be used to provide additional radio resources. In some cases, the secondary carrier may be a carrier in an unlicensed frequency. The secondary carrier may contain only necessary signaling information and signals, for example, those that are UE-specific may not be present in the secondary carrier, since both primary uplink and downlink carriers are typically UE-specific. This means that different UEs 104 / 182 in a cell may have different downlink primary carriers. The same is true for the uplink primary carriers. The network is able to change the primary carrier of any UE 104 / 182 at any time. This is done, for example, to balance the load on different carriers. Because a “serving cell” (e.g., whether a PCell or an SCell) corresponds to a carrier frequency and / or component carrier over which some base station is communicating, the term “cell, ” “serving cell, ” “component carrier, ” “carrier frequency, ” and the like can be used interchangeably.

[0072] For example, still referring to FIG. 1, one of the frequencies utilized by the macro cell base stations 102 may be an anchor carrier (or “PCell” ) and other frequencies utilized by the macro cell base stations 102 and / or the mmW base station 180 may be secondary carriers ( “SCells” ) . In carrier aggregation, the base stations 102 and / or the UEs 104 may use spectrum up to Y MHz (e.g., 5, 10, 15, 20, 100 MHz) bandwidth per carrier up to a total of Yx MHz (e.g., x component carriers) for transmission in each direction. The component carriers may or may not be adjacent to each other on the frequency spectrum. Allocation of carriers may be asymmetric with respect to the downlink and uplink (e.g., a greater or lesser quantity of carriers may be allocated for downlink than for uplink) . The simultaneous transmission and / or reception of multiple carriers enables the UE 104 / 182 to significantly increase its data transmission and / or reception rates. For example, two 20 MHz aggregated carriers in a multi-carrier system would theoretically lead to a two-fold increase in data rate (e.g., 40 MHz) , compared to that attained by a single 20 MHz carrier.

[0073] In order to operate on multiple carrier frequencies, a base station 102 and / or a UE 104 can be equipped with multiple receivers and / or transmitters. For example, a UE 104 may have two receivers, “Receiver 1” and “Receiver 2, ” where “Receiver 1” is a multi-band receiver that can be tuned to band (e.g., carrier frequency) ‘X’ or band ‘Y, ’ and “Receiver 2” is a one-band receiver tunable to band ‘Z’ only. In this example, if the UE 104 is being served in band ‘X, ’ band ‘X’ would be referred to as the PCell or the  active carrier frequency, and “Receiver 1” would need to tune from band ‘X’ to band ‘Y’ (e.g., an SCell) in order to measure band ‘Y’ (and vice versa) . In contrast, whether the UE 104 is being served in band ‘X’ or band ‘Y, ’ because of the separate “Receiver 2, ” the UE 104 can measure band ‘Z’ without interrupting the service on band ‘X’ or band ‘Y. ’

[0074] The wireless communications system 100 may further include a UE 164 that may communicate with a macro cell base station 102 over a communication link 120 and / or the mmW base station 180 over an mmW communication link 184. For example, the macro cell base station 102 may support a PCell and one or more SCells for the UE 164 and the mmW base station 180 may support one or more SCells for the UE 164.

[0075] The wireless communications system 100 may further include one or more UEs, such as UE 190, that connects indirectly to one or more communication networks via one or more device-to-device (D2D) peer-to-peer (P2P) links (e.g., referred to as “sidelinks” ) . In the example of FIG. 1, UE 190 has a D2D P2P link 192 with one of the UEs 104 connected to one of the base stations 102 (e.g., through which UE 190 may indirectly obtain cellular connectivity) and a D2D P2P link 194 with WLAN STA 152 connected to the WLAN AP 150 (e.g., through which UE 190 may indirectly obtain WLAN-based Internet connectivity) . In an example, the D2D P2P links 192 and 194 may be supported with any well-known D2D RAT, such as LTE Direct (LTE-D) , Wi-Fi Direct (Wi-Fi-D) ,  and so on.

[0076] FIG. 2 illustrates a block diagram of an example architecture 200 of a base station 102 and a UE 104 that enables transmission and processing of signals exchanged between the UE and the base station, in accordance with some aspects of the present disclosure. Example architecture 200 includes components of a base station 102 and a UE 104, which may be one of the base stations 102 and one of the UEs 104 illustrated in FIG. 1. Base station 102 may be equipped with T antennas 234a through 234t, and UE 104 may be equipped with R antennas 252a through 252r, where in general T≥1 and R≥1.

[0077] At base station 102, a transmit processor 220 may receive data from a data source 212 for one or more UEs, select one or more modulation and coding schemes (MCS) for each UE based on channel quality indicators (CQIs) received from the UE, process (e.g., encode and modulate) the data for each UE based on the MCS (s) selected for the UE, and provide data symbols for all UEs. Transmit processor 220 may also process system information (e.g., for semi-static resource partitioning information (SRPI)  and / or the like) and control information (e.g., CQI requests, grants, upper layer signaling, and / or the like) and provide overhead symbols and control symbols. Transmit processor 220 may also generate reference symbols for reference signals (e.g., the cell-specific reference signal (CRS) ) and synchronization signals (e.g., the primary synchronization signal (PSS) and secondary synchronization signal (SSS) ) . A transmit (TX) multiple-input multiple-output (MIMO) processor 230 may perform spatial processing (e.g., precoding) on the data symbols, the control symbols, the overhead symbols, and / or the reference symbols, if applicable, and may provide T output symbol streams to T modulators (MODs) 232a through 232t. The modulators 232a through 232t are shown as a combined modulator-demodulator (MOD-DEMOD) . In some cases, the modulators and demodulators can be separate components. Each modulator of the modulators 232a to 232t may process a respective output symbol stream (e.g., for an orthogonal frequency-division multiplexing (OFDM) scheme and / or the like) to obtain an output sample stream. Each modulator of the modulators 232a to 232t may further process (e.g., convert to analog, amplify, filter, and upconvert) the output sample stream to obtain a downlink signal. T downlink signals may be transmitted from modulators 232a to 232t via T antennas 234a through 234t, respectively. According to certain aspects described in more detail below, the synchronization signals can be generated with location encoding to convey additional information.

[0078] At UE 104, antennas 252a through 252r may receive the downlink signals from base station 102 and / or other base stations and may provide received signals to one or more demodulators (DEMODs) 254a through 254r, respectively. The demodulators 254a through 254r are shown as a combined modulator-demodulator (MOD-DEMOD) . In some cases, the modulators and demodulators can be separate components. Each demodulator of the demodulators 254a through 254r may condition (e.g., filter, amplify, downconvert, and digitize) a received signal to obtain input samples. Each demodulator of the demodulators 254a through 254r may further process the input samples (e.g., for OFDM and / or the like) to obtain received symbols. A MIMO detector 256 may obtain received symbols from all R demodulators 254a through 254r, perform MIMO detection on the received symbols if applicable, and provide detected symbols. A receive processor 258 may process (e.g., demodulate and decode) the detected symbols, provide decoded data for UE 104 to a data sink 260, and provide decoded control information and system information to a controller / processor 280. A channel processor may determine reference  signal received power (RSRP) , received signal strength indicator (RSSI) , reference signal received quality (RSRQ) , channel quality indicator (CQI) , and / or the like.

[0079] On the uplink, at UE 104, a transmit processor 264 may receive and process data from a data source 262 and control information (e.g., for reports comprising RSRP, RSSI, RSRQ, CQI, and / or the like) from controller / processor 280. Transmit processor 264 may also generate reference symbols for one or more reference signals (e.g., based on a beta value or a set of beta values associated with the one or more reference signals) . The symbols from transmit processor 264 may be precoded by a TX-MIMO processor 266, further processed by modulators 254a through 254r (e.g., for DFT-s-OFDM, CP-OFDM, and / or the like) , and transmitted to base station 102. At base station 102, the uplink signals from UE 104 and other UEs may be received by antennas 234a through 234t, processed by demodulators 232a through 232t, detected by a MIMO detector 236 (e.g., if applicable) , and further processed by a receive processor 238 to obtain decoded data and control information sent by UE 104. Receive processor 238 may provide the decoded data to a data sink 239 and the decoded control information to controller (e.g., processor) 240. Base station 102 may include communication unit 244 and communicate to a network controller 231 via communication unit 244. Network controller 231 may include communication unit 294, controller / processor 290, and memory 292.

[0080] In some aspects, one or more components of UE 104 may be included in a housing. Controller 240 of base station 102, controller / processor 280 of UE 104, and / or any other component (s) of FIG. 2 may perform one or more techniques associated with implicit UCI beta value determination for NR.

[0081] Memories 242 and 282 may store data and program codes for the base station 102 and the UE 104, respectively. A scheduler 246 may schedule UEs for data transmission on the downlink, uplink, and / or sidelink.

[0082] In some aspects, deployment of communication systems, such as 5G new radio (NR) systems, may be arranged in multiple manners with various components or constituent parts. In a 5G NR system, or network, a network node, a network entity, a mobility element of a network, a radio access network (RAN) node, a core network node, a network element, or a network equipment, such as a base station (BS) , or one or more units (or one or more components) performing base station functionality, may be implemented in an aggregated or disaggregated architecture. For example, a BS (e.g.,  such as a Node B (NB) , evolved NB (eNB) , NR BS, 5G NB, access point (AP) , a transmit receive point (TRP) , or a cell, etc. ) may be implemented as an aggregated base station (e.g., also known as a standalone BS or a monolithic BS) or a disaggregated base station.

[0083] An aggregated base station may be configured to utilize a radio protocol stack that is physically or logically integrated within a single RAN node. A disaggregated base station may be configured to utilize a protocol stack that is physically or logically distributed among two or more units (e.g., such as one or more central or centralized units (CUs) , one or more distributed units (DUs) , or one or more radio units (RUs) ) . In some aspects, a CU may be implemented within a RAN node, and one or more DUs may be co-located with the CU, or alternatively, may be geographically or virtually distributed throughout one or multiple other RAN nodes. The DUs may be implemented to communicate with one or more RUs. Each of the CU, DU and RU also can be implemented as virtual units, e.g., a virtual central unit (VCU) , a virtual distributed unit (VDU) , or a virtual radio unit (VRU) .

[0084] Base station-type operation or network design may consider aggregation characteristics of base station functionality. For example, disaggregated base stations may be utilized in an integrated access backhaul (IAB) network, an open radio access network (O-RAN (e.g., such as the network configuration sponsored by the O-RAN Alliance) ) , or a virtualized radio access network (e.g., vRAN, also known as a cloud radio access network (C-RAN) ) . Disaggregation may include distributing functionality across two or more units at various physical locations, as well as distributing functionality for at least one unit virtually, which can enable flexibility in network design. The various units of the disaggregated base station, or disaggregated RAN architecture, can be configured for wired or wireless communication with at least one other unit.

[0085] FIG. 3 is a diagram illustrating an example disaggregated base station 300 architecture. The disaggregated base station 300 architecture may include one or more central units (CUs) 310 that can communicate directly with a core network 320 via a backhaul link, or indirectly with the core network 320 through one or more disaggregated base station units (e.g., such as a Near-Real Time (Near-RT) RAN Intelligent Controller (RIC) 325 via an E2 link, or a Non-Real Time (Non-RT) RIC 315 associated with a Service Management and Orchestration (SMO) Framework 305, or both) . A CU 310 may communicate with one or more distributed units (DUs) 330 via respective midhaul links,  such as an F1 interface. The DUs 330 may communicate with one or more radio units (RUs) 340 via respective fronthaul links. The RUs 340 may communicate with respective UEs 104 via one or more radio frequency (RF) access links. In some implementations, the UE 104 may be simultaneously served by multiple RUs 340.

[0086] Each of the units (e.g., the CUs 310, the DUs 330, the RUs 340, as well as the Near-RT RICs 325, the Non-RT RICs 315, and the SMO Framework 305) illustrated in FIG. 3 and / or described herein may include one or more interfaces or be coupled to one or more interfaces configured to receive or transmit signals, data, or information (e.g., collectively, signals) via a wired or wireless transmission medium. Each of the units, or an associated processor or controller providing instructions to the communication interfaces of the units, can be configured to communicate with one or more of the other units via the transmission medium. For example, the units can include a wired interface configured to receive or transmit signals over a wired transmission medium to one or more of the other units. Additionally, the units can include a wireless interface, which may include a receiver, a transmitter or transceiver (e.g., such as a radio frequency (RF) transceiver) , configured to receive or transmit signals, or both, over a wireless transmission medium to one or more of the other units.

[0087] In some aspects, the CU 310 may host one or more higher layer control functions. Such control functions can include radio resource control (RRC) , packet data convergence protocol (PDCP) , service data adaptation protocol (SDAP) , or the like. Each control function can be implemented with an interface configured to communicate signals with other control functions hosted by the CU 310. The CU 310 may be configured to handle user plane functionality (e.g., Central Unit –User Plane (CU-UP) ) , control plane functionality (e.g., Central Unit –Control Plane (CU-CP) ) , or a combination thereof. In some implementations, the CU 310 can be logically split into one or more CU-UP units and one or more CU-CP units. The CU-UP unit can communicate bidirectionally with the CU-CP unit via an interface, such as the E1 interface when implemented in an O-RAN configuration. The CU 310 can be implemented to communicate with the DU 330, as necessary, for network control and signaling.

[0088] The DU 330 may correspond to a logical unit that includes one or more base station functions to control the operation of one or more RUs 340. In some aspects, the DU 330 may host one or more of a radio link control (RLC) layer, a medium access  control (MAC) layer, and one or more high physical (PHY) layers (e.g., such as modules for forward error correction (FEC) encoding and decoding, scrambling, modulation and demodulation, or the like) depending on a functional split, such as those defined by the 3rd Generation Partnership Project (3GPP) . In some aspects, the DU 330 may further host one or more low PHY layers. Each layer (or module) can be implemented with an interface configured to communicate signals with other layers (and modules) hosted by the DU 330, or with the control functions hosted by the CU 310.

[0089] Lower-layer functionality can be implemented by one or more RUs 340. In some deployments, an RU 340, controlled by a DU 330, may correspond to a logical node that hosts RF processing functions, or low-PHY layer functions (e.g., such as performing fast Fourier transform (FFT) , inverse FFT (iFFT) , digital beamforming, physical random-access channel (PRACH) extraction and filtering, or the like) , or both, based on the functional split, such as a lower layer functional split. In such an architecture, the RU (s) 340 can be implemented to handle over the air (OTA) communication with one or more UEs 104. In some implementations, real-time and non-real-time aspects of control and user plane communication with the RU (s) 340 can be controlled by the corresponding DU 330. In some scenarios, this configuration can enable the DU (s) 330 and the CU 310 to be implemented in a cloud-based RAN architecture, such as a vRAN architecture.

[0090] The SMO Framework 305 may be configured to support RAN deployment and provisioning of non-virtualized and virtualized network elements. For non-virtualized network elements, the SMO Framework 305 may be configured to support the deployment of dedicated physical resources for RAN coverage requirements which may be managed via an operations and maintenance interface (e.g., such as an O1 interface) . For virtualized network elements, the SMO Framework 305 may be configured to interact with a cloud computing platform (e.g., such as an open cloud (O-Cloud) 390) to perform network element life cycle management (e.g., such as to instantiate virtualized network elements) via a cloud computing platform interface (e.g., such as an O2 interface) . Such virtualized network elements can include, but are not limited to, CUs 310, DUs 330, RUs 340, and Near-RT RICs 325. In some implementations, the SMO Framework 305 can communicate with a hardware aspect of a 4G RAN, such as an open eNB (O-eNB) 311, via an O1 interface. Additionally, in some implementations, the SMO Framework 305 can communicate directly with one or more RUs 340 via an O1 interface. The SMO  Framework 305 also may include a Non-RT RIC 315 configured to support functionality of the SMO Framework 305.

[0091] The Non-RT RIC 315 may be configured to include a logical function that enables non-real-time control and optimization of RAN elements and resources, Artificial Intelligence / Machine Learning (AI / ML) workflows including model training and updates, or policy-based guidance of applications / features in the Near-RT RIC 325. The Non-RT RIC 315 may be coupled to or communicate with (e.g., such as via an A1 interface) the Near-RT RIC 325. The Near-RT RIC 325 may be configured to include a logical function that enables near-real-time control and optimization of RAN elements and resources via data collection and actions over an interface (e.g., such as via an E2 interface) connecting one or more CUs 310, one or more DUs 330, or both, as well as an O-eNB, with the Near-RT RIC 325.

[0092] In some implementations, to generate AI / ML models to be deployed in the Near-RT RIC 325, the Non-RT RIC 315 may receive parameters or external enrichment information from external servers. Such information may be utilized by the Near-RT RIC 325 and may be received at the SMO Framework 305 or the Non-RT RIC 315 from non-network data sources or from network functions. In some examples, the Non-RT RIC 315 or the Near-RT RIC 325 may be configured to tune RAN behavior or performance. For example, the Non-RT RIC 315 may monitor long-term trends and patterns for performance and employ AI / ML models to perform corrective actions through the SMO Framework 305 (e.g., such as reconfiguration via O1) or via creation of RAN management policies (e.g., such as A1 policies) .

[0093] FIG. 4 illustrates an example of a computing system 470 of a wireless device 407. The wireless device 407 may include a client device such as a UE (e.g., UE 104, UE 152, UE 190) or other type of device (e.g., a station (STA) configured to communication using a Wi-Fi interface) that may be used by an end-user. For example, the wireless device 407 may include a mobile phone, router, tablet computer, laptop computer, tracking device, wearable device (e.g., a smart watch, glasses, an extended reality (XR) device such as a virtual reality (VR) , augmented reality (AR) , or mixed reality (MR) device, etc. ) , Internet of Things (IoT) device, a vehicle, an aircraft, and / or another device that is configured to communicate over a wireless communications network. The computing system 470 includes software and hardware components that may be electrically or  communicatively coupled via a bus 489 (e.g., or may otherwise be in communication, as appropriate) . For example, the computing system 470 includes one or more processors 484. The one or more processors 484 may include one or more CPUs, ASICs, FPGAs, APs, GPUs, VPUs, NSPs, microcontrollers, dedicated hardware, any combination thereof, and / or other processing device or system. The bus 489 may be used by the one or more processors 484 to communicate between cores and / or with the one or more memory devices 486.

[0094] The computing system 470 may also include one or more memory devices 486, one or more digital signal processors (DSPs) 482, one or more SIMs 474, one or more modems 476, one or more wireless transceivers 478, an antenna 487, one or more input devices 472 (e.g., a camera, a mouse, a keyboard, a touch sensitive screen, a touch pad, a keypad, a microphone, and / or the like) , and one or more output devices 480 (e.g., a display, a speaker, a printer, and / or the like) .

[0095] In some aspects, computing system 470 may include one or more radio frequency (RF) interfaces configured to transmit and / or receive RF signals. In some examples, an RF interface may include components such as modem (s) 476, wireless transceiver (s) 478, and / or antennas 487. The one or more wireless transceivers 478 may transmit and receive wireless signals (e.g., signal 488) via antenna 487 from one or more other devices, such as other wireless devices, network devices (e.g., base stations such as eNBs and / or gNBs, Wi-Fi access points (APs) such as routers, range extenders or the like, etc. ) , cloud networks, and / or the like. In some examples, the computing system 470 may include multiple antennas or an antenna array that may facilitate simultaneous transmit and receive functionality. Antenna 487 may be an omnidirectional antenna such that radio frequency (RF) signals may be received from and transmitted in all directions. The wireless signal 488 may be transmitted via a wireless network. The wireless network may be any wireless network, such as a cellular or telecommunications network (e.g., 3G, 4G, 5G, etc. ) , wireless local area network (e.g., a Wi-Fi network) , a BluetoothTM network, and / or other network.

[0096] In some examples, the wireless signal 488 may be transmitted directly to other wireless devices using sidelink communications (e.g., using a PC5 interface, using a DSRC interface, etc. ) . Wireless transceivers 478 may be configured to transmit RF signals for performing sidelink communications via antenna 487 in accordance with one or more  transmit power parameters that may be associated with one or more regulation modes. Wireless transceivers 478 may also be configured to receive sidelink communication signals having different signal parameters from other wireless devices.

[0097] In some examples, the one or more wireless transceivers 478 may include an RF front end including one or more components, such as an amplifier, a mixer (e.g., also referred to as a signal multiplier) for signal down conversion, a frequency synthesizer (e.g., also referred to as an oscillator) that provides signals to the mixer, a baseband filter, an analog-to-digital converter (ADC) , one or more power amplifiers, among other components. The RF front-end may generally handle selection and conversion of the wireless signals 488 into a baseband or intermediate frequency and may convert the RF signals to the digital domain.

[0098] In some cases, the computing system 470 may include a coding-decoding device (or CODEC) configured to encode and / or decode data transmitted and / or received using the one or more wireless transceivers 478. In some cases, the computing system 470 may include an encryption-decryption device or component configured to encrypt and / or decrypt data (e.g., according to the AES and / or DES standard) transmitted and / or received by the one or more wireless transceivers 478.

[0099] The one or more SIMs 474 may each securely store an international mobile subscriber identity (IMSI) number and related key assigned to the user of the wireless device 407. The IMSI and key may be used to identify and authenticate the subscriber when accessing a network provided by a network service provider or operator associated with the one or more SIMs 474. The one or more modems 476 may modulate one or more signals to encode information for transmission using the one or more wireless transceivers 478. The one or more modems 476 may also demodulate signals received by the one or more wireless transceivers 478 in order to decode the transmitted information. In some examples, the one or more modems 476 may include a Wi-Fi modem, a 4G (or LTE) modem, a 5G (or NR) modem, and / or other types of modems. The one or more modems 476 and the one or more wireless transceivers 478 may be used for communicating data for the one or more SIMs 474.

[0100] The computing system 470 may also include (and / or be in communication with) one or more non-transitory machine-readable storage media or storage devices (e.g., one or more memory devices 486) , which may include, without limitation, local and / or  network accessible storage, a disk drive, a drive array, an optical storage device, a solid-state storage device such as a RAM and / or a ROM, which may be programmable, flash-updateable, and / or the like. Such storage devices may be configured to implement any appropriate data storage, including without limitation, various file systems, database structures, and / or the like.

[0101] In various aspects, functions may be stored as one or more computer-program products (e.g., instructions or code) in memory device (s) 486 and executed by the one or more processor (s) 484 and / or the one or more DSPs 482. The computing system 470 may also include software elements (e.g., located within the one or more memory devices 486) , including, for example, an operating system, device drivers, executable libraries, and / or other code, such as one or more application programs, which may comprise computer programs implementing the functions provided by various aspects, and / or may be designed to implement methods and / or configure systems, as described herein.

[0102] FIG. 5 is a block diagram illustrating an example communication device 502 that includes an echo cancellation and noise suppression (ECNS) engine 506. In some examples, the ECNS engine 506 can be an integrated ECNS engine (also referred to as an “ECNS module” ) of the communication device 502. For instance, the ECNS engine 506 can be included in and / or implemented by a DSP or other audio processing engine and / or audio processor of the communication device 502. In some aspects, the communication device 502 can be the same as or similar to the example computing system 470 of the wireless device (e.g., UE) 407 of FIG. 4.

[0103] The communication device 502 may include N microphones 504a, …, 504n that receive sound input from one or more sources (e.g., a loudspeaker 508, background noise, echo / echoes from a speaker / speakers (stereo / surround sound) , etc. ) . Each of the microphones 504a, …, 504n may produce a signal or channel of audio that may be slightly different than one another. In one configuration, there may be two microphones 504 (e.g., first microphone 504a and Nth microphone 504n, where N=2) that produce two channels of audio, although any number of microphones and / or channels may be used. For instance, in another example, there may be four microphones 504 (e.g., first microphone 504a, …, and Nth microphone 504n, where N = 4) that produce four channels of audio, etc.

[0104] The microphones 504a-n and speaker 508 may use additional modules to process acoustic signals into digital audio and vice versa. For example, the communication device 502 may include analog-to-digital converters, digital-to-analog converters, audio buffers, an automatic volume control module, etc. The communication device 502 may also include more than one speaker 508. As used herein, the term “communication device” can be used to refer to an electronic device that may be used to receive, externally play, and / or optimize audio to and from a user. Examples of communication devices include telephones, speaker phones, cellular phones, personal digital assistants (PDAs) , handheld devices, wireless modems, laptop computers, personal computers, etc. A communication device 502 may alternatively be referred to as an access terminal, a mobile terminal, a mobile station, a remote station, a user terminal, a terminal, a subscriber unit, a subscriber station, a mobile device, a wireless device, user equipment (UE) or some other similar terminology.

[0105] The communication device 502 may also include an analysis engine 510 and a synthesis engine 512 configured to deconstruct and reconstruct audio signals, respectively. This may allow other modules discussed herein to process the audio (e.g., perform echo cancellation and noise suppression, etc. ) . The analysis engine 510 and synthesis engine 512 may refer to finite impulse response filter (FIR) banks that decompose a wideband signal into sub-bands and reconstructs the sub-bands into a single band, respectively.

[0106] Echo cancellation (EC) and multi-microphone noise suppression (NS) techniques, such as beamforming or masking, may be two distinct signal processing concepts, however their goals may converge with regard to acoustic echoes. Specifically, linear echo cancellation may subtract an echo estimate from the desired signal based on reference information, while noise suppression may blindly remove undesired interference (e.g., echoes) within a microphone signal using spatial filtering. Therefore, the communication device 502 may include an integrated echo cancellation and noise suppression module (e.g., ECNS engine 506) with an echo canceller (EC) 514, a noise suppressor (NS) 516, and an echo post-processor 518. In some aspects, the echo canceller 514 can be a linear echo canceller (LEC) . In some cases, the ECNS engine 506 can be configured as a multi-channel ECNS engine.

[0107] In one illustrative example, the ECNS engine 506 can be implemented as a machine learning-based ECNS engine, for instance using one or more deep-learning machine learning networks or models, using one or more neural networks, etc.

[0108] In some examples, the echo canceller 514 may perform linear echo cancellation for selected frequencies for the signals received from the microphones 504a-n. In one configuration, the linear echo of the full band of frequencies received from the primary microphone 504a is cancelled while LEC is performed for only a set of low-band frequencies for secondary (e.g., non-primary) microphones 504b-n. The frequencies selected for LEC on the secondary channels may correspond to the range of frequencies over which spatial processing in the noise suppressor 516 is effective. In some cases, the “primary microphone” may refer to the microphone 504a closest to a user's mouth, where non-primary microphones may be considered secondary microphones 504b-n.

[0109] The noise suppressor 516 may perform spatial processing and / or noise suppression post-processing based on a noise reference from a spatial processor. For instance, the noise suppressor 516 may attenuate the echo as undesired interference based on spatial filtering. The echo post-processor 518 may perform non-linear echo post-processing by attenuating the non-linear echoes. The echo post-processor 518 may also perform non-linear echo clipping and comfort noise injection. In some cases, the echo post-processor 518 may include an echo notch masking module configured to reduce echo in a noise-suppressed signal from the noise suppressor 516. The echo notch masking module may perform amplitude suppression based on an echo direction of arrival (DOA) and speech likelihood information. Using the speech likelihood information, frequency bins with a high-likelihood for an echo direction of arrival (DOA) can be suppressed.

[0110] Occasionally, adaptive spatial processing used by a noise suppressor 516 adds echo from the secondary microphone 504b to the primary microphone 504a, and the echo post-processor 518 may be blind to the echo addition. Since the echo post-processor 518 is blind to the added echo, the echo post-processor 518 may not be able to cancel the added echo. The residual or added echo may be perceivable to the listener and can be distracting and / or undesirable, such as in voice call scenarios where there is otherwise little or no echo in the primary microphone 504a signal to begin with. In some examples, the echo post-processor 518 can be provided with additional information that may be used with a non-linear echo model to cancel the residual echo. In one configuration, a spatial- processed echo estimate may be determined by a supplemental spatial processor. The spatial processing performed by the supplemental spatial processor on the echo estimate (s) from the linear echo canceller 514 may replicate the processing performed on linear echo-cleaned outputs by the noise suppressor 516. This may make the echo post-processor 518 aware of the spatial processing of the echo canceller 514 outputs (by the noise suppressor 516) so that the echo post-processor 518 does not add any echo in the primary microphone 504a. Alternatively, or additionally, an echo estimate from a primary microphone 504a and at least one secondary microphone 504b may be used by the echo post-processor 518 to cancel non-linear echo. In some cases, a selector may select the echo estimate that is provided to the echo post-processor 518. In one configuration, the selector may select one of the primary microphone echo estimate, the secondary microphone echo estimate (s) , or the spatial-processed echo estimate. The selector may scale the selected echo estimate. The selector may also select a combination of the primary microphone echo estimate, the secondary microphone echo estimate (s) , or the spatial-processed echo estimate. In some cases, the selector is included in the echo post-processor 518. In another configuration, the selector may be located outside the echo post-processor 518.

[0111] As noted previously, the systems and techniques described herein can be used to perform adaptive clock scaling for echo cancellation noise suppression (ECNS) processing of audio data, such as voice frames (VFRs) associated with a voice call. For instance, the systems and techniques can be used to perform adaptive clock scaling for an ECNS engine of a voice call processing system. In some examples, the systems and techniques can perform adaptive clock scaling for an ECNS engine that is the same as or similar to the ECNS engine 506 of FIG. 5.

[0112] In some aspects, voice call processing, and the delivery of voice data packets from the voice call processing system to the network or associated modem, can be time sensitive processes. For instance, a voice call processing system may need to deliver transmit (Tx) voice packets to the modem or the network with strict timing requirements, often with little tolerance for a late or missed delivery of the Tx voice packet from the voice call processing system. In some examples, to maintain real-time performance for voice call processing, a modem network requirement for Tx voice packet delivery may require the voice call processing system to deliver every voice call data packet within a 20 millisecond (ms) window.

[0113] Tx voice data packet delivery timing of a voice call processing system can be based on one or more audio or signal processing operations performed by the voice call processing system for each voice frame and / or voice packet. For instance, the voice call processing system can implement various signal enhancement operations to improve voice call quality in harsh and / or adverse acoustic environments. In one example, the voice call processing system can include an echo cancellation noise suppression (ECNS) engine (e.g., such as ECNS engine 506 of FIG. 5) that may be used to perform echo cancellation (EC) and / or noise suppression (NS) to suppress residual echo and / or background noise, etc.

[0114] FIG. 6A is a diagram illustrating an example voice processing timeline 600a associated with an ECNS engine, in accordance with some examples. In one illustrative example, the voice processing timeline 600a can correspond to an ECNS module processing timeline, and may additionally be indicative of corresponding ECNS process load characteristics. The ECNS engine associated with the processing timeline 600a can perform ECNS data or signal processing for each audio frame of a plurality of audio frames. The plurality of audio frames may be voice frames (VFRs) , including a first VFR 610-1 and a second VFR 610-2.

[0115] The difference between the time associated with the first VFR 610-1 and the second VFR 610-2 can represent the voice frame duration used by the ECNS engine and / or the voice call processing system associated with the ECNS engine. For instance, the first VFR 610-1 has a start time of 20*n ms and the second VFR 610-2 has a start time of 20* (n+1) ms. The difference between consecutive or sequential VFR start times (e.g., 20ms) can be the same as or similar to the voice frame duration.

[0116] In one illustrative example, the ECNS engine may be configured to receive a respective VFR at the corresponding start time of the frame (e.g., a respective first VFR at the first VFR start time 610-1, a respective second VFR at the second VFR start time 610-2, …, etc. ) . In some aspects, the delivery time requirement for a processed VFR output by the ENCS engine can be the same as or similar to (e.g., before) the start time of the immediately subsequent VFR. For instance, the video processing timeline 600a of FIG. 6A represents a delivery time requirement for the ECNS processing and loading for the first VFR 610-1 that is equal to, or prior to, the start time of the second VFR 610-2.

[0117] In some examples, the data and / or signal processing performed by the ECNS  engine can be included in a voice frame pre-processing time 615 (e.g., also referred to as a voice frame processing time 615) . The voice frame pre-processing 615 can include performing ECNS data and / or signal processing for the first VFR and / or can include performing one or more other data and / or signal processing operations for the first VFR 610-1. In some cases, the voice frame pre-processing time 615 may be between approximately 8-13ms in length.

[0118] At a time 620-1, the ECNS and / or other processing performed for the first voice frame 610-1 are completed. The remaining time to deliver the processed first voice frame can be determined as the difference between the second VFR time 610-2 and the first VFR process done time 620-1. The processed voice frame can be encoded using an encoder, encapsulated into a voice data packet for transmission over a network and / or to a modem associated with the network, etc., during an encoder time 625. In some cases, the encoder time can be approximately 5ms in length. After encoding is completed during the encoder time 625, the processed and encoded version of the first VFR frame 610-1 can be delivered to the modem or network at the frame delivered time 620-2.

[0119] The delivery of the processed and encoded version of the first VFR frame 610-1 (e.g., also referred to as a first Tx voice packet, or a first voice data packet, etc. ) at a frame delivered time 620-2 that is before the second VFR time 610-2 may correspond to early or timely delivery of the first Tx voice packet. The delivery of the first Tx voice packet at a frame delivered time 620-2 that is equal to the second VFR time 610-2 may correspond to the latest possible on-time delivery of the first Tx voice packet (e.g., based on the frame delivery deadline for the first VFR 610-1 being equal to the start time for the second VFR 610-2) . The delivery of the first Tx voice packet at a frame delivered time 620-2 that is later than the second VFR time 610-2 can correspond to a late, missed, and / or failed delivery of the first Tx voice packet.

[0120] As noted previously, in some cases, the process load of an ECNS module (e.g., and / or various other signal processing modules of a voice call processing system) may be unstable. For instance, the ECNS process load may be high (e.g., high CPU load) at the algorithm convergence stage (e.g., call setup, device switch, environment switch, etc. ) and may be low at the steady state stage (e.g., call maintenance, etc. ) . In some examples, the process load (e.g., CPU load) associated with implementing an ECNS engine and / or ECNS data processing for a voice frame can be two to three times greater during the  convergence stage of a voice call than during the steady state stage of the voice call.

[0121] In some examples, a voice ECNS thread process may be implemented using static CPU load voting, for example with voting performed at voice call startup (e.g., the voice call setup stage) . In the static CPU load voting implementation at voice call startup, the CPU load can be voted low (e.g., corresponding to the steady state stage of the ECNS processing) or can be voted high (e.g., corresponding to the convergence stage of the ECNS processing) . FIG. 6B is a diagram illustrating an example voice processing timeline 600b associated with implementing ECNS with a CPU load low vote, in accordance with some examples. FIG. 6C is a diagram illustrating an example voice processing timeline 600c associated with implementing ECNS with a CPU load high vote, in accordance with some examples.

[0122] In some examples, static CPU load voting is performed at voice call startup in order to allocate, select, and / or configure, etc., the CPU resources that will be needed to perform the voice call setup. The static CPU load voting may be performed prior to the initiation of a voice call, and the type and / or quantity of CPU resources needed for a respective voice call undergoing setup may be unknown at the time of setup. In some examples, the static CPU load voting is performed prior to voice call setup and without complete knowledge of the optimal mix or selection of CPU resources for setting up, maintaining, and / or supporting the voice call.

[0123] CPU load voting is a technique that may be utilized in real-time systems (e.g., such as real-time voice call processing systems) to determine a selected one or more CPU or processing units that should be allocated to a specific task, based on current load and / or utilization information, among various other factors. CPU load voting can be used to optimize resource usage, to enhance system performance, and to ensure tasks meet their corresponding deadlines (e.g., such as in real-time systems and / or other systems where task completion timing is critical) .

[0124] In some aspects, CPU load voting may be performed based on metrics information collected from each CPU or processing unit (e.g., each CPU resource) of a plurality of CPUs or processing units configured for metrics collection. For instance, each CPU or processing unit may periodically report its respective load or utilization information, which may include CPU usage percentages, queue lengths, memory usage, I / O statistics, etc., among various other metrics.

[0125] A voting mechanism can be implemented based on aggregation of the CPU resource metrics. The voting mechanism can be centralized in a master node or can be decentralized or distributed across multiple peer nodes. In a centralized voting mechanism, one node is used to collect the CPU resource information and to determine a CPU load voting decisions. In a decentralized or distributed voting mechanism, a plurality of nodes exchange CPU resource information and metrics and independently make voting decisions (e.g., based on or using a consensus algorithm, etc. ) .

[0126] For example, the CPU resource metrics can be used to determine a load score calculated for each CPU, processing unit, CPU resource, etc. The load score may be weighted for different goals, use cases, optimizations, etc. Based on the load score, the voting mechanism can select one or more CPU resources that are the relatively least loaded (e.g., based on the respective load scores calculated for the set of CPU resources) . After the voting mechanism has selected the one or more CPU resources, task allocation can be performed to allocate the current task (s) (e.g., for which the CPU load voting was performed) to the selected one or more CPU resources or processing units for execution.

[0127] The voice processing timeline 600b of FIG. 6B corresponds to an example of a low voting decision of the CPU load voting process performed at voice call startup for a voice call processing system that includes an ECNS engine (e.g., performed at voice call startup for a voice call processing system such as the voice call processing system associated with the voice processing timeline 600a of FIG. 6A) .

[0128] In the low vote CPU load decision of FIG. 6B, a relatively low amount of CPU resources are allocated for performing the voice call processing of a plurality of voice frames including the first VFR 650-1 and the second VFR 650-2. In some cases, the low vote CPU load decision can correspond to a low quantity or number of CPU resources. In some examples, the low vote CPU load decision can correspond to a low CPU utilization or clock speed allocated for processing the plurality of voice frames including the first VFR 650-1 and the second VFR 650-2.

[0129] In one illustrative example, the first VFR 650-1 and second VFR 650-2 of FIG. 6B can be the same as the first VFR 610-1 and the second VFR 610-2 of FIG. 6A (respectively) . In some aspects, the ECNS and / or other voice frame signal processing operations performed by the voice call processing system may be the same in the example of FIG. 6A and the example of FIG. 6B.

[0130] Based on the low vote CPU load decision of FIG. 6B, the pre-processing time 655 of the low CPU load vote voice processing timeline 600b is longer than the corresponding pre-processing time 615 of the voice processing timeline 600a of FIG. 6A. For instance, in the voice processing timeline 600a, the pre-processing time 615 may be between 8-13ms. In the low CPU load vote voice processing timeline 600b, the same pre-processing operations may be performed in a longer duration pre-processing time 655 of 15ms or greater.

[0131] Based on the longer pre-processing time 655 corresponding to the low vote CPU load decision, the processing done time 660-1 for the first VFR frame 650-1 of FIG. 6B is later than the processing done time 620-1 for the first VFR frame 610-1 of FIG. 6A. The encoder time 665 for the processed first VFR frame may be the same in FIG. 6B as the encoder time 625 for the processed first VFR frame in FIG. 6A (e.g., approximately 5ms) , based on the frame encoding having a static or constant run-time or execution duration. In one illustrative example, the increased voice pre-processing time 655 associated with the low vote CPU load decision of FIG. 6B can cause the first VFR frame to be delivered (e.g., as a Tx voice packet including the processed and encoded version of the first VFR frame 650-1) late, after the frame delivery deadline given by the second VFR 650-2 start time.

[0132] The late frame delivery time 660-2 for the first VFR frame 650-1 in the low CPU load vote scenario of FIG. 6B can be associated with noise and / or mute issues with the voice call, based on the low CPU load vote being underpowered to complete ECNS processing within the 20ms window during the algorithm convergence stage (s) noted above (e.g., call setup, device switch, environment switch, etc. ) . For example, the ECNS thread process configured with the low CPU load vote can experience process delay for the first voice frame 650-1, with the subsequent Tx voice frame delivery time 660-2 to the modem or network occurring later than the 20ms second VFR deadline 650-2. The process delay associated with utilizing the low CPU load vote during ECNS convergence stages can correspond to the introduction of noise and / or audio gaps (e.g., muted periods) for the far-end user on the voice call. In some cases, the process delay can cause cascading delays for subsequent VFR frames. For instance, the second VFR frame 650-2 will begin processing late, by at least a time amount equal to the lateness of the delivered first VFR frame 650-1 (e.g., a time amount equal to at least the first frame delivered time 660-2 minus the second VFR start time 650-2) . Cascading delays for subsequent voice frames  of the voice call can be associated with one or multiple dropped frames in an effort to reduce the cascading delays within the voice processing timeline 600b.

[0133] The voice processing timeline 600c of FIG. 6C corresponds to an example of a high voting decision of the CPU load voting process performed at voice call startup for a voice call processing system that includes an ECNS engine (e.g., performed at voice call startup for a voice call processing system such as the voice call processing system associated with the voice processing timeline 600a of FIG. 6A) .

[0134] In the high vote CPU load decision of FIG. 6C, a relatively high amount of CPU resources are allocated for performing the voice call processing of a plurality of voice frames including the first VFR frame 670-1 and the second VFR frame 670-2. In some cases, the high vote CPU load decision can correspond to a high quantity or number of CPU resources. In some examples, the high vote CPU load decision can correspond to a high CPU utilization or clock speed allocated for processing the plurality of voice frames including the first VFR 670-1 and the second VFR 670-2.

[0135] In one illustrative example, the first VFR 670-1 and second VFR 670-2 of FIG. 6C can be the same as the first VFR 650-1 and the second VFR 650-2 of FIG. 6B and / or the first VFR 610-1 and the second VFR 610-2 of FIG. 6A (respectively) . In some aspects, the ECNS and / or other voice frame signal processing operations performed by the voice call processing system may be the same in the example of FIG. 6A, the example of FIG. 6B, and the example of FIG. 6C.

[0136] Based on the high vote CPU load decision of FIG. 6C, the pre-processing time 675 of the high CPU load vote voice processing timeline 600c is shorter than the corresponding pre-processing time 615 of the voice processing timeline 600a of FIG. 6A. For instance, in the voice processing timeline 600a, the pre-processing time 615 may be between 8-13ms. In the high CPU load vote voice processing timeline 600c, the same pre-processing operations may be performed in a shorter duration pre-processing time 655 of 8ms or less.

[0137] Based on the shorter pre-processing time 675 corresponding to the high vote CPU load decision, the processing done time 680-1 for the first VFR frame 670-1 of FIG. 6C is earlier than the processing done time 620-1 for the first VFR frame 610-1 of FIG. 6A. The encoder time 685 for the processed first VFR frame may be the same in FIG. 6C as the encoder time 625 for the processed first VFR frame in FIG. 6A and the encoder  time 665 for the processed first VFR frame in FIG. 6B (e.g., approximately 5ms) , based on the frame encoding having a static or constant run-time or execution duration. In one illustrative example, the decreased voice pre-processing time 675 associated with the high vote CPU load decision of FIG. 6C can cause the first VFR frame to be delivered (e.g., as a Tx voice packet including the processed and encoded version of the first VFR frame 670-1) early, far ahead of the frame delivery deadline given by the second VFR start time 670-2.

[0138] The early frame delivery time 680-2 for the first VFR frame 670-1 in the high CPU load voting scenario of FIG. 6C can be associated with CPU load waste and / or excess power consumption at the CPU used to implement the ECNS engine and / or the ECNS thread process, based on the high CPU load vote being overpowered for completing steady state ECNS processing within the 20ms window. For example, the high CPU load vote may be appropriately configured to deliver the Tx voice frames to the modem or network at or within the 20ms delivery deadline during the ECNS convergence stage (s) , where the additional CPU load is needed. The high CPU load vote may cause the Tx voice frames to be delivered to the modem or network far ahead of the 20ms delivery deadline during the ECNS steady state stage (s) , where the additional CPU load of the high CPU load vote is not needed. Delivering the Tx voice frames far ahead of the frame delivery deadline can correspond to CPU load waste and power waste by the voice call processing system and / or the ECNS engine.

[0139] FIG. 7 is a diagram illustrating an example audio processing system 700 that includes an adaptive scaling engine 750 configured for dynamic adjustment of a CPU and / or bus clock associated with an ECNS engine 710, in accordance with some examples. In one illustrative example, the adaptive scaling engine 750 can be used to perform adaptive CPU scaling for the ECNS engine 710, based on dynamically adjusting a CPU and / or memory bus clock. In some aspects, the adaptive and dynamic clock scaling performed by the adaptive scaling engine 750 can be implemented based on monitoring voice packet timeline information, module process time information, and CPU resource statistics information.

[0140] For instance, the adaptive scaling engine 750 can receive voice packet timeline information from a packet timeline offset engine 780 (e.g., which may be the same as or similar to the packet timeline offset engine 880 of FIG. 8A) .

[0141] The adaptive scaling engine 750 can receive module process time information (e.g., processing time information) from a module process time calculation engine 760 (e.g., which may be the same as or similar to the module process time calculation engine 960 of FIG. 9) .

[0142] The adaptive scaling engine 750 can receive CPU resource statistics information from a resource statistics engine 770, which may be the same as or similar to the resource manager 1070 and / or statistics aggregator engine 1072 of FIG. 10.

[0143] In one illustrative example, based on monitoring and analyzing the voice packet timeline information (e.g., from the packet timeline offset engine 780) , the module process time information (e.g., from the module process time calculation engine 760) , and / or the CPU resource statistics (e.g., from the resource statistics engine 770) , the adaptive scaling engine 750 can be used to provide adaptive clock scaling to achieve on-time voice frame delivery during both convergence stage (s) of the ECNS engine 710 (e.g., where the high vote CPU load decision corresponding to FIG. 6C may be utilized to deliver the frame ahead of the frame delivery deadline) and during steady state stage (s) of the ECNS engine 710 (e.g., where the low vote CPU load decision corresponding to FIG. 6B may be utilized to deliver the frame by the frame delivery deadline) .

[0144] In some aspects, the systems and techniques described herein for implementing the voice system 700a, the adaptive scaling system 700b, and / or the adaptive scaling engine 750 can be utilized in combination with ECNS audio signal processing operations performed for audio frames (e.g., voice frames) using the ECNS engine 710 of FIG. 7, the ECNS engine 506 of FIG. 5, etc. In some examples, the systems and techniques described herein for implementing the voice system 700a, the adaptive scaling system 700nb, and / or the adaptive scaling engine 750 can be utilized in combination with various other audio signal processing operations performed for voice frames of a voice call session (e.g., a cellular voice call such as VoLTE or VoNR; a VoIP voice call; etc. ) . In some examples, the systems and techniques can be used to provide adaptive clock scaling for various audio signal processing operations that may be implemented by a CPU or DSP of a wireless communication device (e.g., such as the processor (s) 484, DSP (s) 482 of the device 407 of FIG. 4; etc. ) .

[0145] In some examples, the audio processing system 700 of FIG. 7 can be implemented by a CPU or other processor (and / or processor system) of a communication  device associated with a voice call. Outgoing voice frames for transmission as Tx voice data packets of the voice call can be obtained using one or more microphones and / or ADCs 702 associated with the audio processing system 700 and the communication device. For instance, the ECNS engine 710 can receive a plurality of input audio frames (e.g., voice call frames) 706 from the microphone / ADC 702.

[0146] The ECNS engine 710 can be included in a voice system 700a of the CPU. For instance, the ECNS engine 710 can be included in a voice call system 700a of the CPU, which may additionally include a pulse-code modulation (PCM) encoder 720 configured to encode the processed audio frame output of ECNS engine 710, and a packet delivery engine 730 for delivering a processed and encoded output audio frame (e.g., Tx voice packet) to the network associated with the voice call. In some cases, the PCM encoder 720 can be the same as or similar to an encoder associated with the encoder time 625 of FIG. 6A, 665 of FIG. 6B, and / or 685 of FIG. 6C. The ECNS engine 710 can be the same as or similar to an ECNS engine associated with the pre-processing time 615 of FIG. 6A, 655 of FIG. 6B, and / or 675 of FIG. 6B. The packet delivery engine 730 can be the same as or similar to a packet delivery engine associated with the frame delivery 620-2 of FIG. 6A, 660-2 of FIG. 6B, and / or 680-2 of FIG. 6C.

[0147] The adaptive scaling system 700b can additionally be implemented by the same CPU or software architecture or system as the voice system 700a. The adaptive scaling system 700b can include the adaptive scaling engine 750 and the various information collection engines associated with providing respective monitoring information to the adaptive scaling engine 750 for determining a dynamic clock adjustment for one or more of the CPU resources and / or memory or bus clock resources allocated for the ECNS engine 710 voice frame 706 signal processing operations. For instance, the adaptive scaling system 700b can include the adaptive scaling engine 750, the module process time calculation engine 760, the resource statistics engine 770, and the packet timeline offset engine 780.

[0148] In some examples, the packet timeline offset engine 780 can be used to determine information indicative of or corresponding to the timeline of voice packet delivery to the network. For instance, the packet timeline offset engine 780 can communicate with the packet deliver engine 730 to determine information associated with the timeline of voice packet delivery to the network and / or the timeline of voice packets  delivered to the network (e.g., such as the frame out 734, etc. ) . In one illustrative example, the packet timeline offset engine 780 can be used to obtain and / or determine a packet time offset value indicative of whether the voice packet delivered to the network was beyond (e.g., late) or within (e.g., early or on-time) a packet delivery window for the voice call session (e.g., 20ms, 40ms, etc. ) . In some aspects, the packet timeline offset engine 780 can check the timeline of voice packet delivery to the network based on the frame out timestamp information 782 of FIG. 7. In some examples, the packet timeline offset engine 780 can check the timeline of voice packet delivery to the network based on receiving a corresponding query value 752 from the adaptive scaling engine 750. In one illustrative example, the packet timeline offset engine 780 can be configured to generate an interrupt 785 to the adaptive scaling engine 750 to indicate that the packet time offset value (e.g., determined and / or monitored by the packet timeline offset engine 780) is greater than one or more configured threshold values.

[0149] For instance, FIG. 8A is a diagram 800a illustrating an example of a packet timeline offset engine 880 that may be the same as or similar to the packet timeline offset engine 780 of FIG. 7. In some aspects, the packet timeline offset engine 880 can be associated with a packet delivery engine 830 that is the same as or similar to the packet delivery engine 730 of FIG. 7, and is configured to perform packet delivery for one or more packets 833 of audio voice frame data. In some examples, the packet timeline offset engine 880 can be additionally associated with an adaptive scaling engine 850 that is the same as or similar to the adaptive scaling engine 750 of FIG. 7.

[0150] For instance, the adaptive scaling engine 850 can transmit a packet timeline offset query 852 to the packet timeline offset engine 880 of FIG. 8A, where the query 852 is the same as or similar to the query 752 from the adaptive scaling engine 750 to the packet timeline offset engine 780 of FIG. 7.

[0151] In one illustrative example, the packet timeline offset engine 880 can be configured to determine packet timeline offset information corresponding to an initial stage 805 and a steady state stage 815. The initial stage 805 can correspond to the convergence stage of ECNS processing performed by an ECNS engine (e.g., ECNS engine 710 of FIG. 7, etc. ) , such as during call setup, device switch, environment switch, etc. The steady state stage 815 can correspond to the steady state stage of ECNS  processing performed by the ECNS engine (e.g., ECNS engine 710 of FIG. 7, etc. ) , such as during call maintenance, etc.

[0152] In the initial stage 805, a modem (e.g., a modem associated with the voice call processing system 700 of FIG. 7) can set the VFR frame duration (e.g., 20ms, 40ms, etc. ) and frame timeline to ADSP. For instance, in some examples, the voice call processing corresponding to the initial stage 805 can be triggered by the modem, which may be configured to send the VFR frame duration and / or frame timeline to the packet timeline offset engine 880 using an interrup.

[0153] To perform voice call setup (e.g., the initial stage 805) , the ADSP can aggregate respective KPPS vote information from each module, processing component, sub-system, engine, etc., of the voice call processing system 700 of FIG. 7. The KPPS vote information can be indicative of a CPU load vote for setting up the voice call processing system 700a of FIG. 7. In some cases, the KPPS vote information can be used as voting information to determine a CPU clock value that will be used for implementing the voice call using voice call processing system 700a of FIG. 7. In one illustrative example, the ADSP can aggregate the respective KPPS vote information and determine a total path delay, represented as Tpath_delay.

[0154] In some examples, the packet delivery engine 830 can subscribe to the packet timeline offset engine 880 (e.g., the ‘Subscribe’ message from the packet delivery engine 830 to the initial stage 805 of the packet timeline offset engine 880) . In one illustrative example, the ‘Subscribe’ message from the packet delivery engine 830 to the packet timeline offset engine 880 can notify the packet timeline offset engine 880 of the packet timeline information for the voice call and / or for one or more voice frames associated with the voice call. For instance, based on the ‘Subscribe’ message and / or notification of the packet timeline from the packet delivery engine 830, the packet timeline offset engine 880 can determine timing information for when a voice frame should be delivered to the modem (e.g., when the voice frame should be delivered to the modem to meet the packet timeline and / or to avoid the voice frame being delivered to the modem late) .

[0155] In some aspects, the packet timeline offset engine 880 can determine a Tpacket_timeline_offset information indicative of the timeline when a frame should be delivered to the modem. For example, the packet timeline offset engine 880 can determine Tpacket_timeline_offset for a respective voice frame as Tpacket_timeline_offset = TVFR + Tpath delay.

[0156] The value of Tpath_delay can be the total path delay value (e.g., Tpath_delay) determined by the ADSP based on the respective KPPS vote information. The value of TVFR can be the VFR frame duration (e.g., 20ms, 40ms, etc. ) set by the modem and transmitted from the modem to the ADSP.

[0157] The packet timeline offset engine 880 can transition from the initial stage 805 to the steady stage 815, for instance corresponding to the associated voice call and / or ECNS processing (e.g., using ECNS engine 710 of FIG. 7) transition from the convergence stage of call setup to the steady stage of call maintenance.

[0158] In the steady stage 815, the packet timeline offset engine 880 can obtain the packet arriving timeline of each voice frame (e.g., each frame in 706 of FIG. 7) from the packet delivery engine 830. For instance, the packet timeline offset engine 880 can obtain corresponding packet arriving timeline information of each voice frame of the plurality of packets 833 associated with the packet delivery engine 830. The respective packet arriving timeline of each frame can be represented as Tpacket_arrived. In one illustrative example, at block 817-1 of the steady stage 815, the packet timeline offset engine 880 can compare the Tpath_delay value (e.g., determined by the ADSP from the KPPS vote information) to one or more time threshold values. For instance, the packet timeline offset engine 880 can determine at block 817-1 whether 8ms < Tpath_delay < 18ms. In some examples, the upper threshold may be 16ms, or various other values.

[0159] A determination that 8ms < Tpath_delay < 18ms is false (e.g., the ‘N’ path from block 817-1 to adaptive scaling engine 850) may indicate that an improper CPU load vote was previously performed by the ADSP and / or the components generating the KPPS votes aggregated by the ADSP. Based on the Tpath_delay not being between the first and second configured threshold values of the first comparison at block 817-1 of the steady stage 815, the packet timeline offset engine 880 can send an interrupt to the adaptive scaling engine 850 (e.g., corresponding to the ‘N’ path from block 817-1 to adaptive scaling engine 850 of FIG. 8A) .

[0160] If the Tpath_delay is between the first and second configured threshold values (e.g., 8ms < Tpath_delay < 18ms evaluates to true) , the steady stage 815 can determine at block 817-2 whether Tpacket_arrived > Tpacket_timeline_offset.

[0161] For instance, the Tpacket_arrived is the respective packet arriving timeline for each frame, as obtained from the packet delivery engine 830. The Tpacket_timeline_offset can be the  same as the Tpacket_timeline_offset determined at the initial stage 805 (e.g., Tpacket_timeline_offset =TVFR + Tpath delay) .

[0162] At block 817-2, if Tpacket_arrived is larger than Tpacket_timeline_offset (e.g., Tpacket_arrived > Tpacket_timeline_offset evaluates to true) , the packet timeline offset engine 880 can determine that the packet or voice frame processing time might exceed the expectation indicated by the Tpacket_timeline_offset information, and can send an interrupt 885 to the adaptive scaling engine 850. The interrupt 885 can be indicative of the determination by packet timeline offset engine 880 that the packet arriving timeline for the current frame exceeds the corresponding expectation represented in the packet timeline offset.

[0163] In some aspects, the adaptive scaling engine 850 can be configured to query (e.g., using query value 852) the timeline from the packet timeline offset engine 880 to perform further adaptive scaling.

[0164] FIG. 8B is a diagram illustrating an example packet arrival timeline 800b that can be used by the packet timeline offset engine 880 of FIG. 8A, in accordance with some examples. For instance, time T0 is associated with a first voice frame 840-1. A later time T0+n*20ms is associated with an nth voice frame 840-2, where each voice frame in the sequence of voice frames between the first and nth voice frames is separated by the TVFR voice frame duration of 20ms.

[0165] The transmit path delay (e.g., Tx path delay) 842 of FIG. 8B can correspond to the Tpath_delay value determined by the ADSP based on aggregating the KPPS votes.

[0166] The time 846 can represent the Tpacket_timeline_offset for the first VFR 840-1 and / or the nth VFR 840-2, based on Tpacket_timeline_offset (e.g., time 846) = TVFR (e.g., 20ms) + Tpath delay (e.g., 842) . The time 844 can represent a first Tpacket_arrived packet arriving timeline of a first frame, and the time 848 can represent a second Tpacket_arrived packet arriving timeline of a second frame. The time T0+ (n+1) *20ms can represent the next VFR frame after the nth VFR frame 840-2 (e.g., the n+1th VFR frame 840-n) .

[0167] The module process time calculation engine 760 of FIG. 7 can also be referred to as the module processing time engine and / or module processing time calculation engine, and may be the same as or similar to the module processing time engine 960 of FIG. 9. In some aspects, the module processing time engine 760 can be used to determine a real-time ECNS engine processing time for each PCM frame of voice call audio data.  For instance, the module processing time engine 760 can determine the real-time ECNS processing time of the ECNS engine 710 for each PCM frame generated by and / or associated with the PCM encoder 720 of the voice system 700a. In some examples, the real-time ECNS processing time of ECNS engine 710 can be based at least in part on the frame out timestamp information 762 exchanged between the ECNS engine 710 and the module processing time engine 760.

[0168] In one illustrative example, the module processing time engine 760 can be configured to generate an interrupt 765 to the adaptive scaling engine 750 based on the real-time ECNS engine 710 processing time being outside of an expected ECNS processing time range. For instance, the interrupt 765 can indicate that the real-time ECNS processing time of ECNS engine 710 is outside of an expected (e.g., configured) range of 10ms ± 3ms, etc. In some aspects, the adaptive scaling engine 750 can scale the CPU clock speed up or down based on the real-time ECNS processing time indicated by interrupt 765 being larger than the expected range or smaller than the expected range (respectively) .

[0169] FIG. 9 illustrates a module processing time engine 960 that can be the same as or similar to the module processing time engine 760 of FIG. 7. One or more audio processing modules (e.g., associated with signal processing operations for voice call system 700a of FIG. 7 and / or associated with signal processing operations for voice frame data, such as frame in 706 of FIG. 7, etc. ) can subscribe to the module process time calculation engine 960. For instance, a first audio processing module 911 and a second audio processing module 912 can subscribe to the module process time calculation engine 960 using respective ‘Subscribe’ messages to register their respective estimated processing time based on its KPPS vote. In one illustrative example, an ECNS module 910 can be the same as or similar to the ECNS engine 710 of FIG. 7, and can subscribe to the module process time calculation engine 960 using a respective ‘Subscribe’ message to register the ECNS module estimated processing time based on its KPPS vote.

[0170] In some aspects, the respective ‘Subscribe’ messages and / or subscription and registration information transmitted from the respective modules 911, 910, 912 can be stored in a subscriber manager engine 963.

[0171] The respective module estimated processing time transmitted to the module process time calculation engine 960 from each respective module that registers (e.g., 911,  910, 912, etc. ) can be analyzed at block 966. For instance, the module process time calculation engine 960 can obtain the frame processing time (or estimated frame processing time) from the ECNS module 910 (e.g., ECNS engine 710 of FIG. 7) as Ttime.

[0172] At block 966, the respective module processing time Ttime can be compared to a first (e.g., lower) configured threshold value Tmin and a second (e.g., higher) configured threshold value Tmax. A determination at block 966 that Tmin < Ttime < Tmax is false (e.g., a determination that Tmin ≥ Ttime; that Ttime ≥ Tmax; etc. ) can indicate that there may be an improper KPPS vote from the respective module 911, 910, 912 associated with the module processing time Ttime, and an exception interrupt 965 can be sent from the module process time calculation engine 960 to an adaptive scaling engine 950.

[0173] The adaptive scaling engine 950 can be the same as or similar to the adaptive scaling engine 750 of FIG. 7 and / or 850 of FIG. 8A. The query value 952 can be a module process time query used by the adaptive scaling engine 950 to query the module process time engine 960 for exact processing time information for further adaptive scaling. The module process time query 952 can be the same as or similar to the query value 752 from the adaptive scaling engine 750 to the module process time engine 760 of FIG. 7.

[0174] In some aspects, the module process time calculation engine 960 and the adaptive scaling engine 950 can be configured to check the processing time estimate for a respective module (e.g., ECNS module 910, ECNS engine 710, etc. ) against the corresponding Tmin and Tmax thresholds for each voice frame of a plurality of voice frames processed by the systems and techniques described herein. For instance, adaptive scaling engine 950 can transmit a respective module process time query 952 for each frame of a plurality of voice frames being processed for a voice call, etc.

[0175] In some aspects, each respective audio signal processing module associated with module process time calculation engine 960 (e.g., 911, 910, 912) can be associated with a corresponding set of values Ttime (e.g., indicative of the total processing time for the respective module, per frame) ; Tmin (e.g., indicative of the minimum configured processing time permitted for the respective module, per frame) ; and Tmax (e.g., indicative of the maximum configured processing time permitted for the respective module, per frame) .

[0176] In some aspects, the adaptive scaling engine 750 of FIG. 7 can additionally transmit a respective query 752 to, and receive monitoring information in response from, a resource statistics engine 770. In one illustrative example, the resource statistics engine 770 can be configured as a cPP statistics engine, which can be used to read cPP statistics information associated with the CPU and / or voice call processing system 700 of FIG. 7 and to check cPP is under (or within) one or more expected ranges of threshold values, etc.

[0177] In one illustrative example, the resource statistics engine 770 of FIG. 7 can be the same as or similar to the resource manager 1070 and / or the aggregator engine 1072 of FIG. 10. For instance, the resource manager 1070 can be configured to obtain CPU resource statistics, metrics, usage information, history information, performance information, etc., based on transmitting one or more respective queries or votes 1074 to corresponding CPU resources and / or corresponding communication interfaces thereof.

[0178] For instance, the aggregator engine 1072 can transmit one or more DSP core queries 1074 to a DSP core 1076 and / or a DSP core 1076 communication interface. In some aspects, the client 1005 communicatively coupled to the aggregator 1072 of the resource manager 1070 can be a DSP OS or other DSP client. In some examples, the DSP core queries 1074 can correspond to DSP core 1076 information. For instance, the aggregator engine 1072 can query a DSP core frequency and / or a DSP load from the DSP OS (e.g., client 1005) . In some aspects, the DSP load information may correspond to MCPS (millions of clocks per second) information, MPPS (millions of packets per second) information, and / or CPP information obtained from the DSP OS and / or client 1005.

[0179] In another example, the aggregator engine 1072 can transmit one or more queries 1074 of voted DDR bandwidth and / or real DDR clock information from a memory subsystem. The memory subsystem may be associated with and / or accessed through the client 1005 or through a dedicated communication interface or bus corresponding to the memory subsystem. In some cases, the memory subsystem can be associated with the DDR bandwidth (BW) 1077 of FIG. 10.

[0180] In another example, the aggregator engine 1072 can query bus active clock frequency information from the DSP OS (e.g., client 1005 interface to the DSP OS, etc. ) .  The bus active clock frequency information can be associated with the bus clock 1078 of FIG. 10.

[0181] In another illustrative example, the aggregator engine 1072 can be configured to aggregate some (or all) of the resource information obtained from the DSP core 1076, DDR bandwidth or memory subsystem 1077, bus clock 1078, etc. and may transmit the aggregated information to the client 1005.

[0182] In some examples, the aggregator engine 1072 of the resource manager 1072 can transmit one or more votes to the client 1005. For instance, the aggregator engine 1072 can vote for requires DSP core 1076 MPPS. In another example, the aggregator engine 1072 can vote for required DDR / bus bandwidth 1077, etc.

[0183] FIG. 11 is a diagram illustrating an example of an adaptive scaling system 1100 including an adaptive scaling engine 1150, in accordance with some examples. In some aspects, the adaptive scaling system 1100 can be the same as or similar to the adaptive scaling system 700b of FIG. 7B. In some cases, the adaptive scaling engine 1150 can be the same as or similar to the adaptive scaling engine 750 of FIG. 7, 850 of FIG. 8A, 950 of FIG. 9, etc.

[0184] The adaptive scaling system 1100 can include an ECNS module timeline engine 1110 that may be the same as or similar to the module processing time calculation engine 760 of FIG. 7 and / or 960 of FIG. 9. In some examples, the adaptive scaling system 1100 can include a resource manager engine 1170 that is the same as or similar to the resource statistics engine 770 of FIG. 7, the resource manager engine 1070 of FIG. 10, and / or the aggregator engine 1072 of FIG. 10. In some cases, the adaptive scaling system 1100 can include a packet timeline engine 1120 that is the same as or similar to the packet timeline offset engine 780 of FIG. 7 and / or the packet timeline offset engine 880 of FIG. 8A.

[0185] In one illustrative example, the adaptive scaling system 1100, adaptive scaling engine 1150, and / or adaptive scaling engine 750 can be configured to implement a CPU and / or bus clock vote action module for providing dynamic clock scaling (e.g., increasing or decreasing in frequency) to adjust the processing time of the ECNS module 1110 of FIG. 11 and / or ECNS engine 710 of FIG. 7, etc. For instance, the adaptive scaling engine 1150 of FIG. 11, 750 of FIG. 7, etc., can perform CPU and bus clock voting action based on analyzing and monitoring the respective information queried by the adaptive scaling engine 1150 / 750 from the three reporting engines of the adaptive scaling system  1100 / 700b (e.g., the ECNS module process time engine 1110 / 760, the resource manager history engine 1170 / 770, and the packet timeline offset engine 1120 / 720) .

[0186] In some aspects, during voice call setup, the adaptive scaling system 100 can start up or initialize the ECNS module processing timeline engine 1110, the resource manager engine 1170, the packet timeline offset engine 1120, and the adaptive scaling engine 1150. A respective module service can be set up for each of the four modules 1110, 1170, 1120, and 1150 (e.g., to monitor the voice call setup and voice call maintenance) .

[0187] A maximum CPU clock and / or a maximum bus clock threshold value can be configured as needed for the ECNS 1110 initialization stage (e.g., based on the ECNS initialization stage being more computationally intensive, and potentially requiring more CPU resources, modules, memory, clock speeds, bandwidth, etc. ) .

[0188] The adaptive scaling engine 1150 can be set in an IDLE stage for power saving. During each subsequent voice frame processing iteration, the adaptive scaling engine 1150 can receive one or more respective interrupts indicative of the packet timeline offset being out of a configured threshold range (e.g., interrupt 785 of FIG. 7) or indicative of the module processing time being out of a configured threshold range (e.g., interrupt 765 of FIG. 7) . The process of querying the packet timeline offset against a configured threshold range, and waiting for a corresponding interrupt indicating out of range, can be performed based on the adaptive scaling engine 1150 querying the packet timeline offset engine 1120 and receiving a packet timeline interrupt or trigger if out of range. The process of querying the module calculation time against a configured threshold range, and waiting for a corresponding interrupt indicating out of range, can be performed based on the adaptive scaling engine 1150 querying the ECNS module processing timeline engine 1110 and receiving a module process time interrupt or trigger if out of range.

[0189] The queries from the adaptive scaling engine to one or more (or all) of the respective monitoring and reporting engines 1110, 1170, and / or 1120 can be performed or triggered for each frame of a plurality of audio voice frames processed by the adaptive scaling system 1100 for a voice call.

[0190] Based on receiving one or more interrupts from the monitoring and reporting engines 1110, 1170, and / or 1120, the adaptive scaling engine 1150 can be configured to read the value reported in the respective interrupt indicative of the out of range packet time offset value, the out of range module processing time value, and / or the out of range  resource statistics value (s) , respectively. The adaptive scaling engine 1150 can be configured to perform CPU and / or bus clock voting based on analyzing the reported out of range monitored values from the respective interrupts or triggers from the monitoring and reporting engines 1110, 1170, 1120.

[0191] For instance, if the processing of the audio frame (e.g., voice frame VFR) is too fast or being performed too quickly (e.g., the Tx voice packet is delivered to the modem or network far ahead of the delivery deadline for the packet) , the adaptive scaling engine 1150 can be configured to perform CPU and / or bus clock voting to lower the DSP core clock (e.g., based on a corresponding CPU vote by the adaptive scaling engine 1150) and / or to lower the DDR / bus bandwidth (e.g., also referred to as the DDR or memory clock; and based on a corresponding bus clock vote by the adaptive scaling engine 1150) . Voting to lower the DSP core clock and / or to lower the DDR / bus bandwidth (e.g., DDR clock) can save power by reducing the power consumption of the voice call processing system in processing the current voice frame, and can correspond to a Tx voice packet delivery time that is closer to the delivery deadline expected by the modem and / or the network.

[0192] If the processing of an audio frame (e.g., voice frame VFR) is too slow or being performed too slowly (e.g., the Tx voice packet is delivered late to the modem or network, after the delivery deadline for the packet) , the adaptive scaling engine 1150 can be configured to perform CPU and / or bus clock voting to increase the DSP core close and / or to increase the DDR / bus bandwidth (e.g., increase the DDR or memory clock) . Increasing the DSP core clock and / or DDR / bus bandwidth can improve performance of the voice call processing and can correspond to generating a Tx voice packet with a delivery time that is the same as or ahead of the delivery deadline expected by the modem and / or the network.

[0193] For instance, the adaptive scaling engine 1150 can be triggered to perform an adaptive clock scaling cycle or iteration for the currently processed voice frame, where the trigger is received by the adaptive scaling engine 1150 from an external audio signal processing module (e.g., such as the ECNS module 710 of FIG. 7, etc. ) and / or is received from an external module such as the packet timeline offset engine 1120, etc. In some aspects, the adaptive scaling engine 1150 may be triggered by an external module (e.g., ECNS engine 710, packet timeline offset engine 1120) at the voice call setup stage.

[0194] The adaptive scaling engine 1150 can receive as input voice frame timeline information from the ECNS engine 710 and / or the ECNS module processing timeline engine 1110 and / or the packet timeline offset engine 1120, as described previously above. The adaptive scaling engine 1150 can receive as input DSP MPPS information, DDR / bus bandwidth information and / or cache miss rate information and / or pCPP statistics information from the resource manager engine 1170.

[0195] For each triggering cycle of the adaptive scaling system 1100 and adaptive scaling engine 1150 (e.g., for each voice frame of a plurality of voice frames processed for a voice call) , the adaptive scaling engine 1150 can determine at block 1152 whether the currently analyzed voice packet is delivered on time. For instance, the adaptive scaling engine 1150 can use the packet timeline offset engine 1120 to determine whether the most recently processed voice packet was delivered to the modem or network on time (e.g., at or ahead of the Tx voice packet delivery deadline) .

[0196] If the voice packet was delivered on time, the adaptive scaling process of adaptive scaling engine 1150 can proceed to block 1154, which checks whether the ECNS module processing time (e.g., obtained from ECNS module processing timeline engine 1110) is too fast (e.g., packet delivered on time, but delivered too far ahead of the delivery deadline) . If the processing time was too fast, the adaptive scaling engine 1150 proceeds to block 1158. If the processing time was not too fast, the packet was delivered normally (e.g., on time or only slightly ahead of the delivery deadline) , and the adaptive scaling engine 1150 proceeds to block 1156.

[0197] In some aspects, if the packet is delivered on time (e.g., ‘Yes’ at block 1152) , and if the ECNS processing was too fast (e.g., ‘Fast’ at block 1154) , then the adaptive scaling engine 1150 can generate a clock voting message configured to reduce (e.g., lower) one or more (or both) of the CPU clock and / or the memory bandwidth (e.g., DDR clock) for the next voice frame that is to be processed.

[0198] In some aspects, at both blocks 1158 and 1156 (e.g., corresponding to an on-time packet, and processing too fast or normal, respectively) the adaptive scaling engine 1150 can subsequently analyze the pCPP or other CPU resource usage information or metrics obtained from the resource manager engine 1170, to determine a clock voting message configured to implement corresponding dynamic adaptive clock scaling for the next or future voice frames that are to be processed.

[0199] For instance, the resource metric analysis of block 1158 and 1156 can determine whether the last delivered frame was associated with resource or pCPP metric value that are relatively large, that are normal, or that are relatively small.

[0200] In one illustrative example, from block 1158 (e.g., reached in examples where the packet is delivered on time (e.g., ‘Yes’ at block 1152) and the ECNS processing was too fast (e.g., ‘Fast’ at block 1154) ) , the adaptive scaling engine 1150 can implement corresponding CPU and / or DDR clock votes based on the large, normal, or small resource / pCPP metrics analysis.

[0201] For instance, if at block 1158 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are relatively large, the corresponding clock voting output 1190-3 can be generated by the adaptive scaling engine 1150 for ‘Case #3’ to reduce the DSP core clock (e.g., reduce the CPU clock) .

[0202] If at block 1158 the adapotive scaling engine 1150 determines that the CPU resource / pCPP metrics values are normal, the corresponding clock voting output 1190-2 can be generated by the adaptive scaling engine 1150 for ‘Case #2’ to reduce the DSP core clock (e.g., CPU clock) and to reduce the memory bandwidth (e.g., DDR, memory, or bus clock) .

[0203] If at block 1158 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are relatively small, the corresponding clock voting output 1190-1 can be generated by the adaptive scaling engine 1150 for ‘Case #1’ to reduce the memory bandwidth (e.g., DDR, memory, or bus clock) .

[0204] In another illustrative example, from block 1156 (e.g., reached in examples the packet is delivered on time (e.g., ‘Yes’ at block 1152) and the ECNS processing was normal / not too fast (e.g., ‘Normal’ at block 1154) ) , the adaptive scaling engine 1150 can implement corresponding CPU and or memory / bus clock votes based on the large, normal, or small resource / pCPP metrics analysis outcomes available from block 1156.

[0205] For instance, if at block 1156 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are relatively small, the corresponding clock voting output 1190-1 may also be generated by the adaptive scaling engine 1150 for ‘Case #4’ to reduce the memory bandwidth (e.g., DDR, memory, or bus clock) . The Case #1 and  Case #4 clock voting output can be the same from blocks 1158 and 1156 (e.g., both share the voting output 1190-1 of FIG. 11) .

[0206] If at block 1156 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are normal, the corresponding clock voting output 1190-5 can be generated by the adaptive scaling engine 1150 for the steady state or stable ‘Case #5’ Good state, where no adjustments need to be made for future voice frames that are to be processed for the voice call.

[0207] If at block 1156 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are relatively large, the corresponding clock voting output 1190-6 can be generated by the adaptive scaling engine 1150 for ‘Case #6’ to increase the memory bandwidth (e.g., DDR, memory, or bus clock) .

[0208] If at block 1152, the adaptive scaling engine 1150 determines that the most recent voice frame or Tx voice packet was not delivered on time, the process can proceed to block 1153 to determine whether the ECNS or other audio signal processing module processing time was too slow.

[0209] Based on determining that the packet was not delivered on time (e.g., ‘No’ at block 1152) and that ECNS processing was too slow (e.g., ‘Yes’ at block 1153) , the adaptive scaling engine 1150 can determine a corresponding clock voting output based on analyzing the CPU resource / pCPP metrics at block 1157, which may be the same as or similar to block 1158 and / or block 1156.

[0210] For instance, if at block 1157 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are relatively large, the corresponding clock voting output 1190-9 can be generated by the adaptive scaling engine 1150 for ‘Case #9’ to increase the memory bandwidth (e.g., DDR, memory, or bus clock) .

[0211] If at block 1157 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are normal, the corresponding clock voting output 1190-8 can be generated by the adaptive scaling engine 1150 for ‘Case #8’ to increase the CPU clock (e.g., DSP core clock) and to increase the memory bandwidth (e.g., DDR, memory, or bus clock) .

[0212] If at block 1157 the adaptive scaling engine 1150 determines that the CPU resource / pCPP metrics values are relatively small, the corresponding clock voting output  1190-7 can be generated by the adaptive scaling engine 1150 for ‘Case #7’ to increase the CPU clock (e.g., DSP core clock) .

[0213] In one illustrative example, from block 1157 (e.g., packet not delivered on time and ECNS processing time too slow) , if the pCPP is high the adaptive scaling engine 1150 can be configured to increase the memory bandwidth by increasing the memory / DDR / bus clock using the clock voting output 1190-9. If the pCPP is not high (e.g., normal or small) , the adaptive scaling engine 1150 can be configured to increase the CPU clock (e.g., DSP core clock) using the clock voting output 1190-8 or 1190-7.

[0214] In some aspects, the CPU clock can be increased based on new_CPU_clock =(old_CPU_clock * (processing time / 10ms) ) . For instance, the adaptive scaling engine 1150 can increase or decrease the CPU clock (e.g., DSP core clock speed or frequency) using linear scaling of the previous CPU clock, with the linear scaling factor based on the ECNS processing time. For example, the value (processing time / 10ms) grows larger for longer (e.g., larger) ECNS processing times, and a greater CPU clock linear scaling factor is applied to boost the DSP core clock frequency for greater ECNS processing times observed for the prior voice frame (s) that are processed.

[0215] In some cases, the adaptive scaling engine 1150 can output the respective clock voting configurations 1190-1, …, 1190-9 based on calling one or more resource manager engine 1170 APIs for voting for adjusted MPPS and memory bandwidth. In some examples, the adaptive scaling system 1100 can be triggered for every frame of voice call data that is processed, with the steady or stable state ‘Good’ state 1190-5 reached through successive iterations or cycles of the adaptive CPU and / or memory bandwidth clock scaling associated with the remaining clock voting output configurations 1190-1, …, 1190-4 and 1190-6, …, 1190-9.

[0216] FIG. 12 is a table 1200 illustrating example CPU and / or bus bandwidth adjustments that may be implemented by an adaptive scaling engine, in accordance with some examples. For instance, the first column of table 1200 ‘Case#’ can correspond to the different voting output configurations 1190-1, …, 1190-9 of FIG. 11. The second column of table 1200 ‘Packet on time? ’ can correspond to the determination at block 1152 of FIG. 11. The third column of table 1200 ‘ECNS processing time’ can correspond to blocks 1154 and 1153 of FIG. 11. The fourth column of table 1200 ‘pCPP’ can correspond to the determinations made at blocks 1158, 1156, 1157 of FIG. 11. The fifth column of  table 1200 ‘Action’ can correspond to the different voting output configurations 1190-1, …, 1190-9 of FIG. 11.

[0217] In some aspects, the adaptive scaling strategy of FIG. 12 can be implemented by the adaptive scaling engine 1150 of FIG. 11 and / or 750 of FIG. 7, etc., to reduce, minimize, or avoid fluctuations in CPU clock and memory bandwidth (e.g., DDR clock) that may correspond to frequent adjustments. For instance, in one illustrative example, the adaptive scaling engine 1150 of FIG. 11 and / or 750 of FIG. 7, etc., can be configured to implement static or fixed clock scaling (e.g., increase or decrease in CPU clock, DDR clock / BW, or both) that is limited to a configured maximum percentage of the total MPPS / BW as the adjustment unit per iteration of the adaptive scaling system 1100.

[0218] For instance, where the example described above uses a clock scaling adjustment that is based on the ECNS processing time / 10ms (or other fixed time value) , the adaptive scaling actions depicted in table 1200 of FIG. 12 may use a fixed, static clock scaling adjustment that is limited to be no greater than a configured (e.g., pre-determined) threshold percentage of the total CPU clock or memory bandwidth prior to the adjustment. For instance, the adaptive scaling engine 1150 can be configured to use 10%of the total MPPS / BW as the maximum clock scaling adjustment unit per voting output 1190-1, …, 1190-9 of the adaptive scaling engine 1150. In some aspects, with a 20ms voice frame duration (e.g., TVFR = 20ms) , ECNS processing time may be expected to be within the range of approximately 8ms –15ms, and pCPP may be expected to be within the range of approximately 2–4.

[0219] FIG. 13 is a flowchart diagram illustrating an example of a process 1300 for wireless communications. The process 1300 may be performed by a UE (e.g., a mobile device such as a mobile phone, a network-connected wearable such as a watch, an extended reality device such as a virtual reality (VR) device or augmented reality (AR) device, a vehicle or component or system of a vehicle, or other type of UE) or other type of network entity. The process 1300 may be performed by a component or system (e.g., a chipset) of the UE or other type of network entity. In some examples, the UE can be the same as or similar to one or more of the UEs of any of FIG. 1, FIG. 2, FIG. 3, FIG. 4, FIG. 5, etc. The operations of the process 1300 may be implemented as software components that are executed and run on one or more processors (e.g., processor 1410 of FIG. 14 or other processor (s) ) . Further, the transmission and reception of signals by the  wireless communications device in the process 1300 may be enabled, for example, by one or more antennas and / or one or more transceivers (e.g., antenna (s) and / or wireless transceiver (s) of any of FIG. 2, FIG. 4, FIG. 5, etc. ) .

[0220] At block 1302, the process 1300 includes obtaining an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call. In some examples, the process 1300 can be performed by a user computing device or UE such as the user computing device 407 of FIG. 4. In some aspects, the user computing device can be an apparatus used to implement the process 1300. In some examples, the apparatus further includes a microphone configured to obtain the audio frame. For instance, the microphone can be included in the one or more input devices 472 of FIG. 4, etc. In some cases, the process 1300 can be implemented using the communication device 502 of FIG. 5 and the audio frame can be obtained using one or more of the first microphone 504a, …, 504n of FIG. 5. In some cases, the apparatus used to implement process 1300 can further comprise one or more microphones configured to capture audio data associated with the voice call, wherein the audio data includes the audio frame. In some examples, one or more of the processing time or the processor resource utilization is associated with the one or more processors.

[0221] In some aspects, the microphone and / or the one or more microphones can be the same as or similar to the microphone 702 of FIG. 7. In some cases, the audio frame can be the same as or similar to the audio frame input 706 of FIG. 7. In some aspects, the audio frame can be the same as or similar to the 1st VFR 610-1 of FIG. 6A and the corresponding packet delivery time can be the same as or similar to the frame delivery time 620-2 of FIG. 6A. In some cases, the audio frame can be the same as or similar to the 1st VFR 650-1 and the corresponding packet delivery time can be the same as or similar to the frame delivered time 660-2 of FIG. 6B, etc.

[0222] At block 1304, the process 1300 includes processing the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame. For instance, the voice call signal processing engine can comprise an echo cancellation noise suppression (ECNS) engine included in a voice call processing system of the apparatus. In some cases, the voice call signal processing engine comprises a deep learning machine learning network or a neural network configured to perform echo  cancellation noise suppression (ECNS) voice processing. For instance, the voice call signal processing engine can be the same as or similar to the ECNS engine 506 of FIG. 5, the ECNS engine 710 of FIG. 7, the ECNS engine 910 of FIG. 9, etc.

[0223] At block 1306, the process 1300 includes determining a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine. In some examples, the processing time can be determined using the module process time calculation engine 760 of FIG. 7 and / or the module process time calculation engine 960 of FIG. 9, etc.

[0224] For instance, the processing time associated with the processed audio frame can comprise an echo cancellation noise suppression (ECNS) processing time of an ECNS engine, such as one or more of the ECNS engine 506 of FIG. 5, the ECNS engine 710 of FIG. 7, the ECNS engine 910 of FIG. 9, etc. In some cases, to determine the processing time associated with the processed audio frame, the one or more processors are configured to use a module process time engine associated with one or more voice signal processing engines including the voice call signal processing engine, such as the module process time calculation engine 760 of FIG. 7 and / or the module process time calculation engine 960 of FIG. 9, etc.

[0225] In some examples, to determine the processing time, the one or more processors are configured to: receive information indicative of a real-time processing time of the voice call signal processing engine to generate the processed audio frame, and to compare, using the module process time engine, the real-time processing time to a first configured threshold value for the voice call signal processing engine and a second configured threshold value for the voice call signal processing engine. For instance, the real-time processing time can be the same as or similar to the processing time associated with ECNS module 910 of FIG. 9 and used for the comparison 966 of the module process time calculation engine 960 of FIG. 9. In some cases, the first configured threshold value and the second configured threshold value can be the same as or similar to one or more (or both) of the thresholds Tmin and / or Tmax of the comparison 966 of FIG. 9. In some cases, the module process time engine can be configured to transmit an exception interrupt to the adaptive scaling engine indicative of a determination that the real-time processing time is less than the first configured threshold value or greater than the second configured  threshold value. For instance, the exception interrupt can be the same as or similar to the interrupt 965 of FIG. 9, transmitted to the adaptive scaling engine 950 of FIG. 9, etc.

[0226] In some cases, to determine the processor resource utilization information, the one or more processors are configured to query a digital signal processor (DSP) interface of the apparatus to obtain one or more of DSP core frequency information or DSP load information. For instance, the processor resource utilization information can be obtained based on the query 752 to the resource statistics engine 770 of FIG. 7. In some examples, the processor resource utilization information can be obtained using the resource manager 1070 of FIG. 10, which can be configured to query a DSP interface including one or more of the DSP core 1076, the DDR BW 1077, and / or the bus clock 1078 of FIG. 10. In some cases, the DSP core frequency information can be obtained from the DSP core 1076 of FIG. 10. In some cases, the processor resource utilization information can be obtained based on querying a memory sub-system of the apparatus to obtain one or more of a voted memory bandwidth value or a real-time memory clock frequency. For instance, the memory sub-system can be associated with the DDR BW 1077 of FIG. 10, etc. In some examples, the processor resource utilization information can be obtained based on querying the DSP interface to obtain bus active clock frequency information, the same as or similar to the bus active clock frequency information associated with the bus clock 1078 of FIG. 10, etc.

[0227] In some examples, the DSP load information comprises one or more of millions of clocks per second (MCPS) information or millions of packets per second (MPPS) information. In some cases, the processor resource utilization information further includes memory cache miss rate information. In some cases, the process 1300 further includes receiving, from a resource utilization engine associated with the voice call signal processing engine, aggregated processor resource utilization information indicative of the DSP core frequency information, the DSP load information, the real-time memory clock frequency, and the bus active clock frequency information. For instance, the resource utilization engine can be the same as or similar to one or more of the resource manager 760 of FIG. 7 and / or the resource manager 1070 of FIG. 10, etc. In some cases, the process 1300 further includes generating, based on the aggregated processor resource utilization information, one or more of voting information indicative of one or more of a DSP core millions of packets per second (MPPS) value or a memory bus bandwidth value. For  instance, the voting information can be the same as or similar to the voting information 1074 of FIG. 10, etc.

[0228] At block 1308, the process 1300 includes determining a delivered time of the processed audio frame to a modem of the apparatus, wherein the modem transmits the processed audio frame in association with the voice call. In some cases, the delivered time is based on packet arriving timeline information corresponding to the processed audio frame. In some examples, the packet arriving timeline information is obtained from a packet timeline offset engine associated with delivery of the processed audio frame to the modem. For instance, the packet timeline offset engine can be the same as or similar to the packet timeline offset engine 780 of FIG. 7, and / or the packet timeline offset engine 880 of FIG. 8A, etc. The packet delivery can be associated with delivery of one or more of the packets 833 and / or the packet delivery engine 830 of FIG. 8A, etc.

[0229] In some cases, the delivered time is based on a calculated total path delay associated with the processed audio frame. For example, the total path delay can be the same as or similar to the TpathDelay of FIG. 8A. In some cases, the packet arriving timeline information can be the same as or similar to the packet timeline information 800b of FIG. 8B.In some cases, the total path delay can be the same as or similar to the path delay 842 of FIG. 8B. In some examples, the calculated total path delay is based on aggregate processor load voting information associated with a processor clock used to generate the processed audio frame by the voice call signal processing engine. In some cases, the one or more processors are configured to determine, using the packet timeline offset engine, the calculated total path delay and compare, using the packet timeline offset engine, the calculated total path delay with a configured upper packet timeline offset threshold. For instance, the comparison can be the same as or similar to the comparison 815, 817-1 and / or 817-2 of the packet timeline offset engine 880 of FIG. 8A, etc. In some cases, the process 1300 can include transmitting an exception interrupt to the adaptive scaling engine indicative of a determination that the calculated total path delay for the processed audio frame is greater than the configured upper packet timeline offset threshold. For instance, the exception interrupt can be the same as or similar to the interrupt 885 of FIG. 8A and the adaptive scaling engine can be the same as or similar to the adaptive scaling engine 850 of FIG. 8A, etc.

[0230] At block 1310, the process 1300 includes analyzing, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine. For instance, the adaptive scaling engine can be the same as or similar to the adaptive scaling system 700b of FIG. 7, the adaptive scaling engine 750 of FIG. 7, the adaptive scaling engine 850 of FIG. 8A, the adaptive scaling engine 950 of FIG. 9, the adaptive scaling system 1100 of FIG. 11, the adaptive scaling engine 1150 of FIG. 11, etc.

[0231] In some examples, the one or more processors are configured to determine the corresponding clock scaling adjustment as one or more of the clock scaling adjustments 1190-1, …, 1190-9 of FIG. 11. For instance, the one or more processors can be configured to determine the corresponding clock scaling adjustment to decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is greater than the second configured threshold value. In some cases, the one or more processors are configured to increase one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is less than the first configured threshold value.

[0232] In some cases, the one or more processors are configured to determine the corresponding clock scaling adjustment to increase one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a first exception interrupt indicative of the delivered time being later than the corresponding packet delivery time by more than a configured amount. In some cases, the one or more processors are configured to determine the corresponding clock scaling adjustment to decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a second exception interrupt indicative of the delivered time being earlier than the corresponding packet delivery time by more than the configured amount.

[0233] In some examples, the one or more processors are configured to determine the corresponding clock scaling adjustment to increase the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive  scaling engine that the processor resource utilization information is relatively large. In some cases, the one or more processors are configured to determine the corresponding clock scaling adjustment to reduce the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively small.

[0234] At block 1312, the process 1300 includes processing a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0235] In some cases, the computing device or apparatus may include various components, such as one or more input devices, one or more output devices, one or more processors, one or more microprocessors, one or more microcomputers, one or more cameras, one or more sensors, and / or other component (s) that are configured to carry out the steps of processes described herein. In some examples, the computing device may include a display, one or more network interfaces configured to communicate and / or receive the data, any combination thereof, and / or other component (s) . The one or more network interfaces may be configured to communicate and / or receive wired and / or wireless data, including data according to the 3G, 4G, 5G, and / or other cellular standard, data according to the WiFi (802.11x) standards, data according to the BluetoothTM standard, data according to the Internet Protocol (IP) standard, and / or other types of data.

[0236] The components of the computing device may be implemented in circuitry. For example, the components may include and / or may be implemented using electronic circuits or other electronic hardware, which may include one or more programmable electronic circuits (e.g., microprocessors, graphics processing units (GPUs) , digital signal processors (DSPs) , central processing units (CPUs) , and / or other suitable electronic circuits) , and / or may include and / or be implemented using computer software, firmware, or any combination thereof, to perform the various operations described herein.

[0237] The process 1300 is illustrated as a logical flow diagram, the operation of which represents a sequence of operations that may be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines,  programs, objects, components, data structures, and the like that perform particular functions or implement particular data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and / or in parallel to implement the processes.

[0238] Additionally, the process 1300 and / or other process described herein, may be performed under the control of one or more computer systems configured with executable instructions and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) executing collectively on one or more processors, by hardware, or combinations thereof. As noted above, the code may be stored on a computer-readable or machine-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The computer-readable or machine-readable storage medium may be non-transitory.

[0239] FIG. 14 is a diagram illustrating an example of a system for implementing certain aspects of the present technology. In particular, FIG. 14 illustrates an example of computing system 1400, which may be for example any computing device making up internal computing system, a remote computing system, a camera, or any component thereof in which the components of the system are in communication with each other using connection 1405. Connection 1405 may be a physical connection using a bus, or a direct connection into processor 1410, such as in a chipset architecture. Connection 1405 may also be a virtual connection, networked connection, or logical connection.

[0240] In some aspects, computing system 1400 is a distributed system in which the functions described in this disclosure may be distributed within a datacenter, multiple data centers, a peer network, etc. In some aspects, one or more of the described system components represents many such components each performing some or all of the function for which the component is described. In some aspects, the components may be physical or virtual devices.

[0241] Example system 1400 includes at least one processing unit (CPU or processor) 1410 and connection 1405 that communicatively couples various system components including system memory 1415, such as read-only memory (ROM) 1420 and random access memory (RAM) 1425 to processor 1410. Computing system 1400 may include a  cache 1415 of high-speed memory connected directly with, in close proximity to, or integrated as part of processor 1410.

[0242] Processor 1410 may include any general-purpose processor and a hardware service or software service, such as services 1432, 1434, and 1436 stored in storage device 1430, configured to control processor 1410 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. Processor 1410 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.

[0243] To enable user interaction, computing system 1400 includes an input device 1445, which may represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech, etc. Computing system 1400 may also include output device 1435, which may be one or more of a number of output mechanisms. In some instances, multimodal systems may enable a user to provide multiple types of input / output to communicate with computing system 1400.

[0244] Computing system 1400 may include communications interface 1440, which may generally govern and manage the user input and system output. The communication interface may perform or facilitate receipt and / or transmission wired or wireless communications using wired and / or wireless transceivers, including those making use of an audio jack / plug, a microphone jack / plug, a universal serial bus (USB) port / plug, an AppleTM LightningTM port / plug, an Ethernet port / plug, a fiber optic port / plug, a proprietary wired port / plug, 3G, 4G, 5G and / or other cellular data network wireless signal transfer, a BluetoothTM wireless signal transfer, a BluetoothTM low energy (BLE) wireless signal transfer, an IBEACONTM wireless signal transfer, a radio-frequency identification (RFID) wireless signal transfer, near-field communications (NFC) wireless signal transfer, dedicated short range communication (DSRC) wireless signal transfer, 802.11 Wi-Fi wireless signal transfer, wireless local area network (WLAN) signal transfer, Visible Light Communication (VLC) , Worldwide Interoperability for Microwave Access (WiMAX) , Infrared (IR) communication wireless signal transfer, Public Switched Telephone Network (PSTN) signal transfer, Integrated Services Digital Network (ISDN) signal transfer, ad-hoc network signal transfer, radio wave signal transfer, microwave  signal transfer, infrared signal transfer, visible light signal transfer, ultraviolet light signal transfer, wireless signal transfer along the electromagnetic spectrum, or some combination thereof. The communications interface 1440 may also include one or more Global Navigation Satellite System (GNSS) receivers or transceivers that are used to determine a location of the computing system 1400 based on receipt of one or more signals from one or more satellites associated with one or more GNSS systems. GNSS systems include, but are not limited to, the US-based Global Positioning System (GPS) , the Russia-based Global Navigation Satellite System (GLONASS) , the China-based BeiDou Navigation Satellite System (BDS) , and the Europe-based Galileo GNSS. There is no restriction on operating on any particular hardware arrangement, and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.

[0245] Storage device 1430 may be a non-volatile and / or non-transitory and / or computer-readable memory device and may be a hard disk or other types of computer readable media which may store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, a floppy disk, a flexible disk, a hard disk, magnetic tape, a magnetic strip / stripe, any other magnetic storage medium, flash memory, memristor memory, any other solid-state memory, a compact disc read only memory (CD-ROM) optical disc, a rewritable compact disc (CD) optical disc, digital video disk (DVD) optical disc, a blu-ray disc (BDD) optical disc, a holographic optical disk, another optical medium, a secure digital (SD) card, a micro secure digital (microSD) card, a Memory  card, a smartcard chip, a EMV chip, a subscriber identity module (SIM) card, a mini / micro / nano / pico SIM card, another integrated circuit (IC) chip / card, random access memory (RAM) , static RAM (SRAM) , dynamic RAM (DRAM) , read-only memory (ROM) , programmable read-only memory (PROM) , erasable programmable read-only memory (EPROM) , electrically erasable programmable read-only memory (EEPROM) , flash EPROM (FLASHEPROM) , cache memory (e.g., Level 1 (L1) cache, Level 2 (L2) cache, Level 3 (L3) cache, Level 4 (L4) cache, Level 5 (L5) cache, or other (L#) cache) , resistive random-access memory (RRAM / ReRAM) , phase change memory (PCM) , spin transfer torque RAM (STT-RAM) , another memory chip or cartridge, and / or a combination thereof.

[0246] The storage device 1430 may include software services, servers, services, etc., that when the code that defines such software is executed by the processor 1410, it causes the system to perform a function. In some aspects, a hardware service that performs a particular function may include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor 1410, connection 1405, output device 1435, etc., to carry out the function. The term “computer-readable medium” includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other mediums capable of storing, containing, or carrying instruction (s) and / or data. A computer-readable medium may include a non-transitory medium in which data may be stored and that does not include carrier waves and / or transitory electronic signals propagating wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as compact disk (CD) or digital versatile disk (DVD) , flash memory, memory or memory devices. A computer-readable medium may have stored thereon code and / or machine-executable instructions that may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, or the like.

[0247] Specific details are provided in the description above to provide a thorough understanding of the aspects and examples provided herein, but those skilled in the art will recognize that the application is not limited thereto. Thus, while illustrative aspects of the application have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art. Various features and aspects of the above-described application may be used individually or jointly. Further, aspects may be utilized in any number of environments and applications beyond those described herein without departing from the broader scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive. For the purposes of illustration, methods  were described in a particular order. It should be appreciated that in alternate aspects, the methods may be performed in a different order than that described.

[0248] For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. Additional components may be used other than those shown in the figures and / or described herein. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order not to obscure the aspects in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the aspects.

[0249] Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software 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, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.

[0250] Individual aspects may be described above as a process or method which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in a figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.

[0251] Processes and methods according to the above-described examples may be implemented using computer-executable instructions that are stored or otherwise available from computer-readable media. Such instructions may include, for example, instructions and data which cause or otherwise configure a general purpose computer, special purpose computer, or a processing device to perform a certain function or group of functions. Portions of computer resources used may be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, source code. Examples of computer-readable media that may be used to store instructions, information used, and / or information created during methods according to described examples include magnetic or optical disks, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on.

[0252] In some aspects the computer-readable storage devices, mediums, and memories may include a cable or wireless signal containing a bitstream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.

[0253] Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof, in some cases depending in part on the particular application, in part on the desired design, in part on the corresponding technology, etc.

[0254] The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed using hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof, and may take any of a variety of form factors. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer-program product) may be stored in a computer-readable or machine-readable medium. A processor (s) may perform the necessary tasks. Examples of form factors include laptops, smart phones, mobile phones, tablet devices or other small form factor personal computers, personal digital  assistants, rackmount devices, standalone devices, and so on. Functionality described herein also may be embodied in peripherals or add-in cards. Such functionality may also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example.

[0255] The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are example means for providing the functions described in the disclosure.

[0256] The techniques described herein may also be implemented in electronic hardware, computer software, firmware, or any combination thereof. Such techniques may be implemented in any of a variety of devices such as general purposes computers, wireless communication device handsets, or integrated circuit devices having multiple uses including application in wireless communication device handsets and other devices. Any features described as modules or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a computer-readable data storage medium comprising program code including instructions that, when executed, performs one or more of the methods, algorithms, and / or operations described above. The computer-readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may comprise memory or data storage media, such as random access memory (RAM) such as synchronous dynamic random access memory (SDRAM) , read-only memory (ROM) , non-volatile random access memory (NVRAM) , electrically erasable programmable read-only memory (EEPROM) , FLASH memory, magnetic or optical data storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that may be accessed, read, and / or executed by a computer, such as propagated signals or waves.

[0257] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs) , general purpose microprocessors, an application specific integrated circuits (ASICs) , field programmable logic arrays (FPGAs) , or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure.  A general-purpose processor may be a microprocessor; but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Accordingly, the term “processor, ” as used herein may refer to any of the foregoing structure, any combination of the foregoing structure, or any other structure or apparatus suitable for implementation of the techniques described herein.

[0258] One of ordinary skill will appreciate that the less than ( “<” ) and greater than ( “>” ) symbols or terminology used herein may be replaced with less than or equal to ( “≤” ) and greater than or equal to ( “≥” ) symbols, respectively, without departing from the scope of this description.

[0259] Where components are described as being “configured to” perform certain operations, such configuration may be accomplished, for example, by designing electronic circuits or other hardware to perform the operation, by programming programmable electronic circuits (e.g., microprocessors, or other suitable electronic circuits) to perform the operation, or any combination thereof.

[0260] The phrase “coupled to” or “communicatively coupled to” refers to any component that is physically connected to another component either directly or indirectly, and / or any component that is in communication with another component (e.g., connected to the other component over a wired or wireless connection, and / or other suitable communication interface) either directly or indirectly.

[0261] Claim language or other language reciting “at least one of” a set and / or “one or more” of a set indicates that one member of the set or multiple members of the set (in any combination) satisfy the claim. For example, claim language reciting “at least one of A and B” or “at least one of A or B” means A, B, or A and B. In another example, claim language reciting “at least one of A, B, and C” or “at least one of A, B, or C” means A, B, C, or A and B, or A and C, or B and C, A and B and C, or any duplicate information or data (e.g., A and A, B and B, C and C, A and A and B, and so on) , or any other ordering, duplication, or combination of A, B, and C. The language “at least one of” a set and / or “one or more” of a set does not limit the set to the items listed in the set. For example, claim language reciting “at least one of A and B” or “at least one of A or B” may mean A,  B, or A and B, and may additionally include items not listed in the set of A and B. The phrases “at least one” and “one or more” are used interchangeably herein.

[0262] Claim language or other language reciting “at least one processor configured to, ” “at least one processor being configured to, ” “one or more processors configured to, ” “one or more processors being configured to, ” or the like indicates that one processor or multiple processors (in any combination) can perform the associated operation (s) . For example, claim language reciting “at least one processor configured to: X, Y, and Z” means a single processor can be used to perform operations X, Y, and Z; or that multiple processors are each tasked with a certain subset of operations X, Y, and Z such that together the multiple processors perform X, Y, and Z; or that a group of multiple processors work together to perform operations X, Y, and Z. In another example, claim language reciting “at least one processor configured to: X, Y, and Z” can mean that any single processor may only perform at least a subset of operations X, Y, and Z.

[0263] Where reference is made to one or more elements performing functions (e.g., steps of a method) , one element may perform all functions, or more than one element may collectively perform the functions. When more than one element collectively performs the functions, each function need not be performed by each of those elements (e.g., different functions may be performed by different elements) and / or each function need not be performed in whole by only one element (e.g., different elements may perform different sub-functions of a function) . Similarly, where reference is made to one or more elements configured to cause another element (e.g., an apparatus) to perform functions, one element may be configured to cause the other element to perform all functions, or more than one element may collectively be configured to cause the other element to perform the functions.

[0264] Where reference is made to an entity (e.g., any entity or device described herein) performing functions or being configured to perform functions (e.g., steps of a method) , the entity may be configured to cause one or more elements (individually or collectively) to perform the functions. The one or more components of the entity may include at least one memory, at least one processor, at least one communication interface, another component configured to perform one or more (or all) of the functions, and / or any combination thereof. Where reference to the entity performing functions, the entity may be configured to cause one component to perform all functions, or to cause more than one  component to collectively perform the functions. When the entity is configured to cause more than one component to collectively perform the functions, each function need not be performed by each of those components (e.g., different functions may be performed by different components) and / or each function need not be performed in whole by only one component (e.g., different components may perform different sub-functions of a function) .

[0265] Illustrative aspects of the disclosure include:

[0266] Aspect 1. An apparatus for processing audio data, the apparatus comprising: one or more memories configured to store the audio data; and one or more processors coupled to the one or more memories, the one or more processors being configured to: obtain an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call; process the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame; determine a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine; determine a delivered time of the processed audio frame to a modem of the apparatus, wherein the modem transmits the processed audio frame in association with the voice call; analyze, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine; and process a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0267] Aspect 2. The apparatus of Aspect 1, wherein the voice call signal processing engine comprises an echo cancellation noise suppression (ECNS) engine included in a voice call processing system of the apparatus.

[0268] Aspect 3. The apparatus of any of Aspects 1 to 2, wherein the voice call signal processing engine comprises a deep learning machine learning network or a neural network configured to perform echo cancellation noise suppression (ECNS) voice processing.

[0269] Aspect 4. The apparatus of any of Aspects 1 to 3, wherein the processing time associated with the processed audio frame comprises an echo cancellation noise suppression (ECNS) processing time of an ECNS engine.

[0270] Aspect 5. The apparatus of any of Aspects 1 to 4, wherein, to determine the processing time associated with the processed audio frame, the one or more processors are configured to use a module process time engine associated with one or more voice signal processing engines including the voice call signal processing engine.

[0271] Aspect 6. The apparatus of Aspect 5, wherein, to determine the processing time, the one or more processors are configured to: receive information indicative of a real-time processing time of the voice call signal processing engine to generate the processed audio frame; compare, using the module process time engine, the real-time processing time to a first configured threshold value for the voice call signal processing engine and a second configured threshold value for the voice call signal processing engine; and transmit an exception interrupt to the adaptive scaling engine indicative of a determination that the real-time processing time is less than the first configured threshold value or greater than the second configured threshold value.

[0272] Aspect 7. The apparatus of Aspect 6, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to: decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is greater than the second configured threshold value; or increase one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is less than the first configured threshold value.

[0273] Aspect 8. The apparatus of any of Aspects 1 to 7, wherein: the delivered time is based on packet arriving timeline information corresponding to the processed audio frame; and the packet arriving timeline information is obtained from a packet timeline offset engine associated with delivery of the processed audio frame to the modem.

[0274] Aspect 9. The apparatus of Aspect 8, wherein: the delivered time is based on a calculated total path delay associated with the processed audio frame; and the calculated total path delay is based on aggregate processor load voting information associated with  a processor clock used to generate the processed audio frame by the voice call signal processing engine.

[0275] Aspect 10. The apparatus of Aspect 9, wherein the one or more processors are configured to: determine, using the packet timeline offset engine, the calculated total path delay; compare, using the packet timeline offset engine, the calculated total path delay with a configured upper packet timeline offset threshold; and transmit an exception interrupt to the adaptive scaling engine indicative of a determination that the calculated total path delay for the processed audio frame is greater than the configured upper packet timeline offset threshold.

[0276] Aspect 11. The apparatus of any of Aspects 9 to 10, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to: increase one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a first exception interrupt indicative of the delivered time being later than the corresponding packet delivery time by more than a configured amount; or decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a second exception interrupt indicative of the delivered time being earlier than the corresponding packet delivery time by more than the configured amount.

[0277] Aspect 12. The apparatus of any of Aspects 1 to 11, wherein, to determine the processor resource utilization information, the one or more processors are configured to: query a digital signal processor (DSP) interface of the apparatus to obtain one or more of DSP core frequency information or DSP load information; query a memory sub-system of the apparatus to obtain one or more of a voted memory bandwidth value or a real-time memory clock frequency; or query the DSP interface to obtain bus active clock frequency information.

[0278] Aspect 13. The apparatus of Aspect 12, wherein: the DSP load information comprises one or more of millions of clocks per second (MCPS) information or millions of packets per second (MPPS) information; and the processor resource utilization information further includes memory cache miss rate information.

[0279] Aspect 14. The apparatus of any of Aspects 12 to 13, wherein the one or more processors are configured to: receive, from a resource utilization engine associated with the voice call signal processing engine, aggregated processor resource utilization  information indicative of the DSP core frequency information, the DSP load information, the real-time memory clock frequency, and the bus active clock frequency information; and generate, based on the aggregated processor resource utilization information, one or more of voting information indicative of one or more of a DSP core millions of packets per second (MPPS) value or a memory bus bandwidth value.

[0280] Aspect 15. The apparatus of any of Aspects 12 to 14, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to: increase the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively large; or reduce the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively small.

[0281] Aspect 16. The apparatus of any of Aspects 1 to 15, further comprising a microphone configured to obtain the audio frame.

[0282] Aspect 17. The apparatus of any of Aspects 1 to 16, further comprising: one or more microphones configured to capture audio data associated with the voice call, wherein the audio data includes the audio frame.

[0283] Aspect 18. The apparatus of any of Aspects 1 to 17, wherein one or more of the processing time or the processor resource utilization is associated with the one or more processors.

[0284] Aspect 19. A processor-implemented method for processing audio data, comprising: obtaining an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call; processing the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame; determining a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine; determining a delivered time of the processed audio frame to a modem, wherein the modem transmits the processed audio frame in association with the voice call; analyzing, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a  processor clock or a memory bandwidth associated with the voice call signal processing engine; and processing a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

[0285] Aspect 20. The processor-implemented method of Aspect 19, wherein the voice call signal processing engine comprises an echo cancellation noise suppression (ECNS) engine included in a voice call processing system.

[0286] Aspect 21. The processor-implemented method of any of Aspects 19 to 20, wherein the voice call signal processing engine comprises a deep learning machine learning network or a neural network configured to perform echo cancellation noise suppression (ECNS) voice processing.

[0287] Aspect 22. The processor-implemented method of any of Aspects 19 to 21, wherein the processing time associated with the processed audio frame comprises an echo cancellation noise suppression (ECNS) processing time of an ECNS engine.

[0288] Aspect 23. The processor-implemented method of any of Aspects 19 to 22, wherein determining the processing time associated with the processed audio frame, is based on using a module process time engine associated with one or more voice signal processing engines including the voice call signal processing engine.

[0289] Aspect 24. The processor-implemented method of Aspect 23, wherein determining the processing time comprises: receiving information indicative of a real-time processing time of the voice call signal processing engine to generate the processed audio frame; comparing, using the module process time engine, the real-time processing time to a first configured threshold value for the voice call signal processing engine and a second configured threshold value for the voice call signal processing engine; and transmitting an exception interrupt to the adaptive scaling engine indicative of a determination that the real-time processing time is less than the first configured threshold value or greater than the second configured threshold value.

[0290] Aspect 25. The processor-implemented method of Aspect 24, further comprising determining the corresponding clock scaling adjustment to: decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is greater than the second configured threshold value; or increase one or more of the processor clock  or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is less than the first configured threshold value.

[0291] Aspect 26. The processor-implemented method of any of Aspects 19 to 25, wherein: the delivered time is based on packet arriving timeline information corresponding to the processed audio frame; and the packet arriving timeline information is obtained from a packet timeline offset engine associated with delivery of the processed audio frame to the modem.

[0292] Aspect 27. The processor-implemented method of Aspect 26, wherein: the delivered time is based on a calculated total path delay associated with the processed audio frame; and the calculated total path delay is based on aggregate processor load voting information associated with a processor clock used to generate the processed audio frame by the voice call signal processing engine.

[0293] Aspect 28. The processor-implemented method of Aspect 27, further comprising: determining, using the packet timeline offset engine, the calculated total path delay; comparing, using the packet timeline offset engine, the calculated total path delay with a configured upper packet timeline offset threshold; and transmitting an exception interrupt to the adaptive scaling engine indicative of a determination that the calculated total path delay for the processed audio frame is greater than the configured upper packet timeline offset threshold.

[0294] Aspect 29. The processor-implemented method of any of Aspects 27 to 28, further comprising determining the corresponding clock scaling adjustment to: increase one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a first exception interrupt indicative of the delivered time being later than the corresponding packet delivery time by more than a configured amount; or decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a second exception interrupt indicative of the delivered time being earlier than the corresponding packet delivery time by more than the configured amount.

[0295] Aspect 30. The processor-implemented method of any of Aspects 19 to 29, wherein determining the processor resource utilization information comprises: querying a digital signal processor (DSP) interface to obtain one or more of DSP core frequency  information or DSP load information; querying a memory sub-system to obtain one or more of a voted memory bandwidth value or a real-time memory clock frequency; or querying the DSP interface to obtain bus active clock frequency information.

[0296] Aspect 31. The processor-implemented method of Aspect 30, wherein: the DSP load information comprises one or more of millions of clocks per second (MCPS) information or millions of packets per second (MPPS) information; and the processor resource utilization information further includes memory cache miss rate information.

[0297] Aspect 32. The processor-implemented method of any of Aspects 30 to 31, further comprising: receiving, from a resource utilization engine associated with the voice call signal processing engine, aggregated processor resource utilization information indicative of the DSP core frequency information, the DSP load information, the real-time memory clock frequency, and the bus active clock frequency information; and generating, based on the aggregated processor resource utilization information, one or more of voting information indicative of one or more of a DSP core millions of packets per second (MPPS) value or a memory bus bandwidth value.

[0298] Aspect 33. The processor-implemented method of any of Aspects 30 to 32, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to: increase the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively large; or reduce the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively small.

[0299] Aspect 34. A non-transitory computer-readable storage medium comprising instructions stored thereon which, when executed by at least one processor, causes the at least one processor to perform operations according to any of Aspects 1 to 18.

[0300] Aspect 35. A non-transitory computer-readable storage medium comprising instructions stored thereon which, when executed by at least one processor, causes the at least one processor to perform operations according to any of Aspects 19 to 33.

[0301] Aspect 36. An apparatus comprising one or more means for performing operations according to any of Aspects 1 to 18.

[0302] Aspect 37. An apparatus comprising one or more means for performing operations according to any of Aspects 19 to 33.

Claims

1.An apparatus for processing audio data, the apparatus comprising:one or more memories configured to store the audio data; andone or more processors coupled to the one or more memories, the one or more processors being configured to:obtain an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call;process the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame;determine a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine;determine a delivered time of the processed audio frame to a modem of the apparatus, wherein the modem transmits the processed audio frame in association with the voice call;analyze, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine; andprocess a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.2.The apparatus of claim 1, wherein the voice call signal processing engine comprises an echo cancellation noise suppression (ECNS) engine included in a voice call processing system of the apparatus.3.The apparatus of claim 1, wherein the voice call signal processing engine comprises a deep learning machine learning network or a neural network configured to perform echo cancellation noise suppression (ECNS) voice processing.4.The apparatus of claim 1, wherein the processing time associated with the processed audio frame comprises an echo cancellation noise suppression (ECNS) processing time of an ECNS engine.5.The apparatus of claim 1, wherein, to determine the processing time associated with the processed audio frame, the one or more processors are configured to use a module process time engine associated with one or more voice signal processing engines including the voice call signal processing engine.6.The apparatus of claim 5, wherein, to determine the processing time, the one or more processors are configured to:receive information indicative of a real-time processing time of the voice call signal processing engine to generate the processed audio frame;compare, using the module process time engine, the real-time processing time to a first configured threshold value for the voice call signal processing engine and a second configured threshold value for the voice call signal processing engine; andtransmit an exception interrupt to the adaptive scaling engine indicative of a determination that the real-time processing time is less than the first configured threshold value or greater than the second configured threshold value.7.The apparatus of claim 6, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to:decrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is greater than the second configured threshold value; orincrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on the exception interrupt indicating the real-time processing time is less than the first configured threshold value.8.The apparatus of claim 1, wherein:the delivered time is based on packet arriving timeline information corresponding to the processed audio frame; andthe packet arriving timeline information is obtained from a packet timeline offset engine associated with delivery of the processed audio frame to the modem.9.The apparatus of claim 8, wherein:the delivered time is based on a calculated total path delay associated with the processed audio frame; andthe calculated total path delay is based on aggregate processor load voting information associated with a processor clock used to generate the processed audio frame by the voice call signal processing engine.10.The apparatus of claim 9, wherein the one or more processors are configured to:determine, using the packet timeline offset engine, the calculated total path delay;compare, using the packet timeline offset engine, the calculated total path delay with a configured upper packet timeline offset threshold; andtransmit an exception interrupt to the adaptive scaling engine indicative of a determination that the calculated total path delay for the processed audio frame is greater than the configured upper packet timeline offset threshold.11.The apparatus of claim 9, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to:increase one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a first exception interrupt indicative of the delivered time being later than the corresponding packet delivery time by more than a configured amount; ordecrease one or more of the processor clock or the memory bandwidth associated with the voice call signal processing engine based on a second exception interrupt indicative of the delivered time being earlier than the corresponding packet delivery time by more than the configured amount.12.The apparatus of claim 1, wherein, to determine the processor resource utilization information, the one or more processors are configured to:query a digital signal processor (DSP) interface of the apparatus to obtain one or more of DSP core frequency information or DSP load information;query a memory sub-system of the apparatus to obtain one or more of a voted memory bandwidth value or a real-time memory clock frequency; orquery the DSP interface to obtain bus active clock frequency information.13.The apparatus of claim 12, wherein:the DSP load information comprises one or more of millions of clocks per second (MCPS) information or millions of packets per second (MPPS) information; andthe processor resource utilization information further includes memory cache miss rate information.14.The apparatus of claim 12, wherein the one or more processors are configured to:receive, from a resource utilization engine associated with the voice call signal processing engine, aggregated processor resource utilization information indicative of the DSP core frequency information, the DSP load information, the real-time memory clock frequency, and the bus active clock frequency information; andgenerate, based on the aggregated processor resource utilization information, one or more of voting information indicative of one or more of a DSP core millions of packets per second (MPPS) value or a memory bus bandwidth value.15.The apparatus of claim 12, wherein the one or more processors are configured to determine the corresponding clock scaling adjustment to:increase the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively large; orreduce the memory bandwidth associated with the voice call signal processing engine based on a determination by the adaptive scaling engine that the processor resource utilization information is relatively small.16.The apparatus of claim 1, further comprising a microphone configured to obtain the audio frame.17.The apparatus of claim 1, further comprising:one or more microphones configured to capture audio data associated with the voice call, wherein the audio data includes the audio frame.18.The apparatus of claim 1, wherein one or more of the processing time or the processor resource utilization is associated with the one or more processors.19.A method for processing audio data, comprising:obtaining an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call;processing the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame;determining a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine;determining a delivered time of the processed audio frame to a modem, wherein the modem transmits the processed audio frame in association with the voice call;analyzing, using an adaptive scaling engine, the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine; andprocessing a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.20.An apparatus for processing audio data, the apparatus comprising:means for obtaining an audio frame included in a sequence of a plurality of audio frames associated with a voice call, wherein the audio frame is associated with a corresponding packet delivery time for use in the voice call;means for processing the audio frame using a voice call signal processing engine to generate a processed audio frame based on the audio frame;means for determining a processing time and processor resource utilization information associated with the processed audio frame generated by the voice call signal processing engine;means for determining a delivered time of the processed audio frame to a modem of the apparatus, wherein the modem transmits the processed audio frame in association with the voice call;means for analyzing the processing time, the processor resource utilization information, and the delivered time of the processed audio frame to determine a corresponding clock scaling adjustment to increase or decrease one or more of a processor clock or a memory bandwidth associated with the voice call signal processing engine; andmeans for processing a second audio frame included in the sequence of the plurality of audio frames based on the corresponding clock scaling adjustment.

Citation Information

Patent Citations

  • Real time data synchronization method and variable clock generator circuit

    JP2005073040A

  • Sound adaptor apparatus and clock synchronizing method

    JP2007295185A

  • Network system and audio signal processor

    US20080232525A1

  • Systems and Methods for Reducing Audio Latency

    US20110199909A1

  • Time Scaling of Audio Frames to Adapt Audio Processing to Communications Network Timing

    US20120265522A1