Low-latency audio filter bank with improved frequency resolution

By employing fade and time reversal operations on ideal impulse responses, the method addresses the delay issue in low-frequency filters, resulting in low-latency audio processing with preserved impulse response and improved frequency resolution.

JP2025108458APending Publication Date: 2025-07-23DOLBY LABORATORIES LICENSING CORP
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2025052871
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-05-22
Filing Date
2025-03-27
Publication Date
2025-07-23

AI Technical Summary

Technical Problem

Existing filter banks face challenges in reducing delay at low frequencies while preserving the impulse response, particularly due to the need for a defined number of samples to accurately represent the impulse response of low-frequency filters, which contributes to overall delay.

Method used

A method involving generating modified impulse responses through fade and time reversal operations on ideal impulse responses, followed by specific additions and subtractions to create low-delay filter responses, ensuring the perfect reconstruction criterion is satisfied.

Benefits of technology

This approach reduces delay at low frequencies without compromising the impulse response, achieving low-latency audio processing with improved frequency resolution.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025108458000001_ABST
    Figure 2025108458000001_ABST
Patent Text Reader

Abstract

To provide an audio processing method that reduces delay at low frequencies while preserving impulse responses of filters.SOLUTION: An audio processing method includes a step of generating multiple modified impulse responses from multiple original impulse responses. The multiple original impulse responses correspond to respective multiple frequencies, and the step of generating the multiple modified impulse responses includes the steps of: generating a pre-ripple response based on a first original impulse response; generating a post-ripple response based on the pre-ripple response; and adding the first original impulse response, subtracting the pre-ripple response, and adding the post-ripple response to generate a first modified impulse response. The method further includes a step of filtering an input signal using multiple filters having the multiple modified impulse responses to generate an output signal.SELECTED DRAWING: Figure 10
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] [Related Applications] This application claims priority to U.S. Provisional Patent Application No. 63 / 028,966, filed May 22, 2020, and U.S. Provisional Patent Application No. 62 / 866,823, filed Jun. 26, 2019. Both applications are hereby incorporated by reference in their entirety.

[0002] [Technical Field] The present disclosure relates to audio processing, particularly dynamic audio filters.

Background Art

[0003] Unless otherwise specified, the approaches described in this chapter are not prior art to the claims of this application and are not admitted to be prior art by virtue of being included in this chapter.

[0004] When an input audio signal is being processed, it is often desirable to use a filter bank to modify the audio signal such that the gain at various frequencies is specified by a set of dynamic coefficients. A dynamic audio filter can be implemented by using a number of pre-computed band-pass filters, where the audio filter response is formed from a weighted sum of the band-pass filter responses. The weights may be changed dynamically.

[0005] Generally, the frequency bands do not have the same bandwidth. Rather, the lower frequency filters are narrower (and have closer spacing) than the higher frequency filters. As a result, the impulse response of the higher frequency filters (whose energy is spread over fewer samples) is more compact than the impulse response of the lower frequency filters (whose energy is spread over more samples).

Summary of the Invention

[0006] One problem associated with existing filter banks is delay. In low-frequency filters, a defined number of samples must be used to accurately represent the impulse response, which corresponds to the delay of the filter. High-frequency filters have a lower delay because they do not need to use as many samples as low-frequency filters. However, in a filter bank that includes both low-frequency and high-frequency filters to recombine the filtered bands, the high-frequency filter needs to be delayed to match the delay of the low-frequency filter. The delay of the low-frequency filter contributes to the overall delay of the filter bank.

[0007] In view of the above, it is necessary to reduce the delay at low frequencies while preserving the impulse response of the filter. This specification describes techniques related to low-delay filter design.

[0008] According to an embodiment, a method for audio processing is generating a plurality of modified impulse responses from a plurality of ideal impulse responses, wherein the plurality of ideal impulse responses each correspond to a plurality of frequencies, and the step of 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 ideal impulse responses; filtering an input signal having the plurality of modified impulse responses to generate an output signal; and including. The method further includes filtering an input signal having the plurality of modified impulse responses to generate an output signal.

