---
title: "ClikaRT::processor::AudioProcessorConfig"
sidebar_label: "AudioProcessorConfig"
description: "Settable configuration for an AudioProcessor (raw waveform / log-mel / filterbank)."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/processor/config.h`

Settable configuration for an [`AudioProcessor`](./AudioProcessor.md) (raw waveform / log-mel / filterbank). Default-constructed to the log-mel defaults; tune the STFT/mel knobs, or round-trip a `preprocessor_config.json` through [`from_json`](./AudioProcessorConfig.md#from_json) / [`to_json`](./AudioProcessorConfig.md#to_json). Move-only.

## Static member functions

### from\_json() {#from_json}

<div class="api-signature">

`static` [`AudioProcessorConfig`](./AudioProcessorConfig.md) **`from_json`**(`std::string_view` `text`)

</div>

Parse from `preprocessor_config.json` text, with the schema semantics of [`ImageProcessorConfig::from_json`](./ImageProcessorConfig.md#from_json) (a missing key takes this class's default; a key outside the schema is ignored for the parse and logged by name).

**Throws**

- `ClikaRT::Error`: on malformed text.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 232

</div>

## Member functions

### AudioProcessorConfig() {#AudioProcessorConfig}

<div class="api-signature">

**`AudioProcessorConfig`**()

</div>

the log-mel defaults; usable with no config file

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 220

</div>

### AudioProcessorConfig(AudioProcessorConfig) {#AudioProcessorConfig-2}

<div class="api-signature">

**`AudioProcessorConfig`**(`AudioProcessorConfig&&`) `noexcept`

</div>

move-construct (the source becomes an empty shell)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 221

</div>

### operator=(AudioProcessorConfig) {#operator-assign}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`operator=`**([`AudioProcessorConfig`](./AudioProcessorConfig.md)`&&`) `noexcept`

</div>

move-assign

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 222

</div>

### AudioProcessorConfig(AudioProcessorConfig) {#AudioProcessorConfig-3}

<div class="api-signature">

**`AudioProcessorConfig`**(`const AudioProcessorConfig&`)

</div>

copy-construct: a deep copy

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 223

</div>

### operator=(AudioProcessorConfig) {#operator-assign-2}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`operator=`**(`const` [`AudioProcessorConfig`](./AudioProcessorConfig.md)`&`)

</div>

copy-assign: a deep copy

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 224

</div>

### \~AudioProcessorConfig() {#AudioProcessorConfig-4}

<div class="api-signature">

**`~AudioProcessorConfig`**()

</div>

destructor

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 225

</div>

### to\_json() {#to_json}

<div class="api-signature">

`std::string` **`to_json`**(`int` `indent` `=` `2`) `const`

</div>

canonical json text (`indent < 0` compact); round-trips through [`from_json`](./AudioProcessorConfig.md#from_json); infallible

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 235

</div>

### set\_sampling\_rate() {#set_sampling_rate}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_sampling_rate`**(`std::int64_t` `hz`)

</div>

waveform sample rate, Hz (default 16000)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 238

</div>

### set\_feature\_size() {#set_feature_size}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_feature_size`**(`std::int64_t` `bins`)

</div>

output feature dimension (default 80; 1 selects the raw pipeline)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 239

</div>

### set\_num\_mel\_bins() {#set_num_mel_bins}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_num_mel_bins`**(`std::int64_t` `bins`)

</div>

mel bank size (default 80)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 240

</div>

### set\_n\_fft() {#set_n_fft}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_n_fft`**(`std::int64_t` `n`)

</div>

FFT size (default 400).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 241

</div>

### set\_hop\_length() {#set_hop_length}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_hop_length`**(`std::int64_t` `n`)

</div>

frame hop, samples (default 160)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 242

</div>

### set\_chunk\_length\_seconds() {#set_chunk_length_seconds}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_chunk_length_seconds`**(`double` `seconds`)

