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 Code | Value | 
|---|---|
| AIC_ERROR_CODE_SUCCESS | 0 | 
| AIC_ERROR_CODE_NULL_POINTER | 1 | 
| AIC_ERROR_CODE_LICENSE_INVALID | 2 | 
| AIC_ERROR_CODE_LICENSE_EXPIRED | 3 | 
| AIC_ERROR_CODE_UNSUPPORTED_AUDIO_CONFIG | 4 | 
| AIC_ERROR_CODE_AUDIO_CONFIG_MISMATCH | 5 | 
| AIC_ERROR_CODE_NOT_INITIALIZED | 6 | 
| AIC_ERROR_CODE_PARAMETER_OUT_OF_RANGE | 7 | 
| AIC_ERROR_CODE_SDK_ACTIVATION_ERROR | 8 | 
New Error Codes
| Error Code | Value | Notes | 
|---|---|---|
| AIC_ERROR_CODE_SUCCESS | 0 | Unchanged | 
| AIC_ERROR_CODE_NULL_POINTER | 1 | Unchanged | 
| AIC_ERROR_CODE_PARAMETER_OUT_OF_RANGE | 2 | Renumbered from 7 | 
| AIC_ERROR_CODE_MODEL_NOT_INITIALIZED | 3 | Renamed from AIC_ERROR_CODE_NOT_INITIALIZED, renumbered from 6 | 
| AIC_ERROR_CODE_AUDIO_CONFIG_UNSUPPORTED | 4 | Renamed from AIC_ERROR_CODE_UNSUPPORTED_AUDIO_CONFIG | 
| AIC_ERROR_CODE_AUDIO_CONFIG_MISMATCH | 5 | Unchanged | 
| AIC_ERROR_CODE_ENHANCEMENT_NOT_ALLOWED | 6 | New. SDK key was not authorized or process failed to report usage. Check if you have internet connection. | 
| AIC_ERROR_CODE_INTERNAL_ERROR | 7 | New. Internal error occurred. Contact support. | 
| AIC_ERROR_CODE_LICENSE_FORMAT_INVALID | 50 | Renamed from AIC_ERROR_CODE_LICENSE_INVALID, renumbered from 2 | 
| AIC_ERROR_CODE_LICENSE_VERSION_UNSUPPORTED | 51 | New. License version is not compatible with the SDK version. Update SDK or contact support. | 
| AIC_ERROR_CODE_LICENSE_EXPIRED | 52 | Renumbered from 3 | 
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.
Breaking Changes
- Variable number of frames supported: The aic_model_processfunction now supports a variable number of frames per call. To enable this feature, use the newallow_variable_framesparameter in theinitializefunction:Setallow_variable_framestotrueto enable variable frame processing, orfalseto maintain the previous fixed frame behavior. Note that enabling variable frames results in higher processing delay.
- New bypass parameter: A new parameter AIC_PARAMETER_BYPASShas 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 takessample_rateas an argument to make the dependency between sample rate and optimal frame count more explicit:
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_resetnow resets all DSP components: The reset operation now ensures that all internal DSP components are properly reset, providing a more thorough clean state.
Updates
- Updated low-sample rate models: 8- and 16 KHz Quail models updated with improved speech enhancement performance.
Bug Fixes
- Fixed output delay issue: Resolved reported output delay problems affecting AIC_MODEL_QUAIL_XSandAIC_MODEL_QUAIL_XXSmodels
- Fixed audio quality degradation: Corrected audio distortion that occurred when using enhancement levels below 1.0 with the affected models
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_framesnow 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_Lis now called- AIC_MODEL_QUAIL_L48
- AIC_MODEL_QUAIL_Sis now called- AIC_MODEL_QUAIL_S48
- get_library_versionis now called- aic_get_sdk_version
- aic_get_processing_latencyis now called- aic_get_output_delay
- AIC_PARAMETER_ENHANCEMENT_LEVEL_SKEW_FACTORhas 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.