Giter Club home page Giter Club logo

odas's Introduction

ODAS

ODAS stands for Open embeddeD Audition System. This is a library dedicated to perform sound source localization, tracking, separation and post-filtering. ODAS is coded entirely in C, for more portability, and is optimized to run easily on low-cost embedded hardware. ODAS is free and open source.

The ODAS wiki describes how to build and run the software.

ROS: Please visite the odas_ros project.

ODAS Demonstration

License

ODAS is provided with the MIT license.

Graphical User Interface (GUI) for Data Visualization

Please have a look at the odas_web project. GUI

Open Source Hardware from IntRoLab

  • 8SoundsUSB, 8 inputs, USB powered, configurable microphone array.
  • 16SoundsUSB, 16 inputs, USB powered, configurable microphone array.

Papers

You can find more information about the methods implemented in ODAS in these papers:

odas's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

odas's Issues

Any difference between odas and manyears?

Hi Francois,
I have used the manyears project and it works well, and the papers you provided helps a lot. As for the odas project, is there any difference between the odas and manyears? If so, would provide some papers for reference? Thanks.

Error while using matrix_voice.cfg

I have followed your wiki page and encountered the following error.
How do I solve it?

command below:
pi@raspberrypi:~/git/odas/bin $ ./odascore -c ../config/matrix_voice.cfg

gives following error:
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM 8channel_voice
Source hops: Cannot open audio device 8channel_voice: No such file or directory

Beam shape

Is it possible to change the properties of the pattern or shape of the ‘beam’ when using static targets?

Many thanks

using odas with the respeaker 4 mic array

I'm trying to get odas running on a raspberry pi with my respeaker 4 mic array. I think the mic array is set up correctly, since I can record audio from all microphones using arecord.

I have odas_web studio 0.1 running locally, and I'm trying to run odascore with the default respeaker config file. I verified that the card number and device number match what I get from "arecord -l".

When I run it, I get the error:

Source hops: Cannot set sample format: Invalid argument

The odas_web studio does show that there are two client connections being formed (on ports 50498 and 41114), but they close immediately.

What do I have to do to get this running?

Spatial Filter configuration

Could you give some guidance on how to correctly use the spatial filter to block false detections?

Many thanks

Tao

RAW audio recording

In a previous version of ODAS there was a possibility to record raw audio coming in from the sound card. Could you restore that feature?

Thanks!

Filtering based on audio frequency.

Hello,

I am planning to add a filter in order to analyze audio signals within a certain range; e.g., over XXXhz and less than XXXhz. Where would be the best place to modify to add such feature?

Thanks,

Peter

Increase the silence

How can you increase the period of silence before a source stops being tracked?

Cheers

increase the gain

is it possible to increase the audio gain in a given search space using odas, before the audio gets processed?

many thanks

tao

Various configuration questions

I realize you're working on a tutorial for configuring odas, but I'm attempting to understand it in the meantime. I'm wondering what what the separated and postfiltered streams respresent. From listening to them, it sounds like the separated streams should include a single channel for each tracked source, and the postfiltered stream might contain the noise corresponding to each source - is that an apt description?

I'm noticing that there's often significant overlap between two of the channels - that they're tracking what seems to be the same source. Would that be resolved by tuning the settings via something like ODAS Studio? I built a configuration for the PS3 Eye microphone array (like @Efreeto was looking to do in introlab/manyears#2; happy to open a pull-request to add the configuration 😄), so it's likely not well-tuned.

What's the relationship between hopSize and frameSize? The example general configuration on the wiki sets hopSize to 128, and frameSize to 256; I'd assumed hopSize was the chunk size for audio processing, and frameSize was the number of samples in a frame/chunk, but that'd be backwards for 16-bit audio.

Potential Sorces Energy Range

Is it possible to restrict potential sources by their energy within odas? There is a slider with odas_web but can this be set in the odas cfg?

many thanks

Sound Source Localization support for "T" microphone array

Hello,
I took one picture to show my microphone array:
the_construction

I want to use 'Sound Source Localization' to estimate elevation and azimut on my project.

We have 8 microphone. You can think of it as two linear microphone array, each array have 4 microphones.

By 1,2,3,4 I got azimut. (relative to xoy plane)

By 5,6,7,8 I got elevation. (relative to xoz plane)

With azimut and elevation, I can control the camera to rotate to the sound location.

Can you tell my how to use odas to make ssl work.

