Skip to content

This repository provides the MATLAB code for a certain type of microphone spotformer. A microphone spotformer is similar to a beamformer but considers regions-of-interest instead of directions.

License

Notifications You must be signed in to change notification settings

D1mme/microphone_spotformer

Repository files navigation

Microphone spotformer

This code is the matlab implementation of a microphone spotformer. A microphone spotformer is basically a beamformer that attempts to attenuate or amplify sounds from certain regions-of-interest.

As input, the spotformer takes the target locations, the interfer locations and the microphone locations. Some additional user parameters are required as well, such as the size of the region. The inputs are used to construct a spatial correlation or covariance matrix. These matrices are used to minimise the energy from the interferer regions with respect to that from the target regions.

A few examples are provided.

  • Example 1: An anechoic scenario with a single interferer and a single target source. The weights are precomputed. This is handy when needing to reuse the same weights for multiple sound excerpts.
  • Example 2: A slightly reverberant (T60 $\approx$ 120 ms) scenario with a single interferer and a single target source. The weights are computed when using the spotformer.
  • Example 3: A more reverberant scenario (T60 $\approx$ 300 ms) with one interfer and one target source.
  • Example 4: A slightly reverberant scenario (T60 $\approx$ 120 ms) with four interferers and two target sources.

All examples use eight microphones and have white Gaussian noise at the interferers. Note that other types of playback signal and different numbers of microphones also work.

The covariance matrices are computed through spatial integration. For this, a numerical integration method is needed. I used the Fast Clenshaw-Curtis quadrature function by G. von Winckel, published under a permissive license. Note that this is a different integration method than that used in the original paper ([1]). I did some small experiments (nothinh on wbhich you can draw a definitive conclusion!) and it appeard that the Clenshaw-Curtis quadrature gave more accurate results than the Gauss-Hermite quadrature method used in [1] (though it should be noted that they integrate over a different range).

Licensing

The examples make use of the room-impulse response generator from E. Habets (MIT license). You might need to compile this for your system. The sound excerpt is taken from the movie 'Sprite Fight' by Blender Studio (Creative Commons Attribution 1.0 License).

Sources

The spotformer implemented in this repository is my interpretation of the following paper:

[1] J. Martinez, N. Gaubitch and W. B. Kleijn, "A robust region-based near-field beamformer," 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) , South Brisbane, QLD, Australia, 2015, pp. 2494-2498, doi: 10.1109/ICASSP.2015.7178420.

About

This repository provides the MATLAB code for a certain type of microphone spotformer. A microphone spotformer is similar to a beamformer but considers regions-of-interest instead of directions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published