On this page ▾
AudicLabs

Documentation

See the production architectureOpen →

AudicLabs is a speech AI platform. Tools run in the web studio, and every model is also published through the Middleware gateway, so the same service you use in the browser can be called from your own product with one access token.

Overview

Studio

A browser workspace for the connected tools. Sign in, upload audio, compare and download results.

Gateway

One front door for every published model: scoped tokens, rate limits, quotas, credits and request logs.

Noise Suppressor

The Audic models remove background noise from recordings of any sample rate, one file or a whole batch at a time.

Quick start

  1. 1Sign in to the studio.
  2. 2Open Noise Suppressor, drop in a noisy recording and press Remove noise.
  3. 3To call it from code, get a gateway token from your workspace admin and use the API below.
Studio guide

Noise Suppressor

Upload a file, record from your microphone, or load the built-in noisy sample clip. Pick a model, set the noise reduction limit and output format, then press Remove noise. The original and the cleaned audio play side by side, and the cleaned file downloads in one click.

SettingWhat it does
ModelAudic 1 is fastest, Audic 2 is the balanced default, Audic 3 and Audic 4 trade speed for quality, and Audic 2 HD keeps full-band 48 kHz audio.
Noise reduction limitCaps how much noise is removed, in dB. 0 means unlimited. Lower values keep more of the room tone.
Output formatWAV or FLAC. The output keeps the sample rate of the file you uploaded.
Accepted inputs: WAV, FLAC and OGG natively; MP3, M4A, WebM, Opus and most other formats are converted on the server. Files are limited to 100 MB.

API explorer & keys

The API explorer lists every service published to the gateway, with a request runner and code snippets. Services registered in the gateway appear there automatically, without a studio release.

API reference

Base URL & auth

Every API is reached through the gateway at https://internal.audiclabs.com/v1/{service}/{endpoint}. Send your access token in the Authorization header as a bearer token, or as X-API-Key. Tokens are scoped: a token granted noise-suppressor:* can call every Noise Suppressor endpoint and nothing else.

Authentication
Authorization: Bearer mw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
X-API-Key: mw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

POST /v1/noise-suppressor/denoise

Upload one audio file as multipart/form-data and receive the cleaned audio.

curl
curl -X POST https://internal.audiclabs.com/v1/noise-suppressor/denoise \
  -H "Authorization: Bearer $KEY" \
  -F file=@noisy.wav \
  -F model=audic-2 \
  -o clean.wav
FieldTypeDescription
filefileRequired. The audio to clean.
modelstringModel id from GET /models. Defaults to the server default.
attenuation_limit_dbnumber0 to 100. Maximum noise reduction in dB; 0 is unlimited.
output_formatwav | flacEncoding of the returned audio. Default wav.
keep_input_sample_ratebooleanReturn audio at the input sample rate. Default true.
responseaudio | jsonaudio returns the file; json returns base64 audio plus stats.

POST /v1/noise-suppressor/denoise/batch

Clean up to 25 files in one call with the same settings. Repeat the files field once per file; the other fields are the same as /denoise. The response is denoised.zip with every cleaned file plus manifest.json. A file that fails is listed in the manifest with its error and does not stop the rest of the batch.

curl
curl -X POST https://internal.audiclabs.com/v1/noise-suppressor/denoise/batch \
  -H "Authorization: Bearer $KEY" \
  -F files=@call-1.wav \
  -F files=@call-2.mp3 \
  -F files=@interview.m4a \
  -F model=audic-2 \
  -o denoised.zip
Python
import requests

files = [("files", open(p, "rb")) for p in ["call-1.wav", "call-2.mp3", "interview.m4a"]]
r = requests.post("https://internal.audiclabs.com/v1/noise-suppressor/denoise/batch",
                  headers={"Authorization": "Bearer YOUR_TOKEN"},
                  files=files, data={"model": "audic-2"}, timeout=900)
r.raise_for_status()
open("denoised.zip", "wb").write(r.content)
manifest.json
{
  "model": "audic-2", "output_format": "wav",
  "files": 3, "succeeded": 3, "failed": 0, "processing_s": 7.9,
  "items": [
    { "index": 0, "input": "call-1.wav", "status": "ok",
      "output": "call-1_denoised.wav", "bytes": 312364,
      "stats": { "duration_s": 9.77, "processing_s": 2.61, "rtf": 0.27 } }
  ]
}
FieldTypeDescription
filesfile, repeatedRequired. Up to 25 audio files, 100 MB each, 200 MB per request.
model, attenuation_limit_db, output_format, keep_input_sample_rateSame as /denoise; applied to every file.
responsezip | jsonzip returns denoised.zip; json returns the manifest with audio_base64 per file.

GET /v1/noise-suppressor/models

Lists every model with its sample rate, description and whether it is installed.

Response
{
  "models": [
    { "id": "audic-2", "label": "Audic 2 · Balanced", "sample_rate": 16000,
      "description": "Balanced quality and speed. Recommended default.",
      "available": true, "size_mb": 10.2 }
  ],
  "default": "audic-2"
}

GET /v1/noise-suppressor/sample

Returns a short noisy 16 kHz speech clip for testing.

GET /v1/noise-suppressor/health

Service status, version and installed models. Free to call; use it for monitoring.

Models

ModelRateUse it for
audic-116 kHzAudic 1 · Fast. Real-time and high-volume jobs.
audic-216 kHzAudic 2 · Balanced. The default for most speech.
audic-316 kHzAudic 3 · Quality. Cleaner output, slower.
audic-416 kHzAudic 4 · Studio. Best 16 kHz quality.
audic-2-hd48 kHzAudic 2 HD. Full-band audio for music beds and broadcast.

Response headers

HeaderMeaning
X-NS-StatsJSON processing stats for /denoise: durations, sample rates and real-time factor.
X-NS-BatchJSON summary for /denoise/batch: files, succeeded, failed and processing time.
X-Request-IdCorrelates the call with the gateway request log. Quote it in support requests.
RateLimit-RemainingRequests left in the current rate-limit window for this token.

Errors & limits

Gateway errors share one JSON shape, so clients can branch on error.type:

Error
{"error": {"type": "scope_denied",
           "message": "This token is not scoped for 'noise-suppressor:denoise'.",
           "request_id": "req_01J7Z…"}}
TypeStatusWhen
missing_token / invalid_token401No token, or a token the gateway does not recognise.
scope_denied403The token is not scoped for this service or endpoint.
rate_limited429Too many requests; retry after the Retry-After header.
quota_exhausted402The workspace has used its monthly quota or credits.
payload_too_large413The upload is larger than the endpoint allows.
upstream_unavailable502 / 503The Noise Suppressor is unreachable or restarting.
Good to know

Support

Use the Feedback button in the studio header to report a bug or suggest an idea. For access tokens and workspace changes, contact your workspace admin. Live component health is on the status page.