CleanvoiceDocs
JavaScript SDK

Configuration Reference

Interactive builder and full reference for every option in the JavaScript SDK.

Every parameter maps directly to client.process().


Option reference

Audio cleaning

OptionTypeDefaultDescription
fillersbooleanfalseRemove "um", "uh", "like", and similar filler words
long_silencesbooleanfalseTrim long pauses and gaps between sentences
mouth_soundsbooleanfalseRemove clicks, lip smacks, and tongue sounds
breathboolean | stringfalseRemove audible breathing between sentences
stuttersbooleanfalseRemove repeated word fragments ("I— I— I think")
hesitationsbooleanfalseRemove short hesitation sounds that aren't full filler words
mutedbooleanfalseSilence edits instead of cutting — preserves original timing

Filler and hesitation detection is language-aware. English, German, and Romanian have the most accurate models. See supported languages.

breath options:

ValueBehavior
trueRecommended for most audio. Best default for challenging recordings.
"legacy"Conservative removal. Safer choice for already-clean recordings.
"natural"Lighter touch — preserves more of the original breathing feel.
falseDisabled (default).

Audio enhancement

OptionTypeDefaultDescription
remove_noisebooleantrueReduce hiss, hum, fan noise, and background sounds. On by default; pass false to disable it.
studio_soundboolean | stringfalseAggressive enhancement for studio-quality output.
normalizebooleanfalseBalance volume levels throughout the file
keep_musicbooleanfalsePreserve music sections during noise reduction
autoeqbooleanfalseLegacy automatic EQ option. Prefer studio_sound; autoeq will be removed in a future release.

studio_sound options:

ValueBehavior
trueRecommended. Applies aggressive studio-quality enhancement.
"nightly"Advanced/experimental variant. Currently behaves similarly to true.
falseDisabled (default).

studio_sound is more aggressive than remove_noise. For most recordings, remove_noise alone is sufficient.

Output

OptionTypeDefaultDescription
export_formatstring'auto'Audio-only output format: 'mp3', 'wav', 'flac', 'm4a', or 'auto' (matches input). Video jobs keep the original video container format.
target_lufsnumber-16Target integrated loudness in LUFS. -16 is the standard for podcasts
mute_lufsnumber-120Gate level for LUFS measurement. Default -120 disables gating.
export_timestampsbooleanfalseReturn a JSON file with edit markers for use in a DAW or NLE

Content generation

OptionTypeDefaultDescription
transcriptionbooleanfalseFull word-by-word transcript. Language auto-detected.
summarizebooleanfalseChapter markers, key learnings, and episode summary. Enables transcription automatically.
social_contentbooleanfalseGenerate tweets, LinkedIn posts, and show notes. Enables summarize automatically.

Delivery

OptionTypeDefaultDescription
signed_urlstringundefinedPre-signed PUT URL. Cleanvoice uploads directly to your storage instead of hosting the file.

Advanced

OptionTypeDefaultDescription
mergebooleanfalseMulti-track only. Merge all tracks into a single output file. If you need automatic level balancing for a merged multi-track job, use automix as the companion option.
audio_for_edlbooleanfalseVideo workflows only. Return additional uncut enhanced audio alongside the edited video for EDL/NLE work.
videobooleanfalseProcess the input as video. The SDK auto-detects common video filenames and URLs, but explicit video: true is safest for ambiguous or extensionless URLs.

For raw REST requests, video must be set to true for actual video editing. Otherwise the file is treated as audio-only. In the SDK, common video paths are auto-detected, but being explicit is still safest.

Full example

import { Cleanvoice } from '@cleanvoice/cleanvoice-sdk';

const client = Cleanvoice.fromEnv();

const result = await client.process('episode.mp3', {
  remove_noise: true,
  studio_sound: true,
  normalize: true,
  fillers: true,
  long_silences: true,
  export_format: 'mp3',
  transcription: true,
});

console.log('Cleaned audio:', result.audio.url);
await result.audio.download('cleaned.mp3');

if (result.transcript) {
  console.log('Transcript:', result.transcript.text);
}