Low-latency audio filter bank with improved frequency resolution

By generating altered impulse responses through fade and time inversion operations, the method addresses the latency issue in filter banks, particularly at low frequencies, enhancing the efficiency of audio processing.

JP7658918B2Active Publication Date: 2025-04-08DOLBY LABORATORIES LICENSING CORP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2021572017
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-05-22
Filing Date
2020-06-25
Publication Date
2025-04-08
Estimated Expiration
2040-06-25

AI Technical Summary

Technical Problem

Existing filter banks face challenges with delay, particularly at low frequencies, where the impulse response requires a defined number of samples, leading to increased latency. This delay must be matched across all frequency filters in a bank, affecting overall latency.

Method used

The method involves generating altered impulse responses by performing fade operations and time inversion on ideal impulse responses. These altered responses are then used to filter input signals, reducing latency while preserving the impulse response.

Benefits of technology

This approach effectively reduces latency at low frequencies while maintaining the integrity of the filter's impulse response, thereby improving the efficiency of audio processing in filter banks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007658918000048
    Figure 0007658918000048
  • Figure 0007658918000049
    Figure 0007658918000049
  • Figure 0007658918000050
    Figure 0007658918000050
Patent Text Reader

Abstract

A filter bank suitable for modifying an audio signal with dynamic gain in each band is configured to provide a small perceived delay and a larger group delay at lower frequencies to provide better frequency resolution in the lower frequency bands. The high group delay at low frequencies is achieved by inserting an all-pass filter in the reconstruction filter response.
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 June 26, 2019, both of which are incorporated herein by reference in their entireties.

[0002] [Technical field] FIELD OF THE DISCLOSURE This disclosure relates to audio processing, and in particular to dynamic audio filters. [Background technology]

[0003] Unless otherwise noted, the approaches described in this section are not prior art to the claims of this application and are not admitted as prior art by inclusion in this section.

[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 bandpass filters, where the audio filter response is formed from a weighted sum of bandpass filter responses. The weights may be dynamically changed.

[0005] In general, frequency bands do not have the same bandwidth. Rather, lower frequency filters are narrower (and more closely spaced) than higher frequency filters. As a result, the impulse response of high frequency filters (which have most of their energy spread over a smaller number of samples) will be more compact than the impulse response of low frequency filters (which have their energy spread over a larger number of samples). Summary of the Invention

[0006] One problem with existing filter banks is delay. In low frequency filters, a fixed 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 filter banks that include both low 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 includes the overall delay of the filter bank.

[0007] In view of the above, there is a need to reduce the delay at low frequencies while preserving the impulse response of the filter.Described herein are techniques for low-delay filter design.

[0008] According to an embodiment, a method of audio processing comprises the steps of: generating a plurality of modified impulse responses from a plurality of ideal impulse responses, the plurality of ideal impulse responses corresponding to a plurality of frequencies, and the 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; 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 a plurality of modified impulse responses comprises: generating a pre-ripple response based on an 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 include:

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

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

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

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

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

[0015] [Diagram 2] 2 is a graph 200 illustrating a set of filter bank frequency responses.

[0016] [Diagram 3] 3 is a graph 300 illustrating an example combined filter response.

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

[0018] [Diagram 5] FIG. 5 is a block diagram of a filter bank 500.

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

[0020] [Figure 7] FIG. 7 is a block diagram of a filter array 700.

[0021] [Figure 8] 8 is a graph 800 illustrating an example set of time-domain filter bank impulse responses.

[0022] [Figure 9] 9 is a signal graph 900 illustrating an improved method of modifying an impulse response.

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

[0024] [Figure 11] 11 is a graph 1100 showing various signals related to FIG.

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

[0026] [Figure 13] 13 is a graph 1300 illustrating various impulse responses.

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

[0028] [Figure 15] 15 is a graph 1500 showing various signals related to FIG.

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

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

[0031] [Figure 18] FIG. 18 is a flow diagram of a method 1800 of audio processing. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0032] This specification describes technology related to audio filters. Throughout the following detailed description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent 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 herein.

