This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320VC5502: VAD algorithm to differentiate between Human Speech and Noise(RF and ambient)

Part Number: TMS320VC5502

Hi All,

I am working on Radio Communication Application. For That we need to differentiate between human speech and noise ( mainly RF and ambient). Is there any algorithm which TI provides for the same ? I use  TMS320VC5502 DSP.  Algorithm should be capable of differentiating Human Voice and Noise.

Thanks and Regards,

Dixit

  • Hi,

    I've notified the sw team. They will post their feedback directly here.

    Best Regards,
    Yordan
  • Dixit,

    Please check out this previous thread on VAD. VOLIB has an implementation that would provide some detail to get you moving.
    e2e.ti.com/.../560746

    Lali
  • Hi Lalindra sir,

    Thanks a lot for the quick reply.

    I have gone through the post you have mentioned. It seems that it will suit my requirement. I have some doubts in it. It would be great if you can guide me through it.

    1.) Block diagram depicts that speech processing will be done on any TDM to VoIP data samples. My Requirement is to process only TDM(PCM data). Does VoLIB support it? If yes then how? I am not able to understand it from block diagram? 

    2.) I couldn't find any examples in Example Folders. Is available ?

    Thank you again.

  • Dixit,

    I don't know. Checking on this internally.

    Lali
  • Dixit,
    I was told by a colleague that you should take a look at the VPE package in C:\ti\volib_C55_CPU3_2_1_0_1\packages\ti\mas\vpe. This has a SVD (simple voice detector) module. Volib is located at software-dl.ti.com/.../index_FDS.html

    The doxygen has all the API information, and I believe there is an example also in the installation.

    The audio that's presented to the SVD is a PCM stream.

    Lali
  • Hi Lalindra sir,

    Thank you for the response.

    I have checked out VPE package in C:\ti\volib_C55_CPU3_2_1_0_1\packages\ti\mas\vpe . I have gone through suggested Doxygen document as well.

    VPE package has the SVD(Simple Voice Detector)  module for the Voice activity detection. From the sample code, it seems that we just need to set the sampling rate for SVD. There is no information about how it works.

    I have doubt that SVD module can independently be used for VAD or first I need to process my PCM samples through all the modules included in VPE package. It would be great with your help.

    I have also analyzed VAU unit from the VoLIB Library which specifically for the Voice activity detection. Is it the same as above? Do they use the same API internally? 

  • Hi Lalindra Sir,

    We have integrated VAU module from VOLIB package with our source code. We started testing with it. We have set VAU type as adaptive. It works in normal case. But from the few observations and getting into details from the header file we need your help as below. 
    1 )
    From the comments in header file ifvau.h, we have come to know that thresh_offset can be set between -20 to +10 dBm which results in -60dBm to -30dBm range.  This range seems more sensitive for our application. 
    What if we want to change this range ?? Can you please direct us for the same ??
    2)
    We are configuring VAU type as adaptive. With this mode of VAU, Will vauGetStats api provide the updated threshold value at run time whenever we call it ?
    Thank you,
    Dixit
  • Dixit,

    I'm checking internally on your tuning questions.

    Lali
  • Dixit,

    There is a typo in documentation about the threshold (dBm highlighted below should be dB):

     int thresh_offset;    /**< VAU threshold adjustment from the

                              * default power level. Valid range on

                              * input is -20 to +10 dBm, from the

                              * normal value of -40 dBm. Default is

                              * 0 (i.e. -40 dBm).

                              */

    Looks like you already figured this out.

    The format of thresh_offset mentioned above is not specified. This parameter directly translates into dB value, e.g., -20 means -20dB, -10 means -10dB, etc. So if you want to have -30dBm threshold, you need to set this parameter to 10 (-40+10=-30). However, the range cannot be changed.

    The range means VAU allows the threshold to be adjusted between -20 and +10, which translates to power range of -60dBm to -30dBm.

    Yes to your other question.

    Lali

  • Hi Lali,

    Thank you very much for sharing the information.

    I got your point, That we can not modify the range of VAU threshold.

    In my scenario, At the input side there is very low power noise(I.e When speech channel is silent but there is some air/environment noise)- due to the threshold level this noise is treated as Speech bu VAU.

    I have looked in to other modules of VoLIB, It seems VEU(Voice Enhancement Unit) has the facility of noise reduction. But i am not able to integrate it successfully with VAU.

    While opening VEU instance it gives error in veuOpen()- Error: Bad Instance, As per the documentation this error is observed when The framesize is invalid or the veu instance is not closed properly.

    Can you suggest any way?

    Thanks,

    Dixit