· Effects SDK team · 3 min read
Audio Effects SDK 2.6 for the web: new speed model, redesigned AGC, latency modes
Audio Effects SDK 2.6 for the web is about voice quality and predictable latency. The speed preset moves to a new model family, Studio Sound gets a redesigned automatic gain control, a new noise gate and a lookahead limiter, and the jitter buffer learns from underruns. The public API is additive only — denoise-only integrations upgrade without changes. Patch 2.6.1 followed a day later with AGC and noise-gate edge-case fixes.
2.6.0 release notes · 2.6.1 release notes · API reference · Live demo
Do you need to change anything?#
| Your integration | Action |
|---|---|
| Noise suppression only, models from our CDN | Nothing — upgrade |
Self-hosted models (sdk_url on your host) |
Copy two new model files |
| Studio Sound with default options | Check the sound — EQ and compressor are now off by default |
enableAutoGain: true |
Expect lower, steadier gain; the old behavior cannot be restored |
Self-hosted models#
| Preset | 2.5.2 | 2.6.0 |
|---|---|---|
speed |
audio-model-1.0.1.tsvb |
audio-model-4.0.2.wasm (new model family) |
balanced |
audio-model-3.3.2.wasm |
audio-model-3.3.3.wasm |
quality |
audio-model-2.5.0.tsvb |
unchanged |
A missing model does not throw — onReady just never fires. The new getRequiredModels() lets you check the folder:
for (const m of sdk.getRequiredModels()) {
const res = await fetch(m.url, { method: 'HEAD' });
if (!res.ok) console.error(`missing model for "${m.preset}": ${m.path}`);
}
Keep the old files next to the new ones: names are versioned, so clients still on 2.5.x keep working.
Studio Sound defaults#
The equalizer and the compressor are now off unless you turn them on. To keep the 2.5.2 sound:
sdk.setStudioSoundOptions({
enabled: true,
options: { enableEqualizer: true, enableCompressorEQ: true },
});
Options are merged into the current state, so send the whole object on every call.
Studio Sound, rebuilt#
- AGC is now speech-gated. The gain is the lowest of four limits — the RMS target, a peak ceiling from the measured crest factor, an output-noise ceiling and
agcMaxBoostDb— and changes no faster than a fixed number of dB per second. Gain increases wait for sustained speech, so a door slam does not start it climbing, and in noisy rooms the AGC refuses to amplify the room with the voice. - Noise gate sits after the denoiser with softer defaults (−65 dBFS threshold, −18 dB reduction); since 2.6.1 its threshold follows a rolling noise estimate, so first words and quiet microphones survive.
- Limiter is a 5 ms lookahead brickwall limiter: peaks no longer slip through.
New options: agcMaxBoostDb, agcSpeechMarginDb, agcMaxGainChangeDbPerSec, agcStartupGainChangeDbPerSec, agcMaxOutputNoiseDb, agcPeakTargetDb and enableEqualizer. More in the Studio Sound overview.
Latency you can choose#
sdk.config({
context_sample_rate: 48000, // match your encoder (48 kHz for Opus) to skip a resample
latency_mode: 'auto', // 'low' | 'stable' | 'auto'
});
lowstarts with a tight buffer,stablekeeps more slack,autostarts low and backs off after underruns.- The output floor is learned from real underruns instead of being fixed.
- Recovery from latency spikes uses a reworked WSOLA time-compression that is nearly inaudible.
- A new polyphase resampler lets the
AudioContextrun at 48 kHz while the model runs at 16 or 32 kHz.
New diagnostics API#
getLatencyMs(), isRunning(), getInputAudioTrack() (to see which browser processing was really applied), getSpeedupDebugInfo(), enableDebugStats() / onDebugStats() for clipping, limiter hits and underruns, and setDenoiseStages() to skip denoise stages on clean input.
2.6.1 fixes#
- The AGC no longer creeps up on non-speech such as denoiser residue or repeated knocks.
processBuffer()works with thespeedandqualitypresets: the buffer is resampled to the model rate and back. Init failures are reported throughErrorBusinstead of returning an empty buffer, and Studio Sound state no longer leaks between calls.
Getting started: Web guide · Start a free trial