Patent Description:
The invention is set forth in the independent claims. Specific embodiments are presented in the dependent claims. The present disclosure is directed to using a cascade filter configuration in an active noise canceling (ANC) system. The cascade filter configuration may include a simplified CR FIR filter and a response interpolator filter used in combination.

In general, one aspect of the subject matter described in this specification includes an active noise cancellation system. The system includes an infinite impulse response filter configured to filter a digital signal and output a first filtered digital signal. The system further includes a cascaded filter configuration in communication with the infinite impulse response filter. The cascaded filter configuration is configured to filter the first filtered digital signal and output an audio signal. The infinite impulse response filter may be coupled between the analog to digital converter and the cascaded filter configuration. The cascaded filter configuration includes an adaptive finite impulse response filter configured to filter the first filtered digital signal and to output a second filtered digital signal, and a response interpolator filter configured to filter the second filtered digital signal and output the audio signal. The active noise cancellation system may include one, several or all of the following features. The active noise cancellation system may include an adaptive tracker in communication with the cascaded filter configuration. The adaptive tracker may be configured to track, based on a channel response, non-zero coefficients of at least one of the infinite impulse response filter and the adaptive finite impulse response filter. The non-zero coefficients may be used by the at least one of the infinite impulse response filter and the adaptive finite impulse response filter. The response interpolator filter may be a fixed interpolator. The cascaded filter configuration may have a frequency response of a finite impulse response filter with a greater number of taps than the number of taps of the cascaded filter configuration. The adaptive finite impulse response filter may have interleaved zero coefficients. The adaptive finite impulse response filter may be implemented as a polyphase filter. The infinite impulse response filter may be implemented as a polyphase filter. The active noise cancellation system may further include an analog to digital converter in communication with the infinite impulse response filter. The analog to digital converter may be configured to convert at least one analog signal to the digital signal. The system further includes a subtractor in communication with the cascaded filter configuration. The subtractor is configured to receive a playback signal, and subtract the audio signal from the playback signal and output the result of the subtraction to a speaker. The active noise cancellation system may be within an earbud.

Another aspect of the subject matter includes a process for active noise cancellation. A digital signal is filtered to produce a first filtered digital signal using an infinite impulse response filter. The first filtered digital signal is filtered to output a second filtered digital signal using an adaptive finite impulse response filter. The second filtered digital signal is filtered using a response interpolator filter. An audio signal is produced based on the output of the response interpolator filter. The audio signal output by the response interpolator filter is input to a subtractor, the subtractor configured to: receive a playback and/or voice audio signal;subtract the received audio signal from the playback and/or voice audio signal; and output the result of the subtraction to a speaker. The non-zero coefficients of at least one of the infinite impulse response filter and the adaptive finite impulse response filter may be tracked based on a channel response. The non-zero coefficients may be output for use by the at least one of the infinite impulse response filter and the adaptive finite impulse response filter. At least one analog signal may be converted to the digital signal.

Yet another aspect of the subject matter includes a non-transitory computer-readable medium storing instructions, that when executed by one or more processors, cause the one or more processors to perform various operations. A digital signal is filtered to produce a first filtered digital signal using an infinite impulse response filter and then it is input to a subtractor, the subtractor configured to: receive a playback and/or voice audio signal; subtract the received audio signal from the playback and/or voice audio signal; and output the result of the subtraction to a speaker. The first filtered digital signal is filtered to output a second filtered digital signal using an adaptive finite impulse response filter. The second filtered digital signal is filtered using a response interpolator filter. An audio signal is produced based on the output of the response interpolator filter. The non-zero coefficients of at least one of the infinite impulse response filter and the adaptive finite impulse response filter may be tracked based on a channel response. The non-zero coefficients may be output for use by the at least one of the infinite impulse response filter and the adaptive finite impulse response filter. At least one analog signal may be converted to the digital signal. Using a cascade filter configuration in the ANC system, instead of the conventional CR FIR filter design, may be advantageous. In particular, such a cascade filter configuration used in the ANC system design may have lower computational requirements, a lower number of taps, a reduced complexity, a lower power consumption, a fast response duration with faster convergence capabilities, a higher degree of stability and may be computationally inexpensive when compared to the use of a conventional CR FIR filter design.

For example, a CR FIR filter in a conventional ANC system may be replaced with a two filter cascade configuration. The first filter in the cascade filter configuration may be a CR FIR filter with interleaved zero coefficients and the second filter may be a response interpolator filter that is a fixed interpolator. The CR FIR filter in the two filter cascade may be adaptive and may have its non-zero coefficients tracked, updated, adapted, or computed using an adaptive tracker. The adaptive tracker may track the transmission path or channel response in order to update, adapt, or compute the coefficients of the CR FIR filter. The fixed interpolator in the two filter cascade is fixed and therefore non-adaptive. The fixed interpolator may have a fixed number of taps, such as <NUM>-<NUM> taps. The channel frequency response profile of the two filter cascade configuration may be similar to the channel frequency response profile of the conventional CR FIR filter that the cascade filter configuration replaces. The cascade filter configuration may have lower computational requirements when compared to conventional systems.

