AUDFILTERS Generates filters equidistantly spaced on auditory frequency scales
Usage: [g,a,fc,L]=audfilters(fs,Ls);
[g,a,fc,L]=audfilters(fs,Ls,...);
Input parameters:
fs : Sampling rate (in Hz).
Ls : Signal length.
Output parameters:
g : Cell array of filters.
a : Downsampling rate for each channel.
fc : Center frequency of each channel.
L : Next admissible length suitable for the generated filters.
[g,a,fc,L]=AUDFILTERS(fs,Ls) constructs a set of filters g that are
equidistantly spaced on a perceptual frequency scale (see FREQTOAUD) between
0 and the Nyquist frequency. The filter bandwidths are proportional to the
critical bandwidth of the auditory filters AUDFILTBW. The filters are intended
to work with signals with a sampling rate of fs. The signal length Ls is
mandatory, since we need to avoid too narrow frequency windows.
By default the ERB scale is chosen but other frequency scales are
possible. Currently supported scales are 'erb', 'erb83', 'bark', 'mel'
and 'mel1000', and can be changed by passing the associated string as
an optional parameter. See FREQTOAUD for more information on the
supported frequency scales.
By default, a Hann window shape is chosen as prototype frequency
response for all filters. The prototype frequency response can be
changed by passing any of the window types from FIRWIN or FREQWIN
as an optional parameter.
[g,a,fc,L]=AUDFILTERS(fs,Ls,fmin,fmax) constructs a set of filters
between fmin and fmax. The filters are equidistantly spaced on the
selected frequency scale. One additional filter will be positioned at
the 0 and Nyquist frequencies each, so as to cover the full range of
positive frequencies.
The values of fmin and fmax can be instead specified using a
key/value pair as:
[g,a,fc,L]=audfilters(fs,Ls,...,'fmin',fmin,'fmax',fmax)
Default values are fmin=0 and fmax=fs/2.
For more details on the construction of the filters, please see the
given references.
Downsampling factors
--------------------
The integer downsampling rates of the channels must all divide the
signal length, FILTERBANK will only work for input signal lengths
being multiples of the least common multiple of the downsampling rates.
See the help of FILTERBANKLENGTH.
The fractional downsampling rates restrict the filterbank to a single
length L=Ls.
[g,a]=AUDFILTERS(...,'regsampling') constructs a non-uniform
filterbank with integer subsampling factors.
[g,a]=AUDFILTERS(...,'uniform') constructs a uniform filterbank
where the integer downsampling rate is the same for all the channels. This
results in most redundant representation which produces nice plots.
[g,a]=AUDFILTERS(...,'fractional') constructs a filterbank with
fractional downsampling rates a.
This results in the least redundant system.
[g,a]=AUDFILTERS(...,'fractionaluniform') constructs a filterbank with
fractional downsampling rates a, which are uniform for all filters
except the "filling" low-pass and high-pass filters which can have different
fractional downsampling rates. This is useful when uniform subsampling
and low redundancy at the same time are desirable.
Additional parameters
---------------------
AUDFILTERS accepts the following optional parameters:
'spacing',b Specify the spacing between the filters, measured in
scale units. Default value is b=1 for the scales
'erb', 'erb83' and 'bark'; the default is b=100 for
'mel' and 'mel1000'.
'bwmul',bwmul Bandwidth of the filters relative to the bandwidth
returned by AUDFILTBW. Default value is bwmul=1 for
the scales 'erb', 'erb83' and 'bark'; the default is
b=100 for 'mel' and 'mel1000'.
'redmul',redmul Redundancy multiplier. Increasing the value of this
will make the system more redundant by lowering the
channel downsampling rates. It is only used if the
filterbank is a non-uniform filterbank. Default
value is 1. If the value is less than one, the
system may no longer be painless.
'redtar',redtar Target redundancy. The downsampling factors will be
adjusted to achieve a redundancy as close as possible
to 'redtar'.
'M',M Specify the total number of filters between fmin and
fmax. If this parameter is specified, it overwrites the
'spacing' parameter.
'symmetric' Create filters that are symmetric around their centre
frequency. This is the default.
'warped' Create asymmetric filters that are asymmetric on the
auditory scale.
'complex' Construct a filterbank that covers the entire
frequency range instead of just the positive
frequencies this allows the analysis of complex
valued signals.
'trunc_at' When using a prototype defined in FREQWIN, a hard
thresholding of the filters at the specified threshold
value is performed to reduce their support size.
The default value is trunc_at=10e-5. When no
truncation is desired, trunc_at=0 should be chosen.
This value is ignored when a prototype shape from
FIRWIN was chosen.
'min_win',min_win Minimum admissible window length (in samples).
Default is 4. This restrict the windows not
to become too narrow when L is low.
Examples:
---------
In the first example, we construct a highly redudant uniform
filterbank on the ERB scale and visualize the result:
[f,fs]=greasy; % Get the test signal
[g,a,fc,L]=audfilters(fs,length(f),'uniform','M',100);
c=filterbank(f,g,a);
plotfilterbank(c,a,fc,fs,90,'audtick');
In the second example, we construct a non-uniform filterbank with
fractional sampling that works for this particular signal length, and
test the reconstruction. The plot displays the response of the
filterbank to verify that the filters are well-behaved both on a
normal and an ERB-scale. The second plot shows frequency responses of
filters used for analysis (top) and synthesis (bottom). :
[f,fs]=greasy; % Get the test signal
L=length(f);
[g,a,fc]=audfilters(fs,L,'fractional');
c=filterbank(f,{'realdual',g},a);
r=2*real(ifilterbank(c,g,a));
norm(f-r)
% Plot the response
figure(1);
subplot(2,1,1);
R=filterbankresponse(g,a,L,fs,'real','plot');
subplot(2,1,2);
semiaudplot(linspace(0,fs/2,L/2+1),R(1:L/2+1));
ylabel('Magnitude');
% Plot frequency responses of individual filters
gd=filterbankrealdual(g,a,L);
figure(2);
subplot(2,1,1);
filterbankfreqz(gd,a,L,fs,'plot','linabs','posfreq');
subplot(2,1,2);
filterbankfreqz(g,a,L,fs,'plot','linabs','posfreq');
References:
T. Necciari, P. Balazs, N. Holighaus, and P. L. Soendergaard. The ERBlet
transform: An auditory-based time-frequency representation with perfect
reconstruction. In Proceedings of the 38th International Conference on
Acoustics, Speech, and Signal Processing (ICASSP 2013), pages 498--502,
Vancouver, Canada, May 2013. IEEE.
T. Necciari, N. Holighaus, P. Balazs, Z. Průša, P. Majdak, and
O. Derrien. Audlet filter banks: A versatile analysis/synthesis
framework using auditory frequency scales. Applied Sciences, 8(1),
2018. [1]http ]
References
1. http://www.mdpi.com/2076-3417/8/1/96
Url: http://ltfat.github.io/doc/filterbank/audfilters.html
See also: filterbank, ufilterbank, ifilterbank, ceil23.
Package: ltfat