Skip to content

Configuration

François Grondin edited this page Dec 21, 2017 · 71 revisions

Table of content

Content

Interfaces

Parameters

Raw

This module defines the format and interface that will provide the RAW data from the microphones. Here are the elements to define:

Parameter Type Description
fS uint Sample rate in samples/sec
hopSize uint Number of samples acquired on each channel at each frame
nBits uint Number of bits per sample (must be either 8, 16, 24 or 32)
nChannels uint Number of audio channels

Here is an example with a sample rate of 44100 samples/sec, a hop size of 512 samples, 16 bits signed samples and 8 channels:

raw: 
{

    fS = 44100;
    hopSize = 512;
    nBits = 16;
    nChannels = 8; 

    interface: {
        type = "file";
        path = "mics.raw";      
    };

};

Mapping

Mapping provides a way to select the microphones which are to be used by ODAS. This allows you to ignore some microphones if the RAW signal provides channels you would like to ignore.

Parameter Type Description
map uint List of the channels used, with index starting at 1

Here is an example where the RAW signals contain 8 channels, and you wish to use only channels 1,2,5,6 and 7. Once mapping is done, these channels are now referred to as microphones 1, 2, 3, 4 and 5.

mapping:
{
    map: (1,2,5,6,7);
};

General

This module defines some general parameters that are used by most modules. Here are the elements to define:

Parameter Type Description
epsilon float You should leave this parameter at 1E-20
size.hopSize uint You should leave this parameter at 128
size.frameSize uint You should leave this parameter at 256
samplerate.mu uint You should leave this parameter at 16000
samplerate.sigma2 float You should leave this parameter at 0.01
mics.[m].mu.[0] float Position mean in x of microphone m
mics.[m].mu.[1] float Position mean in y of microphone m
mics.[m].mu.[2] float Position mean in z of microphone m
mics.[m].sigma2.[0] float Position variance in xx of microphone m
mics.[m].sigma2.[1] float Position variance in xy of microphone m
mics.[m].sigma2.[2] float Position variance in xz of microphone m
mics.[m].sigma2.[3] float Position variance in yx of microphone m
mics.[m].sigma2.[4] float Position variance in yy of microphone m
mics.[m].sigma2.[5] float Position variance in yz of microphone m
mics.[m].sigma2.[6] float Position variance in zx of microphone m
mics.[m].sigma2.[7] float Position variance in zy of microphone m
mics.[m].sigma2.[8] float Position variance in zz of microphone m
mics.[m].direction.[0] float Direction in x of microphone m
mics.[m].direction.[1] float Direction in y of microphone m
mics.[m].direction.[2] float Direction in z of microphone m
mics.[m].angle.[0] float Maximum angle at which gain is 1 for microphone m
mics.[m].angle.[1] float Minimum angle at which gain is 0 for microphone m
spatialfilter.direction.[0] float Direction in x for space search
spatialfilter.direction.[1] float Direction in y for space search
spatialfilter.direction.[2] float Direction in z for space search
spatialfilter.angle.[0] float Maximum angle at which gain is 1 for space search
spatialfilter.angle.[1] float Minimum angle at which gain is 0 for space search
nThetas uint You should leave this parameter at 181
gainMin float You should leave this parameter at 0.25

Here is an example with a 16-microphone array with a cubic shape. Microphone directivity is used as the array is closed, and the microphone variance is diagonal and non-zero for axes that span the surface plane for each microphone:

general:
{
    
    epsilon = 1E-20;

    size: 
    {
        hopSize = 128;
        frameSize = 256;
    };
    
    samplerate:
    {
        mu = 16000;
        sigma2 = 0.01;
    };

    speedofsound:
    {
        mu = 343.0;
        sigma2 = 25.0;
    };

    mics = (
        
        # Microphone 1
        { 
            mu = ( +0.1250, -0.0725, +0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 2
        { 
            mu = ( +0.1250, +0.0725, +0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 3
        { 
            mu = ( +0.1250, -0.0725, -0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 4
        { 
            mu = ( +0.1250, +0.0725, -0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 5
        { 
            mu = ( +0.0725, +0.1250, +0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, +1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 6
        { 
            mu = ( -0.0725, +0.1250, +0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, +1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 7
        { 
            mu = ( +0.0725, +0.1250, -0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, +1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 8
        { 
            mu = ( -0.0725, +0.1250, -0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, +1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 9
        { 
            mu = ( -0.1250, +0.0725, +0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( -1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 10
        { 
            mu = ( -0.1250, -0.0725, +0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( -1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 11
        { 
            mu = ( -0.1250, +0.0725, -0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( -1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },        

        # Microphone 12
        { 
            mu = ( -0.1250, -0.0725, -0.0725 ); 
            sigma2 = ( 0.0, 0.0, 0.0, 0.0, +1E-6, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( -1.000, +0.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },         

        # Microphone 13
        { 
            mu = ( -0.0725, -0.1250, +0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, -1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },  

        # Microphone 14
        { 
            mu = ( +0.0725, -0.1250, +0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, -1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },       

        # Microphone 15
        { 
            mu = ( -0.0725, -0.1250, -0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, -1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        },  

        # Microphone 16
        { 
            mu = ( +0.0725, -0.1250, -0.0725 ); 
            sigma2 = ( +1E-6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +1E-6 );
            direction = ( +0.000, -1.000, +0.000 );
            angle = ( 80.0, 100.0 );
        }  
        
    );

    # Spatial filter to include only a range of direction if required
    # (may be useful to remove false detections from the floor)
    spatialfilter: {

        direction = ( +0.000, +0.000, +1.000 );
        angle = (80.0, 90.0);

    };    

    nThetas = 181;
    gainMin = 0.25;

};

Stationnary Noise Estimation

This module stands for the stationnary noise estimation by Minima Control Recursive Averaging (MCRA):

Parameter Type Description
b uint You should leave this parameter at 3
alphaS float You should leave this parameter at 0.1
L uint You should leave this parameter at 150
delta float You should leave this parameter at 3.0
alphaD float You should leave this parameter at 0.1

Here is an example of what the Stationnary noise estimation module should look like in configuration:

# Stationnary noise estimation

sne:
{
    
    b = 3;
    alphaS = 0.1;
    L = 150;
    delta = 3.0;
    alphaD = 0.1;

};

Sound Source Localization

This module generates sources with potential directions of arrival for sound:

Parameter Type Description
nPots uint You should leave this parameter at 4
nMatches uint You should leave this parameter at 10
probMin float You should leave this parameter at 0.3
nRefinedLevels uint You should leave this parameter at 1
interpRate uint You should leave this parameter at 1
scans.[0].level uint You should leave this parameter at 2
scans.[0].delta int You should leave this parameter at -1
scans.[1].level uint You should leave this parameter at 4
scans.[2].level int You should leave this parameter at -1
# Sound Source Localization

ssl:
{

    nPots = 4;
    nMatches = 10;
    probMin = 0.3;
    nRefinedLevels = 1;
    interpRate = 1;

    # Number of scans: level is the resolution of the sphere
    # and delta is the size of the maximum sliding window
    # (delta = -1 means the size is automatically computed)
    scans = (
        { level = 2; delta = -1; },
        { level = 4; delta = -1; }
    );

    # Output to export potential sources
    potential: {

        format = "json";

        interface: {
            type = "terminal";
        };

    };

};

Sound Source Tracking

Sound Source Separation

Sound Source Classification

Clone this wiki locally