</div>

chunk length, seconds (default 30)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 243

</div>

### set\_feature\_type() {#set_feature_type}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_feature_type`**([`AudioFeatureType`](./index.md#AudioFeatureType) `type`)

</div>

Which pipeline runs (raw / log-mel / kaldi fbank). A config file infers this from [`feature_size`](./AudioProcessorConfig.md#feature_size); set it explicitly when building by hand.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 246

</div>

### set\_win\_length() {#set_win_length}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_win_length`**(`std::int64_t` `n`)

</div>

STFT analysis window length (defaults to n\_fft; must be ≤ n\_fft).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 248

</div>

### set\_window\_function() {#set_window_function}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_window_function`**([`WindowFunction`](./index.md#WindowFunction) `fn`)

</div>

STFT analysis window (default Hann)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 249

</div>

### set\_window\_periodic() {#set_window_periodic}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_window_periodic`**(`bool` `on`)

</div>

Periodic (`2πn/L`, the STFT analysis convention, default) vs symmetric (`2πn/(L−1)`) cosine window.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 252

</div>

### set\_center() {#set_center}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_center`**(`bool` `on`)

</div>

Reflect-pad n\_fft/2 each side before framing (torch STFT center=True).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 254

</div>

### set\_stft\_pad\_style() {#set_stft_pad_style}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_stft_pad_style`**([`StftPadStyle`](./index.md#StftPadStyle) `style`)

</div>

How the center pad distributes (symmetric vs left-only semicausal).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 256

</div>

### set\_fft\_overdrive() {#set_fft_overdrive}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_fft_overdrive`**(`bool` `on`)

</div>

Derive the FFT length as 2·next\_pow2(win\_length), overriding n\_fft.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 258

</div>

### set\_dither() {#set_dither}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_dither`**(`double` `stddev`)

</div>

Gaussian noise stddev added to the waveform before the input scale (0 = off). Deterministic: drawn from the processor's own fixed-seed generator, so a given waveform always produces the same features.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 262

</div>

### set\_preemphasis() {#set_preemphasis}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_preemphasis`**(`double` `coefficient`)

</div>

Per-frame pre-emphasis coefficient (0 = off).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 264

</div>

### set\_preemphasis\_htk\_flavor() {#set_preemphasis_htk_flavor}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_preemphasis_htk_flavor`**(`bool` `on`)

</div>

First-sample convention for pre-emphasis: scale by (1 − p) (default) vs drop it (plain differencing).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 267

</div>

### set\_remove\_dc\_offset() {#set_remove_dc_offset}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_remove_dc_offset`**(`bool` `on`)

</div>

Per-frame DC-offset removal (the kaldi stage order: frame → remove\_dc → pre-emphasis → window). Off by default.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 270

</div>

### set\_log\_floor\_mode() {#set_log_floor_mode}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_log_floor_mode`**([`LogFloorMode`](./index.md#LogFloorMode) `mode`)

</div>

How the mel floor guards the log (clamp, or additive `log(x + floor)`).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 272

</div>

### set\_power() {#set_power}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_power`**(`double` `power`)

</div>

Spectrum exponent: 1 = magnitude, 2 = power (default).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 274

</div>

### set\_mel\_scale() {#set_mel_scale}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_mel_scale`**([`MelScale`](./index.md#MelScale) `scale`)

</div>

hertz-to-mel curve (default Slaney)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 275

</div>

### set\_mel\_norm() {#set_mel_norm}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_mel_norm`**([`MelNorm`](./index.md#MelNorm) `norm`)

</div>

filterbank area normalization (default Slaney)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 276

</div>

### set\_frequency\_range() {#set_frequency_range}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_frequency_range`**(`double` `min_hz`, `double` `max_hz`)

</div>

Mel filterbank frequency range in Hz: `min_hz` (default 0) up to `max_hz` (`0` ⇒ Nyquist, the default).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 279

</div>

### set\_mel\_floor() {#set_mel_floor}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_mel_floor`**(`double` `floor`)

</div>

Pre-log clamp floor.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 281

</div>

### set\_log\_mode() {#set_log_mode}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_log_mode`**([`LogMode`](./index.md#LogMode) `mode`)

</div>

spectrum compression (default Log10)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 282

</div>

### set\_log\_dynamic\_range() {#set_log_dynamic_range}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_log_dynamic_range`**(`double` `range`)

</div>

Clip frames below (max − range); 0 = off.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 284

</div>

### set\_log\_shift() {#set_log_shift}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_log_shift`**(`double` `shift`)

</div>

Post-log affine (x + shift) / scale; identity at 0 / 1.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 286

</div>

### set\_log\_scale() {#set_log_scale}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_log_scale`**(`double` `scale`)

</div>

post-log affine divisor (default 1, identity)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 287

</div>

### set\_input\_scale\_factor() {#set_input_scale_factor}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_input_scale_factor`**(`double` `factor`)

</div>

Scale the waveform before the STFT; 1 = off.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 289

</div>

### set\_normalization(AudioNormKind) {#set_normalization}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_normalization`**([`AudioNormKind`](./index.md#AudioNormKind) `kind`)

</div>

Output normalization. `GlobalMeanStd` reads the SCALAR operands set by the 3-arg overload (element `[0]`); the spans are read during the call.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 292

</div>

### set\_normalization(AudioNormKind, Span\< float\>, Span\< float\>) {#set_normalization-2}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_normalization`**(<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`AudioNormKind`](./index.md#AudioNormKind) `kind`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`ClikaRT::Span`](../Span.md)`<const float>` `mean`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`ClikaRT::Span`](../Span.md)`<const float>` `std`<br />
)