The cascade filter configuration used in ANC systems may have a reduced number of non-zero filter taps, such as two to five times fewer taps when compared to conventional systems. This may allow for fewer non-zero coefficients which the adaptive tracker may need to track, update, adapt, or compute. As another example, because computational complexity may be proportional to the number of non-zero filter taps in a filter, the use of the cascade filter configuration in the ANC system may lead to a lower computational complexity, such as two to five times lower, when compared to conventional systems. As a result, this may lead to a lower power consumption by the cascade filter and the ANC system. As yet another example, because only the CR FIR filter of the two filter cascade may be adaptive, there may be fewer coefficients and/or taps to adapt, such as four to eight times fewer coefficients/taps to adapt when compared to conventional systems. Such a factor associated with a fewer number of coefficients and/or taps to adapt may be determined by an interpolation ratio. Thus, for a K-fold fixed interpolation, various savings scaled to K, such as the number of coefficients and/or taps to be adapted, may be achieved. As a result of the fewer number of coefficients and/or taps to adapt, the coefficient tracking and/or adaptation for this CR FIR filter within the cascade filter configuration may be less complex. This may lead to faster convergence rates when compared to conventional systems.

<FIG> depicts a schematic illustration of audio playback system <NUM>. The audio playback system <NUM> may include a housing <NUM> that contains various components of the system, including duct <NUM>, feedforward microphone <NUM>, ANC system <NUM>, speaker <NUM>, and feedback microphone <NUM>. Source <NUM> may be any noise or audio information external to housing <NUM>, including ambient noise or the like. Audio playback system <NUM> may be a speaker, a headphone, an earbud, or the like. Although not shown, audio playback system <NUM> may communicate with a computing device, such as a mobile phone, a tablet, a smart watch, or the like. For example, the audio playback system <NUM> may include other components that are not shown in <FIG>, such as a communication interface, wireless transceiver, or the like. The computing device may provide audio playback system <NUM> with instructions to output sounds, such as voices, music, podcasts, system alert sounds, other audio signals, or the like.

Feedforward microphone <NUM>, feedback microphone <NUM>, and speaker <NUM> may be in electrical communication with ANC system <NUM>. Such electrical communication may enable ANC system <NUM> to analyze noise received by feedforward microphone <NUM> and feedback microphone <NUM> while also providing signals to speaker <NUM> to emit audio signals, such as to emit an anti-noise signal and sounds. Feedforward microphone <NUM> may be housed along a surface of housing <NUM> and may face away from the housing. Feedforward microphone <NUM> may receive external noise directly from source <NUM>. Feedback microphone <NUM> may be housed within housing <NUM> and may face an interior portion of the housing. Feedback microphone <NUM> may receive external noise from source <NUM> through duct <NUM>, audio signals from speaker <NUM>, and/or other residual noise within housing <NUM>.

Housing <NUM> may include an exit opening <NUM> leading from an interior of the housing to the exterior of the housing. As such, exit opening <NUM> may allow for output from speaker <NUM> to exit audio playback system <NUM>. For example, where audio playback system <NUM> is an earbud, exit opening <NUM> may allow for output audio to enter a user's ear from speaker <NUM>.

The ANC system <NUM> may reduce or remove noise for the user of the audio playback system <NUM> based on the external noise received from the feedforward microphone <NUM> and/or the feedback microphone <NUM>. Using these microphones the ANC system <NUM> may emit an anti-noise audio signal from ambient noise, and may add this signal to the audio output of the audio playback system <NUM> so that it may cancel or reduce noise at the eardrum of the user. In addition, these microphones may be used to generate a correction audio signal from residual noise at the speaker of the audio playback system. The correction audio signal may also be added to the audio output of the audio playback system so that it may cancel or reduce noise at the eardrum of the user. As will be described in further detail below, the computational architecture for the ANC system <NUM> may include several components. For example, the ANC system <NUM> may include components that may identify noise to be canceled, channel response filters that may filter the noise using a transmission path transfer function and/or channel response filter, and components that may subtract a resulting anti-noise signal and/or correction signal from the audio output.

<FIG> depicts a block diagram of ANC system <NUM>. While ANC system <NUM>, described in connection with <FIG>, is depicted at a system component level, ANC system <NUM> depicts particular circuitry that may be within the ANC system <NUM>. Similar to ANC system <NUM> of <FIG>, ANC system <NUM> may be included within an audio playback system, such as audio playback system <NUM> of <FIG>. ANC system <NUM> includes microphone(s) <NUM>, an analog to digital converter <NUM>, channel response infinite impulse response (CR IIR) filter <NUM>, adaptive tracker <NUM>, channel response finite impulse response (CR FIR) filter <NUM>, and subtractor <NUM>.

Microphone(s) <NUM> may be the feedforward and/or feedback microphones described in connection with <FIG>. In particular, microphone(s) <NUM> may include a feedforward microphone that may receive an external noise signal directly from a source. This received signal may be an analog signal. Microphone(s) <NUM> may include a feedback microphone that may receive an external noise signal from a source, other audio signals from a speaker, and/or other residual noise signals. The received signals may be analog signals. The microphone(s) <NUM> may output the signal(s) that it receives to the analog to digital converter (ADC) <NUM>.

Analog to digital converter (ADC) <NUM> converts analog signals to digital signals. The ADC <NUM> may receive analog noise and/or audio signal(s) from the microphone(s) <NUM> and convert these signals to digital signals. In particular, the digital signals may be processed further by various components, both shown and not shown, of the ANC system <NUM>.

