BeamForming node performs sound source separation based on the following methods:
DS : DelayandSum beamforming
WDS : Weighted DelayandSum beamforming
NULL : NULL beamforming
ILSE : Indefinite term and Least Square Estimator based beamforming
LCMV Linearly Constrained Minimum Variance beamforming
GJ : GriffithsJim beamforming
GICA : Geometrically constrained Independent Component Analysis
Node inputs are:
Multichannel complex spectrum of the input acoustic signal,
Direction of localized sound sources,
Direction or multichannel complex spectrum or a correlation matrix of the noise.
Note outputs are a set of complex spectrum of each separated sound.
Corresponding parameter name 
Description 
TF_CONJ_FILENAME 
Transfer function of microphone array 
When to use
Given a sound source direction, the node separates a sound source originating from the direction with a microphone array. As a sound source direction, either a value estimated by sound source localization or a constant value may be used.
Typical connection
Figure 6.49 shows connection examples of the BeamForming . The node has three inputs as follows:
INPUT_FRAMES takes a multichannel complex spectrum containing the mixture of sounds coming from for example MultiFFT ,
INPUT_SOURCES takes the results of sound source localization coming from for example LocalizeMUSIC or ConstantLocalization ,
INPUT_NOISE_SOURCES takes the results of sound source localization for noise sources coming from for example LocalizeMUSIC or ConstantLocalization .
The output is the separated signals.
Input
: Matrix<complex<float> > type. Multichannel complex spectra. Rows correspond to channels, i.e., complex spectra of waveforms input from microphones, and columns correspond to frequency bins.
: Vector<ObjectRef> type. A Vector array of the Source type object in which Source localization results are stored. It is typically connected to the SourceTracker node and SourceIntervalExtender node and its outputs are used.
: Vector<ObjectRef> type. A Vector array of the Source type object where noise source localization results are stored. The type is the same as INPUT_SOURCES.
Output
: Map<int, ObjectRef> type. A pair containing the sound source ID of a separated sound and a 1channel complex spectrum of the separated sound
(Vector<complex<float> > type).
Parameter
: int type. Analysis frame length [samples], which must be equal to the values at a preceding node (e.g. AudioStreamFromMic or the MultiFFT node). The default is 512.
: int type. Shift length of a frame [samples], which must be equal to the values at a preceding node (e.g. AudioStreamFromMic or the MultiFFT node). The default is 160.
: int type. Sampling frequency of the input waveform [Hz]. The default is 16000.
: int type. This parameter is the minimum frequency used when BeamForming processing is performed. Processing is not performed for frequencies below this value and the value of the output spectrum is zero then. The user designates a value in the range from 0 to half of the sampling frequency.
: int type. This parameter is the maximum frequency used when BeamForming processing is performed. Processing is not performed for frequencies above this value and the value of the output spectrum is zero then. LOWER_BOUND_FREQUENCY $<$ UPPER_BOUND_FREQUENCY must be maintained.
: string type. The file name in which the transfer function database of your microphone array is saved. Refer to Section 5.3.1 for the detail of the file format. This valid for all BF_METHOD.
: string type. Select a stepsize calculation method based for a blind source separation. This is valid only when BF_METHOD=GICA. If GICA, the stepsize of ICA (Independent Component Analysis) is determined. Select one of SS_METHOD=FIX, LC_MYU, and ADAPTIVE. If FIX, a fixed designated value specified by SS_MYU is the stepsize. If LC_MYU, SS_MYU=LC_MYU. If ADAPTIVE, the stepsize is adaptively determined.
: float type. Designate the stepsize to be used when updating a separation matrix based on blind source separation. The default value is 0.001. This is valid only when BF_METHOD=GICA. When SS_METHOD=FIX, SS_MYU is the designated value for the stepsize. When SS_METHOD=LC_MYU, this parameter is ignored. When SS_METHOD=ADAPTIVE, SS_MYU is multiplied by the adaptive stepsize, resulting the final stepsize. By setting this value and LC_MYU to zero and passing a separation matrix of delayandsum beamformer type as INITW_FILENAME, processing equivalent to delayandsum beamforming is performed when BF_METHOD=GICA.
: string type. Select a stepsize calculation method for separation based on geometric constraints. This is valid only when BF_METHOD=LCMV,GJ,GICA. This parameter affects the stepsize for the source separation based on geometric constraints (GC). Select one of LC_METHOD=FIX and ADAPTIVE. If FIX, a fixed designated value specified by LC_MYU is the stepsize. If ADAPTIVE, the stepsize is adaptively determined.
: float type. Designate the stepsize to be used when updating a separation matrix based on geometric constraints. The default value is 0.001. This is valid only when BF_METHOD=LCMV,GJ,GICA. When LC_METHOD=FIX, LC_MYU is the designated value for the stepsize. When LC_METHOD=ADAPTIVE, LC_MYU is multiplied by the adaptive stepsize, resulting the final stepsize. By setting this value and SS_MYU to zero and passing a separation matrix of delayandsum beamformer type as INITW_FILENAME, processing equivalent to delayandsum beamforming is performed when BF_METHOD=GICA.
: float type. The stepsize for updating correlation matrices when BF_METHOD=MSNR. The default value is 0.99.
: string type. The function for computing higherorder correlation matrices. Currently, only TANH (hyperbolic tangent) is supported. This is valid only whrn BF_METHOD=GICA.
: float type. The default value is 1.0. Designate the scale factor of a hyperbolic tangent function (tanh) in calculation of the higherorder correlation matrix when BF_METHOD=GICA. A positive real number greater than zero must be designated. The smaller the value is, the less nonlinearity, which makes the calculation close to a normal correlation matrix calculation.
: int type. The default value is 0.0001. The scaling factor of spatially white noise added to the noise correlation matrix when BF_METHOD=ML. See below for the detail.
: string type. Designate the sound source separation method. Currently, this node supports the following separation methods:
DS : DelayandSum beamforming [1]
WDS : Weighted DelayandSum beamforming [1]
NULL : NULL beamforming [1]
ILSE : Iterative Least Squares with Enumeration [2]
LCMV : Linearly Constrained Minimum Variance beamforming [3]
GJ : GriffithsJim beamforming [4]
GICA : Geometrically constrained Independent Component Analysis [7]
: bool type. The default value is false. If true, this node prints the status of separation as a standard output.
Parameter name 
Type 
Default value 
Unit 
Description 
LENGTH 
512 
[pt] 
Analysis frame length. 

