Hi,
I am using VAD to detect speech and during speech activity ("1") I should get certain parameters outside/after VAD to get updated and during non-speech ("0") no updates but keep the last updated value. What Audio Weaver module should I use?
Regards,
Mike
2:23pm
Hi Mike,
The Quiescent Sound Detector module can be used to achieve your desired logic. Please see this older forum thread about doing so: https://dspconcepts.com/forums/voice-ui/485-voice-activity-detection
Thanks,
Michael
6:02pm
Thanks Michael but I meant what modules AFTER VAD (I have VAD already) I could use so that when VAD output gives 1, I am calculating and updating my value X and if VAD is 0 (or less than 1), I am keeping and using the last calculated value of X. Any hints for this?
Regards, Mike
8:42pm
Hi Mike,
There are a couple of approaches I can think of to achieve this behavior.
One approach is to use the Multiplexor module. Provide it with two input pins, one which feeds in the current X value and one which feeds in newly calculated X values. Then use the boolean output of the QSD module as a control signal to toggle between inputs.
I believe the Sample And Hold module may also be able to achieve this behavior without the need to feed in the current X value, but that is a module which I am less familiar with so I recommend you compare results.
Depending on your signal flow, you may think of better ways to implement this design requirement. The module browser provides a versatile toolbox for signal management and logic which may be of use.
Thanks,
Michael
10:07am
Thanks. I am planning to use Multiplexor module and I will provide it (as you wrote) with two input pins, one which feeds in the current X value and one which feeds in newly calculated X values. My VAD gives outputs of 1 and 0 and also values between those. What would be the exact module which fits to Multiplexors ctrl signal so that it toggles between signals?
Regards, Mike
10:29am
Hi Mike,
This is another instance where there may be multiple valid approaches. I think the easiest solution would be to use the Logic Compare Const module. Set the compareType to EQUAL and the constValue to 1. This will appropriately restrict the output values to 0s and 1s which can then be fed into the Multiplexor's Ctrl pin.
Thanks,
Michael
1:59pm
Great, thanks. Only one problem left:
I am feeding VAD signal (1x1 62.5Hz float) as a trigger to SampleHold module and actual signal is 1x129 125Hz float. I am getting error saying that "inputs do not have the same blocksize". I thought trigger could be different size as the signal but I guess not. See the attached picture of the system. Do you have any suggestion how to get that VAD trigger signal to correspond actual one so that it works (I can not do it inside VAD)?
5:31pm
Hi Mike,
The Rebuffer module can be used to increase your VAD signal block size. Since that signal is also of a different block time than the other signal (62.5 Hz vs 125 Hz), an FIRInterpolator module should precede the Rebuffer module to achieve matching block times.
Thanks,
Michael