The digital signals may be filtered by channel response infinite impulse response (CR IIR) filter <NUM>. The CR IIR filter <NUM> may be a recursive filter. CR IIR filter <NUM> may be a filter that has an impulse response that is of infinite duration. The CR IIR filter <NUM> may use a linear combination of current and previous inputs, as well as previous outputs, to compute its current output. As a result of the use of its previous outputs, the CR IIR filter <NUM> may be considered to include feedback from its outputs. The linear combination of current and previous inputs as well as the previous outputs may make use of one or more filter coefficients as weights for each of these inputs/outputs. The filter coefficients may be associated with taps of the CR IIR filter <NUM>. The CR IIR filter <NUM> may use its taps in filtering an input signal, such as by using its taps for computing the linear combination of its current and previous inputs and its previous outputs to compute an output signal. CR IIR filter <NUM> may be an adaptive filter. The coefficients associated with the taps of CR IIR filter <NUM> may be constantly adapted. For example, the coefficients of CR IIR filter <NUM> may be constantly updated, adapted, and/or computed to track the transmission path and/or channel response of the transmission path and/or channel associated with use of the CR IIR filter <NUM>. This transmission path and/or channel may be constantly varying, thereby causing the coefficients of CR IIR filter <NUM> to be constantly changing. The coefficients may be changing, for example, in discrete, regular time intervals. CR IIR filter <NUM> may use adaptive tracker <NUM> to determine the values for its coefficients based on input information it receives from adaptive tracker <NUM>. A mathematical representation of CR IIR filter <NUM> may be HIIR_OS. The output of CR IIR filter <NUM> may be input to CR FIR filter <NUM> for further processing by CR FIR filter <NUM>.

Adaptive tracker <NUM> may track the transmission path and/or channel response in order to update, adapt, and/or compute filter coefficients. For example, in order to mimic the passage of an audio signal and/or noise through the transmission path and/or channel, such as the transmission path and/or channel in which the audio playback system <NUM> described in connection with <FIG> operates, adaptive tracker <NUM> may make various measurements associated with the transmission path and/or channel. Adaptive tracker <NUM> may compute various filter coefficients based on these measurements. Adaptive tracker <NUM> may output these coefficients to CR IIR filter <NUM> and/or to CR FIR filter <NUM> to be used as tap coefficients in these filters.

CR FIR filter <NUM> may be a filter that has an impulse response that is of finite duration, settling to zero in finite time. The CR FIR filter <NUM> may use a linear combination of current and previous inputs in order to compute its current output. The CR FIR filter <NUM> may not use feedback from its previous outputs in order to compute the current output. The linear combination of current and previous inputs may make use of one or more filter coefficients as weights for each of these inputs. The filter coefficients may be associated with taps of the CR FIR filter <NUM>. The CR FIR filter <NUM> may use its taps in filtering an input signal, such as by using its taps for computing the linear combination of its current and previous inputs to compute an output signal.

CR FIR filter <NUM> may be an adaptive filter. The coefficients associated with the taps of CR FIR filter <NUM> may be constantly adapted. For example, the coefficients of CR FIR filter <NUM> may be constantly updated, adapted, and/or computed to track the transmission path and/or channel response of the transmission path and/or channel associated with the CR FIR filter <NUM>'s use. This transmission path and/or channel may be constantly varying, thereby causing the coefficients of CR FIR filter <NUM> to be constantly changing. The coefficients may be changed, for example, in discrete, regular time intervals. CR FIR filter <NUM> may use adaptive tracker <NUM> to determine the values for its coefficients based on input information it receives from adaptive tracker <NUM>. A mathematical representation of CR FIR filter <NUM> may be HFIR_OS. The output of CR FIR filter <NUM> may be input to subtractor <NUM>.

Together CR IIR filter <NUM> and CR FIR filter <NUM> may mimic the passage of an audio signal and/or noise through the transmission path and/or channel, such as the transmission path and/or channel in which the ANC system <NUM> and audio playback system <NUM>, described in connection with <FIG>, operates. Therefore, CR IIR filter <NUM> and CR FIR filter <NUM> may be used to emulate the channel response of the transmission path and/or channel in which the audio playback system <NUM> operates.

Subtractor <NUM> may subtract the output signal it receives from CR FIR filter <NUM> from a playback and/or voice audio signals that it receives. The playback and/or voice audio signals input to subtractor <NUM> may be received from a computing device. In particular, a computing device may provide the audio playback system, in which ANC system <NUM> operates, with signals and/or instructions to output audio playback signals such as sounds, music, podcasts, system alert sounds, and/or voice signals. These signals may be input to subtractor <NUM> and the output signal from CR FIR filter <NUM> may be subtracted from these signals. Subtractor <NUM> may output the result of the subtraction to a speaker, such as speaker <NUM> described in connection with <FIG>. In some examples, subtractor <NUM> may instead be replaced by an adder that adds an anti-noise signal, such as the output signal from CR FIR filter <NUM> or a variant thereof, from the playback and/or voice audio signal.

ANC system <NUM> and/or the components of ANC system <NUM> may be implemented, in part or in whole, in software, such as in subroutines and code, and/or in hardware, such as in an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a specialized or a general purpose Digital Signal Processor, a controller, a state machine, gated logic, discrete hardware components, or any other suitable devices, and/or a combination of both software and hardware.

ANC system <NUM> may operate at a rate that may be substantially higher than the bandwidth of the audio signal(s) from which it reduces or removes noise. Such high rate operation may result in oversampling of signal(s) in the ANC system. For example, ANC system <NUM> may operate at a sampling rate of <NUM> to <NUM>, while the audio bandwidth may be less than <NUM>. As a result, CR FIR filter <NUM> may have a large/long response duration, and may include a large number of taps. For example, CR FIR filter <NUM> may have a number of taps that is between <NUM> and <NUM>. Because of the large number of taps, the number of filter coefficients that need to be tracked, updated, adapted, and/or computed may be large. Such tracking of filter coefficients may be computationally expensive and may lead to significant power consumption. Additionally, the CR IIR filter <NUM> may operate on an oversampled input signal which may lead to poles and zeros close to the real axis on a pole-zero plot of the filter. This may lead to poor sensitivity of the CR IIR filter <NUM> due to its changing coefficients as well as low stability for this filter. In addition to being computationally expensive, tracking/updating/adapting/computing a large number of filter coefficients for both the CR IIR filter <NUM> and the CR FIR filter <NUM> may lead to stability issues for the ANC system <NUM>.

