Low-latency audio filter bank with improved frequency resolution.

BR122026014089A2Pending Publication Date: 2026-08-25
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
BR122026014089
Authority / Receiving Office
BR · BR
Patent Type
Applications
Publication Date
2026-08-25

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader
Need to check novelty before this filing date? Find Prior Art

Description

1 / 29 “LOW LATENCY AUDIO FILTER BANK WITH IMPROVED FREQUENCY RESOLUTION” Separated from BR112021023987-1, filed on 06 / 25 / 2020 CROSS-REFERENCE RELATED ORDERS

[001] This application claims priority over U.S. Provisional Patent Application No. 263 / 028,966, filed May 22, 2020, and U.S. Provisional Patent Application No. 262 / 866,823, filed June 26, 2019, each of which is incorporated herein by reference in its entirety. FIELD

[002] The present disclosure relates to audio processing and, in particular, to dynamic audio filters. BACKGROUND

[003] Unless otherwise indicated herein, the approaches described in this section are not prior techniques of the claims in this application and are not admitted as prior techniques by their inclusion in this section.

[004] When an input audio signal is being processed, it is often desirable to use a filter bank to alter the audio signal so that the gain at various frequencies is specified by a set of dynamic coefficients. A dynamic audio filter can be implemented by making use of a series of pre-computed bandpass filters, with the audio filter response being formed from the weighted sum of the bandpass filter responses. The weights can be varied dynamically.

[005] In general, frequency bands do not have the same bandwidth, but instead, lower frequency filters are narrower (and more closely spaced) than higher frequency filters. As a consequence, the impulse responses of higher frequency filters will be more Petition 870260055414, dated 08 / 06 / 2026, page 9 / 86 2 / 29 compact (having most of their energy spread over a smaller number of samples) than the impulse responses of lower frequency filters (having their energy spread over a larger number of samples). SUMMARY

[006] One problem with existing filter banks is latency. For lower frequency filters, in order to accurately represent the impulse response, a definite number of samples must be used, which corresponds to the filter latency. Higher frequency filters do not need to use as many samples as lower frequency filters and therefore have lower latency. However, in a filter bank containing both low and high frequency filters, in order to recombine the filtered bands, the high frequency filters need to be delayed to match the latency of the low frequency filters. Therefore, the latency of the low frequency filters constrains the overall latency of the filter bank.

[007] Given the above, it is necessary to reduce latency at low frequencies while preserving the impulse response of the filter. Techniques related to the design of low-latency filters are described in this document.

[008] According to one embodiment, an audio processing method includes generating a plurality of modified impulse responses from a plurality of ideal impulse responses, wherein the plurality of ideal impulse responses correspond, respectively, to a plurality of frequencies, wherein generating the plurality of modified impulse responses includes performing a fading operation and a time reversal operation on at least one of the plurality of ideal impulse responses. The method further includes filtering an input signal with the plurality of modified pulse responses to generate an output signal.

[009] The generation of a plurality of modified impulse responses may include generating a pre-ripple response based on a first response of Petition 870260055414, dated 08 / 06 / 2026, page 10 / 86 3 / 29 ideal impulse; generate a post-wave response based on the pre-wave response; and add the first ideal impulse response, subtracting the pre-wave response and adding the post-wave response to generate a first modified impulse response.

[010] Generating a plurality of modified impulse responses can include generating a first filter response based on an ideal first impulse response; generating a pre-ripple response based on the first filter response; generating an intermediate response based on the pre-ripple response; generating a second filter response based on the intermediate response; generating a post-ripple response based on the second filter response; and adding the first filter response, adding the post-ripple response, and subtracting the pre-ripple response to generate a first modified impulse response.

[011] According to another embodiment, a device includes a processor and a memory. The processor is configured to control the apparatus to generate a plurality of modified impulse responses from a plurality of ideal impulse responses, wherein the plurality of ideal impulse responses correspond, respectively, to a plurality of frequencies, wherein generating the plurality of modified impulse responses includes performing a fading operation and a time reversal operation on at least one of the plurality of ideal impulse responses. The processor is further configured to control the apparatus to filter an input signal with the plurality of modified pulse responses to generate an output signal. The apparatus may further include details similar to those of one or more of the methods described in this document.

[012] According to another embodiment, a non-transient computer-readable medium stores a computer program which, when executed by a processor, controls an apparatus to perform processing which includes or Petition 870260055414, dated 08 / 06 / 2026, page 11 / 86 4 / 29 more of the methods described in this document.

[013] The following detailed description and attached drawings provide further understanding of the nature and advantages of various deployments. BRIEF DESCRIPTION OF THE DRAWINGS

[014] Figure 1 is a block diagram of a filter bank 100.

[015] Figure 2 is a 200 graph showing a set of filter bank frequency responses.

[016] Figure 3 is a graph 300 showing an exemplary combined filter response 302.

[017] Figure 4 is a block diagram of a 400 filter bank.

[018] Figure 5 is a block diagram of a 500 filter bank.

[019] Figure 6 is a graph of a 600 impulse response.

[020] Figure 7 is a block diagram of a 700 filter matrix.

[021] Figure 8 is an 800 plot showing an exemplary set of time-domain filter bank impulse responses.

[022] Figure 9 is a 900 signal plot showing an improved method for modifying impulse responses.

[023] Figure 10 is a block diagram of a 1000 method for generating a filter response.

[024] Figure 11 is a graph 1100 that shows several signals related to Figure 10

[025] Figure 12 is a set of graphs showing a phase distortion 1202 and a group delay 1204.

[026] Figure 13 is a 1300 graph showing various impulse responses.