</div>

The operand form: `mean[0]` is subtracted and `std``[0]` divides (the GlobalMeanStd operands); the spans are read during the call.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 295

</div>

### set\_max\_length\_samples() {#set_max_length_samples}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_max_length_samples`**(`std::int64_t` `samples`)

</div>

Cap on input samples (0 ⇒ chunk\_length\_seconds · sampling\_rate).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 298

</div>

### set\_padding\_value() {#set_padding_value}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_padding_value`**(`double` `value`)

</div>

Fill value for the chunk pad-up ([`set_pad_to_chunk`](./AudioProcessorConfig.md#set_pad_to_chunk)).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 300

</div>

### set\_pad\_to\_chunk() {#set_pad_to_chunk}

<div class="api-signature">

[`AudioProcessorConfig`](./AudioProcessorConfig.md)`&` **`set_pad_to_chunk`**(`bool` `on`)

</div>

Extend a shorter-than-chunk waveform up to the chunk with [`padding_value`](./AudioProcessorConfig.md#padding_value) (the fixed-length Whisper-style front-end contract). Off (default) ⇒ the output stays variadic in time.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 304

</div>

### sampling\_rate() {#sampling_rate}

<div class="api-signature">

`std::int64_t` **`sampling_rate`**() `const`

</div>

Hz (default 16000).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 307

</div>

### feature\_size() {#feature_size}

<div class="api-signature">

`std::int64_t` **`feature_size`**() `const`

</div>

output feature dimension (default 80; 1 = raw)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 308

</div>

### num\_mel\_bins() {#num_mel_bins}

<div class="api-signature">

`std::int64_t` **`num_mel_bins`**() `const`

</div>

mel bank size (default 80)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 309

</div>

### n\_fft() {#n_fft}

<div class="api-signature">

`std::int64_t` **`n_fft`**() `const`

</div>

FFT size (default 400).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 310

</div>

### hop\_length() {#hop_length}

<div class="api-signature">

`std::int64_t` **`hop_length`**() `const`

</div>

frame hop, samples (default 160)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 311

</div>

### chunk\_length\_seconds() {#chunk_length_seconds}

<div class="api-signature">

`double` **`chunk_length_seconds`**() `const`

</div>

(default 30)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 312

</div>

### feature\_type() {#feature_type}

<div class="api-signature">

[`AudioFeatureType`](./index.md#AudioFeatureType) **`feature_type`**() `const`

</div>

raw / log-mel / kaldi fbank (default LogMel)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 313

</div>

### win\_length() {#win_length}

<div class="api-signature">

`std::int64_t` **`win_length`**() `const`

</div>

window length, samples (defaults to n\_fft)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 314

</div>

### window\_function() {#window_function}

<div class="api-signature">

[`WindowFunction`](./index.md#WindowFunction) **`window_function`**() `const`

</div>

(default Hann)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 315

</div>

### remove\_dc\_offset() {#remove_dc_offset}

<div class="api-signature">

`bool` **`remove_dc_offset`**() `const`

</div>

per-frame DC removal (default off)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 316

</div>

### center() {#center}

<div class="api-signature">

`bool` **`center`**() `const`

</div>

n\_fft/2 pad before framing (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 317

</div>

### power() {#power}

<div class="api-signature">

`double` **`power`**() `const`

</div>

spectrum exponent (default 2 = power)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 318

</div>

### mel\_scale() {#mel_scale}

<div class="api-signature">

[`MelScale`](./index.md#MelScale) **`mel_scale`**() `const`

</div>

(default Slaney)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 319

</div>

### mel\_norm() {#mel_norm}

<div class="api-signature">

[`MelNorm`](./index.md#MelNorm) **`mel_norm`**() `const`

</div>

(default Slaney)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 320

</div>

### min\_frequency() {#min_frequency}

<div class="api-signature">

`double` **`min_frequency`**() `const`

</div>

Hz (default 0).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 321

</div>

### max\_frequency() {#max_frequency}

<div class="api-signature">

`double` **`max_frequency`**() `const`

</div>

Hz (0 = Nyquist, the default).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 322

</div>

### mel\_floor() {#mel_floor}

<div class="api-signature">

`double` **`mel_floor`**() `const`

</div>

pre-log floor (default 1e-10)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 323

</div>

### log\_mode() {#log_mode}

<div class="api-signature">

[`LogMode`](./index.md#LogMode) **`log_mode`**() `const`

</div>

(default Log10)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 324

</div>

### log\_dynamic\_range() {#log_dynamic_range}

<div class="api-signature">

`double` **`log_dynamic_range`**() `const`

</div>

clip below max - range (default 0 = off)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 325

</div>

### log\_shift() {#log_shift}

<div class="api-signature">

`double` **`log_shift`**() `const`

</div>

post-log affine shift (default 0)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 326

</div>

### log\_scale() {#log_scale}

<div class="api-signature">

`double` **`log_scale`**() `const`

</div>

post-log affine divisor (default 1)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 327

</div>

### input\_scale\_factor() {#input_scale_factor}

<div class="api-signature">

`double` **`input_scale_factor`**() `const`

</div>

pre-STFT waveform scale (default 1 = off)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 328

</div>

### normalization() {#normalization}

<div class="api-signature">

[`AudioNormKind`](./index.md#AudioNormKind) **`normalization`**() `const`

</div>

output normalization kind (default None)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 329

</div>

### max\_length\_samples() {#max_length_samples}

<div class="api-signature">

`std::int64_t` **`max_length_samples`**() `const`

</div>

sample cap (default 0 = chunk seconds x rate)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 330

</div>

### padding\_value() {#padding_value}

<div class="api-signature">

`double` **`padding_value`**() `const`

</div>

chunk pad-up fill (default 0)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 331

</div>

### pad\_to\_chunk() {#pad_to_chunk}

<div class="api-signature">

`bool` **`pad_to_chunk`**() `const`

</div>

pad short clips up to the chunk (default off)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 332

</div>
