Eranol LogoEranol
BlogCommunityDocumentationPricingSign In

General

OverviewGet Started

Universal

Add IntroAdd OutroAudio to VideoBackground AudioCaptions ApiComposeConcatConvert a video file to MP4Convert Audio to Mp3Convert Audio to wavConvert to JPGConvert to WebMConvert to WebPDenoiseEnhanceExtract audio track from a videoExtract images from a videoGenerate a GIF from a videoHighlightsImage TestMergeNotifyOverlayProgress BarReframeRemove SilenceThumbnailTikTokTrimVerifyWatermarkZoom

General

DeleteImage StatusStatusTikTok StatusFFmpeg Results

Need help?

Contact Support

Audio to Video

POST

Convert your voiceovers into Videos

Enhance Voice

POST

Studio-quality voice enhancement using DeepFilterNet (ML) — removes broadband noise underneath speech, the kind plain FFmpeg filters can't separate. Adds optional EQ voice profiles and loudness normalization. Comparable to Adobe "Enhance Speech". Works on audio or video; video in returns enhanced video out by default. Example: {"url": "https://cdn.example.com/raw.mp4", "voice_profile": "bright", "keep_video": true}

Overview

Studio-quality voice enhancement using DeepFilterNet, a trained ML model that removes broadband noise underneath speech.

After noise removal it applies an optional EQ voice profile and loudness normalization, then encodes the result. Video inputs are muxed back onto the original (copied, not re-encoded) video track and returned as MP4; audio-only inputs return audio.

This is an async job: POST to create a job, then poll the status_url until it completes.

Endpoint

POST https://eranol.com/api/v1/ffmpeg/audio/enhance

Request Body

{
  "url": "https://cdn.example.com/raw.mp4",
  "voice_profile": "bright",
  "loudness_target": -16,
  "post_filter": true,
  "atten_limit_db": 100,
  "keep_video": true,
  "output_format": "mp3"
}

Parameters

FieldTypeDefaultDescription
urlstring (URL)requiredRemote audio or video file to enhance.
voice_profilestring"bright"EQ tone applied after noise removal: none (flat), natural (broadcast tone), deep (fuller voice), bright (max clarity for phone speakers — default).
loudness_targetnumber | null-16Target loudness in LUFS. -16 = Spotify/Apple, -14 = YouTube. Range -31 to -5. Set null to skip normalization.
post_filterbooleantrueEnable DeepFilterNet post-filter for stronger noise attenuation. Keep on for noisy sources.
atten_limit_dbnumber100Noise attenuation limit in dB. Range 0 to 100. 100 = full removal; lower blends back some original signal for a more natural result.
keep_videobooleantrueIf input is video, mux enhanced audio back onto the original video and return MP4. Set false to force audio-only output. Audio-only inputs always return audio.
output_formatstring"mp3"Audio format when keep_video is false: mp3 (320 kbps), m4a (AAC 192 kbps), or wav (lossless).

Response Example

{
  "job_id": "9f8b2c1a-7d4e-4a2b-b1c3-0e5f6a7b8c9d",
  "status": "pending",
  "message": "Job created. Poll status_url for progress.",
  "job_type": "enhance",
  "result_url": "https://eranol.com/api/v1/ffmpeg/result/9f8b2c1a-7d4e-4a2b-b1c3-0e5f6a7b8c9d",
  "status_url": "https://eranol.com/api/v1/ffmpeg/status/9f8b2c1a-7d4e-4a2b-b1c3-0e5f6a7b8c9d"
}

Error Codes

CodeMeaning
401Missing or invalid API key
402Insufficient credits
422Validation error — check your request body
429Rate limit exceeded — slow down requests
500Internal server error — try again or contact support

Poll Status

GET

Get the current status of an enhance job. Poll this until status is completed, then read the result object.

Endpoint

GET https://eranol.com/api/v1/ffmpeg/status/{job_id}

Status Values

pending → downloading → processing → completed / failed / cancelled

Progress Stages

"Extracting audio (1/4)" → "Enhancing voice with DeepFilterNet (2/4)" → "Applying 'bright' EQ + loudness (3/4)" → "Encoding output (4/4)"

Response Example (completed)

{
  "job_id": "9f8b2c1a-7d4e-4a2b-b1c3-0e5f6a7b8c9d",
  "job_type": "enhance",
  "status": "completed",
  "progress": null,
  "created_at": 1750684800.12,
  "started_at": 1750684803.44,
  "completed_at": 1750684820.71,
  "result": {
    "url": "https://eranol.com/outputs/enhanced-9f8b2c1a.mp4",
    "filename": "enhanced-9f8b2c1a.mp4",
    "format": "mp4",
    "duration": 30.0,
    "audio_codec": "aac",
    "sample_rate": "48000",
    "resolution": "1280x720",
    "engine": "deepfilternet",
    "voice_profile": "bright",
    "loudness_target": -16.0,
    "post_filter": true,
    "keep_video": true
  }
}

Result Fields

FieldTypeDescription
urlstringPublic download URL of the enhanced file.
filenamestringenhanced-<uuid>.<ext>
formatstringmp4 (video kept) or mp3 / m4a / wav.
durationnumberLength in seconds.
audio_codecstringe.g. aac, mp3, pcm_s16le.
sample_ratestringe.g. "48000".
resolutionstring | null"WxH" for video, null for audio-only.
enginestringAlways "deepfilternet".

Error Codes

CodeMeaning
401Missing or invalid API key
404Job not found
500Internal server error — try again or contact support