[027] Figure 14 is a block diagram of a 1400 method for generating a filter response.

[028] Figure 15 is a 1500 graph showing various signals related to Petition 870260055414, dated 08 / 06 / 2026, page 12 / 86 5 / 29 Figure 14

[029] Figure 16 is a flow diagram of a 1600 audio processing method.

[030] Figure 17 is a flow diagram of an audio processing method 1700.

[031] Figure 18 is a flow diagram of an 1800 audio processing method. DETAILED DESCRIPTION

[032] Techniques relating to audio filters are described in this document. In the following description, for explanatory purposes, numerous examples and specific details are presented in order to provide a thorough understanding of the present disclosure. It will be evident, however, to one skilled in the art that the present disclosure, as defined by the claims, may include some or all of the particularities in these examples alone or in combination with other particularities described below and may further include modifications and equivalents of the particularities and concepts described in this document.

[033] In the following description, various methods, processes, and procedures are detailed. Although particular steps may be described in a certain order, this order is primarily for convenience and clarity. A specific step may be repeated more than once, may occur before or after other steps (even if those steps are otherwise described in a different order), and may occur in parallel with other steps. A second step is required to follow a first step only when the first step must be completed before the second step is initiated. This situation will be specifically indicated when it is not clear from the context.

[034] In this document, the terms “and”, “or”, and “and / or” are used. These terms should be read as having an inclusive meaning. For example, “A and B” can Petition 870260055414, dated 08 / 06 / 2026, page 13 / 86 6 / 29 means at least the following: “Both A and B”, “at least both A and B”. As another example, A or B can mean at least the following: “At least A”, “at least B”, “both A and B”, “at least both A and B”. As another example, A and / or B can mean at least the following: “A and B”, “A or B”. When an exclusive “or” is intended, this will be specifically indicated (e.g., A or B, at most one of A and B).

[035] This document describes various processing functions that are associated with structures such as blocks, elements, components, circuits, etc. In general, these structures can be implemented by a processor that is controlled by one or more computer programs.

[036] Figure 1 is a block diagram of a filter bank 100. The filter bank 100 includes several filters that are not shown individually. The filter bank 100 is configured with a number of weights 102 (also referred to as weighting coefficients), where each of the weights 102 corresponds to a gain for a particular frequency band. The filter bank 100 receives an input signal 104, applies the weights 102 to the input signal 104, and generates an output signal 106. The weights 102 can vary over time.

[037] The input signal 104 (and the output signal 106) can be a single-channel signal, in which case the filter bank 100 includes a series of filters, where each filter corresponds to one of the weights 102 and a particular frequency band. The input signal 104 (and the output signal 106) can be a multi-channel signal, in which case the filter bank 100 includes a series of filter matrices, where each filter matrix corresponds to one of the channels and each filter in a given matrix corresponds to one of the weights 102 and a particular frequency band. The input signal 104 and the output signal 106 can be multi-channel signals with a different number of channels, where each filter matrix corresponds to one of the input channels and one of the output channels. Petition 870260055414, dated 08 / 06 / 2026, page 14 / 86 7 / 29

[038] In general, the filtering techniques described in this document can be applied to each individual filter in the 100 filter matrix.

[039] Figure 2 is a 200 graph showing a set of filter bank frequency responses. In the 200 graph, the x-axis is the frequency and the y-axis is the gain. As an example, a set of bandpass impulse responses B, hi(n), h2(n),..., he(n) can be pre-calculated, with bandpass center frequencies fci, fC2,..., fcs. Ideally, the filter hb(n) will have a frequency response, Hb(f) that (approximately) satisfies: Equation (1): iH Ή =[1 in <We!i = bbfk1.0 de outro modo

[040] The frequency response 202 of the H2(f) filter is shown having a gain of 1 at f = fC2 and a gain of 0 at all other values ​​of f = fob, b Ψ 2. The other Hb(f) filters have a gain of 1 at another of the fob frequencies. The frequency fs / 2 is the frequency at half the sampling rate (the Nyquist rate).

[041] A set of weighting coefficients, wi, W2,..., wb can then be used to form the combined filter response. The time-domain and frequency-domain versions of the equation are as follows: Equation (2): Time domain: Equation (3): tf Frequency domain: 11(f) = Ht>(f)wb b=i

[042] Figure 3 is a graph 300 showing an exemplary combined filter response 302. The x-axis is the frequency (five frequency values ​​shown) and the y-axis is the gain (five corresponding weights shown). The gain 304 at f = fC2 is equal to W2, as an example. The other frequencies fob have gains that correspond to their respective weights Wb. In a practical application, Petition 870260055414, dated 08 / 06 / 2026, page 15 / 86 8 / 29 This combined filter response can be deployed in a variety of ways, as shown in Figures 4-5.

[043] Figure 4 is a block diagram of a filter bank 400. The filter bank 400 includes a series of convolution blocks 402, a series of multiplication blocks 404, and an addition block 406. The filter bank 400 receives an input signal 410 (shown as X and also referred to as x(n), which refers to the input signal for a given sample n) and generates an output signal 412 (shown as Y and also referred to as y(n)).

[044] Each of the convolution blocks 402 generally corresponds to a given frequency, frequency band or frequency range associated with an impulse response 420 (shown as hb). A given convolution block 402 convolves the input signal 410 (e.g., x(n)) with the impulse response 420 (e.g., hb(n)) to generate a filtered signal 422 (e.g., xb(n)).

[045] Each of the multiplication blocks 404 is associated with a weight 430 (shown as Wb) and is associated with one of the convolution blocks 402 (also associated with a frequency band). A given multiplication block 404 multiplies the filtered signal 422 (e.g., xb(n)) with the weight 430 (e.g., Wb) to generate a weighted signal 432.

[046] The addition block 406 adds the weighted signal 432 from each of the multiplication blocks 404 to generate the output signal 412.

[047] The equations that represent these operations are as follows: Equation (4): Sub-band signals x^n) = [h ® r](íi) Equation (5): h[k )x(ji — k) co· Equation (6): Petition 870260055414, dated 08 / 06 / 2026, page 16 / 86 9 / 29 Filtered output: X) =