ADVANCE 
160 
[pt] 
Shift length of frame. 

SAMPLING_RATE 
16000 
[Hz] 
Sampling frequency. 

LOWER_BOUND_FREQUENCY 
0 
[Hz] 
The minimum value of the frequency used for separation processing 

UPPER_BOUND_FREQUENCY 
8000 
[Hz] 
The maximum value of the frequency used for separation processing 

TF_CONJ_FILENAME 
File name of transfer function database of your microphone array. 

ENABLE_DEBUG 
false 
Enabling debug output 
Parameter name 
Type 
Default value 
Unit 
Description 
LENGTH 
512 
[pt] 
Analysis frame length. 

ADVANCE 
160 
[pt] 
Shift length of frame. 

SAMPLING_RATE 
16000 
[Hz] 
Sampling frequency. 

LOWER_BOUND_FREQUENCY 
0 
[Hz] 
The minimum value of the frequency used for separation processing 

UPPER_BOUND_FREQUENCY 
8000 
[Hz] 
The maximum value of the frequency used for separation processing 

TF_CONJ_FILENAME 
File name of transfer function database of your microphone array. 

LCMV_LC_METHOD 
ADAPTIVE 
A stepsize calculation method based on geometric constraints. Select FIX or ADAPTIVE. FIX indicates fixed values for the stepsize specified by LC_MYU. 

