Home → Blog → How to transcribe meeting recordings and get usable notes
How to transcribe meeting recordings and get usable notes
A recorded meeting is a folder nobody opens. Everyone remembers a decision was made, nobody remembers which one, and rewatching forty minutes to find it is not going to happen. A transcript turns that recording into something you can search, quote and summarise in seconds.
What a transcript changes
Four things that a recording alone cannot give you:
- Search across meetings. One query finds every discussion where a client, a deadline or a budget line was mentioned.
- Notes that are actually written. Decisions and action items are extracted from the text instead of relying on somebody typing during the call.
- Context for people who missed it. Reading a transcript takes a fifth of the time of watching the recording.
- A durable record. Text survives migrations between platforms; video archives usually do not.
Where the recording actually is
Before writing any code, find the file. Each platform stores it differently:
| Platform | Where to look | What you get |
|---|---|---|
| Zoom | Local recording folder, or cloud recordings in the web account | mp4 plus a separate m4a audio track |
| Microsoft Teams | OneDrive or SharePoint, in the meeting chat | mp4 |
| Google Meet | The Meet Recordings folder in Drive | mp4 |
Zoom local recordings are the convenient case: the audio-only file is already there and no conversion is needed.
Step 1. Extract and shrink the audio
An hour of meeting video is gigabytes; the same hour of speech in mp3 is around 25 MB. Meetings are mostly speech, so a mono track at a modest bitrate loses nothing that matters:
ffmpeg -i meeting.mp4 -vn -ac 1 -ar 16000 -b:a 48k meeting.mp3
Mono at 16 kHz is exactly what recognition models expect. The file becomes small enough that a two-hour meeting still fits into a couple of requests.
Step 2. Transcribe with timings
For meetings, ask for verbose_json rather than plain text: the segments carry start and end times, which is what lets you jump back into the recording later.
from openai import OpenAI
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="your key")
with open("meeting.mp3", "rb") as f:
r = client.audio.transcriptions.create(
model="whisper-1", file=f,
response_format="verbose_json",
prompt="Weekly product sync: roadmap, Q3 release, Kubernetes migration",
)
for s in r.segments:
print(f"[{int(s.start)//60:02d}:{int(s.start)%60:02d}] {s.text.strip()}")
The prompt is where you put the vocabulary of your company: project names, internal acronyms, surnames. Meetings are full of terms no general model has ever seen, and a one-line hint fixes most of them.
Step 3. Turn the transcript into notes
The transcript itself is raw material. The useful artefact is a short summary with decisions and owners, and that is a job for a language model — the transcript goes in, structured notes come out:
notes = llm(f"""Here is a meeting transcript. Return:
1) a summary in five bullet points,
2) decisions made,
3) action items in the form "owner — task — deadline".
Quote only what is in the text; do not invent items.
{transcript}""")
Two rules keep the result trustworthy: ask explicitly for “only what is in the text”, and keep the timings so any claim can be checked against the recording.
Who said what
The honest answer: a single mixed audio track does not come back with speaker labels. Two practical ways around it:
- Separate tracks. Zoom can record each participant into its own audio file. Transcribe them one by one and you get a perfect split by speaker for free.
- Roll call at the start. If everyone names themselves in the first minute, the model and the reader both keep track of who is who far better.
For most meeting notes, exact attribution matters less than the decisions themselves — do not over-engineer this before you know you need it.
Long meetings and cost
Billing is per minute of audio, so the two levers are obvious: do not transcribe what you do not need, and do not send silence.
# split a long meeting into half-hour parts
ffmpeg -i meeting.mp3 -f segment -segment_time 1800 -c copy part%03d.mp3
Recurring status meetings are usually worth transcribing in full; two-hour workshops are often better handled by transcribing the section where the decision was actually made. A rule of thumb that works: transcribe everything for a month, look at what people actually search for, then narrow it down.
Try it on your own recordings. Sign-up takes a minute, and the free minutes are enough to judge the quality.
Get a free API keyFrequently asked questions
Can I send an mp4 file directly?
Extract the audio track first with ffmpeg. Video is dozens of times larger and the picture carries nothing that recognition uses, so you would only be paying for upload time.
How long does an hour-long meeting take?
A few minutes at most: processing runs faster than real time, and splitting a long recording into parts lets you send them in parallel.
Will the transcript identify the speakers?
Not from a single mixed track. Record participants into separate audio files and transcribe them one by one — that gives an exact split by speaker.
How do I make sure internal terms are spelled right?
Pass them through the prompt parameter: project names, acronyms and surnames listed in one line noticeably improve how they are recognised.
Are the recordings stored anywhere?
Recordings and transcripts stay for no longer than 24 hours so you can download the result from the client area, then they are deleted automatically.
Related reading
- Automatic SRT and VTT subtitles from video and webinars — How to get ready-made timed subtitles from a webinar or a video: extracting the audio track, SRT versus VTT, code samples and fixes for the usual problems.
- How to transcribe a call recording to text — A step-by-step guide to turning phone call recordings into text through an API in minutes: Python and C# samples, response formats and the errors you will meet.
- How to improve speech-to-text accuracy: eight practical fixes — Eight changes that actually move transcription quality: audio preparation, language hints, the prompt parameter, chunking, formats, and how to measure word error rate.