Converting an audio recording to summary text via local LLM

As mentioned in my previous post, I had fun installing code to run LLMs locally. This post will be for me: steps to replicate turning the recording into a summary text.

Convert from MP3 to WAV

ffmpeg -i ~/transcripts/meeting-2026-09-08.mp3 -acodec pcm_s16le -ac 1 -ar 16000 ~/transcripts/meeting-2026-09-08.wav

Run the Whisper.cpp code to turn the recording into a transcript

cd ~/src/whisper.cpp

./build/bin/whisper-cli --model models/ggml-small.en.bin --file ~/transcripts/meeting-2026-09-08.wav --language en --output-txt --output-srt --output-file ~/transcripts/meeting-2026-09-08 --print-progress

I created a prompt file for reuse after every planning meeting:

You create accurate meeting notes from a supplied transcript.

Use exactly these Markdown headings:
## Summary
## Decisions
## Action items
## Open questions
## Names, dates, and terms to verify

Only report decisions, owners, dates, and deadlines that the transcript explicitly states.
Do not invent, infer, or "clean up" unclear details. Mark ambiguity as uncertain.

Split the transcript into smaller chunks

rm -rf ~/transcripts/meeting-2026-09-08-chunks

mkdir ~/transcripts/meeting-2026-09-08-chunks

split --lines=400 --numeric-suffixes=1 --suffix-length=3 --additional-suffix=.txt ~/transcripts/meeting-2026-09-08.txt ~/transcripts/meeting-2026-09-08-chunks/chunk-

Prep for the run of the LLM to make summaries

rm -rf ~/transcripts/meeting-2026-09-08-chunk-summaries

mkdir -p ~/transcripts/meeting-2026-09-08-chunk-summaries

And then I got a bash script:

#!/usr/bin/env bash
set -u
shopt -s nullglob

LLAMA="$HOME/src/llama.cpp-rocm57/build-rocm/bin/llama-cli"
MODEL="$HOME/models/gguf/Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf"
SYSTEM_PROMPT="$HOME/llm-prompts/meeting-summary-system.txt"
CHUNKS_DIR="$HOME/transcripts/meeting-2026-09-08-chunks"
OUTPUT_DIR="$HOME/transcripts/meeting-2026-09-08-chunk-summaries"

mkdir -p "$OUTPUT_DIR"

for chunk in "$CHUNKS_DIR"/*.txt; do
base=$(basename "$chunk" .txt)
summary="$OUTPUT_DIR/$base.md"
log="$OUTPUT_DIR/$base.log"

printf 'Summarizing %s...\n' "$base"

if "$LLAMA" \
-m "$MODEL" \
--system-prompt-file "$SYSTEM_PROMPT" \
--file "$chunk" \
-c 4096 \
-n 500 \
-ngl 99 \
-cnv \
-st \
--no-display-prompt \
2>"$log" \
>"$summary"
then
printf ' Wrote %s\n' "$summary"
else
printf ' FAILED: inspect %s\n' "$log" >&2
rm -f "$summary"
fi
done

Leave a Reply