LCMV_LC_MYU 
0.001 
The stepsize when updating a separation matrix based on geometric constraints. If LC_METHOD=FIX, LC_MYU is the value for the fixed stepsize. If LC_METHOD=ADAPTIVE, the stepsize is determined based on an adaptive stepsize method which is multiplied by LC_MYU. 

ENABLE_DEBUG 
false 
Enabling debug output 
Parameter name 
Type 
Default value 
Unit 
Description 
LENGTH 
512 
[pt] 
Analysis frame length. 

ADVANCE 
160 
[pt] 
Shift length of frame. 

SAMPLING_RATE 
16000 
[Hz] 
Sampling frequency. 

LOWER_BOUND_FREQUENCY 
0 
[Hz] 
The minimum value of the frequency used for separation processing 

UPPER_BOUND_FREQUENCY 
8000 
[Hz] 
The maximum value of the frequency used for separation processing 

TF_CONJ_FILENAME 
File name of transfer function database of your microphone array. 

GJ_LC_METHOD 
ADAPTIVE 
A stepsize calculation method based on geometric constraints. Select FIX or ADAPTIVE. FIX indicates fixed values for the stepsize specified by LC_MYU. 

GJ_LC_MYU 
0.001 
The stepsize when updating a separation matrix based on geometric constraints. If LC_METHOD=FIX, LC_MYU is the value for the fixed stepsize. If LC_METHOD=ADAPTIVE, the stepsize is determined based on an adaptive stepsize method which is multiplied by LC_MYU. 

ENABLE_DEBUG 
false 
Enabling debug output 
Parameter name 
Type 
Default value 
Unit 
Description 
LENGTH 
512 
[pt] 
Analysis frame length. 

ADVANCE 
160 
[pt] 
Shift length of frame. 

SAMPLING_RATE 
16000 
[Hz] 
Sampling frequency. 

LOWER_BOUND_FREQUENCY 
0 
[Hz] 
The minimum value of the frequency used for separation processing 

UPPER_BOUND_FREQUENCY 
8000 
[Hz] 
The maximum value of the frequency used for separation processing 

TF_CONJ_FILENAME 
File name of transfer function database of your microphone array. 

GICA_SS_METHOD 
ADAPTIVE 
A stepsize calculation method based on blind source separation. Select FIX, LC_MYU or ADAPTIVE. FIX indicates fixed values for the stepsize specified by SS_MYU. LC_MYU indicates that SS_MYU=LC_MYU. ADAPTIVE adaptively tunes the stepsize. 

GICA_SS_MYU 
0.001 
The stepsize when updating a separation matrix based on blind source separation. If SS_METHOD=FIX, SS_MYU is the value for the fixed stepsize. If SS_METHOD=LC_MYU, this parameter is ignored. If SS_METHOD=ADAPTIVE, the stepsize is determined based on an adaptive stepsize method which is multiplied by SS_MYU. 

GICA_LC_METHOD 
ADAPTIVE 
A stepsize calculation method based on geometric constraints. Select FIX or ADAPTIVE. FIX indicates fixed values for the stepsize specified by LC_MYU. 

GICA_LC_MYU 
0.001 
The stepsize when updating a separation matrix based on geometric constraints. If LC_METHOD=FIX, LC_MYU is the value for the fixed stepsize. If LC_METHOD=ADAPTIVE, the stepsize is determined based on an adaptive stepsize method which is multiplied by LC_MYU. 

SS_SCAL 
1.0 
The scale factor in a higherorder correlation matrix computation. 