<FIG> depicts a block diagram of ANC system <NUM>, which has a reduced complexity, or the like, as compared to the ANC system <NUM> (<FIG>). ANC system <NUM> includes microphone(s) <NUM>, an analog to digital converter <NUM>, CR IIR filter <NUM>, adaptive tracker <NUM>, CR FIR filter 310a and response interpolator filter 310b, which are in a cascade filter configuration <NUM>, and subtractor <NUM>. ANC system <NUM> may be similar to ANC system <NUM> described in connection with <FIG>, however, CR FIR filter <NUM> in ANC system <NUM> may be replaced by CR FIR filter 310a and response interpolator filter 310b in the cascade filter configuration <NUM>. In some examples, CR IIR filter <NUM> may also vary from CR IIR filter <NUM>.

ADC <NUM> may convert analog signals to digital signals. The ADC <NUM> may receive analog noise/audio signal(s) from the microphone(s) <NUM> and may convert these signals to digital signals. The digital signals may then be filtered by the CR IIR filter <NUM>.

The CR IIR filter <NUM> may be a recursive filter. CR IIR filter <NUM> may be a filter that has an impulse response that is of infinite duration. The CR IIR filter <NUM> may use a linear combination of the current and previous inputs as well as the previous outputs in order to compute its current output. As a result of the use of its previous outputs, the CR IIR filter <NUM> may be considered to include feedback from its outputs. The linear combination of current and previous inputs as well as the previous outputs may make use of one or more filter coefficients as weights for each of these inputs/outputs. The filter coefficients may be associated with taps of the CR IIR filter <NUM>. The CR IIR filter <NUM> may use its taps in filtering an input signal, such as by using its taps for computing the linear combination of its current and previous inputs and its previous outputs to compute an output signal. CR IIR filter <NUM> may be an adaptive filter. The coefficients associated with the taps of CR IIR filter <NUM> may be constantly adapted. For example, the coefficients of CR IIR filter <NUM> may be constantly updated, adapted, and/or computed to track the transmission path and/or channel response of the transmission path and/or channel associated with the CR IIR filter <NUM>'s use. This transmission path and/or channel may be constantly varying, thereby causing the coefficients of CR IIR filter <NUM> to be constantly changing. The coefficients may be changing, for example, in discrete, regular time intervals. CR IIR filter <NUM> may use adaptive tracker <NUM> to determine the values for its coefficients based on input information it receives from adaptive tracker <NUM>. A mathematical representation of CR IIR filter <NUM> may be HIIR_CFC. The output of CR IIR filter <NUM> may be input to CR FIR filter 310a for further processing by CR FIR filter 310a.

Adaptive tracker <NUM> may track the transmission path and/or channel response in order to update, adapt, and/or compute filter coefficients. For example, in order to mimic the passage of an audio signal and/or noise through the transmission path and/or channel, such as the transmission path and/or channel in which the audio playback system <NUM> described in connection with <FIG> operates, adaptive tracker <NUM> may make various measurements associated with the transmission path and/or channel. Adaptive tracker <NUM> may compute various filter coefficients based on these measurements. Adaptive tracker <NUM> may output these coefficients to CR IIR filter <NUM> and/or to CR FIR filter 310a, to be used as tap coefficients in these filters.

CR FIR filter 310a may be a filter that has an impulse response that is of finite duration, settling to zero in finite time. The CR FIR filter 310a may use a linear combination of current and previous inputs in order to compute its current output. The CR FIR filter 310a may not use feedback from its previous outputs in order to compute the current output. The linear combination of current and previous inputs may make use of one or more filter coefficients as weights for each of these inputs. The filter coefficients may be associated with taps of the CR FIR filter 310a. The CR FIR filter 310a may use its taps in filtering an input signal, such as by using its taps for computing the linear combination of its current and previous inputs to compute an output signal. CR FIR filter 310a may be an adaptive filter. The coefficients associated with the taps of CR FIR filter 310a may be constantly adapted. For example, the coefficients of CR FIR filter 310a may be constantly updated, adapted, and/or computed to track the transmission path and/or channel response of the transmission path and/or channel associated with the CR FIR filter 310a's use. This transmission path and/or channel may be constantly varying, thereby causing the coefficients of CR FIR filter 310a to be constantly changing. The coefficients may be changing, for example, in discrete, regular time intervals. CR FIR filter 310a may use adaptive tracker <NUM> to determine the values for its coefficients based on input information it receives from adaptive tracker <NUM>. A mathematical representation of CR FIR filter 310a may be HFIR_CFC. The output of CR FIR filter 310a may be input to response interpolator filter 310b.

Response interpolator filter 310b may be fixed and therefore non-adaptive. The response interpolator filter 310b may have fixed coefficients and a pre-determined number of taps. The response interpolator filter 310b may receive an output signal from CR FIR filter 310a. The response interpolator filter 310b may up-sample and filter the signal it receives. In some examples, response interpolator filter 310b may have its number of taps adjusted a-priori or during operation of the ANC system <NUM> based on the power limitations of ANC system <NUM> and/or the type of playback or voice signal for which ANC system <NUM> is being used. For example, if ANC system <NUM> is power constrained and/or the playback or voice signal is of a low fidelity, the number of taps used by the response interpolator filter 310b may be reduced. In such cases, the shape of a frequency response profile of response interpolator filter 310b may not be smooth. As another example, if ANC system <NUM> is not power constrained and/or the playback or voice signal is of a high fidelity, the number of taps used by the response interpolator filter 310b may be increased. In such cases, the shape of a frequency response profile of response interpolator filter 310b may be smooth.