[0033] In the following description, various methods, processes, and procedures are detailed. While certain steps may be described in a particular order, such order is primarily for convenience and clarity. Certain 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. A second step need follow a first step only if the first step must be completed before the second step begins. Such situations will be specifically pointed out when not clear from the context.

[0034] In the present specification, the terms "and", "or", and "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". When an exclusive or is intended, such should be particularly noted (e.g., "either A or B", "at most one of A and B").

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

[0036] 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 composed of a number of weights 102 (also called weighting coefficients). Each of the weights 102 corresponds to a gain for a particular frequency band. The filter bank 100 receives an input signal 104 and applies the weights 102 to the input signal 104 to generate an output signal 106. The weights 102 may vary 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 multiple filters, each filter corresponding 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 multiple filter arrays, each filter array corresponding to one of the channels, and each filter in a given array corresponding 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 with different numbers of channels. Each filter array corresponds to one of the input channels and one of the output channels.

[0038] In general, the filtering techniques described herein may be applied to each individual filter in a filter array.

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

number

[0040] The frequency response 202 of the filter H2(f) has a gain of 1 at f=fc2 and b , and has a gain of 0 for all other values ​​of b≠2. b (f) is another frequency fc b and has a gain of 1. The frequency fs / 2 is half the sampling rate (the Nyquist rate).

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

number

number

[0042] 3 is a graph 300 showing an example 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 illustratively equal to w2. Other frequencies fc b are their respective weights w b In practical applications, this combined filter response may be implemented in various ways, as shown in FIGS.

[0043] 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 a summation block 406. The filter bank 400 receives an input signal 410 (denoted as X, also referred to as x(n), which refers to the input signal at a given sample n) and produces an output signal 412 (denoted as Y, also referred to as y(n)).

