Source code for speechbrain.lobes.beamform_multimic

"""Beamformer for multi-mic processing.

Authors
 * Nauman Dawalatabad
"""

import torch

from speechbrain.processing.features import ISTFT, STFT
from speechbrain.processing.multi_mic import Covariance, DelaySum, GccPhat


[docs] class DelaySum_Beamformer(torch.nn.Module): """Generate beamformed signal from multi-mic data using DelaySum beamforming. Arguments --------- sampling_rate : int (default: 16000) Sampling rate of audio signals. """ def __init__(self, sampling_rate=16000): super().__init__() self.fs = sampling_rate self.stft = STFT(sample_rate=self.fs) self.cov = Covariance() self.gccphat = GccPhat() self.delaysum = DelaySum() self.istft = ISTFT(sample_rate=self.fs)
[docs] def forward(self, mics_signals): """Returns beamformed signal using multi-mic data. Arguments --------- mics_signals : torch.Tensor Set of audio signals to be transformed. Returns ------- sig : torch.Tensor """ with torch.no_grad(): Xs = self.stft(mics_signals) XXs = self.cov(Xs) tdoas = self.gccphat(XXs) Ys_ds = self.delaysum(Xs, tdoas) sig = self.istft(Ys_ds) return sig