File syn_vad.h¶
Go to the source code of this file
Zero-Heap Acoustic Voice Activity Detector (VAD) Engine (Q15/Q16 fixed-point). More...
#include "../common/syn_defs.h"#include "../util/syn_qmath.h"#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_VAD Voice Activity Detector instance context. |
| struct | SYN_VAD_Config VAD configuration descriptor. |
| struct | SYN_VAD_Features Extracted audio frame feature metrics. |
Public Types¶
| Type | Name |
|---|---|
| enum | SYN_VAD_Sensitivity VAD sensitivity preset level. |
| enum | SYN_VAD_State Voice Activity Detection state. |
Public Functions¶
| Type | Name |
|---|---|
| SYN_VAD_State | syn_vad_get_state (const SYN_VAD * vad) Get current smoothed VAD state without processing a new frame. |
| SYN_Status | syn_vad_init (SYN_VAD * vad, const SYN_VAD_Config * cfg) Initialize Voice Activity Detector context. |
| SYN_VAD_State | syn_vad_process_frame (SYN_VAD * vad, const int16_t * samples, size_t num_samples, SYN_VAD_Features * out_features) Process single frame of 16-bit signed PCM audio samples. |
| SYN_Status | syn_vad_reset (SYN_VAD * vad) Reset VAD state counters and restore default noise floor. |
| SYN_Status | syn_vad_set_sensitivity (SYN_VAD * vad, SYN_VAD_Sensitivity sensitivity) Adjust VAD sensitivity preset. |
Macros¶
| Type | Name |
|---|---|
| define | SYN_VAD_DEFAULT_ATTACK_FRAMES 2U |
| define | SYN_VAD_DEFAULT_FRAME_LEN 160U |
| define | SYN_VAD_DEFAULT_HANGOVER_FRAMES 6U |
Detailed Description¶
Implements a low-latency, deterministic Voice Activity Detector for embedded microcontrollers: * Frame-by-frame acoustic analysis (10ms - 30ms windows of 16-bit PCM audio). * Multi-feature extraction: Short-Time Energy (STE), Zero-Crossing Rate (ZCR), and High/Low Spectral Energy Ratio. * Dynamic background noise floor tracking via Exponential Moving Average (EMA). * Configurable attack onset validation and hangover release timing. * Sensitivity presets (Aggressive, Normal, Sensitive).
Public Types Documentation¶
enum SYN_VAD_Sensitivity¶
VAD sensitivity preset level.
enum SYN_VAD_Sensitivity {
SYN_VAD_SENSITIVITY_SENSITIVE = 0,
SYN_VAD_SENSITIVITY_NORMAL = 1,
SYN_VAD_SENSITIVITY_AGGRESSIVE = 2
};
enum SYN_VAD_State¶
Voice Activity Detection state.
Public Functions Documentation¶
function syn_vad_get_state¶
Get current smoothed VAD state without processing a new frame.
Parameters:
vadVAD instance pointer.
Returns:
Current VAD state.
function syn_vad_init¶
Initialize Voice Activity Detector context.
Parameters:
vadVAD instance pointer.cfgConfiguration descriptor (or NULL for default 16kHz parameters).
Returns:
SYN_OK on success, SYN_INVALID_PARAM on invalid argument.
function syn_vad_process_frame¶
Process single frame of 16-bit signed PCM audio samples.
SYN_VAD_State syn_vad_process_frame (
SYN_VAD * vad,
const int16_t * samples,
size_t num_samples,
SYN_VAD_Features * out_features
)
Parameters:
vadVAD instance pointer.samplesArray of 16-bit PCM audio samples.num_samplesNumber of samples in frame (should match configured frame_length).out_featuresOptional pointer to receive extracted frame metrics (can be NULL).
Returns:
Current smoothed VAD decision (SYN_VAD_STATE_SPEECH or SYN_VAD_STATE_SILENCE).
function syn_vad_reset¶
Reset VAD state counters and restore default noise floor.
Parameters:
vadVAD instance pointer.
Returns:
SYN_OK on success.
function syn_vad_set_sensitivity¶
Adjust VAD sensitivity preset.
Parameters:
vadVAD instance pointer.sensitivitySensitivity preset level.
Returns:
SYN_OK on success.
Macro Definition Documentation¶
define SYN_VAD_DEFAULT_ATTACK_FRAMES¶
Consecutive active frames required to trigger
define SYN_VAD_DEFAULT_FRAME_LEN¶
Default 160 samples (10ms @ 16kHz or 20ms @ 8kHz)
define SYN_VAD_DEFAULT_HANGOVER_FRAMES¶
Hangover frames to sustain active speech
The documentation for this class was generated from the following file src/syntropic/audio/syn_vad.h