Main Content

Acoustic Beamforming Using Microphone Arrays

This example shows how to beamform signals received by an array of microphones to extract a desired speech signal in a noisy environment. This Simulink® example is based on the MATLAB® exampleAcoustic Beamforming Using a Microphone Arrayfor System objects.

Structure of the Model

The model simulates the reception of three audio signals from different directions on a 10-element uniformly linear microphone array (ULA). After the addition of thermal noise at the receiver, beamforming is applied and the result played on a sound device.

该模型考虑到sts of two stages: simulate the received audio signals and beamform the result. The blocks that corresponds to each stage of the model are:

Received audio simulation

  • Audio Sources- Subsystem reads the audio files and specifies their direction.

  • From Multimedia File- Part of theAudio Sourcessubsystem, each block reads audio from a different wav file, 1000 samples at a time. Three blocks labeledsource1,source2andsource3correspond to the three sources.

  • Concatenate- Concatenates the output of the threeFrom Multimedia Fileblocks into a three column matrix, one column per audio signal.

  • source angles-Constantblock specifies the incident directions of the audio sources to theWideband Rx Arrayblock. The block outputs a 2x3 matrix. The two rows correspond to the azimuth and elevation angles in degrees of each source, the three columns correspond to the three audio signals.

  • Wideband Rx Array——模拟音频信号接收齿龈。The first input port to this block is a 1000x3 matrix. Each column corresponds to the received samples of each audio signal. The second input port (Ang) specifies the incident direction of the pulses. The first row of Ang specifies the azimuth angle in degree for each signal and the second row specifies the elevation angle in degree for each signal. The second row is optional. If they are not specified, the elevation angles are assumed to be 0 degrees. The output of this block is a 1000x10 matrix. Each column corresponds to the audio recorded at each element of the microphone array. The microphone array's configuration is specified in theSensor Arraytab of the block dialog panel. This configuration should match the configuration specified on the block dialog panel of theFrost Beamformer. See theConventional and Adaptive BeamformersSimulink example to learn how to use sensor array configuration variables for conveniently sharing the same configuration across several blocks.

  • Receiver Preamp- Adds white noise to the received signals.

Beamforming

  • Select beamform angle-Constantblock controls theMulti-Port Switchoutput and specifies which of the three source directions in which to beamform.

  • Frost Beamformer- Performs Frost beamforming on the matrix passed via the input portXalong the direction specified via the input portAng.

  • 2-D Selector- Selects the received signal at one of the microphone elements.

  • Manual switch- Switches between the non-beamformed and the beamformed audio stream sent to the audio device.

Exploring the Example

Click on theManual switchwhile running the simulation to toggle between playing the non-beamformed audio stream and the beamformed stream. Setting a value of 1, 2, or 3 in theSelect beamform angleblock while running the simulation will beamform along one of the three audio signals direction. You will notice that the non-beamformed audio sounds garbled while you can clearly hear any one of the selected audio streams after beamforming.