The response interpolator filter 310b may advantageously be implemented in a number of different ways. First, the response interpolator 310b may be of a constant length, and the composite response of the CR FIR filter 310a may be decomposed into a reduced length CR FIR filter and the response interpolator filter 310b to achieve an arbitrarily small error between the two filter designs as desired. Second, the design of the response interpolator filter 310b may be selected from a number of interpolator designs, depending on the filter response desired and to yield further economy. Third, the response interpolator 310b may be decomposed into several smaller filters, such as a cascaded integrator-comb (CIC) filter, to gain additional economy. Fourth, the response interpolator filter 310b may be decomposed in polyphase form, such as what is described in greater detail below.

Together CR IIR filter <NUM>, CR FIR filter 310a, and response interpolator filter 310b may mimic the passage of an audio signal and/or noise through the transmission path and/or channel, such as the transmission path and/or channel in which the ANC system <NUM> and audio playback system <NUM>, described in connection with <FIG>, operates. Therefore, CR IIR filter <NUM>, CR FIR filter 310a, and response interpolator 310b may be used to emulate the channel response of the transmission path and/or channel in which the audio playback system <NUM> operates.

The output of response interpolator filter 310b is input to subtractor <NUM>. Subtractor <NUM> subtracts the output signal it receives from interpolator filter 310b from a playback and/or voice audio signals that it receives. The playback and/or voice audio signals input to subtractor <NUM> may be received from a computing device. In particular, a computing device may provide the audio playback system, in which ANC system <NUM> operates, with signals and/or instructions to output audio playback signals such as sounds, music, or podcasts, and/or voice signals. These signals may be input to subtractor <NUM> and the output signal from CR FIR filter 310b may be subtracted from these signals. Subtractor <NUM> outputs the result to a speaker, such as speaker <NUM> described in connection with <FIG>. In some examples (not claimed), subtractor <NUM> may instead be replaced by an adder that adds an anti-noise signal, such as the output signal from response interpolator filter 310b or a variant thereof, from the playback and/or voice audio signal.

ANC system <NUM> and/or the components of ANC system <NUM> may be implemented, in part or in whole, in software, such as in subroutines and code, and/or in hardware, such as in an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a Programmable Logic Device (PLD), a specialized or a general purpose Digital Signal Processing hardware, a controller, a state machine, gated logic, discrete hardware components, or any other suitable devices, and/or a combination of both software and hardware.

CR FIR filter 310a and response interpolator filter 310b may be in the cascade filter configuration <NUM>. In some examples, CR FIR filter 310a and response interpolator filter 310b may be included together in a single hardware module. CR FIR filter 310a may be simpler in complexity and/or implementation when compared to CR FIR filter <NUM> described in connection with <FIG>. CR FIR filter 310a may include several non-zero coefficients interleaved with zero coefficients. As a result, CR FIR filter 310a may have a fewer number of taps, associated with the non-zero coefficients, when compared to FIR filter <NUM>. For example, FIR filter 310a may have four times to eight times fewer non-zero coefficients and filter taps when compared to FIR filter <NUM>. For example, CR FIR filter 310a may include fewer non-zero coefficients than zero coefficients.

In addition, adaptive tracker <NUM> may track and update only the non-zero coefficients of CR FIR filter 310a, and output these coefficient values for use by the CR FIR filter 310a. This may result in the adaptive tracker <NUM> tracking and updating fewer coefficients, when compared to adaptive tracker <NUM>. Thus, the coefficient tracking for the CR FIR filter 310a within the cascade filter configuration may be less complex when compared to coefficient tracking for CR FIR filter <NUM>. Therefore, because of such reduced complexity, CR FIR filter <NUM>, may have a faster convergence rate when compared to the convergence rate of CR FIR filter <NUM>. Additionally, response interpolator filter 310b may have a small number of taps and have fixed coefficients that are not adapted. For example, response interpolator filter 310b may have <NUM> to <NUM> taps.

As a result of its reduced complexity described above, the cascade filter configuration <NUM> may have lower computational requirements when compared to CR FIR filter <NUM>, which the cascade filter configuration <NUM> may replace in an ANC system. For example, CR FIR filter 310a, represented by HFIR_CFC, may have four times to eight times fewer non-zero filter coefficients when compared to CR FIR filter <NUM>, such as when K = <NUM> or K = <NUM>. Additionally, response interpolator filter 310b may have a fixed number of taps that are not adapted, such as <NUM> to <NUM> taps. Thus, CR FIR filter 310a and response interpolator filter 310b in the cascade filter configuration <NUM> may have two times to five times fewer non-zero filter coefficients and corresponding filter taps when compared to CR FIR filter <NUM>. As such, because computational complexity may be directly proportional to the number of non-zero filter coefficients/taps in the filter, CR FIR filter 310a and response interpolator filter 310b in the cascade filter configuration <NUM> may have two times to five times lower computational complexity when compared to CR FIR filter <NUM>. In addition, such reduced computational complexity may enable a correspondingly lower power consumption of CR FIR filter 310a and response interpolator filter 310b in the cascade filter configuration <NUM> when compared to CR FIR filter <NUM>, which these filters may replace. Moreover, CR IIR filter <NUM>, represented by HIIR_CFC, may have poles and zeros away from the unit circle on a pole-zero plot of the filter. This may allow for easier implementation of the filter at lower word widths.

