-
Notifications
You must be signed in to change notification settings - Fork 254
Configuration
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 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);
};
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;
};
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;
};
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";
};
};
};
Provided by IntRoLab, Université de Sherbrooke, Québec, Canada.