[0009] The step of generating the plurality of modified impulse responses includes generating a pre-ripple response based on the ideal impulse response; generating a post-ripple response based on the pre-ripple response; Adding the first ideal impulse response, subtracting the pre-ripple response, and adding the post-ripple response to generate a first modified impulse response; may be included.

[0010] The step of generating the plurality of modified impulse responses includes: generating a first filter response based on a first ideal 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; adding the filter responses, adding the post-ripple response, and subtracting the pre-ripple response to generate a first modified impulse response; may be included.

[0011] According to another embodiment, an apparatus 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, the plurality of ideal impulse responses respectively corresponding to a plurality of frequencies, and 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 ideal impulse responses. The processor is further configured to control the apparatus to filter an input signal having the plurality of modified impulse responses to generate an output signal. The apparatus may further include details similar to one or more of the methods described herein.

[0012] According to another embodiment, a non-transitory computer-readable medium stores a computer program that, when executed by a processor, controls an apparatus to perform a process including the methods described herein.

[0013] The following detailed description and the accompanying drawings provide a further understanding of the characteristics and advantages of various implementations.

Brief Description of the Drawings

[0014]

Figure 1

[0015]

Figure 2

[0016]

Figure 3

[0017]

Figure 4

[0018]

Figure 5

[0019]

Figure 6

[0020]

Figure 7

[0021]

Figure 8

[0022]

Figure 9

[0023]

Figure 10

[0024]

Figure 11

[0025]

Figure 12

[0026]

Figure 13

[0027]

Figure 14

[0028]

Figure 15

[0029]

Figure 16

[0030]

Figure 17

[0031]

Figure 18

DETAILED DESCRIPTION OF THE INVENTION

[0032] This specification describes technologies related to audio filters. Through the following detailed description, for the purpose of explanation, numerous examples and specific details are described to provide a complete understanding of the present invention. However, it is clear to those skilled in the art that the present disclosure as defined by the claims may include some or all of the features in these examples, either alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts that may be described in this specification.

[0033] In the following description, various methods, processes, and procedures are detailed. Although specific steps may be described in a specific order, such an order is mainly for convenience and clarity. Specific steps may be repeated more than once, may occur before or after other steps (even if those steps are described in a different order), and may occur in parallel with other steps. The second step need only follow the first step if the first step must be completed before the second step is started. Such situations are specifically pointed out when not clear from the context.

[0034] In this specification, the terms "and", "or", "and / or" are used. Such terms should be interpreted as having an inclusive meaning. For example, "A and B" may mean at least the following: "both A and B", "at least both A and B". For example, "A or B" may mean at least the following: "at least A", "at least B", "both A and B", "at least both A and B". For example, "A and / or B" may mean at least the following: "A and B", "A or B". Particular attention should be paid when an exclusive disjunction is intended (e.g., "either A or B", "at most one of A and B").

[0035] This specification describes various processing functions associated with structures such as blocks, elements, components, circuits, etc. Generally, these structures may be implemented by a processor controlled by one or more computer programs.

[0036] FIG. 1 is a block diagram of a filter bank 100. The filter bank 100 includes a number of filters not individually shown. The filter bank 100 is constituted by a number of weights 102 (also called weighting coefficients). Each of the weights 102 corresponds to the gain of a specific 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 may change over time.

[0037] The input signal 104 (and the output signal 106) may be a single-channel signal. In this case, the filter bank 100 includes a number of filters, and each filter corresponds to one of the weights 102 and a specific frequency band. The input signal 104 (and the output signal 106) may be a multi-channel signal. In this case, the filter bank 100 includes a number of filter arrays, and each filter array corresponds to one of the channels. Each filter in a given array corresponds to one of the weights 102 and a specific frequency band. The input signal 104 and the output signal 106 may be multi-channel signals having different numbers of channels. Each filter array corresponds to one of the input channels and one of the output channels.

[0038] Generally, the filtering techniques described in this specification may be applied to each individual filter within the filter array.