thank you.

About "odascore binary"

Apologies for asking something like this, but in this line "For local execution, browse the odascore binary and the configuration file in the ODAS Control pane.", where can I locate the "odascore binary file?

odascore exits spontaneously (RPi B+ w/Matrix Voice)

First, thanks for such a great tool! This is something I've been searching for and am excited to start using it.

I'm using it with an RPi B+ and the Matrix Voice. I think I've got it all setup ok, but now after running for 30 seconds to a minute or so, it exits. During the time it is running, it connects to ODAS Studio and I can see the audio activity, so I can confirm the mics and directional locating are working.

But then it exits with code 0. Here's the output:

~/odas $ ./bin/odascore -c ./config/matrix_voice.cfg -v
+--------------------------------------------+
|    ODAS (Open embeddeD Audition System)    |
+--------------------------------------------+
| Author:  Francois Grondin                  |
| Email:   [email protected]  |
| Website: introlab.3it.usherbrooke.ca       |
| Version: 1.0                               |
+--------------------------------------------+
| + Initializing configurations...... [Done] |
| + Initializing objects............. [Done] |
| + Launch threads................... [Done] |
| + Threads running.................. [Done] |
| + Free memory...................... [Done] |
+--------------------------------------------+

It pauses at Threads running.................. for a little while while ODAS Studio shows it is connection and operational.

As a quick test I added for(;;) after that step in client.c, and while this kept it from exiting, it still only connected to ODAS Studio the same amount of time, so it seems the threads are exiting on their own. I don't know enough about the architecture of the application yet to dig further, but I thought I would start here to see if there's something I'm missing.

Thanks!

