Transcribing a Large Audio Archive: Cost, Planning, and Quality Control
Archive projects fail in predictable ways: the budget is set before anyone measures the audio, quality is checked after everything has been processed, and the metadata problem is discovered at the end. None of that is about transcription technology.
Measure before you budget
The first question is how many hours of audio you actually have, and almost nobody knows. File counts are misleading — a thousand files might be forty hours of voicemail or nine hundred hours of interviews.
# ffprobe is the quickest way to get real numbers.
find ./archive -type f \( -name '*.mp3' -o -name '*.wav' -o -name '*.m4a' \) \
-exec ffprobe -v quiet -show_entries format=duration -of csv=p=0 {} \; \
| awk '{total += $1} END {printf "%.1f hours across %d files\n", total/3600, NR}'
At $0.02 per minute, hours times $1.20 is your transcription cost. Nine hundred hours is $1,080. That number is usually far lower than people expect, which is worth establishing early because it changes what is worth arguing about.
It also reframes the project. When transcription costs a thousand dollars rather than a hundred thousand, the expensive part of the project is deciding what to do with the transcripts — and that is where the planning effort should go.
Audit the audio, not just the duration
Archives are heterogeneous in ways that matter. Before processing everything, pull a stratified sample — oldest, newest, shortest, longest, and a few from each source or format — and listen to them.
- How many speakers are typically present, and does it vary by era or source?
- Is the recording quality consistent, or did the equipment change partway through?
- Are there long silences, music, or non-speech sections that will transcribe as noise?
- Is more than one language present?
- Do recordings contain personal or sensitive information about identifiable people?
- Are any files corrupt, truncated, or silent?
That last one is worth a scripted check across the whole archive rather than a sample. Silent and corrupt files are common in old collections, and paying to transcribe them produces empty transcripts and confusing failures.
Run a pilot, and make it representative
Transcribe twenty to fifty hours before committing to the rest. The temptation is to pilot on the best audio; resist it, because the pilot exists to find problems.
What the pilot should tell you: whether accuracy on the worst material is usable, whether speaker labelling holds up on your typical number of participants, which proper nouns recur often enough to be worth putting in a vocabulary prompt, and how much human correction the intended use will actually require.
The vocabulary list is the highest-return artefact
Most archives are about something — an organisation, a place, a field, a set of recurring people. Building a list of the names and terms that appear repeatedly, then passing it as a prompt on every job, fixes the error class that would otherwise appear in every single transcript. Do this after the pilot, before the bulk run.
Plan the metadata before you start
This is where archive projects most often go wrong, and it has nothing to do with transcription quality.
A thousand transcripts with no reliable link back to their source recording, no date, and no participant information is a much less useful asset than eight hundred that are properly catalogued. Decide up front what each transcript needs to carry: source file path and checksum, recording date, participants where known, collection or series, access restrictions, and the job ID.
Keep the job ID. It lets you re-fetch a transcript, prove provenance, and reconcile billing against work done.
Sequencing the run
Submit everything and then collect, rather than processing one file at a time. Jobs run in parallel, so a batch is bounded by the longest single recording rather than the sum. Our polling guide covers the resumable submit-persist-collect pattern in code.
Process in tranches rather than all at once, though — a few hundred files at a time. Tranches give you a checkpoint to review output, adjust the vocabulary prompt, and catch a systematic problem before it has affected the entire archive rather than five percent of it.
Watch credit. A large run can exhaust a balance mid-batch, and a 402 partway through a tranche will fail every remaining file in it. Top up ahead of the run and treat insufficient-credit errors as fatal to the batch rather than retryable.
Quality control that is proportionate
You cannot read a thousand transcripts, and you do not need to. Sample instead, and weight the sample toward the material most likely to be poor: earliest recordings, worst audio, most speakers, unfamiliar accents or vocabulary.
Automated checks catch more than people expect. Flag transcripts that are suspiciously short relative to the audio duration, that contain very few distinct speakers when many were expected, or that have long stretches of repeated text — a classic signature of a model struggling with poor input.
def flag(job: dict) -> list[str]:
issues = []
words = len((job.get("transcription") or "").split())
minutes = job.get("audio_duration_minutes") or 0
# Conversational speech runs ~130-160 words per minute.
if minutes and words / minutes < 60:
issues.append("suspiciously sparse — check for silence or bad audio")
if minutes and words == 0:
issues.append("empty transcript")
speakers = {
line.split(" ", 1)[0]
for line in (job.get("diarization") or "").splitlines()
if line.startswith("SPEAKER_")
}
if len(speakers) < 2:
issues.append("only one speaker detected")
return issues
Running that over every transcript costs nothing and surfaces the small percentage worth a human listening to.
Where the audio is processed
Archives are exactly the collections where residency matters most, because they are large, they are permanent, and they frequently contain personal information about people who never anticipated their recording being processed by a third party.
Oral history collections, recorded consultations, historical interviews, and organisational records all fall here. Where that material relates to Australians, sending it offshore is a cross-border disclosure engaging APP 8 — and doing it across an entire archive at once is not a small disclosure.
For collections held by universities, galleries, libraries, archives and museums, there is often an additional layer: donor agreements and ethics approvals that specify how material may be handled. Those were frequently written before cloud processing existed, and 'we sent the whole collection to a US server' is not usually within their contemplation.
Frequently asked questions
How much does it cost to transcribe a large audio archive?
At $0.02 AUD per minute, multiply your total audio hours by $1.20. A hundred hours is $120; nine hundred hours is $1,080. Measure the real duration with ffprobe before budgeting — file counts are misleading, since a thousand files could be forty hours or nine hundred.
Should I transcribe everything at once?
Submit in tranches of a few hundred files rather than the whole archive in one go. Tranches give you checkpoints to review output, refine the vocabulary prompt, and catch a systematic problem before it has affected everything. Within a tranche, submit all files first and then collect, since jobs process in parallel.
How do I quality-check thousands of transcripts?
Sample rather than read everything, weighting toward the material most likely to be poor — oldest recordings, worst audio, most speakers. Add automated flags for transcripts that are unusually sparse relative to audio duration, empty, or show fewer speakers than expected. That surfaces the small percentage worth a human listening to.
What is the most useful thing I can do to improve bulk accuracy?
Build a vocabulary list from the pilot and pass it as a prompt on every job. Archives are usually about a specific organisation, place or field, so the same names and terms recur constantly — and proper nouns are exactly where a general-purpose model makes the most errors. Fixing them once fixes them everywhere.
What should I record alongside each transcript?
Source file path and checksum, recording date, participants where known, collection or series, access restrictions, and the job ID. Keep the job ID especially — it lets you re-fetch the transcript, prove provenance, and reconcile billing. A thousand uncatalogued transcripts are far less useful than eight hundred properly linked to their sources.
Are there privacy considerations for transcribing an archive?
Yes, and they are amplified by scale. Archives frequently contain personal information about identifiable people who never contemplated third-party processing. Where that material relates to Australians, offshore processing is a cross-border disclosure engaging APP 8. Collections held by universities and cultural institutions often also carry donor agreements and ethics approvals written before cloud processing existed.
Pilot your archive before committing
90 minutes free, no credit card required. Enough to test the worst audio in your collection before budgeting the rest.