My apologies for the length of this issue. I am trying to be as thorugh as possible as my application for ODAS is a bit unique.
I am working on a robot that uses the ReSpeak 4 mic usb array and ODAS to find the direction of an persons voice and explore the environment until it finds them. My issue is that it appears that ODAS is localizing and tracking many false sources. The microphone array is positioned on the robot as shown.
I have 4 motors positioned relatively close as well as an onboard computer. The motors and computer fan put out a non-zero amount of background noise (similar to a few computer fans) which I think is interfearing with ODAS's ability to track voices. Here is the output shown in ODAS web using the stock configuration file for the ReSpeak mic array. I have also included the config file. This recording was taken in a quite office (besides standard HVAC noises).
You can see that two sources are tracked in a silent room. The direction of the sources point towards the forward two motors of the robot.
I have also noticed a repeatable characteristic when a sound source is introduced. ODAS will succesfully track that sound source, then when the sound source is removed, the tracked source will shift towards an area populated by noise and remain there endlessly.
I conducted a test following the suggestion in Issue 55, setting the active and inactive mu parameters by speaking in the environment and tunning the mu parameters until only the source I want is being tracked. The values that I landed on and the ODAS web output follows. This was done with a loudspeaker playing an audio book fairly loudly at about 7 meters distance. The issue is that the mu levels are so high that at any further distance from the speaker we lose all tracked sources.
active = (
{ weight = 1.0;
mu = 0.45;
sigma2 = 0.0025 }
);
inactive = (
{ weight = 1.0;
mu = 0.35;
sigma2 = 0.0025 }
);
Here is a small overview about what I am attempting.
Attempting to track speach at medium to long ranges, say across an office.
I don't care about the intelligableness of the speech just that ODAS can track it and can provide a vector pointing at it
My experiments will consist of a quiet room except for the noise of the robot and the speak/sound source
Here are adjustments/filtering technics that I am considering and will most likely try soon.
Mounting the mic array at a distance from the robot (giving the robot a unicorn horn)
Applying a noise pre-filtering step unsing noisreduce
Using an audio classification network on the SSS outputs from ODAS (tested this using mediapip Audio Classification/YAMNet demo but not great results so far because of noise) to determine which vector to follow.
I would like some advice on how to tune ODAS best for my application and opinions on if any of my planned adjustments. I have been reading through many of the adjustments in the config file and am wondering on how I could potentially adjust the sne component (using MCRA) to filter out more fan/motor noise. Are there also any specific sound files I could play over the loudspeaker to increase my chances of the sound source being succesfully tracked at increased ranges?
Thank you for taking time to answer my questions, I will answer any additional questions you might have.
I realise you created this over a year ago but I've recently been using ODAS, so perhaps this is a bit late.
Did you find out how to tune the sne component?
Have you tried using the spatialfilters configuration to ignore cones from each leg of the robot?
Do you have access to another array? Respeak has omnidirectional microphones which would be picking up all of the extra noise. An array with more direction mics might be better in the described scenario? see https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9131248/ for more details on how the separation uses the orientation information.
My apologies for the length of this issue. I am trying to be as thorugh as possible as my application for ODAS is a bit unique.
I am working on a robot that uses the ReSpeak 4 mic usb array and ODAS to find the direction of an persons voice and explore the environment until it finds them. My issue is that it appears that ODAS is localizing and tracking many false sources. The microphone array is positioned on the robot as shown.
I have 4 motors positioned relatively close as well as an onboard computer. The motors and computer fan put out a non-zero amount of background noise (similar to a few computer fans) which I think is interfearing with ODAS's ability to track voices. Here is the output shown in ODAS web using the stock configuration file for the ReSpeak mic array. I have also included the config file. This recording was taken in a quite office (besides standard HVAC noises).
You can see that two sources are tracked in a silent room. The direction of the sources point towards the forward two motors of the robot.
respeak_4_mic_base.txt
Seperated source WAV recordings
I have also noticed a repeatable characteristic when a sound source is introduced. ODAS will succesfully track that sound source, then when the sound source is removed, the tracked source will shift towards an area populated by noise and remain there endlessly.
I conducted a test following the suggestion in Issue 55, setting the active and inactive
mu
parameters by speaking in the environment and tunning themu
parameters until only the source I want is being tracked. The values that I landed on and the ODAS web output follows. This was done with a loudspeaker playing an audio book fairly loudly at about 7 meters distance. The issue is that themu
levels are so high that at any further distance from the speaker we lose all tracked sources.Here is a small overview about what I am attempting.
Here are adjustments/filtering technics that I am considering and will most likely try soon.
noisreduce
I would like some advice on how to tune ODAS best for my application and opinions on if any of my planned adjustments. I have been reading through many of the adjustments in the config file and am wondering on how I could potentially adjust the
sne
component (using MCRA) to filter out more fan/motor noise. Are there also any specific sound files I could play over the loudspeaker to increase my chances of the sound source being succesfully tracked at increased ranges?Thank you for taking time to answer my questions, I will answer any additional questions you might have.