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 throughaic_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
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
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
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
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
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
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
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
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
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
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
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.