Using MATRIX Voice ... works amazing ... CPU usage over 100% :(

My setup is a MATRIX Voice board and a Raspberry Pi 3 model B. I am using the config file /master/config/matrix_voice.cfg as it is.

In my tests using threads, I am always getting CPU usage > 100%. I read in other issues that this is not normal.

pi@odas-test:~/odas/bin $ ./odascore -vc ../config/matrix_voice.cfg
+--------------------------------------------+
|    ODAS (Open embeddeD Audition System)    |
+--------------------------------------------+
| Author:  Francois Grondin                  |
| Email:   [email protected]  |
| Website: introlab.3it.usherbrooke.ca       |
| Version: 1.0                               |
+--------------------------------------------+
| + Initializing configurations...... [Done] |
| + Initializing objects............. [Done] |
| + Launch threads................... [Done] |
| + Threads running.................. Sink hops: Could not send message.
pi@odas-test:~/odas/bin $ date
Fri May 11 00:04:45 UTC 2018
pi@odas-test:~/odas/bin $ ./odascore -vsc ../config/matrix_voice.cfg
+--------------------------------------------+
|    ODAS (Open embeddeD Audition System)    |
+--------------------------------------------+
| Author:  Francois Grondin                  |
| Email:   [email protected]  |
| Website: introlab.3it.usherbrooke.ca       |
| Version: 1.0                               |
+--------------------------------------------+
| + Initializing configurations...... [Done] |
| + Initializing objects............. [Done] |
| + Processing....................... [Done] |
| + Free memory...................... [Done] |
+--------------------------------------------+
|              Profiler summary              |
+--------------------------------------------+
| + Raw                                      |
|    - Source.......... 000.298 (003.30%)    |
|    - Connector....... 000.011 (000.12%)    |
| + Mapping                                  |
|    - Module.......... 000.010 (000.11%)    |
|    - Connector....... 000.007 (000.08%)    |
| + Resample                                 |
|    - Module.......... 000.786 (008.70%)    |
|    - Connector....... 000.009 (000.10%)    |
| + STFT                                     |
|    - Module.......... 000.110 (001.21%)    |
|    - Connector....... 000.020 (000.22%)    |
| + Noise                                    |
|    - Module.......... 000.145 (001.61%)    |
|    - Connector....... 000.008 (000.09%)    |
| + SSL                                      |
|    - Module.......... 003.328 (036.84%)    |
|    - Connector....... 000.005 (000.05%)    |
|    - Sink............ 000.189 (002.09%)    |
| + Target                                   |
|    - Injector........ 000.009 (000.10%)    |
|    - Connector....... 000.004 (000.05%)    |
| + SST                                      |
|    - Module.......... 000.090 (001.00%)    |
|    - Connector....... 000.008 (000.09%)    |
|    - Sink............ 000.084 (000.93%)    |
| + SSS                                      |
|    - Module.......... 000.470 (005.20%)    |
|    - Connector....... 000.011 (000.00%)    |
| + ISTFT                                    |
|    - Module.......... 000.182 (002.02%)    |
|    - Connector....... 000.010 (000.12%)    |
| + Resample                                 |
|    - Module.......... 000.077 (000.85%)    |
|    - Connector....... 000.008 (000.09%)    |
| + Volume                                   |
|    - Module.......... 000.015 (000.17%)    |
|    - Connector....... 000.007 (000.08%)    |
|    - Sink............ 000.150 (001.66%)    |
| + Classify                                 |
|    - Module.......... 002.206 (024.42%)    |
|    - Connector....... 000.004 (000.05%)    |
|    - Sink............ 000.004 (000.04%)    |
+--------------------------------------------+
| + TOTAL.............. 008.257 (091.39%)    |
|    - Module.......... 007.418 (082.11%)    |
|    - Connector....... 000.113 (001.25%)    |
|    - Source.......... 000.298 (003.30%)    |
|    - Sink............ 000.427 (004.73%)    |
+--------------------------------------------+
pi@odas-test:~/odas/bin $ date
Fri May 11 00:05:01 UTC 2018
pi@odas-test:~/odas/bin $ 

Pasted the outputs of both option, using threads and not using it. When using the single process version the odascore stops in less than 20 sec.

@francoisferland, Any idea what could be happening here?

Is there any other output that I can share that gives you more info?
Thanks.
-Yoel

PD: The processing/tracking is amazing ... congrats on that!

Odas run in MT8516 platform

Now I porting odas in MT8516 platform.
MT8516:4 Cores 64 bit ARM®Cortex-A35™,1.3GHz
And there are four mics in the platform.
I found that processing 7.6s 16khz 4 channel audio data will cost 9.7s.
Is there any method to reduce the process time.
Can I modify the scan level ?
Thank you for your help.
+--------------------------------------------+
| Profiler summary |
+--------------------------------------------+
| + Raw |
| - Source.......... 000.232 (001.07%) |
| - Connector....... 000.007 (000.03%) |
| + Mapping |
| - Module.......... 000.009 (000.04%) |
| - Connector....... 000.007 (000.03%) |
| + Resample |
| - Module.......... 000.000 (000.00%) |
| - Connector....... 000.000 (000.00%) |
| + STFT |
| - Module.......... 000.374 (001.72%) |
| - Connector....... 000.016 (000.07%) |
| + Noise |
| - Module.......... 000.917 (004.23%) |
| - Connector....... 000.009 (000.04%) |
| + SSL |
| - Module.......... 006.453 (029.73%) |
| - Connector....... 000.007 (000.03%) |
| - Sink............ 000.005 (000.02%) |
| + Target |
| - Injector........ 000.006 (000.03%) |
| - Connector....... 000.006 (000.03%) |
| + SST |
| - Module.......... 000.071 (000.33%) |
| - Connector....... 000.011 (000.05%) |
| - Sink............ 000.005 (000.02%) |
| + SSS |
| - Module.......... 000.465 (002.14%) |
| - Connector....... 000.017 (000.00%) |
| + ISTFT |
| - Module.......... 001.103 (005.08%) |
| - Connector....... 000.016 (000.08%) |
| + Resample |
| - Module.......... 000.000 (000.00%) |
| - Connector....... 000.000 (000.00%) |
| + Volume |
| - Module.......... 000.000 (000.00%) |
| - Connector....... 000.000 (000.00%) |
| - Sink............ 000.000 (000.00%) |
| + Classify |
| - Module.......... 000.000 (000.00%) |
| - Connector....... 000.000 (000.00%) |
| - Sink............ 000.000 (000.00%) |
+--------------------------------------------+
| + TOTAL.............. 009.731 (044.84%) |
| - Module.......... 009.393 (043.28%) |
| - Connector....... 000.096 (000.44%) |
| - Source.......... 000.232 (001.07%) |
| - Sink............ 000.010 (000.05%) |
+--------------------------------------------+

beamforming range advice

Can any settings be adjusted to increase the ‘range’ of the source detection? I’m looking at using odas for long range wildlife sound capture, using a static source tracking with a vector perpendicular to the array.

Many thanks

Discretization

Which settings can be adjusted to increase Discretization?

many thanks

Does ODAS work with a Delta 1010LT 8-channel audio card?

Thanks for your very interesting project. I know you are working on an installation tutorial, and I'll be very interested to see that. In the mean time, I am trying to get ODAS to work with an M-Audio Delta 1010LT 8-channel input card. Looking back at manyears, that hardware was seemingly supported, but I was wondering if that hardware will work with ODAS. If so I'd be happy to work on sample configurations for this card.

Thanks again,

Scott

Is there any restrictions on the size of microphone array?

Hi, thank you for providing such a handy tool!

One week ago, i used odas for sound source localization and it performed very well!
But this week i reduced the size of the microphone arrays, and then the calculation results showed a relatively large error.

The following is the geometry of the microphone array:

image

I don't know if it's the microphone size or my config that cause this problem

Here is my config file:

# Configuration file for XMOS circular sound card

version = "2.1";

# Raw

raw: 
{

    fS = 16000;
    hopSize = 1024;
    nBits = 16;
    nChannels = 8; 

    # Input with raw signal from microphones
    interface: {
        type = "file";
        path = "0_8chan_16bits.raw";
    }

}

# Mapping

mapping:
{

    map: (1, 2, 3, 4, 5, 6, 7, 8);

}

# General

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.0153, -0.0370, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 2
        { 
            mu = ( -0.0153, -0.0370, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 3
        { 
            mu = ( -0.0370, -0.0153, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 4
        { 
            mu = ( -0.0370, +0.0153, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );
        },

        # Microphone 5
        { 
            mu = ( -0.0153, +0.0370, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );        
        },

        # Microphone 6
        { 
            mu = ( +0.0153, +0.0370, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );        
        },

        # Microphone 7
        { 
            mu = ( +0.0370, +0.0153, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.000 );
            angle = ( 80.0, 100.0 );
        },
        
        # Microphone 8
        { 
            mu = ( +0.0370, -0.0153, +0.000 ); 
            sigma2 = ( +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000, +0.000 );
            direction = ( +0.000, +0.000, +1.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, 100.0);

    };    

    nThetas = 181;
    gainMin = 0.25;

};

# Stationnary noise estimation

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

}

# Sound Source Localization

ssl:
{

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

    # 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 = "file";
            path = "0_localization.txt";
        };

    };

};

# Sound Source Tracking

sst:
{  

    # Mode is either "kalman" or "particle"

    mode = "kalman";

    # Add is either "static" or "dynamic"

    add = "dynamic";    

    # Parameters used by both the Kalman and particle filter

    active = (
        { weight = 1.0; mu = 0.4; sigma2 = 0.0025 }
    );

    inactive = (
        { weight = 1.0; mu = 0.25; sigma2 = 0.0025 }
    );

    sigmaR2_prob = 0.0025;
    sigmaR2_active = 0.0225;
    sigmaR2_target = 0.0025;
    Pfalse = 0.1;
    Pnew = 0.1;
    Ptrack = 0.8;

    theta_new = 0.9;
    N_prob = 5;
    theta_prob = 0.8;
    N_inactive = ( 250, 250, 250, 250 );
    theta_inactive = 0.9;

    # Parameters used by the Kalman filter only

    kalman: {

        sigmaQ = 0.001;
        
    };
   
    # Parameters used by the particle filter only

    particle: {

        nParticles = 1000;
        st_alpha = 2.0;
        st_beta = 0.04;
        st_ratio = 0.5;
        ve_alpha = 0.05;
        ve_beta = 0.2;
        ve_ratio = 0.3;
        ac_alpha = 0.5;
        ac_beta = 0.2;
        ac_ratio = 0.2;
        Nmin = 0.7;

    };

    target: ();

    # Output to export tracked sources
    tracked: {

        format = "json";

        interface: {
            type = "file";
            path = "tracks.txt";
        };

    };

}

sss:
{
    
    # Mode is either "dds", "dgss" or "dmvdr"

    mode_sep = "dds";
    mode_pf = "ss";

    gain_sep = 1.0;
    gain_pf = 10.0;

    dds: {

    };

    dgss: {

        mu = 0.01;
        lambda = 0.5;

    };

    dmvdr: {

    };

    ms: {

        alphaPmin = 0.07;
        eta = 0.5;
        alphaZ = 0.8;        
        thetaWin = 0.3;
        alphaWin = 0.3;
        maxAbsenceProb = 0.9;
        Gmin = 0.01;
        winSizeLocal = 3;
        winSizeGlobal = 23;
        winSizeFrame = 256;

    };

    ss: {

        Gmin = 0.01;
        Gmid = 0.5;
        Gslope = 10.0;

    }

    separated: {

        fS = 16000;
        hopSize = 128;
        nBits = 16;        

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

    };

    postfiltered: {

        fS = 16000;
        hopSize = 128;
        nBits = 16;        
        gain = 10.0;

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

    };

};

classify:
{
    
    frameSize = 4096;
    winSize = 3;
    tauMin = 88;
    tauMax = 551;
    deltaTauMax = 20;
    alpha = 0.3;
    gamma = 0.05;
    phiMin = 0.5;
    r0 = 0.2;    

    category: {

        format = "undefined";

        interface: {
            type = "blackhole";
        }

    }

}

Thanks!

Installation instructions omit a cd command

The installation instructions at:

git clone https://github.com/introlab/odas.git --branch=dev

omit a cd odas command which should be run before making and changing to the build directory.

Also, if you want to have an (effectively) empty build directory already in the repository, you can add the directory to git with a .gitignore like the following:

# Ignore everything in this directory
*
# Except this file
!.gitignore

to avoid putting built files under revision control.

Changing the value of samplerate.mu.

I see that it is recommended to leave samplerate.mu as 16000 as shown below.

samplerate.mu | uint | You should leave this parameter at 16000

I have assigned 48000 to fS of raw section and am planning to increase it to 96000. Am I still recommended to leave samplerate.mu to 16000? What is the effect of 16000 and why is it recommended to keep it at 16000?

Thanks!

Respeaker microphone array didn't work and how to modified to send the sound source direction and the separated speech to other device

Hello,

I am trying to do a project that use a circular microphone array to track and recognize speech from multiple directions at the same time. So I want to modify ODAS_WEB and ODAS_CORE to send the sound source direction and the separated speech to other device.

Is ODAS support for Respeaker microphone array?
I connect the microphone array with computer and run ODAS_WEB in Ubuntu, but it didn't work.
2018-05-13 2 33 04

BTW, which part of the code in ODAS_CORE and ODAS_WEB should I modify?
Thanks

Move all includes in the includes directory, __cplusplus test (extern "C")

Should create subdirectories containing all modules includes. Will be easier to use for external programs. The odas.h file should look like this :

#ifdef __cplusplus
extern "C" {
#endif

 #include <connector/con_categories.h>
 #include <connector/con_hops.h>
 #include <connector/con_pots.h>
 #include <connector/con_powers.h>
...

#ifdef __cplusplus
}
#endif

Instead of this :

 #include "../../src/connector/con_categories.h"
 #include "../../src/connector/con_hops.h"
 #include "../../src/connector/con_pots.h"
 #include "../../src/connector/con_powers.h"
...

Where can I get the raw audio files specfied in the configs?

Sorry for asking such a basic question, but I wondered if you guys shared the raw audio files that are specified in some of the config files in the odas/config directory somewhere. For example in xmos.cfg the file "meeting_recorded_raw_16.raw" is specified.
I just compiled the odas project and want to do a test run with some existing config file (and raw file) just to see what the program does when executed.

classify

What does the classify section of the config do?

Many thanks

beam-forming

Im interested in focusing the microphone array to a specific point in space ( as that is where the sound will always come from) whilst cancelling the background noise. Is this possible within the scope of odas? Is it configured with the config file?

what is meaning of sst activity?

Hey,the sst module print the below info:
"timeStamp": 1062,
"src": [
{ "id": 1, "tag": "dynamic", "x": -0.925, "y": -0.117, "z": 0.361, "activity": 1.000 },
{ "id": 7, "tag": "dynamic", "x": 0.710, "y": -0.192, "z": 0.677, "activity": 0.000 },
{ "id": 0, "tag": "", "x": 0.000, "y": 0.000, "z": 0.000, "activity": 0.000 },
{ "id": 0, "tag": "", "x": 0.000, "y": 0.000, "z": 0.000, "activity": 0.000 }
]
}
what is meaning of activity?
Thank you very much.

Target source updated over time

For now the injector module always generates the target sources identical with the initial targets provided in the configuration file. I should be possible to update these values over time by reading a file or listening to a socket.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.