none
Raw Audio capture from kinect: Audio level fluctuations in individual microphones RRS feed

  • Question

  • Hi,

    While capturing raw audio streams from each of the microphone in Kinect, If any of the mics signal gets saturated, somewhere (either in kinect or in PC) gains for other microphones seems to be changing. As you can see in the below spectrograms of each microphone, when i started blowing air on mic 4 (saturating), gains of other micrphones are getting reduced (You can see background noise level fluctuations). I would like to know if i can avoid this kind of dyanamic behaviour with individual microphones.

    Thank you.

    -Naveen



    Wednesday, May 23, 2012 8:24 AM

Answers

  • 1) You say that when the microphone is set to 3, the signal is too low... You can always do your own amplification of the signal to get it to the necessary level.  Setting to above 3 results in a software amplification of the signal.  It isn't actually creating any new information, it's just scaling the signal, so you could do that yourself and have much more control over the behavior, while not losing any information.

    2) I do not believe there is a way to entirely pull the AGC unit out of the pipeline, but you can minimize its effect by setting and keeping the OS gain at 3.  The array microphone in the Kinect uses the class driver for USB array microphones, and the AGC unit is just a part of that.  Any microphone that does not have an external gain control in hardware will have this processing in the pipeline.

    Can you share a little bit about your project?

     

    Friday, May 25, 2012 5:27 PM

All replies

  • The first thing that I'd check is your audio level in Windows.  The default level when you plug in the device results in a large amplification, which exacerbates this problem.  I'd be interested to see if you still see this behavior if you set the audio level to "3" in the properties on the audio device.  This will most closely correspond to a 0 dB gain from windows.

    The AGC that is being applied is in the pipeline and cannot be turned off, but will be significantly mitigated by setting the audio level per the release notes. 

    The individual microphones can not be set to be totally independent. An array mic needs to have consistent gain values across the entire array for higher order processing such as beam forming to work correctly.

    Wednesday, May 23, 2012 5:18 PM
  • Hi Chris,

    Thank you for your quick reply.

    When i go to recording devices->microphone array(kinect)->properties->Levels ; I can see microphone array volume. And I have changed this to "3". But the captured signal level is too low. Hence I cannot use this setting.

    I understand that all microphone gains should be same for beamforming to work fine. But by having AGC in this pipeline it still affects the beamforming pereformance. And I also would like to know when this AGC functionality kicks in? I.e. when any of the microphone signal reaches above some threshold, then only AGC is active or AGC is always active?

    If AGC is always active then it crates problem for both beamforming and AEC. For my project I would like to get raw PCM samples from each microphone without any signal processing in between. Is there any way that I can avoid these signal processing components in the pipeline or please suggest me any work around.

    Best Regards,

    Naveen


    Naveen

    Thursday, May 24, 2012 4:43 AM
  • 1) You say that when the microphone is set to 3, the signal is too low... You can always do your own amplification of the signal to get it to the necessary level.  Setting to above 3 results in a software amplification of the signal.  It isn't actually creating any new information, it's just scaling the signal, so you could do that yourself and have much more control over the behavior, while not losing any information.

    2) I do not believe there is a way to entirely pull the AGC unit out of the pipeline, but you can minimize its effect by setting and keeping the OS gain at 3.  The array microphone in the Kinect uses the class driver for USB array microphones, and the AGC unit is just a part of that.  Any microphone that does not have an external gain control in hardware will have this processing in the pipeline.

    Can you share a little bit about your project?

     

    Friday, May 25, 2012 5:27 PM
  • Hi Chris,

    My project is related to Beamforming. Can you please elobrate on this AGC functionality? I mean is it a soft peak limiter or  does it try to keep the signal level uniform?

    Thank you,


    Naveen

    Saturday, May 26, 2012 9:01 AM
  • I believe it is a soft peak limiter.  The gain set will be a function of the control panel setting.  AGC only kicks in when you near (or possibly when you hit) saturation.
    Tuesday, May 29, 2012 5:24 PM
  • Hi Chris,

    Thank you very much for your help :)


    Naveen

    Wednesday, May 30, 2012 4:12 AM