[048] The operator {... 0...} used in Equation (4) indicates the convolution of h(n) with x(n).

[049] Equation (5) shows the details of the convolution operation, resulting in the creation of sub-band signals xi(n), X2(n),..., xe(n). The output signal 412 (e.g., y(n)) is then formed as the sum of these sub-band signals multiplied by their respective weights, as shown in Equation (6).

[050] According to this method, the weights can vary over time, so Wb can also be replaced by Wb(n) in Equation (6).

[051] Figure 5 is a block diagram of a filter bank 500. The filter bank 500 includes a series of multiplication blocks 502, an addition block 504, and a convolution block 506. The filter bank 500 receives an input signal 510 (shown as X and also referred to as x(n), which refers to the input signal for a given sample n) and generates an output signal 512 (shown as Y and also referred to as y(n)).

[052] Each of the multiplication blocks 502 generally corresponds to a given frequency, frequency band, or frequency range associated with an impulse response 520 (shown as hb) and is also associated with a weight 530 (shown as Wb). A given multiplication block 502 multiplies the impulse response 520 (e.g., hb(n)) and the weighting coefficient 530 (e.g., Wb(n)) to generate one of the weighted responses 532.

[053] The addition block 504 adds the weighted responses 532 from each of the multiplication blocks 502 to generate a combined filter response 540.

[054] The convolution block 506 convolves the input signal 510 (e.g., x(n)) with the combined filter response 540 to generate the output signal 512 (e.g., y(n)). Petition 870260055414, dated 08 / 06 / 2026, p. 17 / 86 10 / 29

[055] In general, the 500 filter bank implements a dynamic filter that performs a periodic calculation of the filter response. For example, the input audio can be processed in (overlapping) audio blocks and, at the time of block #k, the filter response (in the frequency domain) can be calculated according to Equation (3).

[056] In one embodiment, we can implement the actual convolution operation in the frequency domain, using overlapping audio blocks, with smoothed crossfades between the audio blocks, which can allow the filter response to be changed block by block.

[057] In a typical application, the responses of the filter bank are causal filters, where the filter output depends only on the past and present inputs (so that for each be {1,2,..., B} the impulse response hb(n) = 0, vn <0). If all the responses of the filter bank are causal, the combined response (h(n), as per Equation (2)) will also be causal.

[058] Figure 6 is a graph of a 600 impulse response. The 600 impulse response results from applying a filter such that for each be {1,2,..., B} the impulse response hb(n) = 0, vn <—L, where L is a positive integer. Filters with this property can be implemented in practice by adding an additional delay of L samples in the filter implementation (so that the impulse responses are shifted by L samples in time to allow them to be implemented as causal filters).

[059] Figure 7 is a block diagram of a 700 filter matrix. The 700 filter matrix includes a series of 702 filters (shown as Filtrony, nx) and a series of addition blocks 704. The 700 filter matrix receives a series of 710 input signals (shown as Xi to Xnx) and generates a series of 712 output signals (shown as Y1 to Yny). In general, the 700 filter matrix illustrates the operation of a multi-channel input and multi-channel output system, where a filter joins each input to each output. The 700 filter can also be conceptualized as a multi-channel filter bank where, for Petition 870260055414, dated 08 / 06 / 2026, page 18 / 86 11 / 29 for each frequency band, there is a two-dimensional matrix [ny by nx] that defines the mixing of inputs to form the outputs.

[060] 702 filters are arranged in banks, where each filter bank is associated with one of the 710 input signals (e.g., a channel). Each of the 702 filters is generally associated with a frequency band, a filter response, and a weight similar to the other filters discussed here.

[061] For example, each of the 702 filters can be a filter, such as the 400 filter bank (see Figure 4), the 500 filter bank (see Figure 5), etc.

[062] In terms of frequency domain filter responses, we can describe the processing of the 700 filter matrix in terms of the following equation: Equation (7): il

[063] The modalities described in this document refer to methods used to implement one or more of the 702 filters. It will be understood that the modalities are equally applicable to filter arrays, as shown in Figure 7.

[064] Referring again to Figure 3, the desired frequency response of an example filter is shown, where the gain of the 302 filter response, as a function of frequency, is defined according to a predefined set of control frequencies, fci, fC2,... and the corresponding gain values, wi, W2,...

[065] In the example in Figure 3, the filter gain at frequency fC2 is defined by W2, as shown as the gain 204.

[066] In one embodiment, the frequency response of Figure 3 is obtained by the weighted sum of a series of predefined filter bank responses. Exemplary responses are shown in Figure 2, with the frequency response 202 of band 2 being shown.

[067] There will be a reference to the response of each of these predefined responses from the filter bank as Hb(f) (in the frequency domain) or, Petition 870260055414, dated 08 / 06 / 2026, page 19 / 86 12 / 29 alternatively, as hb(n) (in the time domain).

