Skip to main content
All functions on this page are from C SDK 0.24.0, core 0.24.0. Include aic.h and link the matching native library. Start with the C integration guide. The pointer and error contract applies to every signature below. Error names in prose omit the AIC_ERROR_CODE_ prefix. There are no default C arguments; optional pointers are stated explicitly.

AicVadParameter

All defaults are model-specific. Read the current values through aic_vad_context_get_parameter after creation. Use a dedicated ai-coustics VAD model and mono float32 audio. An enhancement model is not accepted by aic_vad_create.

aic_vad_create

vad is a writable output slot. model must be a VAD model; license_key is a null-terminated SDK key or supported bearer token. otel_config may be NULL to use environment defaults, or point to AicOtelConfig. The function copies configuration strings and retains model data internally. On success, destroy the owned VAD handle separately. Errors include NULL_POINTER, MODEL_TYPE_UNSUPPORTED, license errors and INTERNAL_ERROR. Construction allocates resources and may start session work; keep it outside an audio callback.

aic_vad_destroy

Releases vad and its model reference and ends its associated session. NULL is a no-op. Stop processing and other calls that use this handle first. Context handles are independent and must be destroyed separately. Teardown can block; keep it outside an audio callback. No return value.

aic_vad_initialize

Configures vad for sample_rate in Hz (8,000–192,000 inclusive), a positive block_size in mono samples and variable_block_size. With false, every call must supply exactly block_size; with true, that value is the maximum per call. Reinitialization resets processing state. Returns SUCCESS, NULL_POINTER or AUDIO_CONFIG_UNSUPPORTED. A failed initialization leaves the object uninitialized; initialize successfully before processing again. Allocates internal buffers; do not call concurrently with processing.

aic_vad_process

audio_ptr points to audio_len readable contiguous mono float32 samples. The binding copies them to its internal buffer; the caller’s input is unchanged. Processing updates the context’s latest decision and probability. Returns SUCCESS, NULL_POINTER, NOT_INITIALIZED, AUDIO_CONFIG_MISMATCH or PROCESSING_NOT_ALLOWED (and internal failures). Read a fresh decision only after a successful call. Do not process the same object concurrently.

aic_vad_terminate_session

Requests termination of the session associated with vad. Returns SUCCESS after requesting it, or NULL_POINTER. Termination is handled asynchronously; a successful return does not prove remote acknowledgment or immediate processing denial. For credentials with no telemetry session, this is a no-op. It does not destroy the handle. Stop application processing explicitly and destroy the object when finished. On native targets, terminating the final active session may wait for the shared telemetry tasks to finish. Call it outside the audio callback.

aic_vad_context_create

context is a writable output slot; vad is the source object. Returns a separately owned context with shared control state. It can outlive the source object, but no new audio is processed after the source is destroyed. Returns SUCCESS or NULL_POINTER (or INTERNAL_ERROR if the VAD context is unavailable). Allocate outside the callback and destroy the context separately.

aic_vad_context_destroy

Releases context; NULL is a no-op. Stop users of this context handle first. This does not destroy the processing object. No return value.

aic_vad_context_reset

Requests processing-state reset for the next call and immediately clears the published speech decision to false and raw probability to zero. Audio configuration and parameter values remain in place. context must be valid. Returns SUCCESS or NULL_POINTER. The shared control operation can run alongside processing; coordinate a stream boundary if you need a precise reset position.

aic_vad_context_set_parameter

Sets parameter to value through shared control state. Use only the declared AicVadParameter values and documented ranges. Returns SUCCESS, NULL_POINTER or PARAMETER_OUT_OF_RANGE; NaN is out of range. Updates may run alongside processing. No ownership transfer.

aic_vad_context_get_parameter

Writes the current parameter value to the non-null writable value pointer. Use a declared enum value. Returns SUCCESS or NULL_POINTER. Shared control reads can run alongside processing. VAD duration values are stored in seconds; model-frame quantization affects decisions.

aic_vad_context_get_prediction_delay

Writes the current prediction delay to delay, measured in samples at the initialized host rate. Query after successful initialization and again if you reinitialize. Both context and writable delay must be non-null. Returns SUCCESS or NULL_POINTER. This shared metadata read can run alongside processing; it is not elapsed CPU time.

aic_vad_context_update_bearer_token

Updates credentials through context using null-terminated UTF-8 token. Both the original credential and replacement must use the supported JWT form. Returns SUCCESS, NULL_POINTER, LICENSE_FORMAT_INVALID, other license errors or TOKEN_UPDATE_UNSUPPORTED. Success updates local credential state; it does not prove backend acceptance. This is a control-thread operation, not an audio-callback operation. See authentication.

aic_vad_context_is_speech_detected

Writes the latest filtered speech decision into the writable value pointer. Returns SUCCESS or NULL_POINTER. This does not process audio; call aic_vad_process first and check its result. It combines model probability, sensitivity, minimum speech duration and hold behavior. Safe to read alongside processing while the context remains alive.

aic_vad_context_get_raw_vad_probability

Writes the latest model speech probability into the writable value pointer. Returns SUCCESS or NULL_POINTER. This is the probability before duration filtering, not the final speech decision. It does not process audio. Safe to read alongside processing while the context remains alive. C API index · C examples · Compatibility

Example: read a fresh decision

Use an initialized VAD and its context. The input is read-only; the decision is written only after successful processing.