introlab / odas

ODAS: Open embeddeD Audition System
MIT License
778 stars 247 forks source link

odas_web not running #123

Closed viduraakalanka closed 5 years ago

viduraakalanka commented 5 years ago

Hi, I'm trying to use ODAS with Respeaker Mic Array V2.0 to perform sound source localization and tracking. When odas is launched after setting the corresponding config file, GUI output remains unchanged as follows.

screenshot from 2018-10-12 21-43-38

Also when i execute the command "./odaslive -c ./ -v" , it results in the following error.

screenshot from 2018-10-12 21-37-10

The config file i used is:

`# Configuration file for XMOS circular sound card

version = "2.1";

Raw

raw: {

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

# Input with raw signal from microphones
interface: {
    type = "soundcard";
    card = 1;
    device = 0;
}

}

Mapping

mapping: {

map: (2, 3, 4, 5);

}

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 2
    { 
        mu = ( -0.032, +0.000, +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.000, -0.032, +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.032, +0.000, +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.000, +0.032, +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)
spatialfilters = (

    {
        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 = "undefined";
    format = "json";

    interface: {
        # type = "blackhole";
        type = "socket";
    ip = "127.0.0.1";
    port = 9001;
    };

};

};

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";
        type = "socket";
    ip = "127.0.0.1";
    port = 9000;
    };

};

}

sss: {

# Mode is either "dds", "dgss" or "dmvdr"

mode_sep = "dgss";
mode_pf = "ms";

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.9;
    Gslope = 10.0;

};

separated: {

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

    interface: {
        #type = "file";
        #path = "separated.raw";
    type = "socket";
    ip = "127.0.0.1";
    port = 10000;
    };        

};

postfiltered: {

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

    interface: {
        #type = "file";
        #path = "postfiltered.raw";
    type = "socket";
    ip = "127.0.0.1";
    port = 10010;
    };        

};

};

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";
    }

}

} ` P.S : I am a newbie in this area. Please forgive for my inexperience

OtakuWang commented 5 years ago

I think you should change your IP address(127.0.0.1)to 192.168.8.104 in the config file.

viduraakalanka commented 5 years ago

i tried that option. But it didn't help either. Any other ideas?? terminal output before changing IP (127.0.0.1)

screenshot from 2018-10-12 21-49-52

terminal output after changing IP

screenshot from 2018-10-13 05-47-07

viduraakalanka commented 5 years ago

Respeaker documentary has instruction to execute the odas_web: http://wiki.seeedstudio.com/ReSpeaker_Mic_Array_v2.0/

screenshot from 2018-10-13 04-54-45

There they have mentioned to edit odas.cfg based on sound card number. I think the error might be there. How can i do it in my case?

Also I couldn't find any "odascore" file. So i used "odaslive" file for the odascore field. Could that be an issue?

OtakuWang commented 5 years ago

You can use "arecord -l" to see all soundcards and digital audio devices. No, you have already started the program, it should be some problem in the socket. Can you ping your Ip address? also try checking your ports to see if any of the ports [9000, 9001, 10000, 10010] is not listening.

viduraakalanka commented 5 years ago

I was able to solve the issue by changing IP address (as you mentioned before) as well as the device and index numbers to their proper values. Many thanks for supporting me to resolve this issue. :-)

kehinde-elelu commented 2 years ago

Hello @viduraakalanka how can you save odas angle result ?