[068] A desired filter response (such as 302 in Figure 3) can be formed from a weighted sum of responses from a predefined filter bank. This can be expressed as a sum in the time domain or in the frequency domain: Equation (8): Time domain: B K) = £ b=i Equation (9): tf Frequency domain: ( / ( / ) = b=i

[069] We can choose to insist that each of the predefined responses from the filter bank must represent a causal filter (such that h(n) = 0, V n < 0). However, for convenience, we instead insist that h(n) = 0, V n < - L and therefore we will be obliged to add L latency samples to the deployment of our filters, so that the final (realizable) filter output, y'(n), will be calculated as a delayed version of the ideal response, y(n), according to: Equation (10): OÜYÜO = Σ fc=-L Equation (11): / («) = yín - A) Equation (12): = / i(k)x(nk=-L

[070] Note that the calculation of the nth output sample of the ideal signal, y(n), is calculated using input samples up to x(n + L) (including L input samples). Petition 870260055414, dated 08 / 06 / 2026, page 20 / 86 13 / 29 future). In contrast, the calculation of the nth output sample of the delayed signal, y'(n), is calculated using only input samples up to x(n).

[071] An example of an impulse response, with the property that h(n) = 0, V n <- L, is shown in Figure 6

[072] In one embodiment, the frequency resolution of the filter bank (the spacing between the center frequencies of adjacent filter banks, for example fcb + 1 - fcb ) is small, while the latency L is also small.

[073] In one particular embodiment, a bank of low latency filters is used to provide low latency L and high resolution. In another embodiment, a bank of low all-pass latency filters is used to provide low perceived latency L and high resolution. Responses from the ideal filter database

[074] A filter bank can be constructed by a variety of means, including a method whereby ideal frequency responses are created as shown in Figure 2, and then converted into ideal linear phase time-domain impulse responses.

[075] Figure 8 is an 800 plot showing an exemplary set of time-domain filter bank impulse responses. In the 800 plot, the x-axis is time (in samples) and the y-axis is frequency. Numerous filter responses are shown in the 800 plot, with each filter response corresponding to a given frequency, as indicated by the names Fi, F2,..., Fb, where the number of filters in the filter bank in this example is B = 10. The highest number (e.g., 10) corresponds to the higher frequency and the lowest number (e.g., 1) corresponds to the lower frequency. The ideal impulse response for filter Fb is h'b(n) (for be {1,2,..., B}). Two 802 and 804 filter responses are shown for further discussion below; The response of filter 802 corresponds to the third filter (h'3(n)) and the response of filter 804 corresponds to the response of the lower frequency filter (h'1(n)). Petition 870260055414, dated 08 / 06 / 2026, p. 21 / 86 14 / 29

[076] According to common practice, the responses from the ideal filter bank exhibit a perfect sum property, as follows: Equation (13): B £ *400 = W i? = eu Equation (14): fl K = 0 where oín) = otherwise

[077] Preferably, we can make use of filter banks in which the lower frequency filters are narrower (and more spaced out) than the higher frequency filters, as illustrated in Figure 2, where the separation between fci and fc2 is smaller than the separation between fC4 and fcs, for example. As a consequence, the impulse responses of the higher frequency filters will be more compact (having most of their energy spread over a smaller number of samples) than the impulse responses of the lower frequency filters, as can be seen in Figure 8.

[078] Theoretically, the impulse responses of ideal filter banks can be infinite in length and, in particular, it can be seen in Figure 8 that the impulse response 802 of filter F3 does not satisfy the desired low latency property: h's(n) = 0, V n <—L. Therefore, the filters shown in Figure 8 are not suitable for deploying a low latency filter bank. Techniques for low-latency filter responses

[079] According to one method, a bank of low-latency filters (with latency L) can be created simply by truncating the ideal impulse responses, as follows: Equation (15):

[080] However, this truncation will impact the resulting responses. Petition 870260055414, dated 08 / 06 / 2026, page 22 / 86 15 / 29 at low frequencies and may result in auditory artifacts if used in a real-world system.

[081] Figure 9 is a 900 signal plot showing an improved method for modifying impulse responses. In the 900 plot, the x-axis is time (in samples). The y-axis is magnitude; note that each signal is independent of the others on the y-axis (i.e., the y-axis shows the magnitude range of each signal independently, not any kind of relative magnitude or comparison between the signals). Signal 802 corresponds to the ideal impulse response of the F3 filter (e.g., Ϊ3(η)), as also shown in Figure 8. Signal 904 corresponds to an attenuation function. Signal 906 corresponds to signal 802 multiplied by signal 904 to generate a low-latency filter response, as follows: Equation (16): = A'b(n)q(n) Equation (17): / 0 n < —L ,x) 1 n > 0 enique:q(n) = < > , Icos2T7T---TT In Ü

[082] It will be understood by those skilled in the art that according to both techniques (Equation (15) and Equation (16)), the resulting impulse response hb(n) has the desirable property that hb (0) = h'b (0), and this ensures that the perfect reconstruction criteria (Equation (13)) will be satisfied.

[083] However, the frequency response of these filters (as produced by Equation (15) or Equation (16)) will not necessarily correspond to the original (ideal) responses, h'b(n), as may be possible with improved techniques, as discussed below. Enhanced method for low-latency filter responses

[084] Figure 10 is a block diagram of a method 1000 for generating Petition 870260055414, dated 08 / 06 / 2026, page 23 / 86 16 / 29 a filter response. The 1000 method can be used to generate the filter response for one or more of the filters in any of the filter banks discussed here (e.g., filter bank 400 of Figure 4, filter bank 500 of Figure 5, filter 702 in filter matrix 700 of Figure 7, etc.). The 1000 method includes an attenuation block 1002, a time reversal block 1004, and a summation block 1006. The blocks of the 1000 method can be deployed in various ways, for example, by circuit elements, by a processor running one or more computer programs, etc.

