Method and apparatus for audio processing
By fading and inversely operating the ideal impulse response, low-latency filter response is generated, the problem of audio filter delay in the prior art is solved and the efficiency of audio processing is improved.
Patent Information
- Application Number
- CN202510276151.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2020-05-22
- Filing Date
- 2020-06-25
- Publication Date
- 2025-04-18
AI Technical Summary
Existing dynamic audio filters have delay problems when processing input audio signals, especially the delay of low-frequency filters constrains the total delay of the entire filter bank.
Delay at low frequencies is reduced by generating multiple modified impulse responses from multiple ideal impulse responses, fading operations and anti-time operations are employed. The specific methods include generating a front and a rear ripple response based on an ideal impulse response, and generating a low-latency filter response through addition and subtraction operations.
While retaining the filter impulse response, it effectively reduces the delay at low frequencies and improves the efficiency of audio processing.
Smart Images

Figure CN119851674A_ABST
Abstract
Description
[0001] Information about divisional applications
[0002] This case is a divisional application. The parent case of the divisional application is an invention patent application with an application date of June 25, 2020, application number 202080045434.7, and invention name “Method and device for audio processing”.
[0003] CROSS-REFERENCE TO RELATED APPLICATIONS
[0004] This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 028,966, filed on May 22, 2020, and U.S. Provisional Patent Application No. 62 / 866,823, filed on June 26, 2019, the entire contents of each of which are hereby incorporated herein by reference. Technical Field
[0005] The present invention relates to audio processing and, in particular, to dynamic audio filters. Background Art
[0006] Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
[0007] When processing an input audio signal, it is often desirable to use a filter bank to modify the audio signal so that the gain at various frequencies is specified by a set of dynamic coefficients. A dynamic audio filter can be implemented by utilizing several pre-computed bandpass filters, where the audio filter response is formed by a weighted sum of the bandpass filter responses. The weights can be changed dynamically.
[0008] In general, the frequency bands do not have the same bandwidth, but rather the lower frequency filters are narrower (and more closely spaced) than the higher frequency filters. Thus, the impulse response of the higher frequency filter will be more compact (its energy spread over a smaller number of samples) than the impulse response of the lower frequency filter (its energy spread over a larger number of samples). Summary of the invention
[0009] A problem of existing filter banks is delay.For lower frequency filters, in order to accurately represent impulse response, a defined number of samples must be used, which corresponds to the delay of the filter.Higher frequency filters do not need to use the same samples as lower frequency filters, and therefore have lower delay.Yet, in the filter bank containing both low frequency filters and high frequency filters, in order to reorganize through the filtered frequency band, it is necessary to make the high frequency filter time-delay to match the delay of the low frequency filter.Therefore, the delay of the low frequency filter constrains the total delay of the filter bank.
[0010] In view of the above, there is a need to reduce the delay at low frequencies while preserving the impulse response of the filter.Techniques related to low delay filter design are described herein.
[0011] According to an embodiment, an audio processing method includes generating a plurality of modified impulse responses from a plurality of ideal impulse responses, wherein the plurality of ideal impulse responses correspond to a plurality of frequencies respectively, wherein generating the plurality of modified impulse responses includes: performing a fade operation and a time reversal operation on at least one of the plurality of ideal impulse responses. The method further includes filtering an input signal using the plurality of modified impulse responses to generate an output signal.
[0012] Generating the plurality of modified impulse responses may include: generating a pre-ripple response based on a first ideal impulse response; generating a post-ripple response based on the pre-ripple response; and adding the first ideal impulse response, subtracting the pre-ripple response, and adding the post-ripple response to generate a first modified impulse response.
[0013] Generating the multiple modified impulse responses may include: 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; and adding the first filter response, adding the post-ripple response, and subtracting the pre-ripple response to generate a first modified impulse response.
[0014] 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, wherein the plurality of ideal impulse responses correspond to a plurality of frequencies, respectively, wherein generating the plurality of modified impulse responses includes: performing a fading operation and a time reversal operation on at least one of the plurality of ideal impulse responses. The processor is further configured to control the apparatus to filter an input signal using the plurality of modified impulse responses to generate an output signal. The apparatus may additionally include details similar to those of one or more of the methods described herein.
[0015] 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 one or more of the methods described herein.
[0016] The following detailed description and accompanying drawings provide a further understanding of the nature and advantages of various embodiments. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Figure 1is a block diagram of filter bank 100 .
[0018] Figure 2 is a graph 200 showing a frequency response of a filter bank.
[0019] Figure 3 is a graph 300 showing an exemplary combined filter response 302 .
[0020] Figure 4 is a block diagram of filter bank 400 .
[0021] Figure 5 is a block diagram of filter bank 500 .
[0022] Figure 6 is a graph of the impulse response 600 .
[0023] Figure 7 is a block diagram of filter array 700 .
[0024] Figure 8 is a graph 800 showing a set of exemplary time-domain filter bank impulse responses.
[0025] Fig. 9 is a graph 900 of a signal demonstrating an improved method of modifying an impulse response.
[0026] Fig.10 is a block diagram of a method 1000 of generating a filter response.
[0027] Fig.11 Is to show and Fig.10 Graph 1100 of various signals of interest.
[0028] Fig.12 is a set of graphs showing phase distortion 1202 and group delay 1204.
[0029] Fig.13 is a graph 1300 showing various impulse responses.
[0030] Fig.14 is a block diagram of a method 1400 of generating a filter response.
[0031] Fig.15 Is to show and Fig.14 Graph 1500 of various signals of interest.
[0032] Fig.16 is a flow chart of a method 1600 of audio processing.
[0033] Fig.17 is a flow chart of a method 1700 of audio processing.
[0034] Fig.18is a flow chart of a method 1800 of audio processing. DETAILED DESCRIPTION
[0035] Technology related to audio filters is described herein. In the following description, for the purpose of explanation, many examples and specific details are set forth to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that the present invention as defined by the claims may include some or all of the features in these examples, alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein.
[0036] In the following description, various methods, processes, and procedures are described in detail. Although certain steps may be described in a particular order, this order is primarily for convenience and clarity. Certain steps may be repeated more than once, may occur before or after other steps (even if the steps were originally described in another order), and may occur in parallel with other steps. A second step is required to follow a first step only if the first step must be completed before the second step can be started. When this is not clear from the context, this will be explicitly noted.
[0037] In this document, the terms "and", "or" and "and / or" are used. Such terms should be understood to have an inclusive meaning. For example, "A and B" may mean at least each of the following: "both A and B", "at least both A and B". As another example, "A or B" may mean at least each of the following: "at least A", "at least B", "both A and B", "at least both A and B". As another example, "A and / or B" may mean at least each of the following: "A and B", "A or B". When an exclusive or is intended, this will be explicitly indicated (e.g., "either of A or B", "at most one of A and B").
[0038] This document describes various processing functions associated with structures such as blocks, elements, components, circuits, etc. Generally, these structures can be implemented by processors controlled by one or more computer programs.
[0039] Figure 1 1 is a block diagram of a filter bank 100. The filter bank 100 includes several filters that are not shown individually. The filter bank 100 is configured with several weights 102 (also referred to as weighting coefficients), wherein each of the weights 102 corresponds to a gain for a particular frequency band. The filter bank 100 receives an input signal 104, applies the weights 102 to the input signal 104, and generates an output signal 106. The weights 102 may vary over time.
[0040] The input signal 104 (and the output signal 106) may be a single-channel signal, in which case the filter bank 100 includes a number of filters, each of which corresponds to one of the weights 102 and a particular frequency band. The input signal 104 (and the output signal 106) may be a multi-channel signal, in which case the filter bank 100 includes a number of filter arrays, each of which corresponds to one of the channels, and each filter in a given array corresponds to one of the weights 102 and a particular frequency band. The input signal 104 and the output signal 106 may be multi-channel signals having different numbers of channels, each of which corresponds to one of the input channels and one of the output channels.
[0041] In general, the filtering techniques described herein may be applied to each individual filter in filter array 100 .
[0042] Figure 2 2 is a graph 200 showing a set of filter bank frequency responses. In the graph 200, the x-axis is frequency and the y-axis is gain. For example, a set of B bandpass impulse responses h may be pre-calculated. 1 (n), h 2 (n),···,h B (n), which has a bandpass center frequency fc 1 、fc 2 、···、fc B Ideally, the filter h b (n) will have a frequency response H b (f), which (approximately) satisfies:
[0043] Equation (1):
[0044]
[0045] Filter H 2 The frequency response 202 of (f) is shown as f = fc 2 has a gain of 1 at all other values of f = fc b , b≠2 has a gain of 0. Other filters H b (f) At other frequencies fc b The gain is 1. The frequency fs / 2 is half the sampling rate (Nyquist rate).
[0046] Next, a set of weighting coefficients w can be used 1 、w 2 、···、w B To form the combined filter response. The time domain and frequency domain versions of the equation are as follows:
[0047] Equation (2):
[0048] Time Domain:
[0049] Equation (3):
[0050] Frequency domain:
[0051] Figure 3 is a graph 300 showing an exemplary combined filter response 302. The x-axis is frequency (five frequency values are shown) and the y-axis is gain (five corresponding weights are shown). As an example, at f=fc 2 The gain 304 under this condition is equal to w 2 . Other frequencies fc b With its corresponding weight w b In practical applications, this combined filter response can be implemented in many ways, such as Figures 4 to 5 Displayed in.
[0052] Figure 4 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 referred to as x(n), which refers to the input signal for a given sample n), and generates an output signal 412 (shown as Y and also referred to as y(n)).
[0053] Each of the convolution blocks 402 is generally related to the impulse response 420 (shown as h b ) corresponds to a given frequency, frequency band, or frequency range associated with the given convolution block 402. b (n)) is convolved to generate a filtered signal 422 (eg, x b (n)).
[0054] Each of the multiplication blocks 404 is multiplied by a weight 430 (shown as w b ) and is associated with one of the convolution blocks 402 (and thus also with the frequency band). Given a multiplication block 404, the filtered signal 422 (e.g., x b (n)) and weight 430 (e.g., w b ) are multiplied to generate a weighted signal 432.
[0055] The summation block 406 adds the weighted signals 432 from each of the multiplication blocks 404 to generate the output signal 412 .
[0056] The equations representing these operations are as follows:
[0057] Equation (4):
[0058]
[0059] Equation (5):
[0060]
[0061] Equation (6):
[0062] Filtered output:
[0063] The equation used in equation (4) The operator indicates the convolution of h(n) and x(n).
[0064] Equation (5) shows that the convolution operation results in the generation of the subband signal x 1 (n), x 2 (n),···,x B The 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).
[0065] According to this method, the weights can be time-varying, so in equation (6), w b It can also be obtained by b (n) Replacement.
[0066] Figure 5 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 (shown as X and also referred to as x(n), which refers to the input signal for a given sample n), and generates an output signal 512 (shown as Y and also referred to as y(n)).
[0067] Each of the multiplication blocks 502 generally corresponds to a summation of the impulse response 520 (shown as h b ) and is also associated with a weight 530 (shown as w b ). Given a multiplication block 502, the impulse response 520 (e.g., h b (n)) and weighting factor 530 (e.g., w b (n)) are multiplied to generate one of the weighted responses 532.
[0068] Addition block 504 adds the weighted responses 532 from each of the multiplication blocks 502 to generate a combined filter response 540 .
[0069] The convolution block 506 convolves the input signal 510 (eg, x(n)) with the combined filter response 540 to generate an output signal 512 (eg, y(n)).
[0070] In general, filterbank 500 implements a dynamic filter that performs a periodic computation 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 computed according to equation (3).
[0071] In one embodiment, we may implement the actual convolution operation in the frequency domain using overlapping audio blocks with smooth cross-fading between audio blocks, which may allow the filter response to be varied on a block-by-block basis.
[0072] In a common application, the filter bank response is a causal filter, where the filter output depends only on past and present inputs (so that for each b∈{1,2,...,B}, the impulse response ). If all filter bank responses are causal, then the combined response (h(n), according to equation (2)) will also be causal.
[0073] Figure 6 is a graph of an impulse response 600. The impulse response 600 results from applying a filter such that for each b∈{1, 2, ..., B}, the impulse response where L is a positive integer. In practice, a filter with this property can be implemented by adding an additional delay of L samples in the filter implementation (so that the impulse response is shifted in time by L samples to allow it to be implemented as a causal filter).
[0074] Figure 7 700 is a block diagram of a filter array 700. The filter array 700 includes a plurality of filters 702 (shown as Filter ny,nx ) and a number of addition blocks 704. The filter array 700 receives a number of input signals 710 (shown as X 1 To X nx ) and generates a number of output signals 712 (shown as Y 1 To Y ny ). In general, filter array 700 illustrates the operation of a multi-channel input, multi-channel output system, where a filter connects each input to each output. Filter 700 can also be conceptualized as a multi-channel filter bank, where for each frequency band, there is a [ny by nx] two-dimensional array that defines the mix of inputs to form outputs.
[0075] The filters 702 are arranged in groups, where each filter bank is associated with one of the input signals 710 (e.g., a channel). Each of the filters 702 is generally associated with a frequency band, a filter response, and a weight, similar to other filters discussed herein. For example, each of the filters 702 may be, for example, a filter bank 400 (see Figure 4 ), filter bank 500 (see Figure 5 ) and other filters.
[0076] In terms of frequency domain filter response, we can describe the processing of filter array 700 according to the following equation:
[0077] Equation (7):
[0078]
[0079] The embodiments described herein relate to methods for implementing one or more of the filters 702. It will be appreciated that the embodiments are equally applicable to Figure 7 The filter array shown in .
[0080] Return to reference Figure 3 , showing the desired frequency response of an exemplary filter, wherein according to a set of predefined frequencies fc 1 、fc 2 , ···, and the corresponding gain value w 1 、w 2 , . . . define the gain of the filter response 302 which varies according to frequency.
[0081] exist Figure 3 In the example of 2 The gain under 2 setting, such as shown as gain 304 .
[0082] In an embodiment, the weighted sum of several predefined filter bank responses is achieved. Figure 3 The frequency response of Figure 2 , where the frequency response 202 of frequency band 2 is shown.
[0083] We refer to the response of each of these predefined filter bank responses as H b (f) (in the frequency domain) or alternatively h b (n) (in the time domain).
[0084] The desired filter response (e.g. Figure 3 302 in ) can be formed by a weighted sum of predefined filter bank responses. This can be expressed as a time domain or frequency domain summation:
[0085] Equation (8):
[0086] Time Domain:
[0087] Equation (9):
[0088] Frequency domain:
[0089] We may choose to insist that each of the predefined filter bank responses should represent a causal filter (such that ). However, for convenience, we instead insist that And therefore we will be required to add L delayed samples to our implementation of the filter so that the final (realizable) filter output y′(n) will be a delayed version of the ideal response y(n) according to the following calculation:
[0090] Equation (10):
[0091]
[0092] Equation (11):
[0093] y′(n)=y(nL)
[0094] Equation (12):
[0095]
[0096] Note that the calculation of output sample n of the ideal signal y(n) uses at most x(n+L) input samples (including L future input samples) to operate. In contrast, the calculation of output sample n of the delayed signal y′(n) only uses at most x(n) input samples to operate.
[0097] exist Figure 6 The properties of An exemplary impulse response of .
[0098] In an embodiment, the frequency resolution of the filter bank (the spacing between adjacent filter bank center frequencies, e.g., fc b+1 -fc b ) is smaller, and the delay L is also smaller.
[0099] In one specific embodiment, a low-delay filter bank is used to provide low delay L and high resolution. In another embodiment, an all-pass low-delay filter bank is used to provide low perceived delay L and high resolution.
[0100] Ideal filter bank response
[0101] Filter banks can be constructed in a variety of ways, including Figure 2A method for generating an ideal frequency response and then converting it into an ideal time-domain impulse response of linear phase as shown in FIG.
[0102] Figure 8 8 is a graph 800 showing a set of exemplary time domain filter bank impulse responses. In graph 800, the x-axis is time (in samples) and the y-axis is frequency. A number of filter responses are shown in graph 800, each of which is referred to as F 1 、F 2 、···、F B The given frequencies indicated correspond to the number of filters in the filter bank, in this example B=10. The highest number (e.g., 10) corresponds to the highest frequency and the lowest number (e.g., 1) corresponds to the lowest frequency. Filter F b The ideal impulse response is h′ b (n) (for b∈{1,2,...,B}). For further discussion below, two filter responses 802 and 804 are indicated; the filter response 802 and the third filter (h′ 3 (n)) and the filter response 804 corresponds to the lowest frequency filter response (h′ 1 (n)) corresponds.
[0103] According to common practice, the ideal filter bank response exhibits the perfect sum property as follows:
[0104] Equation (13):
[0105]
[0106] Equation (14):
[0107] in
[0108] Preferably, we can use a filter bank in which the lower frequency filters are narrower (and more closely spaced) than the higher frequency filters, such as Figure 2 As described in, for example, where fc 1 With fc 2 The interval between them is less than fc 4 With fc 5 Therefore, the impulse response of a higher frequency filter will be more compact (its energy is spread over a smaller number of samples) than the impulse response of a lower frequency filter, such as Figure 8 It can be observed in.
[0109] Theoretically, the length of the impulse response of an ideal filter bank can be infinite, and in particular Figure 8 As can be seen, the filter F 3 The impulse response 802 does not satisfy the desired low delay property: therefore, Figure 8 The filters shown in are not suitable for implementing a low-delay filter bank.
[0110] Techniques for low latency filter response
[0111] According to one approach, a low-delay filter bank (with delay L) can be generated by simply truncating the ideal impulse response as follows:
[0112] Equation (15):
[0113]
[0114] However, such truncation will affect the resulting response at low frequencies and may result in audible artifacts if used in a real-world system.
[0115] Fig. 9 900 is a graph of signals showing an improved method of modifying an impulse response. In graph 900, the x-axis is time (in samples). The y-axis is magnitude; it should be noted that each signal is independent of each other on the y-axis (e.g., the y-axis independently shows the magnitude range of each signal, rather than any kind of relative magnitude or comparison between the signals). Signal 802 and filter F 3 The ideal impulse response (e.g., h′ 3 (n)) corresponds to Figure 8 . Signal 904 corresponds to the fading function. Signal 906 corresponds to signal 802 multiplied by signal 904 to generate a low-delay filter response, as follows:
[0116] Equation (16):
[0117] h b (7n) = h′ b (n)q(n)
[0118] Equation (17):
[0119]
[0120] Those skilled in the art will appreciate that according to both techniques (Eq. (15) and Eq. (16)), the resulting impulse response h b (n) has the desired properties h b (0) = h′ b (0), and this guarantees that the perfect reconstruction criterion (Eq. (13)) will be satisfied.
[0121] However, the frequency response of these filters (as produced by equation (15) or equation (16)) will not necessarily match the original (ideal) response h′ b(n) and can be achieved using improved techniques, as discussed below.
[0122] Improved method for low latency filter response
[0123] Fig.10 1 is a block diagram of a method 1000 for generating filter responses. The method 1000 may be used to generate a filter bank (eg, Figure 4 The filter bank 400, Figure 5 The filter bank 500, Figure 7 The method 1000 includes a fading block 1002, a time reversal block 1004, and a summation 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.
[0124] Fading block 1002 receives ideal impulse response 1010, applies a fading function, and generates pre-ripple response 1012. Ideal impulse response 1010 may be identical to one or more of the ideal impulse responses discussed above (e.g., Figure 8 or h′ as discussed in 9 b (n) corresponds to, for example, signal 802). Fig.11 An example of a decay function is shown in .
[0125] The time reversal block 1004 performs a time reversal operation on the pre-ripple response 1012 to generate a post-ripple response 1014. The time reversal operation generally corresponds to mirroring the pre-ripple response 1012 around the zero sample of the signal. Fig.11 An example of reverse time operation is shown in .
[0126] Summation block 1006 adds ideal impulse response 1010 , subtracts pre-ripple response 1012 , and adds post-ripple response 1014 to generate filter response 1016 .
[0127] Fig.11 Is to show and Fig.10 1100 is a graph of various signals related to each other. In the graph 1100, the x-axis is time (in samples) and the y-axis is magnitude; Fig. 9 It should be noted that the magnitude of each signal is independent of each other signal. 3 The ideal impulse response (e.g., h′ 3 (n)) corresponds to Figures 8 to 9 See also Fig.10 The ideal impulse response 1010 in.
[0128] Signal 1102 corresponds to a decay function. See also Fig. 9Signal 904 in . Signal 1104 corresponds to signal 802 multiplied by signal 1102 to generate a pre-ripple response. See also Fig.10 The front ripple response 1012 in.
[0129] The reverse time correspondence of signal 1106 and signal 1104 is called post-ripple response. Fig.10 The post-ripple response 1014 in.
[0130] 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). Fig.10 Filter response 1016 in.
[0131] The following equation shows this process:
[0132] Equation (18):
[0133] Pre-ripple:
[0134] Equation (19):
[0135]
[0136] Equation (20):
[0137] After Ripple:
[0138] Equation (21):
[0139] Low latency response:
[0140] It should be noted that according to equation (20), And therefore, the low delay pulse response h b (n) (according to equation (21) will have the desired property h b (0) = h′ b (0), and this guarantees that the perfect reconstruction criterion (Eq. (13)) will be satisfied.
[0141] Low latency all-pass filter response
[0142] Various types of audio filtering can be used to modify an audio signal without the listener perceiving the group delay of the filtering. As an example, a typical high-pass filter (such as a filter used to remove unwanted low-frequency noise from a recorded sound) will introduce phase distortion at low frequencies that will not be perceived as harmful by the listener. Another common type of filtering that will not be perceived by the listener is an all-pass filter.
[0143] Fig.12 is a set of graphs showing phase distortion 1202 and group delay 1204. Phase distortion 1202 and group delay 1204 result from processing an audio signal sampled at 48 kHz using the transfer function as shown in equation (22).
[0144] Equation (22):
[0145]
[0146] For a filter operating at a sampling rate of 48,000 samples per second, the constant 0.994986 in equation (22) corresponds to a typical value of a transition frequency of approximately 37 Hz (with a phase shift of 90 degrees for a first-order all-pass filter). Alternative values for this constant may be selected, and for a filter operating at 48,000 samples per second, the constant may vary between 0.9490 and 0.9993, which correspond to transition frequencies of 400 Hz and 5 Hz, respectively.
[0147] Assuming that this phase distortion 1202 produces artifacts in the output audio signal that are acceptable to the listener, it is therefore acceptable to apply the same phase distortion to the ideal impulse response to produce a new set of all-pass filter responses, such as Fig.13 As shown in .
[0148] Fig.13 13 is a graph 1300 showing various impulse responses. In graph 1300, the x-axis is time (in samples) and the y-axis is at various frequencies F n The impulse response is arranged below. Filter F 3 The impulse response of 1302 looks similar to Figure 8 The filter F in 3 The original (ideal) response 802 of filter F is similar. In contrast, the filter F 1 The impulse response of 1304 looks similar to Figure 8 The filter F in 1 The original (ideal) response 804 of φ is different. This difference is due to the effect of the all-pass filter, which affects the lower frequency filters while having negligible effect on the higher frequency filters. The all-pass filter is discussed in more detail below.
[0149] It can be seen that compared to region 1308 (more than 100 samples after time zero), filter F 1 The impulse response 1304 of has a lower amplitude in region 1306 (more than 100 samples before time zero). The shift of the energy of the impulse response to later times in the impulse response is a desirable property of an all-pass filter because it produces a closer approximation to the delay constraint (where Fig.13 In the example, L=100) filter bank.
[0150] Fig.14 1 is a block diagram of a method 1400 for generating filter responses. The method 1400 may be used to generate a filter bank (eg, Figure 4 The filter bank 400, Figure 5 The filter bank 500, Figure 7 The method 1400 includes an all-pass filter 1402, a fading block 1404, a time reversal block 1406, an all-pass filter 1408, an all-pass filter 1410, and a summation 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.
[0151] All-pass filter 1402 receives ideal impulse response 1420, performs all-pass filtering, and generates filter response 1422. Ideal impulse response 1420 may be identical to one or more of the ideal impulse responses discussed above (e.g., Figure 8 or h′ as discussed in 9 b (n), such as signal 802). The impulse response of the all-pass filter is discussed in more detail in the equation below.
[0152] The fading block 1404 applies a fading function to the filter response 1422 to generate a pre-ripple response 1424. Fig.15 An example of a decay function is shown in .
[0153] The time reversal block 1406 performs a time reversal operation on the pre-ripple response 1424 to generate an intermediate response 1426. Fig.15 An example of reverse time operation is shown in .
[0154] All-pass filter 1408 performs all-pass filtering on intermediate response 1426 to generate filter response 1428 .
[0155] All-pass filter 1410 performs all-pass filtering on filter response 1428 to generate a post-ripple response 1430 .
[0156] Summation block 1412 adds filter response 1422 , adds post-ripple response 1430 , and subtracts pre-ripple response 1424 to generate filter response 1432 .
[0157] In an embodiment, in order to correctly satisfy the delay constraint, we apply the process of equation (21) with an adaptation calculation to allow the introduction of an all-pass filter. In the following equation, the notation Used to indicate the convolution of the impulse responses a(n) and b(n). The generation of the low-latency all-pass filter response is performed as follows:
[0158] Equation (23):
[0159] All Access:
[0160] Equation (24):
[0161] Pre-ripple:
[0162] Equation (25):
[0163] Decay function:
[0164] Equation (26):
[0165] After Ripple:
[0166] Equation (27):
[0167] Low latency response:
[0168] In the above equation, g(n) is the impulse response of the all-pass filter (see also equation (22)).
[0169] In an embodiment, the all-pass filter is a first-order filter with a single real pole at frequencies between 10 Hz and 200 Hz. s For a filter bank with a delay L operating on audio sampled at a rate of samples, the frequencies of the all-pass poles can be approximately set to:
[0170] Equation (28):
[0171] All-pass pole frequency:
[0172] The calculation of the pole frequency as shown in equation (28) is an example. It will be appreciated that other pole frequencies will also provide the advantage of improving the delay / accuracy tradeoff in the design of the filter bank.
[0173] When the impulse responses of the group of B filters in the low-delay all-pass filter bank are summed together, the final result (the reconstructed impulse response) is approximately equal to the all-pass response:
[0174] Equation (29):
[0175]
[0176] Equation (30):
[0177] ≈g(n)
[0178] Fig.14The process can be applied to each filter in the filter bank, so for example, for b∈{1, 2, ..., B}, it can be based on Fig.14 Processing ideal impulse response h′ b (n) to produce a low-delay all-pass filter h b (n).
[0179] Fig.15 Is to show and Fig.14 1500 is a graph of various signals related to each other. In graph 1500, the x-axis is time (in samples) and the y-axis is magnitude; Fig. 9 and 11 It should be noted that the magnitude of each signal is independent of each other signal. 1 The all-pass filter impulse response (e.g., h′ 1 (n)) corresponds to Fig.13 See also Fig.14 The filter response 1422 in and equation (23).
[0180] Signal 1502 corresponds to a decay function. See also Fig. 9 Signal 904 and Fig.11 Signal 1504 corresponds to signal 1304 multiplied by signal 1502 to generate a pre-ripple response. See also Fig.14 The front ripple response 1424 in and equation (24).
[0181] Signal 1506 corresponds in reverse time to signal 1504 and is called an intermediate response. Fig.14 The intermediate response 1426 in . Signal 1508 corresponds to applying the all-pass filter to signal 1506 twice, and is called the post-ripple response. See also Fig.14 The post-ripple response 1430 and equation (26).
[0182] Signal 1510 corresponds to the filter bank response and is generated by adding signal 1304 (filter response 1422), adding signal 1508 (post-ripple response 1430), and subtracting signal 1504 (pre-ripple response 1424). See also equation (27).
[0183] Fig.10 Method 1000 with Fig.14 The difference between the method 1400 and the filter response h′ can be conceptualized as follows. First, it should be noted that the method 1000 is different from the filter response h′ b (n) is operated, and method 1400 performs an all-pass filtered version The processing of method 1000 relies on the fact that the pre-ripple component and the post-ripple component are obtained by mirroring around t=0 and combining it with the fact that we know that the ideal impulse response 1010 is symmetric about time zero.
[0184] Extending this knowledge to method 1400, imagine that we can obtain new filter components: This means that we take the original pre_ripple (eg, intermediate response 1426 or signal 1506), and apply the inverse of the all-pass function g.
[0185] Next, we get another new filter component: postA(t) = preA(-t). This is simply a mirrored version of preA.
[0186] Now, we can get another filter component: finalA = h′ b (n)+postA–preA. This step is very similar to Fig.10 The processing used in , and most importantly, this step follows our mantra: the pre-ripple component and the post-ripple component are obtained by mirroring around t=0 and combining our knowledge that the original filter is symmetric about time zero.
[0187] Next, we can build the final filter:
[0188] Now, we know: (This is because the time mirror image of the all-pass filter is the same as the inverse filter of the all-pass filter.)
[0189] Therefore, we conclude that:
[0190] Fig.16 16 is a flow chart of a method 1600 of audio processing. The method 1600 may be implemented by, for example, a processor executing instructions according to one or more computer programs.
[0191] At 1602, a modified impulse response is generated from an ideal impulse response. The ideal impulse responses correspond to a number of frequencies, respectively. Generating the modified impulse response includes performing a fading operation and a time reversal operation on at least one of the ideal impulse responses. For example, method 1000 (see Fig.10 ) can use the fading block 1002 to perform a fading operation on the ideal impulse response 1010 and use the time reversal block 1004 to perform a time reversal operation. As another example, the method 1400 (see Fig.14) can use the fading block 1404 to perform a fading operation on the ideal impulse response 1420 and use the inversion block 1406 to perform a time inversion operation.
[0192] At 1604, the input signal is filtered using the modified impulse response (see 1602) to generate an output signal. For example, filter bank 100 (see Figure 1 ) may include several filters having modified impulse responses generated at 1602 and may generate an output signal 106 from the input signal 104.
[0193] exist Figures 17 to 18 The general steps of method 1600 are further described in detail in FIG.
[0194] Fig.17 1700 is a flowchart of a method 1700 for audio processing. The method 1700 may be implemented by, for example, a processor executing instructions according to one or more computer programs. The method 1700 is similar to the method 1600 (see Fig.16 ) is similar to that which is specific to method 1000 (see Fig.10 ) for more details on its operation.
[0195] At 1702, a modified impulse response is generated from an ideal impulse response. This includes sub-steps 1704 to 1708.
[0196] At 1704, a pre-ripple response is generated based on the first ideal impulse response. For example, the fading block 1002 (see Fig.10 ) can perform a fading operation on the ideal impulse response 1010 to generate a pre-ripple response 1012. See also equation (18).
[0197] At 1706, a post-ripple response is generated based on the pre-ripple response. For example, the reverse time block 1004 (see Fig.10 ) can perform a time-reversal operation on the front ripple response 1012 to generate the rear ripple response 1014. See also equation (20).
[0198] 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-ripple response. For example, summation block 1006 (see Fig.10 ) can add the ideal impulse response 1010, subtract the pre-ripple response 1012, and add the post-ripple response 1014 to generate the filter response 1016. See also equation (21).
[0199] At 1710, the input signal is filtered using the modified impulse response (see 1702 to 1708) to generate an output signal. For example, filter bank 100 (see Figure 1) may include several filters having modified impulse responses generated at 1702 and may generate an output signal 106 from an input signal 104.
[0200] Fig.18 1800 is a flowchart of a method 1800 for audio processing. The method 1800 may be implemented by, for example, a processor executing instructions according to one or more computer programs. The method 1800 is similar to the method 1600 (see Fig.16 ) is similar to that specific to method 1400 (see Fig.14 ) for more details on its operation.
[0201] At 1802, a modified impulse response is generated from an ideal impulse response. This includes sub-steps 1804 to 1814.
[0202] 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 filtering operation on ideal impulse response 1420 to generate filter response 1422. See also equation (23).
[0203] At 1806, a pre-ripple response is generated based on the first filter response. For example, the fading block 1404 (see Fig.14 ) may perform a fading operation on the filter response 1422 to generate a pre-ripple response 1424. See also equation (24).
[0204] At 1808, an intermediate response is generated based on the previous ripple response. For example, the reverse time block 1406 (see Fig.14 ) can perform a time-reversal operation on the pre-ripple response 1424 to generate an intermediate response 1426. See also equation (26).
[0205] At 1810, a 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 filtering operation on intermediate response 1426 to generate filter response 1428. See also equation (27).
[0206] At 1812, a 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 filtering operation on filter response 1428 to generate post-ripple response 1430. See also equation (27).
[0207] At 1814, a first modified impulse response is generated by adding the first filter response, adding the post-ripple response and subtracting the pre-ripple response. For example, summation block 1412 (see Fig.14) can add the filter response 1422, add the post-ripple response 1430, and subtract the pre-ripple response 1424 to generate the filter response 1432. See also equation (27).
[0208] At 1816, the input signal is filtered using the modified impulse response (see 1802 to 1814) to generate an output signal. For example, filter bank 100 (see Figure 1 ) may include several filters having modified impulse responses generated at 1802 and may generate an output signal 106 from an input signal 104.
[0209] In an embodiment, an input audio signal may be processed to generate an output audio signal, wherein the processed gain at a number of predetermined frequencies is approximately equal to a set of corresponding gain coefficients. The processing may be implemented according to a filter response that is a weighted sum of a corresponding number of low-delay all-pass filter responses, wherein the weights are determined by the corresponding gain coefficients. The low-delay all-pass filter response has been calculated according to Fig.18 method to determine.
[0210] In an alternative embodiment, an input audio signal is processed to produce an output audio signal, wherein the output audio signal is formed by filtering the input audio signal with an overall impulse response that is a weighted sum of a set of filter bank impulse responses. The sum of the filter bank impulse responses is an all-pass filter. The all-pass filter may have an approximately constant phase response above a frequency of approximately 500 Hz, and a group delay that rises at lower frequencies.
[0211] In an alternative embodiment, an input audio signal is processed to produce an output audio signal, wherein the output audio signal is formed by filtering the input audio signal with a total impulse response that is a weighted sum of a set of filter bank impulse responses. A reconstructed impulse response may be formed by the sum of the filter bank impulse responses such that 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 (varying by no more than 0.1 ms) above 500 Hz and may vary by no more than 0.5 / f seconds at lower frequencies (e.g., less than 500 Hz). The bandwidth of one or more impulse responses from the set of filter bank impulse responses may be narrower in accordance with the increased group delay of the reconstructed impulse response.
[0212] Implementation details
[0213] Embodiments may be implemented in hardware, executable modules stored on computer-readable media, or a combination of the two (e.g., programmable logic arrays). Unless otherwise specified, the steps performed by the embodiments need not be inherently related to any particular computer or other device, although they may be in a particular embodiment. In particular, various general-purpose machines may be used with programs written according to the teachings herein, or more specialized devices (e.g., integrated circuits) may be conveniently constructed to perform the required method steps. Therefore, embodiments may be implemented by one or more computer programs executed on one or more programmable computer systems that include 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. Program code is applied to input data to perform the functions described herein and generate output information. Output information is applied to one or more output devices in a known manner.
[0214] Each such computer program is preferably stored on or downloaded to a storage medium or device readable by a general or special purpose programmable computer (e.g., solid-state memory or media, or magnetic or optical media) to configure and operate a computer system to perform the procedures described herein when the storage medium or device is read by the computer system. The inventive system may also be considered to be implemented as a computer-readable storage medium configured with a computer program, wherein the storage medium so configured causes the computer system to operate in a specific and predetermined manner to perform the functions described herein. (Software itself and intangible or transitory signals are excluded to the extent that they are unpatentable subject matter.)
[0215] The above description illustrates various embodiments of the present invention and examples of how aspects of the present invention 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 invention as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents will be apparent to those skilled in the art and may be adopted without departing from the spirit and scope of the present invention as defined by the claims.
Claims
1. A method of performing audio processing in a filter bank, the filter bank comprising a plurality of filters, each filter corresponding to a respective frequency band, each filter having a respective modified impulse response, the method comprising: generating a plurality of modified impulse responses of the plurality of filters from a plurality of original impulse responses, wherein the plurality of original impulse responses respectively correspond to a plurality of frequencies, wherein generating the plurality of modified impulse responses comprises performing a fading operation on at least one of the plurality of original impulse responses to generate a pre-ripple response, and performing a time reversal operation on the pre-ripple response; filtering the input signal using the plurality of filters to generate an output signal; and Wherein generating the plurality of modified impulse responses comprises generating each modified impulse response for the corresponding original filter based on one or more of an impulse response of the corresponding original filter, a pre-ripple response of the corresponding original filter, and a post-ripple response of the corresponding original filter.
2. The method of claim 1, wherein generating each modified impulse response for the corresponding original filter comprises adding the post-ripple response to the corresponding original impulse response.
3. The method of any one of claims 1 to 2, wherein generating each modified impulse response for the corresponding original filter comprises subtracting the pre-ripple response from the corresponding original filter response.
4. The method of any one of claims 1 to 3, wherein generating the pre-ripple response comprises: A fading operation is performed on the original filter response to generate the pre-ripple response.
5. The method of any one of claims 1 to 4, wherein generating each modified impulse response for the respective original filter comprises: A reverse time operation is performed on the pre-ripple response.
6. The method according to any one of claims 1 to 5, further comprising: generating a plurality of weighted modified impulse responses by applying a plurality of weights to the plurality of modified impulse responses, Wherein filtering the input signal comprises filtering the input signal using the plurality of weighted modified impulse responses to generate the output signal.
7. The method of claim 6, wherein a reconstructed impulse response corresponds to the sum of the weighted modified impulse responses, the reconstructed impulse response having a group delay that is approximately constant in a frequency range above 500 Hz and increases below 500 Hz.
8. The method of any one of claims 6-7, 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.
9. The method of any one of claims 6 to 8, wherein the plurality of weights are time-varying.
10. The method of any one of claims 1 to 9, wherein the input signal is one of a plurality of input signals, wherein the plurality of modified impulse responses are applied through a plurality of filter banks, wherein the output signal is one of a plurality of output signals, and wherein a given filter bank filters a given input signal to generate a given output signal.
11. A non-transitory computer readable medium storing a computer program which, when executed by a processor, controls an apparatus to perform a process including the method according to any one of claims 1 to 10.
12. A device for audio processing, comprising: processor; and Memory, wherein the processor is configured to control the apparatus to generate a plurality of modified impulse responses from a plurality of original impulse responses, wherein the plurality of original impulse responses respectively correspond to a plurality of frequencies, wherein generating the plurality of modified impulse responses comprises performing a fading operation and a time reversal operation on at least one of the plurality of original impulse responses; wherein the processor is configured to control the apparatus to filter an input signal using the plurality of modified impulse responses to generate an output signal; and Wherein generating the plurality of modified impulse responses comprises generating each modified impulse response for the corresponding original filter based on one or more of an impulse response of the corresponding original filter, a pre-ripple response of the corresponding original filter, and a post-ripple response of the corresponding original filter.