As discussed above, there may be a reduction in the number of filter taps in cascade filter configuration <NUM> when compared to CR FIR filter <NUM>. The cascade filter configuration <NUM> may effectively replace CR FIR filter <NUM> in an ANC system, resulting in a reduction in complexity and without any significant loss in fidelity. As an example, if CR FIR filter <NUM>, described in connection with <FIG>, includes <NUM> filter taps and requires 4x oversampling of its input signal, the cascade filter configuration <NUM> may include <NUM> non-zero taps. In particular, CR FIR filter 310a of the cascade filter configuration may include <NUM>/<NUM> = <NUM> taps, where a reduction in the number of taps are a result of eliminating the zero coefficient taps from the 4x oversampling. The response interpolator filter 310b may include <NUM> taps. As a result the cascade filter configuration <NUM> may have <NUM> + <NUM> = <NUM> taps, and may have a complexity reduction of <NUM> taps / <NUM> taps = <NUM>. As another example, if CR FIR filter <NUM>, described in connection with <FIG>, includes <NUM> filter taps and requires 8x oversampling of its input signal, the cascade filter configuration <NUM> may include <NUM> non-zero taps. In particular, CR FIR filter 310a of the cascade filter configuration may include <NUM>/<NUM> = <NUM> taps, where a reduction in the number of taps are a result of eliminating the zero coefficient taps from the 8x oversampling. The response interpolator filter 310b may include <NUM> taps. As a result the cascade filter configuration <NUM> may have <NUM> + <NUM> = <NUM> taps, and may have a complexity reduction of <NUM> taps / <NUM> taps = <NUM>.

As a result of the reduced complexity of the cascade filter configuration <NUM>, described above, the signal filtering performed within ANC system <NUM> may have benefits such as lower computational requirements, a lower number of filter taps, a reduced complexity, a lower power consumption, a faster response duration with faster convergence capability, a high degree of stability, and a lower computational expense when compared to the filtering performed within ANC system <NUM>.

<FIG> shows example graphs of the channel frequency responses of filters used in ANC systems. <FIG> may include channel frequency response graphs <NUM>, <NUM>, and <NUM>. A channel frequency response graph of a filter may show the quantitative measure of the output frequency spectrum of the filter in response to an input. Such a channel frequency response graph for a particular filter may show the magnitude with which certain frequencies are accentuated or attenuated by the particular filter. For example, channel frequency response graph <NUM> may show the frequency response of a CR FIR filter in a conventional ANC system, such as CR FIR filter <NUM> described in connection with <FIG>. As another example, channel frequency response graph <NUM> may show the frequency response of a CR FIR filter in a reduced complexity ANC system, such as CR FIR filter 310a described in connection with <FIG>. As yet another example, channel frequency response graph <NUM> may show the frequency response of a response interpolator filter in a reduced complexity ANC system, such as response interpolator filter 310b described in connection with <FIG>. <FIG> shows that the combined channel frequency response profile of the cascade filter configuration <NUM>, which may be a combination of the graphs <NUM> and <NUM>, may be substantially similar/equal to the channel frequency response profile, as shown in graph <NUM>, of the conventional CR FIR filter, which the cascade replaces. Therefore, although the cascade filter configuration may be of a reduced complexity when compared to the conventional CR FIR filter, the filtering capability and frequency response profile of the cascade filter configuration may be substantially similar/equal to the conventional CR FIR filter.

In some examples, a CR FIR filter, such as CR FIR filter 310a described in connection with <FIG>, may be implemented in a particular manner. For example, this filter may be implemented by generating a CR FIR filter for operation at the Nyquist frequency and replacing each delay in the filter with an integer number, K, delays. A mathematical representation of the resulting filter HFIR_CFC, may be HFIR_CFC(z-<NUM>) = HFIR_NYSQUIST(z-K) where HFIR_NYQUIST may be the mathematical representation of the CR FIR filter generated for operation at the Nyquist frequency. HFIR_NYQUlST may represent a "zero removed" version of a CR FIR filter. In some examples, the resulting filter, which may be mathematically represented as HFIR_CFC, may have a frequency response profile substantially similar to what is shown in channel frequency response graph <NUM> described in connection with <FIG>. As described above, graph <NUM> may show a zero interleaved impulse response of the CR FIR filter, such as CR FIR filter 310a. The filter generated and mathematically represented by HFIR_NYQUIST may have a response that is K times shorter than a conventional CR FIR filter, and may also have lower computational requirements than the conventional CR FIR filter.

In some example implementations, CR IIR filter <NUM> may operate at the Nyquist frequency and each delay in the filter may be replaced with an integer number, K, delays. A mathematical representation of the resulting filter HIIR_CFC, may be HIIR_CFC(z-<NUM>) = HIIR_NYQUIST(z-K) where HIIR_NYQUIST may be the mathematical representation of the CR IIR filter generated for operation at the Nyquist frequency. HIIR_NYQUIST may represent a "zero removed" version of a CR IIR filter. In some examples, the resulting filter, which may be mathematically represented as HIIR_CFC, may not have a reduction in length, in terms of number of taps or order, when compared to a conventional CR IIR filter. The filter generated and mathematically represented by HIIR_NYQUIST may have poles and zeros away from the real axis on a pole-zero plot of the filter. This may allow for better stability and lower sensitivity of the filter when compared to a conventional CR IIR filter.