[085] The fading block 1002 receives an ideal impulse response 1010, applies a fading function, and generates a pre-ripple response 1012. The ideal impulse response 1010 may correspond to one or more of the ideal impulse responses discussed above (e.g., h'b(n) as discussed in Figure 8 or Figure 9, such as signal 802). An example of the fading function is shown in Figure 11.

[086] The time reversal block 1004 performs a time reversal operation on the pre-ripple response 1012 to generate a post-ripple response 1014. The time reversal operation generally corresponds to mirroring the pre-ripple response 1012 around the zero sample of the signal. An example of the time reversal operation is shown in Figure 11.

[087] The summation block 1006 adds the ideal impulse response 1010, subtracts the pre-ripple response 1012 and adds the post-ripple response 1014 to generate a filter response 1016.

[088] Figure 11 is a 1100 graph showing several signals related to Figure 10. In the 1100 graph, the x-axis is time (in samples) and the y-axis is magnitude; as with Figure 9, note that the magnitude of each signal is independent of the other signals. Signal 802 corresponds to the ideal impulse response of the F3 filter (e.g., h'3(n)), as also shown in Figures 8-9. See also the response Petition 870260055414, dated 08 / 06 / 2026, page 24 / 86 17 / 29 of ideal impulse 1010 in Figure 10

[089] The signal 1102 corresponds to an attenuation function. See also the signal 904 in Figure 9. The signal 1104 corresponds to the signal 802 multiplied by the signal 1102 to generate a pre-ripple response. See also the pre-ripple response 1012 in Figure 10.

[090] Signal 1106 corresponds to a time reversal of signal 1104, referred to as the after-ripple response. See also after-ripple response 1014 in Figure 10

[091] Signal 1108 corresponds to the filter bank response and is generated by adding signal 802 (the ideal impulse response 1010), subtracting signal 1104 (the pre-ripple response 1012), and adding signal 1106 (the post-ripple response 1014). See also the response of filter 1016 in Figure 10. The following equations illustrate this process: Equation (18): pre-ripple: r / 2(π) = / ι^(η)ΐ(?ι) Equation (19): / 1 fading function: = H cas2s(n + L + I) 7TX l 4(L + 1) J rt > L -L <n<L· Equation (20): post-ripple: rJ'JS(n) = r^C—n) Equation (21): low latency response: hb(.n)= — rbK(n) +rbP^ tn)

[092] Note that, according to Equation (20), η,ροί(0) = r£re(0) and therefore the low-latency impulse response hb(n) (according to Equation (21)) will have the desirable property that hb (0) = h'b (0), and this ensures that the criteria Petition 870260055414, dated 08 / 06 / 2026, page 25 / 86 18 / 29 of perfect reconstruction (Equation (13)) will be satisfied. Low-latency All-Pass Filter Responses

[093] Various types of audio filtering can be used to modify an audio signal without the filtering group delay being perceptible to a listener. As an example, a typical high-pass filter, such as that used to remove unwanted low-frequency noise from recorded sounds, will introduce phase distortion at low frequencies that will not be considered detrimental by a listener. Another common type of filtering that will be imperceptible to a listener is an all-pass filter.

[094] Figure 12 is a set of graphs showing a phase distortion 1202 and a group delay 1204. The phase distortion 1202 and the group delay 1204 result from using the transfer function as shown in Equation (22) to process an audio signal sampled at 48 kHz. Equation (22): _ 0.994986 - lr000000z“l - 1.000000 - 0.994986z-L

[095] The constant of 0.994986 in Equation (22) is a typical value that corresponds to a transition frequency of approximately 37 Hz (where the phase shift of a first-order all-pass filter is 90 degrees), for a filter operating at a sampling rate of 48,000 samples per second. Alternative values ​​can be chosen for this constant, and for filters operating at 48,000 samples per second, the constant can vary between 0.9490 and 0.9993, whose values ​​correspond to transition frequencies of 400 Hz and 5 Hz, respectively.

[096] Given that this phase distortion 1202 produces artifacts in the output audio signal that are acceptable to a listener, it is therefore acceptable to apply the same phase distortion to the ideal impulse responses, to produce a new set of all-pass filter responses, as shown in Figure 13

[097] Figure 13 is a 1300 graph showing various impulse responses. Petition 870260055414, dated 08 / 06 / 2026, p. 26 / 86 19 / 29 In graph 1300, the x-axis represents time (in samples) and the y-axis organizes the impulse responses at various frequencies Fn. The impulse response 1302 of filter F3 appears to be similar to the original (ideal) response 802 of filter F3 in Figure 8. In contrast, the impulse response 1304 of filter F1 appears to be different from the original (ideal) response 804 of filter F1 in Figure 8. This difference is due to the effect of an all-pass filter, which affects lower frequency filters, although it has a negligible impact on higher frequency filters. The all-pass filter is discussed in more detail below.

[098] It can be seen that the impulse response 1304 of the F1 filter has a smaller amplitude in the 1306 region (more than 100 samples before time zero) compared to the 1308 region (more than 100 samples after time zero). Shifting the energy of the impulse response to a later point in the impulse response is a desirable attribute of the all-pass filter, as it produces a filter bank that more closely approximates the latency constraint (where L = 100 in the example of Figure 13).

[099] Figure 14 is a block diagram of a 1400 method for generating a filter response. The 1400 method can be used to generate the filter response for one or more of the filters in any of the filter banks discussed here (e.g., the 400 filter bank of Figure 4, the 500 filter bank of Figure 5, the 702 filter in the 700 filter matrix of Figure 7, etc.). The 1400 method includes an all-pass filter 1402, a fade block 1404, a time reversal block 1406, an all-pass filter 1408, an all-pass filter 1410, and a sum block 1412. The blocks of the 1400 method can be deployed in various ways, for example, by circuit elements, by a processor running one or more computer programs, etc.

[0100] The all-pass filter 1402 receives an ideal impulse response 1420, performs all-pass filtering, and generates a filter response 1422. The ideal impulse response 1420 may correspond to one or more of the ideal impulse responses discussed above (e.g., h'b(n), as discussed in Figure 8 or Figure 9, Petition 870260055414, dated 08 / 06 / 2026, page 27 / 86 20 / 29 as the 802 signal). The impulse response of the all-pass filter is discussed in more detail in the equations below.

[0101] The fading block 1404 applies a fading function to the filter response 1422 to generate a pre-ripple response 1424. An example of the fading function is shown in Figure 15.

[0102] The time reversal block 1406 performs a time reversal operation on the pre-ripple response 1424 to generate an intermediate response 1426. An example of the time reversal operation is shown in Figure 15.

[0103] The 1408 all-pass filter performs all-pass filtering on the intermediate response 1426 to generate a 1428 filter response.

[0104] The all-pass filter 1410 performs all-pass filtering on the response of filter 1428 to generate a post-ripple response 1430.

[0105] The sum block 1412 adds the filter response 1422, adds the post-ripple response 1430, and subtracts the pre-ripple response 1424 to generate a filter response 1432.

[0106] In one embodiment, in order to correctly satisfy the latency constraint, we apply the process of Equation (21), with an adaptation to the calculation, to allow the introduction of the all-pass filter. In the following equations, the notation {a 0 b}(n) is used to indicate the convolution of the impulse responses a(n) and b(n). The generation of the low-latency all-pass filter responses is performed as follows: Equation (23): pass-all: / ιθ(η) = (# 0 Equation (24): pre-ripple: η^ / π) = (π) Equation (25): Petition 870260055414, dated 08 / 06 / 2026, page 28 / 86 21 / 29 / 1 n<-L , .0 n>Lefficiency function:s(n) = < Οι + £ + Γ)π 4(1.+ 1) ) -LSn<0 Equation (26): post-rippling: rfip0£(κ) = n) Equation (27): low latency response: Λΰ(η) = h%(n) — (η) 4- (y 0 g @ r^s}(rt)

[0107] In the equations above, g(n) is the impulse response of the all-pass filter (see also Equation (22)).

[0108] In one embodiment, the all-pass filter is a first-order filter with a single real pole at a frequency between 10 Hz and 200 Hz. For a filter bank operating on audio sampled at a rate of Fsamples per second, with a latency L, the frequency of the all-pass pole can be set to approximately: Equation (28): Fsft all-pass pole equation: f = —— Hz •L Δ jL·

[0109] The calculation of the pole frequency as shown in Equation (28) is an example. It will be understood that other pole frequencies will also provide the benefit of a better latency / precision ratio in the design of a filter bank.

[0110] When the impulse responses of filter set B in the low-latency all-pass filter bank are summed, the final result (the reconstruction impulse response) is approximately equal to the all-pass response: Equation (29): uh(n) = 0 = 1 Equation (30): Petition 870260055414, dated 08 / 06 / 2026, page 29 / 86 22 / 29 *

[0111] The procedure in Figure 14 can be applied to each filter in the filter bank, so that, for example, for b and {1,2,..., B}, the ideal impulse response h'b(n) can be processed according to Figure 14 to produce the low-latency all-pass filter hb(n).

[0112] Figure 15 is a 1500 graph showing several signals related to Figure 14. In the 1500 graph, the x-axis is time (in samples) and the y-axis is magnitude; as with Figures 9 and 11, note that the magnitude of each signal is independent of the other signal. Signal 1304 corresponds to the filtered impulse response in all-pass of the filter (e.g., h'i(n)), as also shown in Figure 13. See also the response of filter 1422 in Figure 14 and Equation (23).

[0113] Signal 1502 corresponds to an attenuation function. See also signal 904 in Figure 9 and signal 1102 in Figure 11 and Equation (25). Signal 1504 corresponds to signal 1304 multiplied by signal 1502 to generate a pre-ripple response. See also pre-ripple response 1424 in Figure 14 and Equation (24).

[0114] Signal 1506 corresponds to a time reversal of signal 1504, referred to as the intermediate response. See also intermediate response 1426 in Figure 14. Signal 1508 corresponds to the application of an all-pass filter twice to signal 1506, referred to as the post-ripple response. See also post-ripple response 1430 in Figure 14 and Equation (26).

[0115] Signal 1510 corresponds to the filter bank response and is generated by adding signal 1304 (filter response 1422), adding signal 1508 (post-ripple response 1430) and subtracting signal 1504 (pre-ripple response 1424). See also Equation (27).

[0116] The differences between method 1000 in Figure 10 and method 1400 in Figure 14 can be conceptualized as follows. First, note that method 1000 operates on the response of the h'b(n) filter, and method 1400 operates on the version Petition 870260055414, dated 08 / 06 / 2026, p. 30 / 86 23 / 29 filtered all-pass g ® h'b(n). The 1000 method process is based on the fact that the pre-ripple and post-ripple components are mirrored around t = 0 and, together, we know that the ideal impulse response 1010 is symmetrical with respect to time zero.

[0117] Extending this knowledge to the 1400 method, imagine that we can make a new filter component: preA = g-1®pre_ripple. This means that we take the original pre_ripple (for example, the intermediate response 1426 or the signal 1506) and apply the inverse of the all-pass function g.

[0118] Next, we make another new filter component: postA (t) = preA (-t). This is simply the mirrored version of preA.

[0119] Now, we can make another new filter component: finalA = h'b(n) + postA - preA. This step is very similar to the process used in Figure 10 and, most importantly, this step obeys our mantra: the pre-ripple and post-ripple components are made by mirroring around t = 0 and, together, we know that the original filter is symmetrical with respect to time zero.

[0120] We can then construct the final filter: final_filter = g ® finalA = g ® (h'b(n) + postA -preA) = g ® h'b(n) + g ® postA - g ® preA = orig_filter + g ® postA pre_ripple.

[0121] Now, we know that: postA = mirror (preA) = mirror (g-1® pre_ripple) = g ® mirror (pre_ripple) = g ® post_ripple. (This is true because the time mirror of an all-pass filter is the same as the inverse of the all-pass filter.)

[0122] Therefore, we obtain: final_filter = orig_filter + g (g) postA - pre_ripple = orig_filter + g ® g ® post_ripple - pre_ripple.

[0123] Figure 16 is a flow diagram of a 1600 audio processing method. The 1600 method can be implemented by a processor executing instructions, for example, according to one or more programs of Petition 870260055414, dated 08 / 06 / 2026, page 31 / 86 24 / 29 computer.

[0124] In 1602, modified impulse responses are generated from ideal impulse responses. The ideal impulse responses correspond respectively to a number of frequencies. The generation of the modified impulse responses includes performing a fade operation and a time reversal operation on at least one of the ideal impulse responses. For example, method 1000 (see Figure 10) can perform a fade operation using fade block 1002 and a time reversal operation using time reversal block 1004 on the ideal impulse response 1010. As another example, method 1400 (see Figure 14) can perform a fade operation using fade block 1404 and a time reversal operation using time reversal block 1406 on the ideal impulse response 1420.

[0125] In 1604, an input signal is filtered with modified impulse responses (see 1602) to generate an output signal. For example, filter bank 100 (see Figure 1) may include a series of filters with modified impulse responses generated in 1602 and may generate output signal 106 from input signal 104.

[0126] The general steps of method 1600 are detailed in Figures 1718.

[0127] Figure 17 is a flow diagram of a 1700 audio processing method. The 1700 method can be implemented by a processor executing instructions, for example, according to one or more computer programs. The 1700 method is similar to the 1600 method (see Figure 16) with more specific details for the operation of the 1000 method (see Figure 10).

[0128] In 1702, modified impulse responses are generated from Petition 870260055414, dated 08 / 06 / 2026, page 32 / 86 25 / 29 ideal impulse responses. This includes substeps 1704-1708.

[0129] In 1704, a pre-ripple response is generated based on an ideal first impulse response. For example, the fading block 1002 (see Figure 10) can perform a fading operation on the ideal impulse response 1010 to generate the pre-ripple response 1012. See also Equation (18).

[0130] In 1706, a post-ripple response is generated based on the pre-ripple response. For example, the time reversal block 1004 (see Figure 10) can perform a time reversal operation on the pre-ripple response 1012 to generate the post-ripple response 1014. See also Equation (20).

[0131] In 1708, a first modified impulse response is generated by adding the first ideal impulse response, subtracting the pre-ripple response, and adding the post-ripple response. For example, summation block 1006 (see Figure 10) can add the ideal impulse response 1010, subtract the pre-ripple response 1012, and add the post-ripple response 1014 to generate the filter response 1016. See also Equation (21).

[0132] In 1710, an input signal is filtered with modified impulse responses (see 1702-1708) to generate an output signal. For example, filter bank 100 (see Figure 1) may include a series of filters with modified impulse responses generated in 1702 and may generate output signal 106 from input signal 104.

[0133] Figure 18 is a flow diagram of an 1800 method of audio processing. The 1800 method can be implemented by a processor executing instructions, for example, according to one or more computer programs. The 1800 method is similar to the 1600 method (see Figure 16) with more specific details for the operation of the 1400 method (see Figure 14). Petition 870260055414, dated 08 / 06 / 2026, page 33 / 86 26 / 29

[0134] In 1802, modified impulse responses are generated from ideal impulse responses. This includes substeps 1804-1814.

[0135] In 1804, a first filter response is generated based on an ideal first impulse response. For example, the all-pass filter 1402 (see Figure 14) can perform an all-pass filter operation on the ideal impulse response 1420 to generate the filter response 1422. See also Equation (23).

[0136] In 1806, a pre-ripple response is generated based on the first filter response. For example, the fade block 1404 (see Figure 14) can perform a fade operation on the filter response 1422 to generate the pre-ripple response 1424. See also Equation (24).

[0137] In 1808, an intermediate response is generated based on the pre-ripple response. For example, the time reversal block 1406 (see Figure 14) can perform a time reversal operation on the pre-ripple response 1424 to generate the intermediate response 1426. See also Equation (26).

[0138] In 1810, a second filter response is generated based on the intermediate response. For example, the all-pass filter 1408 (see Figure 14) can perform an all-pass filter operation on the intermediate response 1426 to generate the filter response 1428. See also Equation (27).

[0139] In 1812, a post-ripple response is generated based on the second filter response. For example, the all-pass filter 1410 (see Figure 14) can perform an all-pass filter operation on the response of filter 1428 to generate the post-ripple response 1430. See also Equation (27).

[0140] In 1814, a first modified impulse response is generated by adding the first filter response, adding the post-ripple response, and subtracting the pre-ripple response. For example, summation block 1412 (see Figure 14) can add the filter response 1422, add the post-ripple response 1430, and subtract the pre-ripple response 1424 to generate the response of Petition 870260055414, dated 08 / 06 / 2026, page 34 / 86 27 / 29 filter 1432. See also Equation (27).

[0141] In 1816, an input signal is filtered with modified impulse responses (see 1802-1814) to generate an output signal. For example, filter bank 100 (see Figure 1) may include a series of filters with the modified impulse responses generated in 1802 and may generate output signal 106 from input signal 104.

[0142] In one embodiment, an input audio signal can be processed to produce an output audio signal in which the processing gain at a number of predetermined frequencies is approximately equal to a corresponding set of gain coefficients. The processing can be implemented according to a filter response that is the weighted sum of a corresponding number of low-latency all-pass filter responses, with the weightings being determined by the corresponding gain coefficients. The low-latency all-pass filter responses were determined according to the method in Figure 18.

[0143] In an alternative embodiment, an input audio signal is processed to produce an output audio signal, wherein said output audio signal is formed by filtering said input audio signal by a total impulse response that is a weighted sum of a set of filter bank impulse responses. The sum of the filter bank impulse responses is an all-pass filter. The all-pass filter may have an approximately constant phase response above a frequency of approximately 500 Hz and a group delay that increases at lower frequencies.

[0144] In an alternative embodiment, an input audio signal is processed to produce an output audio signal, wherein said output audio signal is formed by filtering said input audio signal by a total impulse response that is a weighted sum of a set of impulse responses of Petition 870260055414, dated 08 / 06 / 2026, p. 35 / 86 28 / 29 filter bank. A reconstruction impulse response can be formed by summing the impulse responses of the filter bank such that the group delay of the reconstruction impulse response is approximately constant over a frequency range above 500 Hz and increases below 500 Hz. For example, the group delay may be perceptually constant above 500 Hz (varying by no more than 0.1 ms), and at lower frequencies, for example, less than 500 Hz, it may vary by less than 0.5 / f seconds. The bandwidth of one or more impulse responses of said filter bank impulse response set may be narrower according to the increased group delay of the reconstruction impulse response. Deployment details

[0145] An embodiment may be implemented in hardware, executable modules stored on computer-readable media, or a combination of both (e.g., programmable logic arrays). Unless otherwise specified, the steps performed by the embodiments need not be inherently connected to any specific computer or other apparatus, although they may be in certain embodiments. In particular, various general-purpose machines may be used with programs written in accordance with the teachings of this document, or it may be more convenient to construct more specialized apparatus (e.g., integrated circuits) to perform the necessary method steps.Thus, the modalities can be implemented in one or more computer programs running on one or more programmable computer systems, each comprising at least one processor, at least one data storage system (including volatile and non-volatile memory and / or storage elements), at least one input device or port, and at least one output device or port. The program code is applied to the input data to perform the functions described in this document and generate... Petition 870260055414, dated 08 / 06 / 2026, page 36 / 86 29 / 29 Output information. Output information is applied to one or more output devices in a known manner.

[0146] Each of these computer programs is preferably stored or downloaded to a storage medium or device (e.g., memory or solid-state media, or magnetic or optical media) readable by a general-purpose or special-purpose programmable computer, to configure and operate the computer when the storage medium or device is read by the computer system to perform the procedures described herein. The inventive system may also be considered to be implemented as a computer-readable storage medium configured with a computer program, wherein the storage medium thus configured causes a computer system to operate in a specific and predefined manner to perform the functions described herein. (Software per se and intangible or transient signs are excluded insofar as they are unpatentable subjects.)

[0147] The above description illustrates various embodiments of the present disclosure, along with examples of how aspects of the present disclosure can be implemented. The above examples and embodiments should not be considered the only embodiments and are presented to illustrate the flexibility and advantages of the present disclosure, as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations, and equivalents will be apparent to those skilled in the art and may be employed without departing from the spirit and scope of the disclosure as defined by the claims. Petition 870260055414, dated 08 / 06 / 2026, page 37 / 86

Claims

1 / 2 CLAIMS 1. Audio processing method, the method CHARACTERIZED in that it comprises: generating a plurality of modified impulse responses from a plurality of original impulse responses, wherein the plurality of original impulse responses correspond, respectively, to a plurality of frequencies; applying a plurality of weights to the plurality of modified impulse responses to generate a plurality of weighted modified impulse responses; and filtering an input signal with the plurality of weighted modified impulse responses to generate an output signal, wherein generating the plurality of modified impulse responses includes performing a fade operation and a time reversal operation on at least one of the plurality of original impulse responses;and generate each modified impulse response for a corresponding original filter based on one or more of the following: an impulse response from the corresponding original filter, a pre-ripple response from the corresponding original filter, and a post-ripple response from the corresponding original filter, wherein the fading operation is performed based on a fading function, the fading function having one value from two fixed values ​​and one variable value calculated according to a predetermined function.

2. Non-transient computer-readable medium CHARACTERIZED in that it stores a computer program which, when executed by a processor, controls an apparatus to perform processing which includes the method as defined in claim 1.

3. Audio processing apparatus, the apparatus CHARACTERIZED in that it comprises: Petition 870260055414, dated 08 / 06 / 2026, page 38 / 86 2 / 2 one or more processors; and a non-transient computer-readable medium that stores instructions which, when executed by the one or more processors, cause the one or more processors to perform the operations of the method as defined in claim 1. Petition 870260055414, dated 08 / 06 / 2026, page 39 / 86