Audio Transcription
AutoTalk turns audio into text in two ways:
- Automatic chat transcription — inbound voice notes on your channels are transcribed inline so agents and AI agents can read them immediately.
- Standalone transcription — transcribe any audio file in your storage
(interviews, meetings, podcasts — hours long if needed) into downloadable
.txt,.srt,.vttand.jsontranscripts, optionally with speaker labels.
Both are configured through transcription profiles.
Transcription profiles
A profile is a reusable, company-wide transcription configuration. Manage them under Company → Transcription profiles. Every company starts with a default OpenAI (platform) profile, so transcription works out of the box.
| Provider type | What it does | Billing |
|---|---|---|
openai | Uses OpenAI Whisper. With no API key set it uses AutoTalk's platform key; set your own OpenAI key to make it BYOK. | With the platform key (no API key), billed on the Speech-to-text meter (stt_ms) on your AutoTalk invoice. With your own OpenAI key it's BYOK — billed by your provider, and only tracked on the internal, unbilled audio_ms_byok counter. |
openai_compatible | Sends audio to your own Whisper-compatible endpoint (your OpenAI key, Groq, a self-hosted faster-whisper server, …). | Billed by your provider; AutoTalk only tracks usage. |
diarize | Sends audio to a self-hosted WhisperX box that also identifies who spoke (speaker diarization). | Billed by you (your hardware); AutoTalk only tracks usage. |
assemblyai | Sends audio to AssemblyAI, a hosted service that also identifies who spoke — speaker labels with no hardware of your own. With no API key set it uses AutoTalk's platform account; set your own AssemblyAI key to make it BYOK. | With the platform account (no API key), billed on the Speech-to-text meter (stt_ms) on your AutoTalk invoice. With your own key it's BYOK — billed by AssemblyAI. |
cloudflare | Sends audio to Deepgram Nova-3 on Cloudflare Workers AI. The fastest option for long files, but it does not label speakers. Leave the account ID and API key empty to use AutoTalk's platform account, or set both to run on your own Cloudflare account. | With the platform account, billed on the Speech-to-text meter (stt_ms) on your AutoTalk invoice. With your own account ID + token it's BYOK — billed by Cloudflare. |
Profile fields:
- Name — shown in pickers.
- Provider type — one of the five above.
- Base URL — your endpoint (
openai_compatibleanddiarizeonly). Must be a public HTTP(S) URL. Theopenai,assemblyaiandcloudflareproviders talk to fixed endpoints, so the field is hidden for them. - Cloudflare account ID — (
cloudflareprofiles only) your account ID, 32 hexadecimal characters. Empty means AutoTalk's platform Cloudflare account. It must be set together with the API key: setting only one of the two is rejected, rather than quietly falling back to the platform account. - Model — optional model override. Empty uses that provider's own
default:
whisper-1foropenai,universal-2forassemblyai,@cf/deepgram/nova-3forcloudflare. On AutoTalk's platform account the two hosted providers accept only models AutoTalk prices; attach your own credentials to run others. Acloudflaremodel must be a Workers AI model id (@cf/publisher/model) in both cases — your own credentials change which models you may pick, not the form they take. - Voice mode model — (
openaiprofiles only) the realtime model the in-app voice mode uses while this is the company default. Empty meansgpt-4o-mini-transcribe, which bills only the speech it detects.gpt-live-transcribeshows your words while you are still speaking, but bills every minute the microphone is open (silence included) at about 5.7× the rate — roughly 10× the default on a typical conversation. Always billed on AutoTalk's Speech-to-text meter (stt_ms), even on a profile with its own API key. - Language — default transcription language (empty uses your company locale).
- API key — your provider key, AssemblyAI key, Cloudflare API token or
self-hosted shared secret. Stored encrypted, and sent to the provider in
whatever form that provider expects. Leaving it empty on an
openai,assemblyaiorcloudflareprofile is what puts that profile on AutoTalk's platform account. - Headers — optional extra HTTP headers sent to BYO provider endpoints
(shown for
openai_compatible/diarizeprofiles). - Company default — the profile used whenever a channel or job doesn't pick one explicitly.
Channels can pin a specific profile in the channel's Transcription
options. Channels accept any profile that does not label speakers —
today openai, openai_compatible and cloudflare. Profiles that always
diarize (diarize, assemblyai) are for standalone jobs only: inbound voice
notes have a single speaker, and the inbound path has to answer immediately.
Transcribing a file from Storage
- Open Company → Storage, select an audio file, and pick Transcribe (context menu or the details panel).
- Choose the profile, language and output formats. If the profile is a diarization profile, the transcript will label speakers.
- Click Transcribe. The dialog switches to a live progress view — you can close it at any time; the job keeps running in the background.
- Track jobs in the Transcriptions panel (side menu or the shortcut in the Storage toolbar). When a job finishes you'll also get a notification.
- Outputs are saved next to the source file as
<name>.transcript.<jobId>.txt/srt/vtt/json(the job id keeps each run's output distinct so re-runs never collide), and the panel offers downloads, a copy button and a read-only viewer with timestamps and speaker labels.
Long files are handled automatically. openai and openai_compatible
profiles split the audio into chunks, transcribe them in parallel and stitch
the result back with correct timestamps; the other three take the whole file in
one pass. How long a file may be depends on the profile's provider:
| Provider | Longest file |
|---|---|
openai, openai_compatible | 4 hours |
assemblyai | 139 minutes |
cloudflare | 81 minutes |
diarize (self-hosted WhisperX) | 90 minutes |
The length limit is checked before any processing starts, so an over-long file is rejected immediately instead of failing partway through.
The two hosted limits are AutoTalk's, not the providers': AssemblyAI itself accepts files up to 10 hours. AutoTalk converts every file to a standard audio format before transcribing it, and that converted copy has a size budget — so the real limit is a number of megabytes, and these figures are what that budget works out to in minutes. They are set against the largest a converted file can possibly get, not a typical one, so a recording does not have to be small or quiet to fit.
Self-hosted diarization (WhisperX)
Speaker labels can come from a self-hosted WhisperX + pyannote service you
run on your own GPU machine (12 GB VRAM recommended; smaller cards work with
the int8 option). Setup — including the required Hugging Face token for the
gated pyannote models — is documented in the
autotalk-transcription-gpu
repository README. Point a diarize profile at your box's URL with the
shared secret as the API key, and it becomes available in the Transcribe
dialog.
If you would rather not run hardware, an assemblyai profile produces speaker
labels too — see the provider table above.
API
Transcription jobs are also available programmatically:
POST /v1/transcriptions— enqueue a job (fullPath, optionalprofileId,languageCode,formats).GET /v1/transcriptions/{id}— job status, progress and output paths.
MCP-connected agents can call the transcribe_storage_file and
get_transcription_job tools for the same flow.
Billing details
- Platform transcription — an
openai,assemblyaiorcloudflareprofile running on AutoTalk's own credentials — bills the Speech-to-text meter (stt_ms), normalized by provider cost, and respects your plan's monthly limits. - BYO and self-hosted profiles are not billed by AutoTalk — usage is
tracked on the internal
audio_ms_byokcounter for your reference only. That counter is shared with bring-your-own-key voice synthesis and never appears on an invoice. - Audio preparation (normalization/splitting) bills the transcoding meter, like other media processing.