<FIG> depicts a block diagram of an example implementation of filters in an ANC system <NUM>. ANC system <NUM> includes a set of filters 506a-c implementing a CR IIR filter <NUM>, a set of filters 510a-k implementing a CR FIR filter <NUM>, and a response interpolator filter <NUM>. ANC system <NUM> may be similar to ANC system <NUM> described in connection with <FIG>, however, the CR IIR filter <NUM> in ANC system <NUM> may be replaced by the CR IIR filter <NUM>, the CR FIR filter 310a may be replaced by the CR FIR filter <NUM> and the response interpolator filter 310b may be replaced by the response interpolator filter <NUM>. CR IIR filter <NUM> may be mathematically represented by HIIR_CFC, and may be implemented as a polyphase filter. CR FIR filter <NUM> may be mathematically represented by HFIR_CFC, and may be implemented as a polyphase filter. In particular, each phase of the polyphase filter may implement a "zero removed" version of the filter. For example, as discussed above, the zero-removed version of the CR IIR filter <NUM> may be mathematically represented by HIIR_NYQUIST. As another example, as discussed above, the zero-removed version of the CR FIR filter <NUM> may be mathematically represented by HFIR-NYQUIST. The polyphase implementation of the CR IIR filter <NUM> may have an integer number, K, filters, as shown by elements 506a-c, operating in parallel. The polyphase implementation of the CR FIR filter <NUM> may have K filters, as shown by elements 510a-c, operating in parallel. Each of the K filter paths operating in parallel may be associated with a number of samples of the input signal that it receives. For example, the filter path, also known as a phase, which includes filters 506a and 510a may receive the <NUM>st, (K+ <NUM>)th, (<NUM> +<NUM>)th, etc. input samples of the input signal to be filtered. As another example, the filter path that includes filters 506b and 510b may receive the <NUM>nd, (K+<NUM>)th, (<NUM> +<NUM>), etc. input samples of the input signal. As yet another example, the filter path that includes filters 506c and 510c may receive the Kth, <NUM>th, <NUM>, etc. input sample of the input signal. The selector switches, or the like, which may route the input samples to the successive filters 506a, 506b, and 506c, and which may collect the output from the filters 510a, 510b, and 510c may not be distinct. Each of the filters in a path/phase, such as filters 506a and 510a, may perform N/K multiply and accumulate operations to generate an output sample. Here N may be an integer number of taps in the conventional version of the CR IIR and CR IIR filters. If an input is received by each path/phase every time period, Ts, the path/phase will output one sample every time period, Ts. Each of the outputs of the paths/phases in the polyphase filters may be output to a response interpolator filter <NUM>. Response interpolator filter <NUM> may be substantially similar in form and in function to response interpolator filter 310b described in connection with <FIG>. Such use of a polyphase design of CR IIR filter <NUM> and CR FIR filter <NUM> may reduce computational complexity by a factor of K when compared to a conventional CR IIR filter and CR FIR filter design.

<FIG> is a flow diagram of example process <NUM> for filtering an audio signal. The process <NUM> may be performed, by way of example, by an ANC system operating within or as a portion of an electronic device, such as what is described in connection with <FIG> and <FIG>. While the operations of the process <NUM> are described in a particular order, it should be understood that the order may be modified and operations may be performed in parallel. Moreover, it should be understood that operations may be added or omitted.

In block <NUM>, analog noise/audio signal(s) may be received from microphone(s) in an ANC system, such as the microphone(s) <NUM> described in connection with <FIG>, and these signal(s) may be converted to a digital signal. For example, ADC <NUM>, described in connection with <FIG>, may convert the analog signal(s) to a digital signal. The digital signal may be processed further before being processed by a filter within the ANC system.

In block <NUM>, the digital signal may be filtered by CR IIR filter, such as CR IIR filter <NUM> described in connection with <FIG> or CR IIR filter <NUM> described in connection with <FIG>. The CR IIR filter may be an adaptive filter that may have filter coefficients that are updated, adapted, and/or computed to track the transmission path and/or channel response of the transmission path and/or channel associated with the CR IIR filter's use, such as what is described in relation to <FIG>. The CR IIR filter may filter the digital signal and output the filtered digital signal.

In block <NUM>, the digital signal output by the CR IIR filter may be filtered by CR FIR filter, such as CR FIR filter 310a described in connection with <FIG> or CR FIR filter <NUM> described in connection with <FIG>. The CR FIR filter may be an adaptive filter that may have its non-zero filter coefficients updated, adapted, and/or computed to track the transmission path and/or channel response of the transmission path and/or channel associated with the CR FIR filter's use, such as what is described in relation to <FIG>. The CR FIR filter may filter the digital signal from the CR IIR filter and output the filtered digital signal.

In block <NUM>, the digital signal output by the CR FIR filter may be filtered by a response interpolator filter, such as response interpolator filter 310b described in connection with <FIG> or response interpolator filter <NUM> described in connection with <FIG>. The response interpolator filter may have fixed filter coefficients and a fixed and pre-determined number of taps. The response interpolator may filter the digital signal from the CR FIR filter and output the filtered digital signal.

<FIG> is a block diagram of an example electronic device <NUM>. The electronic device <NUM> may include one or more processors <NUM>, system memory <NUM>, a bus <NUM>, the networking interface(s) <NUM>, and other components (not shown), such as storage(s), output device interface(s), input device interface(s). A bus <NUM> may be used for communicating between the processor <NUM>, the system memory <NUM>, the networking interface(s) <NUM>, and other components.

