Voice & transcription
Record → Upload → Transcribe → Retrieve text and captions.
Use the Recorder (or any upload path), enable a Transcription output preset, then read
track.transcription and authorize the timed WebVTT output the same way you access other files.
Optional — uses AI Credits
Transcription is not enabled for every upload. Add a Transcription output preset in the dashboard
(the public create-preset API only accepts transcode and preview).
Successful runs debit AI Credits by audio duration.
Record or upload spoken audio
The Recorder captures microphone audio and uploads a track with a Client-Side Upload key (or a server-created upload session):
npm install @audiodn/components import '@audiodn/components/recorder' <audiodn-recorder
api-key="CLIENT-SIDE-UPLOAD-KEY"
collection-id="COLLECTION-ID"
accent-color="#ff00ff"
></audiodn-recorder> Any upload path works — Uploader, Recorder, or the REST API.
Enable a Transcription output preset
A Transcription preset (transcribe) runs speech-to-text. Configure it once for the organization:
- Language — leave empty for auto-detect, or pin a language on the preset
- Speaker labels — optional via the preset’s diarization setting
- Required — defaults off, so playback can become
readybefore transcription finishes
Failed runs leave transcription and transcription_language as null.
Overview: Output Presets → Transcription.
Read the plain-text transcript
After the preset succeeds, GET /v1/track/:track_id includes read-only
transcription (plain-text paragraphs) and transcription_language (BCP-47, for example en).
Both stay null until a successful run. The Track Processing webhook includes the same fields on the nested track object; the Output webhook does not.
const res = await fetch(`https://api.audiodelivery.net/v1/track/${track_id}`, {
headers: { Authorization: 'Bearer YOUR_API_ACCESS_KEY' },
});
const { track } = await res.json();
console.log(track.transcription);
console.log(track.transcription_language); Access the WebVTT caption file
The same preset also stores a timed .vtt file as a normal track output
(default delivery index transcript). It is not inlined on GET /v1/track/:id.
Authorize it like any other output — typically a play session that includes the caption index in variants:
const response = await fetch('https://api.audiodelivery.net/v1/play_session/track', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_ACCESS_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
track_id: 'TRACK-ID',
variants: ['hq', 'transcript'],
expires_in: 3600,
}),
});
const { first_track } = await response.json();
const vtt = first_track.variants.find(
(entry) => entry.variant?.index === 'transcript'
);
// vtt.url — time-limited signed URL for the .vtt file Track text vs caption file
track.transcription is the full plain-text transcript.
The WebVTT output is a separate caption file with cue timing.
The AudioDN Player does not render captions yet — that is on the
roadmap.
Illustrative WebVTT shape:
WEBVTT
00:00:00.000 --> 00:00:04.200
Welcome to today's episode.
00:00:04.500 --> 00:00:08.000
We are talking about audio delivery. Know when each piece is ready
Playback-ready
Track status reaches ready when a required playable audio output succeeds. Transcription is usually still optional at that point.
Plain-text transcript
Present on the track once the preset succeeds, or via a Track Processing webhook.
VTT file
Reported by the Outputs webhook for the transcript index, or visible under that track’s processing outputs.
All outputs finished
The track’s files-completed timestamp is set when every configured preset has been attempted.