[0039] FIG. 2 is a graph 200 showing a set of filter bank frequency responses. In graph 200, the x-axis is frequency and the y-axis is gain. As an example, a set of B band-pass filter responses h1(n), h2(n),..., h B (n) may be pre-calculated and have band-pass center frequencies fc1, fc2,..., fc B . Ideally, the filter h b (n) has a frequency response H b (f) that (substantially) satisfies the following:

Equation

[0040] The frequency response 202 of filter H2(f) is shown to have a gain of 1 at f = fc2, and a gain of 0 at all other values of f = fc b , b ≠ 2. Other filters H b (f) have a gain of 1 at other frequencies fc b . The frequency fs / 2 is half the sampling rate (Nyquist rate).

[0041] A set of weighting coefficients w1, w2,..., w B may then be used to form the combined filter response. The time-domain and frequency-domain versions of the equations are as follows:

Equation

Equation

[0042] Figure 3 is a graph 300 showing an exemplary combined filter response. The x-axis is frequency (five frequency values are shown), and the y-axis is gain (five corresponding weights are shown). The gain 304 at f = fc2 is equal to w2, for example. Other frequencies fc b have gains corresponding to their respective weights w b . In an actual application, this combined filter response may be implemented in various ways, as shown in Figures 4-5.

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

[0044] Each of the convolution blocks 402 is typically associated with a given frequency, frequency band, or frequency range corresponding to the impulse response 420 (shown as h b ). A given convolution block 402 convolves the input signal 410 (e.g., x(n)) with the impulse response 420 (e.g., h b (n)) to generate the filtered signal 422 (e.g., x b (n)).

[0045] Each of the multiplication blocks 404 is associated with a weight 430 (shown as w b ) and is associated with one of the convolution blocks 402 (and thus is similarly associated with a frequency band). A given multiplication block 404 multiplies the filtered signal 422 (e.g., x b (n)) by the weight 430 (e.g., w b ) to generate the weighted signal 432.

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

[0047] The equations representing these operations are as follows:

Equation

Equation

Equation

[0048] The operator used in Equation (4):

Equation

[0049] Equation (5) shows the details of the convolution operation, and as a result, sub-band signals x1(n), x2(n),..., x B (n) are generated. Next, as the sum of these sub-band signals multiplied by their respective weights, an output signal 412 (for example, y(n)) is formed as shown in Equation (6).

[0050] According to this method, the weights may change over time, and thus, w b may be replaced by w b (n) in Equation (6).

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

[0052] Each of the multiplication blocks 502 typically corresponds to a given frequency, frequency band, or frequency range associated with an impulse response 520 (denoted as h b ) and is also associated with a weight 530 (denoted as w b ). A given multiplication block 502 multiplies the impulse response 520 (for example, h b (n)) by the weighting coefficient 530 (for example, w b (n)) to generate one of the weighted responses 532.

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

[0054] The convolution block 506 convolves the input signal 510 (for example, x(n)) with the combined filter response 540 to generate the output signal 512 (for example, y(n)).

[0055] Typically, filter bank 500 implements dynamic filters that perform periodic calculations of filter responses. For example, the input audio may be processed in (overlapping) audio blocks, and at time of block #k, the filter response (in the frequency domain) may be calculated according to Equation (3).

[0056] In one embodiment, the actual convolution operation in the frequency domain is implemented using overlapping audio blocks with a smoothed crossfade between audio blocks. This makes it possible to vary the filter response from block to block.

[0057] In one common application, the filter bank response is a causal filter, where the filter output depends only on past and current inputs (thus, as follows):

Number

[0058] FIG. 6 is a graph of impulse response 600. The impulse response 600 results from applying the filter, such that:

Number

