API

speech-enhance

Cleans speech with DeepFilterNet 3 — the same neural network and model file the site runs in the browser for /voice-enhancer and /denoise — then brings it to a loudness target. Built for voice notes from messengers (Telegram, WhatsApp and MAX send Ogg Opus), calls, interviews and podcasts; music under the voice is treated as noise. Stage the input with POST /v1/uploads first. ASYNCHRONOUS: the call returns 202 with a run id and its place in the queue — poll GET /v1/runs/{id}, or register a webhook. `strength: auto` picks the depth per file: the full network on noisy speech, 0.9 on speech the network hears as clean, 0.7 on narrow-band speech (a phone line, a muffled mic), where the full network was measured to cost intelligibility. On our corpus of 308 messenger voice notes it kept most of the full network's gain while making far fewer files less intelligible (numbers in the docs). EQ and compressor are OFF by default because on the same corpus both lowered intelligibility; turn them on when the voice goes into a music mix. Loudness is a static gain to `loudness_lufs`; when that would push a peak past −1.5 dBTP a limiter joins and the gain is corrected against the delivered file (up to two passes) — very peaky speech can still land about 1 LU under the target, and `meta.output_lufs` says what was achieved. The result reports measured loudness and peak, so an agent can verify it instead of trusting it.

v1 beta server · 30 tokens

Price (server): 120 tokens per minute of audio, billed by the second, at least 30 per call; paid plans: −5%, rounded up. The exact figure for your file: POST /v1/tools/speech-enhance/estimate.

Call it

POST https://timbrica.com/v1/tools/speech-enhance/runs
Authorization: Bearer $TIMBRICA_KEY
Idempotency-Key: <your retry-safe key>
Content-Type: application/json

Input

FieldTypeRequiredNotes
audio object yes Staged input file — any audio or video format ffmpeg reads (ogg/opus, mp3, m4a, wav, flac, webm, mp4 …). Upload it with POST /v1/uploads (multipart `file`, or JSON {"url":"…"}). Multichannel input is mixed to mono.
strength string no How much of the network's noise removal to keep. `auto` decides per file (full on noisy speech, 0.9 on speech the network hears as clean, 0.7 on narrow-band speech); `light` caps the reduction at ≈10 dB and keeps some room tone, `medium` at ≈20 dB, `strong` applies the network in full.
one of: auto, light, medium, strong
default: auto
normalize boolean no Bring the result to `loudness_lufs` (static gain; a peak limiter joins only when the gain would push a true peak above −1.5 dBTP).
default: 1
loudness_lufs number no Integrated loudness target, LUFS. −16 suits voice and podcasts; −14 matches streaming music; −23 is EBU R128 broadcast.
default: -16
eq string no Voice EQ. `clarity` cuts mud and lifts presence, `warmth` adds body and softens sibilance. Off by default: on the measured corpus EQ lowered intelligibility.
one of: off, clarity, warmth
default: off
compressor string no Voice compressor before the loudness stage — evens out a voice that has to sit in a music mix. Off by default for the same reason as `eq`.
one of: off, light, medium
default: off
format string no Output format (mono). wav = 16-bit PCM, mp3 = 192 kbps, m4a = AAC 160 kbps, ogg = Opus 64 kbps (what messengers send).
one of: wav, flac, mp3, m4a, ogg
default: wav
sample_rate integer no Output sample rate, Hz. The network works at 48 kHz.
one of: 48000, 44100, 24000, 16000
default: 48000

Input file

Stage it with POST /v1/uploads (multipart `file`, or JSON {"url": "…"}), then pass {"file_id": "<id>"} in each listed input field.
file fields: audio

Errors it can return

validation_failed  too_long  insufficient_tokens  concurrency_limited  upstream_unavailable 

History

  • v1 — 2026-10-18 — Initial release (server lane, async, per-second pricing).

This contract cannot change without a new version and a line above: a test compares the published schema, pricing and limits against a committed lockfile and fails the build otherwise. Subscribe to /v1/changelog to be told when something moves.