ENABLE_DEBUG 
false 
Enabling debug output 
Technical details: Basically, the technical detail of each separation method can be found in the references below.
Bried explanation of sound source separation:
Table 6.41 shows the notation of variables used in sound source separation problems. Since the source separation is performed framebyframe in the frequency domain, all the variable is computed in a complex field. Also, the separation is performed for all $K$ frequency bins ($1 \leq k \leq K$). Here, we omit $k$ from the notation. Let $N$, $M$, and $f$ denote the number of sound sources and the number of microphones, and the frame index, respectively.
Variables 
Description 
$\boldsymbol {S}(f) = \left[S_1(f), \dots , S_ N(f)\right]^ T$ 
Complex spectrum of target sound sources at the $f$th frame 
$\boldsymbol {X}(f) = \left[X_1(f), \dots , X_ M(f)\right]^ T$ 
Complex spectrum of a microphone observation at the $f$th frame, which corresponds to INPUT_FRAMES. 
$\boldsymbol {N}(f) = \left[N_1(f), \dots , N_ M(f)\right]^ T$ 
Complex spectrum of added noise 
$\boldsymbol {H} = \left[ \boldsymbol {H}_1, \dots , \boldsymbol {H}_ N \right] \in \mathbb {C}^{M \times N}$ 
Transfer function matrix from the $n$th sound source ($1 \leq n \leq N$) to the $m$th microphone ($1 \leq m \leq M$) 
$\boldsymbol {K}(f) \in \mathbb {C}^{M \times M}$ 
Correlation matrix of known noise 
$\boldsymbol {W}(f) = \left[ \boldsymbol {W}_1, \dots , \boldsymbol {W}_ M \right] \in \mathbb {C}^{N \times M}$ 
Separation matrix at the $f$th frame 
$\boldsymbol {Y}(f) = \left[Y_1(f), \dots , Y_ N(f)\right]^ T$ 
Complex spectrum of separated signals 
We use the following linear model for the signal processing:
$\displaystyle \boldsymbol {X}(f) $  $\displaystyle = $  $\displaystyle \boldsymbol {H}\boldsymbol {S}(f) + \boldsymbol {N}(f)~ .\label{eq:beamforming_ observation} $  (28) 
The purpose of the separation is to estimate $\boldsymbol {W}(f)$ based on the following equation:
$\displaystyle \boldsymbol {Y}(f) $  $\displaystyle = $  $\displaystyle \boldsymbol {W}(f)\boldsymbol {X}(f) \label{eq:Beamformingseparation} $  (29) 
so that $\boldsymbol {Y}(f)$ is getting closer to $\boldsymbol {S}(f)$. After separation, the estimated $\boldsymbol {W}(f)$ can be saved by setting EXPORT_W=true and put a certain name in EXPORT_W_FILENAME.
TF_CONJ_FILENAME specifies the transfer function matrix $\boldsymbol {H}$ which is premeasured or precalculated. Hereinafter, we denote this premeasured transfer function as $\hat{\boldsymbol {H}}$ to distinguish from $\boldsymbol {H}$.
Separation by BF_METHOD=DS,WDS,NULL,ILSE: $\boldsymbol {W}(f)$ is directly determined using $\hat{\boldsymbol {H}}$ and corresponding directions of target and noise sources coming from INPUT_SOURCES and INPUT_NOISE_SOURCES.
Separation by BF_METHOD=LCMV,GJ: The cont function $J_{\textrm{L}}(\boldsymbol {W}(f))$ for updating the separation matrix is defined by the directions of target and noise sources coming from INPUT_SOURCES and INPUT_NOISE_SOURCES. The equation for updating the separation matrix is described simply as follows:
$\displaystyle \boldsymbol {W}(f+1) $  $\displaystyle = $  $\displaystyle \boldsymbol {W}(f) + \mu \nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{L}}(\boldsymbol {W})(f)~ ,\label{eq:LCMV_ GJ_ J} $  (30) 
where $\nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{L}}(\boldsymbol {W}) = \frac{\partial \boldsymbol {J}_{\textrm{L}}(\boldsymbol {W})}{\partial \boldsymbol {W}}$. LC_MYU specifies the value of $\mu $. If LC_METHOD=ADAPTIVE, this node computes the adaptive stepsize based on the following equation.
$\displaystyle \mu $  $\displaystyle = $  $\displaystyle \left. \frac{\boldsymbol {J}_{\textrm{L}}(\boldsymbol {W})}{\left \nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{L}}(\boldsymbol {W})\right^2} \right_{\boldsymbol {W} = \boldsymbol {W}(f)}\label{eq:LCMV_ GJ_ mu} $  (31) 
BF_METHOD=GICA: The cont function $J_{\textrm{G}}(\boldsymbol {W}(f))$ for updating the separation matrix is defined by the directions of target and noise sources coming from INPUT_SOURCES and INPUT_NOISE_SOURCES.
$\displaystyle J_{\textrm{G}}(\boldsymbol {W}(f)) $  $\displaystyle = $  $\displaystyle J_{\textrm{SS}}(\boldsymbol {W}(f)) + J_{\textrm{LC}}(\boldsymbol {W}(f))~ , \label{eq:GHDSS_ J} $  (32) 
where $J_{\textrm{SS}}(\boldsymbol {W}(f))$ is the cost function for the blind source separation, $J_{\textrm{LC}}(\boldsymbol {W}(f))$ is the cost function for the source separation based on geometric constraints. The equation for updating the separation matrix is described simply as follows:
$\displaystyle \boldsymbol {W}(f+1) $  $\displaystyle = $  $\displaystyle \boldsymbol {W}(f) + \mu _{\textrm{SS}} \nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{SS}}(\boldsymbol {W})(f) + \mu _{\textrm{LC}} \nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{LC}}(\boldsymbol {W})(f)~ , \label{eq:GHDSS_ W} $  (33) 
where $\nabla _{\boldsymbol {W}}$ means the partial derivative in respect of $\boldsymbol {W}$ same as Eq. (). The $\mu _{\textrm{SS}}$ and $\mu _{\textrm{LC}}$ in the equation can be specified by SS_MYU and LC_MYU, respectively. If SS_METHOD=ADAPTIVE, $\mu _{\textrm{SS}}$ is adaptively determined by
$\displaystyle \mu _{\textrm{SS}} $  $\displaystyle = $  $\displaystyle \left. \frac{\boldsymbol {J}_{\textrm{SS}}(\boldsymbol {W})}{\left \nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{SS}}(\boldsymbol {W})\right^2} \right_{\boldsymbol {W} = \boldsymbol {W}(f)}~ .\label{eq:GHDSS_ SS_ mu} $  (34) 
If LC_METHOD=ADAPTIVE, $\mu _{\textrm{LC}}$ is adaptively determined by
$\displaystyle \mu _{\textrm{LC}} $  $\displaystyle = $  $\displaystyle \left. \frac{\boldsymbol {J}_{\textrm{LC}}(\boldsymbol {W})}{\left \nabla _{\boldsymbol {W}}\boldsymbol {J}_{\textrm{LC}}(\boldsymbol {W})\right^2} \right_{\boldsymbol {W} = \boldsymbol {W}(f)}~ .\label{eq:GHDSS_ LC_ mu} $  (35) 
Trouble shooting: Basically, follow the trouble shooting of the GHDSS node.
H. Krim and M. Viberg, ’Two decades of array signal processing research: the parametric approach’, in IEEE Signal Processing Magazine, vol. 13, no. 4, pp. 67–94, 1996. D. H. Johnson and D. E. Dudgeon, Array Signal Processing: Concepts and Techniques, PrenticeHall, 1993.
S. Talwar, et al.: ’Blind separation of synchronous cochannel digital signals using an antenna array. I. Algorithms’, IEEE Transactions on Signal Processing, vol. 44 , no. 5, pp. 1184  1197.
O. L. FrostIII, ’An Algorithm for Lineary Constrained Adaptive array processing’, Proc. of the IEEE, Vol. 60, No.8, 1972
L. Griffiths and C. Jim, ’An alternative approach to linearly constrained adaptive beamforming’, IEEE trans. on ant. and propag. Vol. AP30, No.1, 1982
H. Nakajima, et al.: ’Blind Source Separation With ParameterFree Adaptive StepSize Method for Robot Audition’, IEEE Trans. ASL Vol.18, No.6, pp.14761485, 2010.