[0059] FIG. 7 is a block diagram of filter array 700. Filter array 700 includes a number of filters 702 (shown as Filter ny,nx and a number of additional blocks 704. Filter array 700 has a number of input signals 710 (X1~X nxreceives (shown as) and generates a number of output signals 712 (Y1 to Y ny (shown as). Usually, the filter array 700 represents the operation of a multi-channel input, multi-channel output system, and the filters couple all inputs to all outputs. The filter 700 can also be conceptualized as a multi-channel filter bank, and there is a [nybynx] 2D array that defines the mixing of inputs to form outputs for each frequency band.

[0060] The filter 702 is arranged within the bank, and each filter bank is associated with one of the input signals 710 (e.g., channels). Each of the filters 702 is typically associated with a frequency band, filter response, and weight similar to the other filters discussed herein. For example, each of the filters 702 can be a filter such as filter bank 400 (see FIG. 4), filter bank 500 (see FIG. 5), etc.

[0061] From the perspective of the frequency domain filter response, the processing of the filter array 700 can be described by the following equation:

Equation

[0062] The embodiments described herein relate to the method used to implement one or more of the filters 702. Obviously, the embodiments are equally applicable to the filter array shown in FIG. 7.

[0063] Returning to FIG. 3, the desired frequency response of an exemplary filter is shown, and the gain of the filter response 302 as a function of frequency is defined according to a predetermined set of control frequencies fc1, fc2,... and corresponding gain values w1, w2,....

[0064] In the example of FIG. 3, the gain of the filter at frequency fc2 is set by w2, as shown as gain 304.

[0065] In an embodiment, the frequency response of FIG. 3 is achieved by a weighted sum of a number of predetermined filter bank responses. An exemplary response is shown in FIG. 2, which shows the frequency response of band 2.

[0066] Let the response of each of these predetermined filter bank responses be represented as H b (f) or alternatively h b (n) in the time domain.

[0067] The desired filter response (such as 302 in FIG. 3) may be formed from a weighted sum of predetermined filter bank responses. This can be expressed as a sum in the time domain or the frequency domain:

Number

Number

[0068] We can choose to assert that each of the predetermined filter bank responses should represent a causal filter (thus, the following equation):

Number

Number

Number

Number

Number

[0069] The calculation of the output sample n of the ideal signal y(n) is calculated using the input samples up to x(n+L) at most (including L future input samples). In contrast, the calculation of the output sample n of the delayed signal y'(n) is calculated using only the input samples up to x(n) at most.

[0070] In FIG. 6, an exemplary impulse response having the following characteristics is shown: [Number]

[0071] In an embodiment, the frequency resolution of the filter bank (the interval between the center frequencies of adjacent filter banks, e.g., fc b+1 -fc b ) is small and the delay L is also small.

[0072] In one particular embodiment, a low-delay filter bank is used to provide a low delay L and high resolution. In a further embodiment, an all-pass low-delay filter bank is used to provide a low perceptual delay L and high resolution.

[0073] Ideal filter bank response

[0074] The filter bank can be configured by various means including a method in which an ideal frequency response is generated as shown in FIG. 2 and then converted to a linear-phase ideal time-domain impulse response.

[0075] FIG. 8 is a graph 800 showing an exemplary set of time-domain filter bank impulse responses. In graph 800, the x-axis is time (number of samples) and the y-axis is frequency. A number of filter responses are shown in graph 800, and each filter response is F1, F2,..., F BCorresponding to a given frequency named as such, the number of filters in the filter bank is B = 10 in this example. The largest number (e.g., 10) corresponds to the highest frequency, and the smallest number (e.g., 1) corresponds to the lowest frequency. The ideal impulse response of filter Fb is h' . (n) for (b ∈ {1, 2,.. b , B}). For further discussion below, two filter responses 802 and 804 are shown. Filter response 802 corresponds to the third filter (h'3(n)), and filter response 804 corresponds to the filter with the lowest frequency (h'1(n)).

[0076] Generally, the ideal filter bank response exhibits the following property of a perfect sum:

Number

Number

[0077] Desirably, we can utilize the filter bank, and (as shown in Figure 2) the low-frequency filters are narrower (and closer together) than the high-frequency filters. For example, the interval between fc1 and fc2 is narrower than the interval between fc4 and fc5. As a result, as seen in Figure 8, the impulse responses of the high-frequency filters (most of whose energy spreads over fewer samples) are more compact than those of the low-frequency filters.

[0078] Theoretically, the impulse response of the ideal filter bank can be of infinite length. In particular, in Figure 8, it can be seen that the impulse response 802 of filter F3 does not satisfy the desired delay characteristics as follows:

Number

[0079] Techniques for low-delay filter responses

[0080] According to one method, a low-latency filter bank (having a delay L) can be generated as follows by simply truncating the ideal impulse response: [Number]

[0081] However, such truncation affects the resulting response at low frequencies and can produce audible artifacts when used in a real system.

[0082] FIG. 9 is a graph 900 of a signal showing an improved method of modifying the impulse response. In graph 900, the x-axis is time (number of samples). The y-axis is magnitude. Note that each signal is independent of the others on the y-axis (e.g., the y-axis shows the magnitude range of each signal independently and is not a relative magnitude or comparison between signals). Signal 802 corresponds to the ideal impulse response of filter F3 (e.g., h'3(n)) and is also shown in FIG. 8. Signal 904 corresponds to the fade function. Signal 906 corresponds to multiplying signal 802 by signal 904 to generate a low-latency filter response and is as follows: [Number] [Number]

[0083] As will be appreciated by those skilled in the art, both techniques (Equations (15) and (16)) result in an impulse response h b (n) having the desired characteristic h b (0)=h’ b (0), which ensures that the perfect reconstruction criterion (Equation (13)) is satisfied.

[0084] However, the frequency responses of these filters (such as those generated by Equation (15) or Equation (16)) do not necessarily match the original (ideal) response and may be made possible by an improved technique as described below.

[0085] Improved Method for Low-Delay Filter Response

[0086] FIG. 10 is a block diagram of a method 1000 for generating a filter response. Method 1000 may be used to generate one or more filter responses of a filter among any of the filter banks discussed in the present specification (e.g., filter bank 400 of FIG. 4, filter bank 500 of FIG. 5, filter 702 in the filter array of FIG. 7, etc.). Method 1000 includes a fade block 1002, a time reversal block 1004, and an addition block 1006. The blocks of method 1000 may be implemented in various ways, for example, by circuit elements, by a processor that executes one or more computer programs, etc.

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

[0088] The time reversal block 1004 performs a time reversal operation on the pre-ripple response 1012 and generates a post-ripple response 1014. The time reversal operation typically corresponds to mirroring the pre-ripple response 1012 with respect to the zero sample of the signal. An example of the time reversal operation is shown in FIG. 11.

[0089] The addition 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.

[0090] Figure 11 is a graph 1100 showing various signals related to Figure 10. In graph 1100, the x-axis is time (number of samples) and the y-axis is magnitude. Note that, similar to Figure 9, the magnitudes of each signal are independent of each other's signals. Signal 802 corresponds to the ideal impulse response of filter F3 (e.g., h'3(n)) and is also shown in Figures 8 - 9. Refer also to the ideal impulse response 1010 in Figure 10.

[0091] Signal 1102 corresponds to the fade function. Refer also to signal 904 in Figure 9. Signal 1104 corresponds to the result of multiplying signal 802 by signal 1102 to generate the pre - ripple response. Refer also to the pre - ripple response 1012 in Figure 10.

[0092] Signal 1106 corresponds to the time reversal of signal 1104 and is called the post - ripple response. Refer also to the post - ripple response 1014 in Figure 10.

[0093] Signal 1108 corresponds to the filter bank response and is generated by adding signal 802 (ideal impulse response 1010), subtracting signal 1104 (pre - ripple response 1012), and adding signal 1106 (post - ripple response 1014). Refer also to the filter response 1016 in Figure 10.

[0094] The following equation shows this process:

Equation

Equation

Equation

Equation

[0095] According to Equation (20),

Equation

[0096] Low-delay all-pass filter response

[0097] To modify an audio signal without the group delay of filtering being perceived by the listener, various types of audio filtering can be used. As an example, a standard high-pass filter, such as used to remove unwanted low-frequency noise from a recorded sound, introduces phase distortion at low frequencies that is not considered harmful by the listener. Another common type of filtering that is not perceptible to the listener is an all-pass filter.

[0098] FIG. 12 is a set of graphs showing phase distortion 1202 and group delay 1204. The phase distortion 1202 and group delay 1204 are caused by using the transfer function as shown in Equation (22) to process an audio signal sampled at 48 kHz.

Equation

[0099] The constant 0.994986 in Equation (22) is a standard value corresponding 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 of this constant may be selected, and for a filter operating at a sampling rate of 48,000 samples per second, the constant may vary between 0.9490 and 0.9993. These values correspond to transition frequencies of 400 Hz and 5 Hz, respectively.

[0100] If this phase distortion 1202 generates artifacts in the output audio signal that are acceptable to the listener, it is acceptable to apply the same phase distortion to the ideal impulse response in order to generate a new set of all-pass filter responses as shown in FIG. 13.

[0101] FIG. 13 is a graph 1300 showing various impulse responses. In graph 1300, the x-axis is time (number of samples) and the y-axis constitutes the impulse responses at various frequencies F n The impulse response 1302 of filter F3 appears similar to the original (ideal) impulse response 802 of filter F3 in FIG. 8. In contrast, the impulse response 1304 of filter F1 appears different from the original (ideal) impulse response 804 of filter F1 in FIG. 8. This difference is due to the effect of an all-pass filter that affects the low-frequency filters but has an ignorable effect on the high-frequency filters. The all-pass filter will be discussed in more detail below.

[0102] It can be seen that the impulse response 1304 of filter F1 has a lower amplitude in region 1306 (more than 100 samples before time 0) compared to region 1308 (more than 100 samples after time 0). Shifting the energy of the impulse response to later times is a desirable attribute of the all-pass filter since it generates a filter bank that more closely approximates the delay constraint (L = 100 in the example of FIG. 13).

[0103] FIG. 14 is a block diagram of a method 1400 for generating a filter response. The method 1400 may be used to generate one or more filter responses of any of the filter banks discussed herein (e.g., filter bank 400 of FIG. 4, filter bank 500 of FIG. 5, filter 702 within the filter array of FIG. 7, etc.). The method 1400 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 an addition block 1412. The blocks of the method 1400 may be implemented in various ways, such as by circuit elements, by a processor executing one or more computer programs, etc.

[0104] 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 corresponds to one or more of the ideal impulse responses described above (e.g., h' b (n) as discussed in FIGS. 8 or 9, such as signal 802). The impulse response of the all-pass filter is discussed in more detail by the following equation.

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

[0106] 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 a time-reversal operation is shown in FIG. 15.

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

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

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

[0110] In an embodiment, to more properly meet the delay constraint, we adapt the calculation and apply the processing of Equation (21) to enable the introduction of an all-pass filter. In the following equation, the notation:

Number

Number

Number

Number

Number

Number

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

[0112] In an embodiment, the all-pass filter is a first-order filter having 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 F s samples per second, the frequency of the all-pass pole may be set approximately as follows:

Number

[0113] The calculation of the pole frequency as shown in Equation (28) is an example. It is understood that other pole frequencies can also provide the benefits of an improved delay / accuracy trade-off in the design of the filter bank.

[0114] When the impulse responses of the set of B filters in the low-frequency all-pass filter bank are added together, the final result (the reconstructed impulse response) is approximately equal to the following all-pass response:

Equation

Equation

[0115] The procedure of FIG. 14 may be applied to each filter in the filter bank, for example, for b ∈ {1, 2,..., B}, and the ideal impulse response h' b (n) may be processed according to FIG. 14 to generate the low-delay all-pass filter h b (n).

[0116] FIG. 15 is a graph 1500 showing various signals related to FIG. 14. In graph 1500, the x-axis is time (number of samples) and the y-axis is magnitude. Note that, as in FIGS. 9 and 11, the magnitudes of each signal are independent of each other's signals. Signal 1304 corresponds to the all-pass filtered impulse response of filter F1 (e.g., h'1(n)) and is also shown in FIG. 13. See also the filter response 1422 of FIGS. 14 and Equation (23).

[0117] Signal 1502 corresponds to the fade function. See also signal 904 of FIG. 9, signal 1102 of FIG. 11, and Equation (25). Signal 1504 corresponds to the multiplication of signal 1304 by signal 1502 to generate the pre-ripple response. See also the pre-ripple response 1424 of FIG. 14 and Equation (24).

[0118] The signal 1506 corresponds to the time reversal of the signal 1504 and is called the intermediate response. Refer also to the intermediate response 1426 in FIG. 14. The signal 1508 corresponds to applying the all-pass filter to the signal 1506 twice and is called the post-ripple response. Refer also to the post-ripple response 1430 in FIG. 14 and Equation (26).

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

[0120] The difference between the method 1000 in FIG. 10 and the method 1400 in FIG. 14 can be conceptualized as follows. First, the method 1000 acts on the filter response h' b (n), and the method 1400 acts on the following all-pass filtered version:

Equation

[0121] Extending this knowledge to the method 1400, we speculate that we can generate a new filter component.

Equation

[0122] Next, generate another new component: postA(t) = preA(-t). This is simply the mirrored version of preA.

[0123] Here, another new filter component can be generated:

Number

[0124] Next, we can construct the final filter.

Number

[0125] Here, we know the following:

Number

[0126] Here, we obtain the following:

Number

[0127] Figure 16 is a flowchart of an audio processing method 1600. The method 1600 may be implemented by a processor that executes instructions according to, for example, one or more computer programs.

[0128] At 1602, a modified impulse response is generated from an ideal impulse response. The ideal impulse response corresponds to a number of frequencies respectively. Generating the modified impulse response includes performing a fade operation and a time reversal operation on at least one of the ideal impulse responses. For example, method 1000 (see FIG. 10) may perform the fade operation using fade block 1002 and the time reversal operation using time reversal block 1004 on ideal impulse response 1010. As another example, method 1400 (see FIG. 14) may perform the fade operation using fade block 1404 and the time reversal operation using time reversal block 1406 on ideal impulse response 1420.

[0129] At 1604, the input signal is filtered by the modified impulse response (see 1602) to generate an output signal. For example, filter bank 100 (see FIG. 1) may include a number of filters having the modified impulse response generated at 1602, and may generate output signal 106 from input signal 104.

[0130] The overall steps of method 1600 are described in more detail in FIGS. 17 - 18.

[0131] FIG. 17 is a flowchart of an audio processing method 1700. Method 1700 may be implemented by a processor that executes instructions according to, for example, one or more computer programs. Method 1700 is similar to method 1600 (see FIG. 6) and has further details specific to the operation of method 1000 (see FIG. 10).

[0132] At 1702, a modified impulse response is generated from an ideal impulse response. This includes sub - steps 1704 - 1708.

[0133] At 1704, the pre-ripple response is generated based on the first ideal impulse response. For example, the fade block 1002 (see FIG. 10) may perform a fade operation on the ideal impulse response 1010 to generate the pre-ripple response 1012. See also Equation (18).

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

[0135] At 1708, the 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, the addition block 1006 (see FIG. 10) adds the ideal impulse response 1010, subtracts the pre-ripple response 1012, and adds the post-ripple response 1014 to generate the filter response 1016. See also Equation (21).

[0136] At 1710, the input signal is filtered by the modified impulse response (see 1702 - 1708) to generate an output signal. For example, the filter bank 100 (see FIG. 1) may include a number of filters having the modified impulse response generated at 1702 and may generate the output signal 106 from the input signal 104.

[0137] FIG. 18 is a flowchart of an audio processing method 1800. The method 1800 may be implemented, for example, by a processor executing instructions according to one or more computer programs. The method 1800 is similar to the method 1600 (see FIG. 6) and has additional details specific to the operation of the method 1400 (see FIG. 14).

[0138] At 1802, a modified impulse response is generated from an ideal impulse response. This includes sub-steps 1804 - 1814.

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

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

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

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

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

[0144] In 1814, the 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, the addition block 1412 (see FIG. 14) adds the filter response 1422, adds the post-ripple response 1430, and subtracts the pre-ripple response 1424 to generate the filter response 1432. See also Equation (27).

[0145] In 1816, the input signal is filtered by a modified impulse response (see 1802 - 1814) to generate an output signal. For example, filter bank 100 (see FIG. 1) may include a number of filters having the modified impulse response generated at 1802, and may generate output signal 106 from input signal 104.

[0146] In an embodiment, an input audio signal may be processed to generate an output signal. Here, the gain of the processing at a given frequency number is approximately equal to the corresponding set of gain factors. The processing may be performed according to a filter response that is a weighted sum of a corresponding number of low - latency all - pass filter responses, and the weighting is determined by the corresponding gain factors. The low - latency all - pass filter responses are determined according to the method of FIG. 18.

[0147] In an alternative embodiment, an input audio signal is processed to generate an output audio signal. Here, the output audio signal is formed by filtering the input audio signal by an overall impulse response that is a weighted sum of filter bank impulse responses. The sum of the filter bank impulse responses is an all - pass filter. The all - pass filter may have a substantially constant phase response above about 500 Hz and a group delay that increases at lower frequencies.

[0148] In an alternative embodiment, an input audio signal is processed to generate an output audio signal. Here, the output audio signal is formed by filtering the input audio signal with an overall impulse response that is a weighted sum of filter bank impulse responses. The reconstruction impulse response may be formed by the sum of the filter bank impulse responses. As a result, the group delay of the reconstruction impulse response is substantially 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 may vary at low frequencies, for example, less than 500 Hz and less than 0.5 / f seconds. The bandwidth of one or more impulse responses from the set of filter bank impulse responses may narrow as the group delay of the reconstruction impulse response increases.

[0149] Implementation Details

[0150] Embodiments may be implemented in hardware, executable modules stored on a computer-readable medium, or a combination of both (e.g., a programmable logic array). Unless otherwise specified, the steps performed by embodiments may be inherent in a particular embodiment but may be associated with any particular computer or other device. In particular, various general-purpose mechanisms may be used in conjunction with the programs described according to the teachings of this specification, or it may be more convenient to configure more specialized devices (e.g., integrated circuits) to perform the steps of the required method. Accordingly, embodiments may be implemented by one or more computer programs executed by one or more programmable computer systems each including 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 input data to perform the functions described herein and generate output information. The output information is applied to one or more output devices in a known manner.

[0151] Each such computer program is preferably stored or downloaded on a storage medium or device (e.g., solid state memory or medium, or magnetic or optical medium) readable by a general purpose or special purpose programmable computer so as to configure and operate a computer to execute the procedures described herein when the storage medium or device is read by the computer system. The system of the present invention may also be implemented as a computer-readable storage medium and configured by a computer program, where the storage medium is configured to operate a computer system to perform the functions described herein in a specific and predetermined manner. (Software itself, and intangible or transient signals are excluded insofar as they are non-patentable subject matter.)

[0152] The foregoing description has described various embodiments of the present disclosure along with examples of how aspects of the present disclosure may be implemented. The above examples and embodiments should not be regarded as the only embodiments, but are presented to illustrate the flexibility and advantages of the present disclosure as defined by the following claims. Based on the foregoing disclosure and the following claims, other configurations, embodiments, implementations and equivalents will be apparent to those skilled in the art and may be utilized without departing from the spirit and scope of the present disclosure as defined by the claims.

Claims

1. A method for audio processing, the method comprising: generating a plurality of modified impulse responses from a plurality of original impulse responses, wherein the plurality of original impulse responses each correspond to a plurality of frequencies, and the step of generating the plurality of modified impulse responses comprises: generating a pre-ripple response based on a first original impulse response; generating a post-ripple response based on the pre-ripple response; adding the first original impulse response, subtracting the pre-ripple response, and adding the post-ripple response to generate a first modified impulse response; a step including; filtering an input signal using a plurality of filters having the plurality of modified impulse responses to generate an output signal; A method including.

2. A computer program for controlling a device to execute the method according to Claim 1 when executed by a processor.

3. A device for audio processing, the device comprising: a processor; a memory, and the processor is configured to control the device to execute the method according to Claim 1 when executing a computer program stored in the memory.

Citation Information

Patent Citations

  • Frequency band dividing filter

    JP1977089441A

  • Ringing compensating filter circuit

    JP1990134911A

  • Fir filter

    JP2008252338A

  • Apparatus and method for generating filter characteristics

    JP2011517908A

  • Computationally efficient linear-phase finite impulse response filter

    US5548543A