Depending on the desired configuration, the processor <NUM> may be of any type including but not limited to a microprocessor, a microcontroller, a digital signal processor (DSP), or any combination thereof. The processor <NUM> may include one more levels of caching, such as a level one cache <NUM> and a level two cache <NUM>, a processor core <NUM>, and registers <NUM>. The processor core <NUM> may include an arithmetic logic unit (ALU), a floating point unit (FPU), a DSP core, or any combination thereof. A memory controller <NUM> may also be used with the processor <NUM>, or in some implementations the memory controller <NUM> can be an internal part of the processor <NUM>.

Depending on the desired configuration, the physical memory <NUM> may be of any type including but not limited to volatile memory, such as RAM, non-volatile memory, such as ROM, flash memory, etc., or any combination thereof. The physical memory <NUM> may include an operating system <NUM>, one or more applications <NUM>, and program data <NUM>. The application <NUM> may include a process of writing data to physical memory. Non-transitory computer-readable medium program data <NUM> may include storing instructions that, when executed by the one or more processing devices, implement a process for filtering an audio signal <NUM>. In some examples, the application <NUM> may be arranged to operate with program data <NUM> on an operating system <NUM>.

The electronic device <NUM> may have additional features or functionality, and additional interfaces to facilitate communications between the basic configuration <NUM> and any required devices and interfaces.

Physical memory <NUM> may be an example of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, or any other medium which can be used to store the desired information and which can be accessed by electronic device <NUM>. Any such computer storage media can be part of the device <NUM>.

Network interface(s) <NUM> may couple the electronic device <NUM> to a network (not shown) and/or to another electronic device (not shown). In this manner, the electronic device <NUM> can be a part of a network of electronic devices, such as a local area network ("LAN"), a wide area network ("WAN"), an intranet, or a network of networks, such as the Internet. In some examples, the electronic device <NUM> may include a network connection interface for forming a network connection to a network and a local communications connection interface for forming a tethering connection with another device. The connections may be wired or wireless. The electronic device <NUM> may bridge the network connection and the tethering connection to connect the other device to the network via the network interface(s) <NUM>. Any or all components of electronic device <NUM> may be used in conjunction with the subject of the present disclosure.

The electronic device <NUM> may be implemented as a portion of a small form factor portable (or mobile) electronic device such as a speaker, a headphone, an earbud, a cell phone, a smartphone, a smartwatch, a personal data assistant (PDA), a personal media player device, a tablet computer (tablet), a wireless web-watch device, a personal headset device, a wearable device, an application-specific device, or a hybrid device that include any of the above functions. The electronic device <NUM> may also be implemented as a personal computer including both laptop computer and non-laptop computer configurations. The electronic device <NUM> may also be implemented as a server or a large-scale system.

Aspects of the present disclosure may be implemented as a computer implemented process, a system, or as an article of manufacture such as a memory device or non-transitory computer readable storage medium. The computer readable storage medium may be readable by an electronic device and may comprise instructions for causing an electronic device or other device to perform processes and techniques described in the present disclosure. The computer readable storage medium may be implemented by a volatile computer memory, non-volatile computer memory, solid state memory, flash drive, and/or other memory or other non-transitory and/or transitory media. Aspects of the present disclosure may be performed in different forms of software, firmware, and/or hardware. Further, the teachings of the disclosure may be performed by an application specific integrated circuit (ASIC), field programmable gate array (FPGA), or other component, for example.

Aspects of the present disclosure may be performed on a single device or may be performed on multiple devices. For example, program modules including one or more components described herein may be located in different devices and may each perform one or more aspects of the present disclosure. As used in this disclosure, the term "a" or "one" may include one or more items unless specifically stated otherwise. Further, the phrase "based on" is intended to mean "based at least in part on" unless specifically stated otherwise.

The above aspects of the present disclosure are meant to be illustrative. They were chosen to explain the principles and application of the disclosure and are not intended to be exhaustive or to limit the disclosure. Many modifications and variations of the disclosed aspects may be apparent to those of skill in the art.

Unless otherwise stated, the foregoing alternative examples are not mutually exclusive, but may be implemented in various combinations to achieve unique advantages. As these and other variations and combinations of the features discussed above can be utilized without departing from the subject matter defined by the claims, the foregoing description of the examples should be taken by way of illustration rather than by way of limitation of the subject matter defined by the claims. In addition, the provision of the examples described herein, as well as clauses phrased as "such as," "including" and the like, should not be interpreted as limiting the subject matter of the claims to the specific examples; rather, the examples are intended to illustrate only one of many possible examples. Further, the same reference numbers in different drawings can identify the same or similar elements.

Claim 1:
An active noise cancellation system (<NUM>; <NUM>; <NUM>), the system (<NUM>; <NUM>; <NUM>) comprising:
an infinite impulse response filter (<NUM>; <NUM>) configured to filter a digital signal and output a first filtered digital signal; and
a cascaded filter configuration (<NUM>) in communication with the infinite impulse response filter (<NUM>; <NUM>), the cascaded filter configuration (<NUM>) configured to filter the first filtered digital signal and output an audio signal;
wherein the cascaded filter configuration (<NUM>) includes:
an adaptive finite impulse response filter (310a; <NUM>) configured to filter the first filtered digital signal and to output a second filtered digital signal, and
a response interpolator filter (310b; <NUM>) configured to filter the second filtered digital signal and output the audio signal, wherein the audio signal output by the response interpolator filter (310b, <NUM>) is input to a subtractor (<NUM>), the subtractor (<NUM>) configured to:
receive a playback and/or voice audio signal;
subtract the received audio signal from the playback and/or voice audio signal; and
output the result of the subtraction to a speaker.