[0044] Each of the convolution blocks 402 typically generates an impulse response 420 (h b A given convolution block 402 converts an input signal 410 (e.g., x(n)) into an impulse response 420 (e.g., h b (n)) to obtain a filtered signal 422 (e.g., x b (n)).

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

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

[0047] The formulas that describe these actions are:

number

number

number

[0048] Operators used in formula (4):

number

[0049] Equation (5) details the convolution operation, resulting in subband signals x1(n), x2(n), ..., x B (n), an output signal 412 (eg, y(n)), is then formed as the sum of these subband signals multiplied by their respective weights, as shown in equation (6).

[0050] With this method, the weights are allowed to change over time, so w b In equation (6), w b may be replaced by (n).

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

[0052] Each of the multiplication blocks 502 typically generates an impulse response 520 (h b , and a weight 530 (w b A given multiplication block 502 is also associated with an impulse response 520 (e.g., h b (n)) and weighting factor 530 (e.g. w b (n)) to generate one of the weighted responses 532.

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

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

[0055] Typically, the filter bank 500 implements a dynamic filter that performs a periodic calculation of a filter response. For example, the input audio may be processed in (overlapping) audio blocks, and at the 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 is implemented in the frequency domain using overlapping audio blocks with smoothed cross-fades between the audio blocks, which allows the filter response to vary from block to block.

[0057] In one common application, the filter bank response is a causal filter, where the filter output depends only on the past and present inputs (so:

number

[0058] 6 is a graph of an impulse response 600. The impulse response 600 results from applying a filter that results in:

number

[0059] FIG. 7 is a block diagram of a filter array 700. The filter array 700 includes a number of filters 702. ny,nx , 702, 703, and a number of additional blocks 704. The filter array 700 receives a number of input signals 710 (X1 to X nx) and a number of output signals 712 (Y1 to Y ny (denoted as ) in the filter array 700. Typically, the filter array 700 represents the operation of a multi-channel input, multi-channel output system, where the filters combine all the inputs to all the outputs. The filter 700 can also be conceptualized as a multi-channel filter bank, where for each frequency band there is a [nybynx] two-dimensional array that defines the mixing of the inputs to form the output.

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

[0061] In terms of a frequency domain filter response, the operation of filter array 700 can be described by the following equation:

number

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

[0063] Returning to FIG. 3, the desired frequency response of an exemplary filter is shown, where 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, shown as gain 304.

[0065] In an embodiment, the frequency response of Figure 3 is achieved by a weighted sum of a number of predefined filter bank responses. An example response is shown in Figure 2, where the frequency response of band 2 is shown.

[0066] The response of each of these predetermined filter bank responses is denoted (in the frequency domain) as H b (f) or alternatively (in the time domain) b It is expressed as (n).

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

number

number

[0068] We can choose to insist that each given filter bank response should represent a causal filter (hence:

number

number

number

number

number

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

[0070] An example impulse response is shown in FIG. 6, which has the following characteristics:

number

[0071] In an embodiment, the frequency resolution of the filter bank (the spacing 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 low delay L and high resolution. In a further embodiment, an all-pass low-delay filter bank is used to provide low perceptual delay L and high resolution.

[0073] Ideal Filter Bank Response

[0074] The filter bank can be constructed by a variety of means including a method in which an ideal frequency response is generated and then transformed into a linear phase ideal time domain impulse response as shown in FIG.

[0075] 8 is a graph 800 illustrating an example 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, with each filter response designated F1, F2, ..., F B, and the number of filters in the filter bank is B=10 in this example. The highest number (e.g. 10) corresponds to the highest frequency and the lowest number (e.g. 1) corresponds to the lowest frequency. The ideal impulse response of a filter Fb is (b∈{1,2,.. . , B})h' b (n). 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 lowest frequency filter (h'1(n)).

[0076] In general, an ideal filter bank response exhibits the following perfect sum property:

number

number

[0077] Preferably, we can use a filter bank (as shown in Figure 2) where the lower frequency filters are narrower (and more closely spaced) than the higher frequency filters, e.g. the spacing between fc1 and fc2 is narrower than the spacing between fc4 and fc5. As a result, the impulse responses of the higher frequency filters (which have most of their energy spread over a smaller number of samples) are more compact than the impulse responses of the lower frequency filters, as can be seen in Figure 8.

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

number

[0079] Techniques for low-delay filter response.

[0080] According to one approach, a low-delay filter bank (with delay L) can be generated by simply truncating the ideal impulse response:

number

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

[0082] 9 is a graph 900 of signals illustrating 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, not the relative magnitude or comparison between the signals). Signal 802 corresponds to the ideal impulse response of filter F3 (e.g., h'3(n)), also shown in FIG. 8. Signal 904 corresponds to the fade function. Signal 906 corresponds to signal 802 multiplied by signal 904 to generate a low-delay filter response, as follows:

number

number

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

[0084] However, the frequency response of these filters (as generated by equation (15) or equation (16)) does not necessarily match the original (ideal) response, which may be possible through improved techniques as described below.

[0085] Improved method for low delay filter response.

[0086] 10 is a block diagram of a method 1000 for generating a filter response. The method 1000 may be used to generate a filter response for one or more of the filters in any of the filter banks discussed herein (e.g., filter bank 400 of FIG. 4, filter bank 500 of FIG. 5, filter 702 in the filter array of FIG. 7, etc.). The method 1000 includes a fade block 1002, a time reversal block 1004, and a summing block 1006. The blocks of the method 1000 may be implemented in various ways, such as by circuit elements, by a processor executing one or more computer programs, etc.

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

[0088] 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 with respect to the zero sample of the signal. An example of a time reversal operation is shown in FIG.

[0089] The summing block 1006 adds an ideal impulse response 1010 , subtracts a pre-ripple response 1012 , and adds a post-ripple response 1014 to produce a filter response 1016 .

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

[0091] Signal 1102 corresponds to the fade function. See also signal 904 in Figure 9. Signal 1104 corresponds to signal 802 multiplied by signal 1102 to generate a pre-ripple response. See also pre-ripple response 1012 in Figure 10.

[0092] Signal 1106 corresponds to the time reversal of signal 1104 and is called the post-triple response. See also post-triple response 1014 in FIG.

[0093] Signal 1108 corresponds to a 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). See also filter response 1016 in FIG.

[0094] The following equation illustrates this process:

number

number

number

number

[0095] According to equation (20),

number

[0096] Low-delay all-pass filter response

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

[0098] 12 is a set of graphs illustrating phase distortion 1202 and group delay 1204. Phase distortion 1202 and group delay 1204 result from using a transfer function such as that shown in equation (22) to process an audio signal sampled at 48 kHz.

number

[0099] The constant 0.994986 in equation (22) is a typical value that corresponds to a transition frequency of approximately 37 Hz (with a phase shift of 90 degrees for a first order all-pass filter) for a filter operating at a sampling rate of 48000 samples per second. Alternative values ​​for this constant may be selected, and for a filter operating at a sampling rate of 48000 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 produces artifacts in the output audio signal that are acceptable to a listener, then it is acceptable to apply the same phase distortion to the ideal impulse response to generate a new set of all-pass filter responses as shown in FIG. 13.

[0101] 13 is a graph 1300 showing various impulse responses. In the graph 1300, the x-axis is time (number of samples) and the y-axis is various frequencies F n 8. The impulse response 1302 of filter F3 appears similar to the original (ideal) impulse response 802 of filter F3 of Figure 8. In contrast, the impulse response 1304 of filter F1 appears different from the original (ideal) impulse response 804 of filter F1 of Figure 8. This difference is due to the effect of the all-pass filter, which affects the low frequency filters but has negligible effect on the high frequency filters. All-pass filters are 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 times later in the impulse response is a desirable attribute of all-pass filters, as it produces a filter bank that more closely approximates the delay constraint (L=100 in the example of FIG. 13).

[0103] 14 is a block diagram of a method 1400 for generating a filter response. The method 1400 may be used to generate a filter response for one or more of the filters in any of the filter banks discussed herein (e.g., filter bank 400 of FIG. 4, filter bank 500 of FIG. 5, filter 702 in 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 a summing 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 and performs all-pass filtering to generate a filter response 1422. The ideal impulse response 1420 corresponds to one or more of the ideal impulse responses discussed above (e.g., h′ as discussed in FIG. 8 or FIG. 9, such as signal 802). b (n)). The impulse response of an all-pass filter is discussed in further detail in the following equation:

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

[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.

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

[0108] All-pass filter 1410 performs all-pass filtering on filter response 1428 to produce post-triple response 1430 .

[0109] The summing block 1412 sums the filter response 1422 , adds the post-ripple response 1430 , and subtracts the pre-ripple response 1424 to produce a filter response 1432 .

[0110] In an embodiment, to better meet the delay constraint, we adapt the calculation to allow the introduction of an all-pass filter, applying the process of equation (21). 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 with a single real pole at a frequency between 10 Hz and 200 Hz. s In a filter bank operating on audio sampled at a rate of samples per second, the frequencies of the all-pass poles may be set approximately to:

number

[0113] The calculation of the pole frequencies as shown in equation (28) is an example, it will be appreciated that other pole frequencies may also provide the benefit of improved delay / accuracy tradeoff in the design of the filter bank.

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

number

number

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

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

[0117] Signal 1502 corresponds to the fade 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).

[0118] Signal 1506 corresponds to the time reversal of signal 1504 and is called the intermediate response. See also intermediate response 1426 in Figure 14. Signal 1508 corresponds to applying an all-pass filter twice to signal 1506 and is called the post-triple response. See also post-triple response 1430 in Figure 14 and equation (26).

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

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

number

[0121] Extending this knowledge to method 1400, we speculate that new filter components can be generated.

number

[0122] Then we create another new component: postA(t) = preA(-t), which is simply a mirrored version of preA.

[0123] Now we can create another new filter component:

number

[0124] We can then build the final filter.

number

[0125] Now, we know that:

number

[0126] Now we get:

number

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

[0128] At 1602, modified impulse responses are generated from the ideal impulse responses. The ideal impulse responses each correspond to a number of frequencies. Generating 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, the method 1000 (see FIG. 10) may perform a fade operation using the fade block 1002 and a time reversal operation using the time reversal block 1004 on the ideal impulse response 1010. As another example, the method 1400 (see FIG. 14) may perform a fade operation using the fade block 1404 and a time reversal operation using the time reversal block 1406 on the ideal impulse response 1420.

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

[0130] The general steps of method 1600 are further detailed in FIGS.

[0131] 17 is a flow diagram of a method 1700 of audio processing. Method 1700 may be implemented, for example, by a processor executing instructions according to one or more computer programs. Method 1700 is similar to method 1600 (see FIG. 6), with additional details specific to the operation of method 1000 (see FIG. 10).

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

[0133] At 1704, a 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 a pre-ripple response 1012. See also Equation (18).

[0134] At 1706, a 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 a post-pre-ripple response 1014. See also Equation (20).

[0135] At 1708, a first modified impulse response is generated by adding the first ideal impulse response, subtracting the pre-ripple response, and adding the post-triple response. For example, summing block 1006 (see FIG. 10) adds the ideal impulse response 1010, subtracts the pre-ripple response 1012, and adds the post-triple response 1014 to generate the filter response 1016. See also equation (21).

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

[0137] 18 is a flow diagram of a method 1800 of audio processing. Method 1800 may be implemented, for example, by a processor executing instructions according to one or more computer programs. Method 1800 is similar to method 1600 (see FIG. 6), with additional details specific to the operation of 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] At 1804, a 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 a filter response 1422. See also Equation (23).

[0140] At 1806, a 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 a pre-ripple response 1424. See also equation (24).

[0141] At 1808, an 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 an intermediate response 1426. See also Equation (26).

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

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

[0144] At 1814, a first modified impulse response is generated by summing the first filter response, adding the post-ripple response, and subtracting the pre-ripple response. For example, summing block 1412 (see FIG. 14) sums filter response 1422, adds post-ripple response 1430, and subtracts pre-ripple response 1424 to generate filter response 1432. See also equation (27).

[0145] At 1816, the input signal is filtered with the modified impulse response (see 1802-1814) to generate an output signal. For example, the filter bank 100 (see FIG. 1) may include multiple filters with the modified impulse response generated at 1802 to generate the output signal 106 from the input signal 104.

[0146] In an embodiment, an input audio signal may be processed to generate an output signal, where the gain of the processing at a given number of frequencies is approximately equal to a corresponding set of gain coefficients. The processing may be performed according to a filter response that is a weighted sum of a corresponding number of low-delay all-pass filter responses, the weightings being determined by the corresponding gain coefficients. The low-delay 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, where the output audio signal is formed by filtering the input audio signal with a total impulse response that is a weighted sum of filter bank impulse responses, the sum of the filter bank impulse responses being an all-pass filter, which may have an approximately constant phase response above about 500 Hz and a group delay that rises at lower frequencies.

[0148] In an alternative embodiment, an input audio signal is processed to generate an output audio signal, where the output audio signal is formed by filtering the input audio signal with a total impulse response that is a weighted sum of filter bank impulse responses. The reconstructed impulse response may be formed by the sum of the filter bank impulse responses. As a result, the group delay of the reconstructed 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 (not varying more than 0.1 ms) above 500 Hz and may vary at low frequencies, e.g., below 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 become narrower as the group delay of the reconstructed impulse response increases.

[0149] Implementation details

[0150] The embodiments may be implemented in hardware, executable modules stored on a computer-readable medium, or a combination of both (e.g., programmable logic arrays). Unless otherwise specified, steps performed by the embodiments may relate to any particular computer or other apparatus, although they may be inherent in a particular embodiment. In particular, various general-purpose mechanisms may be used with programs written in accordance with the teachings herein, or it may be more convenient to configure more specialized apparatus (e.g., integrated circuits) to perform the required method steps. Thus, the embodiments may be implemented in one or more computer programs executing on one or more programmable computer systems, each of which includes 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 to generate output information. The output information is applied to one or more output devices, in a known manner.

[0151] Each such computer program is desirably stored or downloaded into a general-purpose or special-purpose programmable computer-readable storage medium or device (e.g., solid-state memory or media, or magnetic or optical media) to configure and operate the computer to perform the procedures described herein when the storage medium or device is read by a computer system. The system of the present invention may also be implemented as a computer-readable storage medium and configured with 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 per se, and intangible or transitory signals are excluded insofar as they are non-patentable subject matter.)

[0152] The above description has described various embodiments of the present disclosure along with examples of how aspects of the disclosure may be implemented. The above examples and embodiments should not be considered 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 above 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. 1. A method of audio processing, the method comprising: generating a plurality of modified impulse responses from a plurality of original impulse responses, the plurality of original impulse responses corresponding to a plurality of frequencies respectively, the generating a plurality of modified impulse responses comprising performing a fading operation and a time reversal operation on at least one of the plurality of original impulse responses; filtering an input signal with a plurality of filters having the plurality of modified impulse responses to generate an output signal; Including, The step of generating a plurality of modified impulse responses comprises: generating a pre-ripple response based on the impulse response of a first element; 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 method comprising:

2. The step of generating a pre-ripple response comprises: The method of claim 1 , comprising performing the fading operation on the first original impulse response to generate the pre-ripple response.

3. The step of generating a post-trip response comprises: The method of any one of claims 1 to 2, comprising performing the time reversal operation on the pre-ripple response to generate the post-ripple response.

4. A method of audio processing, the method comprising: generating a plurality of modified impulse responses from a plurality of original impulse responses, the plurality of original impulse responses corresponding to a plurality of frequencies respectively, the generating a plurality of modified impulse responses comprising performing a fading operation and a time reversal operation on at least one of the plurality of original impulse responses; filtering an input signal with a plurality of filters having the plurality of modified impulse responses to generate an output signal; Including, The step of generating a plurality of modified impulse responses comprises: generating a first filter response based on the impulse response of the first element; 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-trip response based on the second filter response; adding the first filter response, adding the post-ripple response, and subtracting the pre-ripple response to generate a first modified impulse response; A method comprising:

5. The step of generating a first filter response comprises: The method of claim 4 , comprising performing a first all-pass filter operation on the first original impulse response to generate the first filter response.

6. The first all-pass filter operation applies a transfer function G ap : [0046] The method according to claim 5, wherein

7. A method according to any one of claims 5 to 6, wherein the first all-pass filter operation is a first order filter with a single real pole between 10 Hz and 200 Hz.

8. The first all-pass filter operation is F s With a delay of L samples of an audio signal sampled at a rate of samples per second, the pole frequency f of the first all-pass filter operation is given by: [0047] The method according to any one of claims 5 to 7, wherein the calculated value is calculated according to:

9. The step of generating a pre-ripple response comprises: A method according to any one of claims 4 to 8, comprising the step of performing the fading operation on the first filter response to generate the pre-ripple response.

10. The step of generating the intermediate response comprises: A method according to any one of claims 4 to 9, comprising performing the time reversal operation on the pre-ripple response to generate the intermediate response.

11. The step of generating a second filter response comprises: A method according to any one of claims 4 to 10, comprising performing a second all-pass filter operation on the intermediate response to generate the second filter response.

12. The step of generating a post-trip response comprises: A method according to any one of claims 4 to 11, comprising performing a third all-pass filter operation on the second filter response to generate the post-triple response.

13. applying a plurality of weights to the plurality of modified impulse responses to generate a plurality of weighted modified impulse responses; 13. The method of claim 1, wherein filtering the input signal comprises filtering the input signal with a plurality of filters having the plurality of weighted modified impulse responses to generate the output signal.

14. The method of claim 13, wherein the reconstructed impulse response corresponds to a sum of the weighted modified impulse responses and is approximately constant over the frequency range above 500 Hz and increases below 500 Hz.

15. The method of claim 14 , wherein a bandwidth of at least one of the plurality of weighted modified impulse responses narrows as a group delay of the reconstructed impulse response increases.

16. The method according to any one of claims 13 to 15, wherein the weights vary over time.

17. 17. The method of any one of claims 1 to 16, wherein the input signal is one of a plurality of input signals, the plurality of modified impulse responses are applied by a plurality of filter banks, and the output signal is one of a plurality of output signals, a given filter bank filtering a given input signal to generate a given output signal.

18. A computer program which, when executed by a processor, controls an apparatus to carry out the method according to any one of claims 1 to 17.

19. 1. An apparatus for audio processing, said apparatus comprising: A processor; A memory, An apparatus, wherein the processor is configured, when executing a computer program stored in the memory, to control the apparatus to perform a method according to any one of claims 1 to 17.

Citation Information

Patent Citations

  • Low delay sub-band division and synthesis device

    JP2001007769A

  • Apparatus and method for generating filter characteristics

    JP2011517908A

  • Acoustic correction method and electronic equipment

    JP2014049972A