Skip to main content
Oct 27, 2025
0.8.0

Features

  • Self-Service Licenses: Starting with this release, you can use self-service licenses directly from our development portal.
  • Usage-Based Telemetry: This release introduces a new telemetry feature that collects usage data, paving the way for future usage-based pricing models such as pay-per-minute billing.
    • What we collect: We collect only the processing time used and some diagnostic data
    • Privacy: We do not collect any information about your audio content. Your audio never leaves your device during our processing.
    • Requirements: Requires a constant internet connection. If the SDK cannot be activated online, enhancement will stop after 10 seconds. If telemetry data cannot be sent, enhancement will stop after 5 minutes. When enhancement is stopped an error will be returned, the audio will be bypassed and the processing delay will be still applied to ensure an uninterrupted audio stream without discontinuities.
    • Error Handling: When processing is bypassed because our backend cannot be reached or does not allow you to process, the process functions will return AIC_ERROR_CODE_ENHANCEMENT_NOT_ALLOWED. Make sure to handle this error code in your implementation.
    • Offline Licenses: If you cannot provide a constant internet connection, please contact us to obtain a special offline license that does not require telemetry.

Breaking Changes

  • Updated Error Codes: Renumbered and expanded error codes with additional license-related errors.

Old Error Codes

Error CodeValue
AIC_ERROR_CODE_SUCCESS0
AIC_ERROR_CODE_NULL_POINTER1
AIC_ERROR_CODE_LICENSE_INVALID2
AIC_ERROR_CODE_LICENSE_EXPIRED3
AIC_ERROR_CODE_UNSUPPORTED_AUDIO_CONFIG4
AIC_ERROR_CODE_AUDIO_CONFIG_MISMATCH5
AIC_ERROR_CODE_NOT_INITIALIZED6
AIC_ERROR_CODE_PARAMETER_OUT_OF_RANGE7
AIC_ERROR_CODE_SDK_ACTIVATION_ERROR8

New Error Codes

Error CodeValueNotes
AIC_ERROR_CODE_SUCCESS0Unchanged
AIC_ERROR_CODE_NULL_POINTER1Unchanged
AIC_ERROR_CODE_PARAMETER_OUT_OF_RANGE2Renumbered from 7
AIC_ERROR_CODE_MODEL_NOT_INITIALIZED3Renamed from AIC_ERROR_CODE_NOT_INITIALIZED, renumbered from 6
AIC_ERROR_CODE_AUDIO_CONFIG_UNSUPPORTED4Renamed from AIC_ERROR_CODE_UNSUPPORTED_AUDIO_CONFIG
AIC_ERROR_CODE_AUDIO_CONFIG_MISMATCH5Unchanged
AIC_ERROR_CODE_ENHANCEMENT_NOT_ALLOWED6New. SDK key was not authorized or process failed to report usage. Check if you have internet connection.
AIC_ERROR_CODE_INTERNAL_ERROR7New. Internal error occurred. Contact support.
AIC_ERROR_CODE_LICENSE_FORMAT_INVALID50Renamed from AIC_ERROR_CODE_LICENSE_INVALID, renumbered from 2
AIC_ERROR_CODE_LICENSE_VERSION_UNSUPPORTED51New. License version is not compatible with the SDK version. Update SDK or contact support.
AIC_ERROR_CODE_LICENSE_EXPIRED52Renumbered from 3
Removed: AIC_ERROR_CODE_SDK_ACTIVATION_ERROR has been removed and split into specific license errors.

Fixes

  • Fixed an issue where, after a successful initialization, a subsequent initialization error would not properly block processing, potentially allowing operations on a partially initialized model.
  • Fixed an issue where toggling bypass mode or switching enhancement levels could produce discontinuities.
Oct 14, 2025
0.7.0

Breaking Changes

  • Variable number of frames supported: The aic_model_process function now supports a variable number of frames per call. To enable this feature, use the new allow_variable_frames parameter in the initialize function:
    enum AicErrorCode aic_model_initialize(struct AicModel *model,
                                        uint32_t sample_rate,
                                        uint16_t num_channels,
                                        size_t num_frames,
                                        bool allow_variable_frames);
    
    Set allow_variable_frames to true to enable variable frame processing, or false to maintain the previous fixed frame behavior. Note that enabling variable frames results in higher processing delay.
  • New bypass parameter: A new parameter AIC_PARAMETER_BYPASS has been added to control audio processing bypass while preserving algorithmic delay. When enabled, the input audio passes through unmodified, but the output is still delayed by the same amount as during normal processing. This ensures seamless transitions when toggling enhancement on/off without audible clicks or timing shifts.
  • Sample rate parameter added to aic_get_optimal_num_frames: The function now takes sample_rate as an argument to make the dependency between sample rate and optimal frame count more explicit:
    enum AicErrorCode aic_get_optimal_num_frames(const struct AicModel *model,
                                                 uint32_t sample_rate,
                                                 size_t *num_frames);
    

Fixes

  • Model state reset during pause: The internal model state is now automatically reset when processing is paused (e.g., when bypass is enabled or enhancement level is set to 0). This ensures a clean state when processing resumes.
  • aic_model_reset now resets all DSP components: The reset operation now ensures that all internal DSP components are properly reset, providing a more thorough clean state.
Aug 22, 2025
0.6.3

Updates

  • Updated low-sample rate models: 8- and 16 KHz Quail models updated with improved speech enhancement performance.
Aug 19, 2025
0.6.2

Bug Fixes

  • Fixed output delay issue: Resolved reported output delay problems affecting AIC_MODEL_QUAIL_XS and AIC_MODEL_QUAIL_XXS models
  • Fixed audio quality degradation: Corrected audio distortion that occurred when using enhancement levels below 1.0 with the affected models
Aug 18, 2025
0.6.1

Features

  • A new resampling technique makes resampling much more robust without adding additional latency or performance overhead
  • New models for different sample rates are now available (16 kHz and 8 kHz)
  • The noise gate algorithm has been improved, which leads to better quality
  • The output of aic_get_optimal_num_frames now changes with sample rate so you can always have the lowest output delay
  • The model reset now works as expected and resets the internal model state correctly

Breaking Changes

  • AIC_MODEL_QUAIL_L is now called AIC_MODEL_QUAIL_L48
  • AIC_MODEL_QUAIL_S is now called AIC_MODEL_QUAIL_S48
  • get_library_version is now called aic_get_sdk_version
  • aic_get_processing_latency is now called aic_get_output_delay
  • AIC_PARAMETER_ENHANCEMENT_LEVEL_SKEW_FACTOR has been removed because it led to confusion. The enhancement level is more predictable this way, and a value of 0.0 is always a bypass. If you want to skew the enhancement slider, this has to be done on your end.