Skip to content

File syn_vad.h

FileList > audio > 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.

enum SYN_VAD_State {
    SYN_VAD_STATE_SILENCE = 0,
    SYN_VAD_STATE_SPEECH = 1
};


Public Functions Documentation

function syn_vad_get_state

Get current smoothed VAD state without processing a new frame.

SYN_VAD_State syn_vad_get_state (
    const SYN_VAD * vad
) 

Parameters:

  • vad VAD instance pointer.

Returns:

Current VAD state.


function syn_vad_init

Initialize Voice Activity Detector context.

SYN_Status syn_vad_init (
    SYN_VAD * vad,
    const SYN_VAD_Config * cfg
) 

Parameters:

  • vad VAD instance pointer.
  • cfg Configuration 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:

  • vad VAD instance pointer.
  • samples Array of 16-bit PCM audio samples.
  • num_samples Number of samples in frame (should match configured frame_length).
  • out_features Optional 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.

SYN_Status syn_vad_reset (
    SYN_VAD * vad
) 

Parameters:

  • vad VAD instance pointer.

Returns:

SYN_OK on success.


function syn_vad_set_sensitivity

Adjust VAD sensitivity preset.

SYN_Status syn_vad_set_sensitivity (
    SYN_VAD * vad,
    SYN_VAD_Sensitivity sensitivity
) 

Parameters:

  • vad VAD instance pointer.
  • sensitivity Sensitivity preset level.

Returns:

SYN_OK on success.


Macro Definition Documentation

define SYN_VAD_DEFAULT_ATTACK_FRAMES

#define SYN_VAD_DEFAULT_ATTACK_FRAMES `2U`

Consecutive active frames required to trigger


define SYN_VAD_DEFAULT_FRAME_LEN

#define SYN_VAD_DEFAULT_FRAME_LEN `160U`

Default 160 samples (10ms @ 16kHz or 20ms @ 8kHz)


define SYN_VAD_DEFAULT_HANGOVER_FRAMES

#define SYN_VAD_DEFAULT_HANGOVER_FRAMES `6U`

Hangover frames to sustain active speech



The documentation for this class was generated from the following file src/syntropic/audio/syn_vad.h