NVAudioEffects.dll Missing Function Listed in Programming Guide

Hello,

The Maxine Audio Effects SDK discusses VAD (Voice Activity Detection) algorithm as part of the noise suppression feature. The enabling/disabling of VAD is available in Windows however the function ‘NvAFX_GetBoolList’ to request the status is missing. The programming guide does not state this is Linux only.

any update on this?

Sorry for the delay on response. I forwarded this to the Maxine engineering team on Thursday and they’re looking into it.

Hello,

Is there any further update on this?

Cheers

Hello,

Is there any update on this? We would like to investigate use of the VAD feature however this is not currently possible on Windows environments due to the missing DLL function.

Cheers

Thanks for bringing this back into focus. I’ve contacted the lead engineer for audio effects again. I’ll set up a recurring reminder to continue to ask for clarity or a fix.

I haven’t heard back… I will ping again.

Hi Mark,

Any update on this? We would like to integrate the VAD feature into our application and this requires access to the NvAFX_GetBoolList, alternatively if NvAFX_GetBool function was implemented and linked to the output of VAD that should also work.

Hi tomcollins!

I just dropped another email to bump to the top of engineering’s inbox. I will shortly file a bug to ensure two things : I don’t let this fall into the abyss of tasks again and there’s multiple teams seeing it.

Hello again! What version of SDK are you running?

SDK version is 1.3 and the redistributable version is 1.3.0.22

It’s the redistributable where the issue lies as the function required is not exposed/available in the DLL

Thank you!

Hi tomcollins, our engineering team has been hard at work on new features but I have a response!

"Update: VAD feature is not linux only feature but the way to set and get are different. In Linux, we use GetBool and GetBool List and in windows we use GetU32 and SetU32
I checked the documentation and it specifies that following APIs
GetBool and GetBoolList
SetBool and SetBoolList
are Linux only API’s. "

As you can see the APIs differ from OS to OS.

Hello,

Thank you for the update.

It is not clear in the documentation that an OS specific function is required for NVAFX_PARAM_VAD_RESULT, it shows the NvAFX_GetBoolList function is required (which is Linux only) see snippet below. It may be worth updating the documentation to make this clearer. I will test the GetU32 function for the NVAFX_PARAM_VAD_RESULT parameter and report back.

“The VAD status for the last NvAFX_Run call can also be queried by using the NvAFX_GetBoolList() function.”

UPDATE

I have tested the GetU32 function for acquiring the NVAFX_PARAM_VAD_RESULT however I get an error code of ‘1’ returned which translates to NVAFX_STATUS_FAILED.

If I acquire the parameter NVAFX_PARAM_ENABLE_VAD I get a successful return and a value of ‘1’ indicating VAD is enabled.

This implies the parameter enquiry NVAFX_PARAM_VAD_RESULT is not part of the function GetU32.

Below is the snipped from the SDK documentation detailing the feature and how it should be implemented:

The following example code does indicate querying the VAD result is Linux only however this isn’t clear in the rest of the documentation:

// Querying VAD results
// VAD must be supported and enabled on the handle
NvAFX_Run(…); // Process input first

// Query results for last input (Linux only)
// Note: If no voice is detected, output audio is zeroed by the effect
// However, result is also returned (in case custom packet loss concealment is desired) - returns NVAFX_TRUE if input audio had voice, NVAFX_FALSE otherwise
std::vector<NvAFX_Bool> out(num_streams, 0);
uint32_t s = out.size();
auto status = NvAFX_GetBoolList(handle, NVAFX_PARAM_VAD_RESULT, out.data(), &s);
assert(status == NVAFX_STATUS_SUCCESS);
// Use VAD result

If querying the VAD status is actually not supported in windows, is it possible to implement this feature through the GetU32 function in a future release?

Hi tomcollins!

I can put in an enhancement request! I cannot guarantee that it will be implemented but I will put in the request.