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
A browser workspace for the connected tools. Sign in, upload audio, compare and download results.
One front door for every published model: scoped tokens, rate limits, quotas, credits and request logs.
The Audic models remove background noise from recordings of any sample rate, one file or a whole batch at a time.
Quick start
- 1Sign in to the studio.
- 2Open Noise Suppressor, drop in a noisy recording and press Remove noise.
- 3To call it from code, get a gateway token from your workspace admin and use the API below.
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.
| Setting | What it does |
|---|---|
| Model | Audic 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 limit | Caps how much noise is removed, in dB. 0 means unlimited. Lower values keep more of the room tone. |
| Output format | WAV or FLAC. The output keeps the sample rate of the file you uploaded. |
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.
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.
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 -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
| Field | Type | Description |
|---|---|---|
| file | file | Required. The audio to clean. |
| model | string | Model id from GET /models. Defaults to the server default. |
| attenuation_limit_db | number | 0 to 100. Maximum noise reduction in dB; 0 is unlimited. |
| output_format | wav | flac | Encoding of the returned audio. Default wav. |
| keep_input_sample_rate | boolean | Return audio at the input sample rate. Default true. |
| response | audio | json | audio 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 -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
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){
"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 } }
]
}| Field | Type | Description |
|---|---|---|
| files | file, repeated | Required. Up to 25 audio files, 100 MB each, 200 MB per request. |
| model, attenuation_limit_db, output_format, keep_input_sample_rate | Same as /denoise; applied to every file. | |
| response | zip | json | zip 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.
{
"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
| Model | Rate | Use it for |
|---|---|---|
| audic-1 | 16 kHz | Audic 1 · Fast. Real-time and high-volume jobs. |
| audic-2 | 16 kHz | Audic 2 · Balanced. The default for most speech. |
| audic-3 | 16 kHz | Audic 3 · Quality. Cleaner output, slower. |
| audic-4 | 16 kHz | Audic 4 · Studio. Best 16 kHz quality. |
| audic-2-hd | 48 kHz | Audic 2 HD. Full-band audio for music beds and broadcast. |
Response headers
| Header | Meaning |
|---|---|
| X-NS-Stats | JSON processing stats for /denoise: durations, sample rates and real-time factor. |
| X-NS-Batch | JSON summary for /denoise/batch: files, succeeded, failed and processing time. |
| X-Request-Id | Correlates the call with the gateway request log. Quote it in support requests. |
| RateLimit-Remaining | Requests 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": {"type": "scope_denied",
"message": "This token is not scoped for 'noise-suppressor:denoise'.",
"request_id": "req_01J7Z…"}}| Type | Status | When |
|---|---|---|
| missing_token / invalid_token | 401 | No token, or a token the gateway does not recognise. |
| scope_denied | 403 | The token is not scoped for this service or endpoint. |
| rate_limited | 429 | Too many requests; retry after the Retry-After header. |
| quota_exhausted | 402 | The workspace has used its monthly quota or credits. |
| payload_too_large | 413 | The upload is larger than the endpoint allows. |
| upstream_unavailable | 502 / 503 | The Noise Suppressor is unreachable or restarting. |
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.