introlab / odas

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

Beamforming and spatial Filter #194

Open anrzej96 opened 4 years ago

anrzej96 commented 4 years ago

I would like to record only this, what is below the Respeaker (z=1, scope 5 degrees). Is it possible?

Hi everyone,

I'm new here and I'm bothering with some problem for long time. I'm trying to use odas and odas_web to help me finish my bachelor degree. Basically, I'm trying to check if it's possible to recored audio using 4-Mic Array Reaspeaker for Raspberry-Pi attached to a drone. Raspberry Pi (3B+) with Reaspeaker is fastened to a bottom of a drone and it flyes away from the sound source. My biggest challenge is to cut the propellers noise.

I'm running odascore at my RasperryPI (it's is powered up by a powerbank and connected to my laptop through VNC) and Odas_web at my computer.

I use spatial filter that is availabe in the config file. It's setted like this:

spatialfilters = (

    {

        direction = ( +0.000, +0.000, +1.000 );
        angle = (5.0, 10.0);

    }

At the beggining it seems to work. While I fly, odas does not see the noise of drone. It does not record anything, even though the environment is loud. While i'm exactly below the respeaker and I'm speaking loud it starts to record. I've checked it also without drone, still works same. But the problem is that odas localize the sound source and record it, but it looks like it record everything that reaches microphone. I mean, it see the true source, but still the recording is full of noise.

I'm using this config: config.txt

The odas_web record part doesn't work good. Sometimes it records something, but usually there are recordings (-1.00s) lenght of time. In the config, 'sss' part I've added this:

separated: {

    fS = 44100;
    hopSize = 512;
    nBits = 32;        

    # format = "undefined";
    format = "json";

    interface: {
        # type = "blackhole";
         type = "file"; 
         # ip = "127.0.0.1";
     # type = "file";
      **path = "sprtd.raw";**
      ip = <IP>
      port = 10000;
    };       

I would like to record only this, what is below the Respeaker (z=1, scope 5 degrees). Is it possible? I'm absolutely new to this and maybe I don't see something obvious. Thank you in advanced for help. And please forgive me my english.

anrzej96 commented 4 years ago

@FrancoisGrondin please, I desperately need help, some tip maybe?