In this module, we separate multichannel signals
using independent vector analysis (IVA).
We denote the number of sources and microphones as \(N\) and \(M\), respectively.
We also denote short-time Fourier transforms of source, observed, and separated signals
as \(\boldsymbol{s}_{ij}\), \(\boldsymbol{x}_{ij}\), and \(\boldsymbol{y}_{ij}\),
respectively.
where \(\boldsymbol{A}_{i}=(\boldsymbol{a}_{i1},\ldots,\boldsymbol{a}_{in},\ldots,\boldsymbol{a}_{iN})\in\mathbb{C}^{M\times N}\) is
a mixing matrix.
If \(M=N\) and \(\boldsymbol{A}_{i}\) is non-singular, a demixing system is represented as
where \(\boldsymbol{W}_{i}=(\boldsymbol{w}_{i1},\ldots,\boldsymbol{w}_{in},\ldots,\boldsymbol{w}_{iN})^{\mathsf{H}}\in\mathbb{C}^{N\times M}\) is
a demixing matrix.
The negative log-likelihood of observed signals (divided by \(J\)) is computed as follows:
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the update algorithm if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
If self.scale_restoration=projection_back, we use projection back technique.
If self.scale_restoration=minimal_distortion_principle,
we use minimal distortion principle.
Base class of independent vector analysis (IVA) using gradient descent.
Parameters:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
score_fn (callable) – A score function which corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_bins, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Base class of fast independent vector analysis (FastIVA).
Parameters:
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the update algorithm if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Base class of auxiliary-function-based independent vector analysis (IVA).
Parameters:
contrast_fn (callable) – A contrast function corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
d_contrast_fn (callable) – A derivative of the contrast function.
This function is expected to receive (n_channels, n_frames)
and return (n_channels, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the update algorithm if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Independent vector analysis (IVA) [1] using gradient descent.
Parameters:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
contrast_fn (callable) – A contrast function corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
score_fn (callable) – A score function corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_bins, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Examples
Update demixing filters using Holonomic-type update:
Independent vector analysis (IVA) using natural gradient descent.
Parameters:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
contrast_fn (callable) – A contrast function corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
score_fn (callable) – A score function corresponds to the partial derivative of the contrast function.
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_bins, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the update algorithm if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Examples
Update demixing filters using Holonomic-type update:
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
d_contrast_fn (callable) – A derivative of the contrast function.
This function is expected to receive (n_channels, n_frames)
and return (n_channels, n_frames).
dd_contrast_fn (callable) – Second order derivative of the contrast function.
This function is expected to receive (n_channels, n_frames)
and return (n_channels, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the update algorithm if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
d_contrast_fn (callable) – A derivative of the contrast function.
This function is expected to receive (n_channels, n_frames)
and return (n_channels, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the update algorithm if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
Return type:
None
In FasterIVA, we compute the eigenvector of \(\boldsymbol{U}_{in}\)
which corresponds to the largest eigenvalue by solving
spatial_algorithm (str) – Algorithm for demixing filter updates.
Choose IP, IP1, IP2, ISS, ISS1, ISS2, or IPA.
Default: IP.
contrast_fn (callable) – A contrast function which corresponds to \(-\log p(\vec{\boldsymbol{y}}_{jn})\).
This function is expected to receive (n_channels, n_bins, n_frames)
and return (n_channels, n_frames).
d_contrast_fn (callable) – A derivative of the contrast function.
This function is expected to receive (n_channels, n_frames)
and return (n_channels, n_frames).
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
pair_selector (callable, optional) – Selector to choose updaing pair in IP2 and ISS2.
If None is given, sequential_pair_selector is used.
Default: None.
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the demixing filter update if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
lqpqm_normalization (bool) – This keyword argument can be specified when spatial_algorithm='IPA'.
If True, normalization by trace is applied to positive semi-definite matrix
in LQPQM. Default: True.
newton_iter (int) – This keyword argument can be specified when spatial_algorithm='IPA'.
Number of iterations in Newton method. Default: 1.
If self.spatial_algorithm is IP or IP1, update_once_ip1 is called.
If self.spatial_algorithm is IP2, update_once_ip2 is called.
If self.spatial_algorithm is ISS or ISS1, update_once_iss1 is called.
If self.spatial_algorithm is ISS2, update_once_iss2 is called.
If self.spatial_algorithm is IPA, update_once_ipa is called.
Parameters:
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
Update demixing filters once using iterative projection.
Parameters:
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
Update demixing filters once using pairwise iterative projection.
Parameters:
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
Return type:
None
For \(n_{1}\) and \(n_{2}\) (\(n_{1}\neq n_{2}\)),
compute auxiliary variables:
Update estimated spectrograms once using iterative projection with adjustment [5].
Parameters:
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
Then, by defining, \(\tilde{\boldsymbol{U}}_{in'}\),
\(\boldsymbol{A}_{in}\in\mathbb{R}^{(N-1)\times(N-1)}\),
\(\boldsymbol{b}_{in}\in\mathbb{C}^{N-1}\),
\(\boldsymbol{C}_{in}\in\mathbb{C}^{(N-1)\times(N-1)}\),
\(\boldsymbol{d}_{in}\in\mathbb{C}^{N-1}\),
and \(z_{in}\in\mathbb{R}_{\geq 0}\) as follows:
Update estimated spectrograms once using iterative source steering [6].
Parameters:
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
Update estimated spectrograms once using pairwise iterative source steering [7].
Parameters:
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.
step_size (float) – A step size of the gradient descent. Default: 1e-1.
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Examples
Update demixing filters using Holonomic-type update:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Examples
Update demixing filters using Holonomic-type update:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Examples
Update demixing filters using Holonomic-type update:
step_size (float) – A step size of the gradient descent. Default: 1e-1.
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
Default: functools.partial(max_flooring,eps=1e-10).
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
is_holonomic (bool) – If is_holonomic=True, Holonomic-type update is used.
Otherwise, Nonholonomic-type update is used. Default: False.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the gradient descent if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
Examples
Update demixing filters using Holonomic-type update:
spatial_algorithm (str) – Algorithm for demixing filter updates.
Choose IP, IP1, IP2, ISS, ISS1, or ISS2.
Default: IP.
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
pair_selector (callable, optional) – Selector to choose updaing pair in IP2 and ISS2.
If None is given, sequential_pair_selector is used.
Default: None.
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the demixing filter update if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
spatial_algorithm (str) – Algorithm for demixing filter updates.
Choose IP, IP1, IP2, ISS, ISS1, or ISS2.
Default: IP.
flooring_fn (callable, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
pair_selector (callable, optional) – Selector to choose updaing pair in IP2 and ISS2.
If None is given, sequential_pair_selector is used.
Default: None.
callbacks (callable or list[callable], optional) – Callback functions. Each function is called before separation and at each iteration.
Default: None.
scale_restoration (bool or str) – Technique to restore scale ambiguity.
If scale_restoration=True, the projection back technique is applied to
estimated spectrograms. You can also specify projection_back
or minimal_distortion_principle. Default: True.
record_loss (bool) – Record the loss at each iteration of the demixing filter update if record_loss=True.
Default: True.
reference_id (int) – Reference channel for projection back and minimal distortion principle. Default: 0.
flooring_fn (callable or str, optional) – A flooring function for numerical stability.
This function is expected to return the same shape tensor as the input.
If you explicitly set flooring_fn=None,
the identity function (lambdax:x) is used.
If self is given as str, self.flooring_fn is used.
Default: self.