@audiolabtools/ai-sdk
v0.1.0
Published
Vercel AI SDK tools for AudioLab — loudness, voice-quality, and signal analysis via the AudioLab hosted API.
Maintainers
Readme
@audiolabtools/ai-sdk
Audio analysis as Vercel AI SDK tools: let your LLM check loudness, voice quality, and signal properties of any audio URL, with one import.
npm install @audiolabtools/ai-sdk ai @ai-sdk/anthropic
# (or @ai-sdk/openai, etc. — bring your own model)import { generateText } from 'ai';
import { audiolab } from '@audiolabtools/ai-sdk';
import { anthropic } from '@ai-sdk/anthropic';
const result = await generateText({
model: anthropic('claude-opus-4-8'),
tools: audiolab({ apiKey: process.env.AUDIOLAB_API_KEY }).tools,
prompt: 'What is the loudness and true-peak of https://example.com/song.wav?',
});
console.log(result.text);The LLM picks the right tool from your prompt, calls AudioLab's hosted API, and folds the structured response into its answer.
Tools
Every tool takes a public http(s) URL to an audio file; the AudioLab API
fetches and decodes it server-side (nothing is uploaded by the caller).
| Tool | Endpoint | Returns |
|---|---|---|
| analyzeLoudness | POST /mixlab/analyze | Integrated LUFS (EBU R128 / BS.1770-4), true-peak, LRA, crest factor, stereo correlation, tonal-balance bands |
| checkTarget | POST /mixlab/check-target | Pass/fail vs a delivery target (spotify / apple-music / youtube / tidal / amazon-music / podcast / ebu-broadcast / atsc-broadcast, or custom), with deltas + an ffmpeg loudnorm fix |
| analyzeTimeseries | POST /mixlab/timeseries | Short-term LUFS over time + downsampled waveform peaks |
| getSpectrum | POST /mixlab/spectrum | FFT magnitudes + 7-band energies |
| analyzeVoice | POST /voicelab/qa | Speech/silence ratio, speaking rate, SNR, noise floor, room echo, sibilance & clipping risk |
| getSpeechSegments | POST /voicelab/segments | Voiced regions with start/end + per-segment RMS |
| indexSignal | POST /signallab/index | Content-type guess, tags, clipping/silence regions, brightness & dynamics buckets |
| compareLoudness | two mixlab/analyze calls | A/B: runs loudness on urlA + urlB, returns both |
Full TypeScript types ship in index.d.ts, with autocomplete on every response field.
Configuration
audiolab({
apiKey?: string; // AudioLab API key. Falls back to AUDIOLAB_API_KEY env var.
baseUrl?: string; // Override base URL. Default: https://audiolab.tools/v1
fetch?: typeof fetch; // Custom fetch (for testing / proxying).
})Use one tool instead of all eight:
const { analyzeLoudness } = audiolab({ apiKey }).tools;
await generateText({ model, tools: { analyzeLoudness }, prompt: '...' });Status
The hosted API is live with self-serve keys (free tier + paid tiers, Stripe billing live). Sign in at https://audiolab.tools/account to get a key. Prefer to try before wiring it up? The on-device playground at https://audiolab.tools/api#playground runs the same analysis in your browser (no signup, no upload).
License
MIT © Nathan Renting
