Trinicon

pyroomacoustics.bss.trinicon.trinicon(signals, w0=None, filter_length=2048, block_length=None, n_blocks=8, alpha_on=None, j_max=10, delta_max=0.0001, sigma2_0=1e-07, mu=0.001, lambd_a=0.2, return_filters=False)

Implementation of the TRINICON Blind Source Separation algorithm as described in

R. Aichner, H. Buchner, F. Yan, and W. Kellermann A real-time blind source separation scheme and its application to reverberant and noisy acoustic environments, Signal Processing, 86(6), 1260-1277. doi:10.1016/j.sigpro.2005.06.022, 2006. [pdf]

Specifically, adaptation of the pseudo-code from Table 1.

The implementation is hard-coded for 2 output channels.

Parameters:
  • signals (ndarray (nchannels, nsamples)) – The microphone input signals (time domain)
  • w0 (ndarray (nchannels, nsources, nsamples), optional) – Optional initial value for the demixing filters
  • filter_length (int, optional) – The length of the demixing filters, if w0 is provided, this option is ignored
  • block_length (int, optional) – Block length (default 2x filter_length)
  • n_blocks (int, optional) – Number of blocks processed at once (default 8)
  • alpha_on (int, optional) – Online overlap factor (default n_blocks)
  • j_max (int, optional) – Number of offline iterations (default 10)
  • delta_max (float, optional) – Regularization parameter, this sets the maximum value of the regularization term (default 1e-4)
  • sigma2_0 (float, optional) – Regularization parameter, this sets the reference (machine?) noise level in the regularization (default 1e-7)
  • mu (float, optional) – Offline update step size (default 0.001)
  • lambd_a (float, optional) – Online forgetting factor (default 0.2)
  • return_filters (bool) – If true, the function will return the demixing matrix too (default False)
Returns:

Returns an (nsources, nsamples) array. Also returns the demixing matrix (nchannels, nsources, nsamples) if return_filters keyword is True.

Return type:

ndarray