What Is the Typical Size of a Packed Transcript File for an LLM?

A typical packed transcript file for an LLM ranges from 150–300 KB per minute of speech after JSON-style packing and gzip compression, yielding roughly 1.5–3 MB for a standard 10-minute video.

A packed transcript file for an LLM is a compact representation of a video’s spoken content that has been segmented, tokenized, and compressed so it can be efficiently fed to a Large Language Model for summarization, question-answering, or caption generation. The browser-use/video-use repository implements this workflow through dedicated helpers that transform raw audio into LLM-ready payloads. Understanding the typical size of these files helps you stay within token limits, reduce network latency, and control API costs.

What Is a Packed Transcript File for an LLM?

A packed transcript is a serialized format—typically gzipped JSON—that stores timestamped speech segments and optional metadata such as speaker IDs and confidence scores. According to the browser-use/video-use source code, the goal is to strip unnecessary formatting while preserving the semantic structure required for downstream processing. These files act as the bridge between automatic speech recognition (ASR) output and an LLM’s input context window.

Key Factors That Influence Transcript Size

Five primary variables determine how large the final payload becomes.

Video Length and Speech Density

Longer videos produce more words and therefore more tokens. As a baseline, the repository’s processing logic implies roughly 150–500 KB per minute of speech after packing. Speech density also matters: conversational content at 130 words per minute (wpm) yields approximately 12 KB per minute, while dense technical talk at 170 wpm produces closer to 16 KB per minute after token packing.

Packing Method and Compression

The serialization format has the biggest impact on disk size. Plain JSON with timestamps and segment boundaries typically ranges from 200–600 KB per minute of audio. Applying gzip compression, as implemented in helpers/pack_transcripts.py, reduces that footprint by 30–50%. Binary formats such as protobuf can shrink it even further, though the video-use project favors gzipped JSON for readability.

Tokenization and Metadata Overhead

Modern LLMs use byte-pair encoding (BPE) or SentencePiece tokenizers, which average 1–1.2 tokens per word. That ratio introduces a modest but measurable size increase over raw word counts. Additionally, including speaker labels, ASR confidence scores, and timestamps adds roughly 10–20% overhead to the payload.

Typical Size Ranges for LLM Transcript Files

When combining a standard speech rate (~130 wpm) with JSON-style packing and gzip compression, a typical packed transcript file for an LLM lands in the 150–300 KB per minute range. For a standard 10-minute video, you should expect a final file size of approximately 1.5–3 MB. These figures hold true for the default workflow demonstrated in the browser-use/video-use repository.

How video-use Creates Packed Transcripts

The pipeline is split into generation and packing stages. Three files orchestrate the end-to-end flow: helpers/transcribe.py runs ASR inference, helpers/transcribe_batch.py handles parallel processing across multiple videos, and helpers/pack_transcripts.py serializes the result into a compressed, LLM-ready artifact.

Serializing Transcripts in helpers/pack_transcripts.py

The pack_transcript() function converts a Python dictionary into a compact, gzipped JSON file. It uses minimal separators and UTF-8 encoding to keep the payload as small as possible.


# helpers/pack_transcripts.py (excerpt)

from pathlib import Path
import json
import gzip

def pack_transcript(transcript: dict, out_path: Path) -> None:
    """
    Serialises a transcript dict to a gzipped JSON file.
    The dict typically contains:
      - `segments`: list of {start, end, text}
      - `metadata`: optional speaker/confidence info
    """
    # Convert to JSON string

    json_bytes = json.dumps(transcript, separators=(",", ":")).encode("utf-8")
    # Write gzipped output

    with gzip.open(out_path, "wb") as f:
        f.write(json_bytes)

# Example usage

if __name__ == "__main__":
    example = {
        "segments": [
            {"start": 0.0, "end": 3.2, "text": "Welcome to the tutorial."},
            {"start": 3.2, "end": 7.5, "text": "Today we will explore video‑use."}
        ]
    }
    pack_transcript(example, Path("packed_transcript.json.gz"))

Generating Audio Transcripts in helpers/transcribe.py

Before packing, speech must be extracted from audio. The transcribe_audio() function loads a Whisper model, processes the waveform, and returns a segment-compatible dictionary.


# helpers/transcribe.py (excerpt)

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torch

def transcribe_audio(audio_path: Path) -> dict:
    """
    Runs Whisper (or any other ASR) on an audio file and returns a
    dict compatible with `pack_transcript`.
    """
    processor = WhisperProcessor.from_pretrained("openai/whisper-base")
    model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-base")
    waveform = ...  # load audio with torchaudio

    input_features = processor(waveform, sampling_rate=16000, return_tensors="pt").input_features
    predicted_ids = model.generate(input_features)
    transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]

    # Simple segmentation (e.g., every 5 seconds)

    segments = [{"start": i*5, "end": (i+1)*5, "text": transcription}]
    return {"segments": segments}

For batch workloads, helpers/transcribe_batch.py scales this pattern across multiple files. Refer to the repository’s README.md for installation steps and SKILL.md for high-level integration guidance.

Summary

  • A packed transcript file for an LLM typically measures 150–300 KB per minute after JSON packing and gzip compression, or roughly 1.5–3 MB for a 10-minute video.
  • Plain JSON transcripts without compression range from 200–600 KB per minute.
  • Variables such as speech density, tokenization scheme, and metadata overhead can add 10–20% to the base payload.
  • The browser-use/video-use repository implements efficient packing in helpers/pack_transcripts.py and transcript generation in helpers/transcribe.py.

Frequently Asked Questions

How big is a packed transcript file for a 10-minute video?

For a standard talk-track video spoken at roughly 130 words per minute, you can expect a packed transcript file for an LLM to be approximately 1.5–3 MB after gzip compression. If you store the same content as uncompressed JSON, the size rises toward 2–6 MB.

Does gzip compression significantly reduce transcript file size?

Yes. According to the implementation in helpers/pack_transcripts.py, gzip compression typically reduces a plaintext JSON transcript by 30–50%. That reduction directly improves upload latency and lowers storage costs without altering the underlying data structure.

Why does metadata increase the size of a packed transcript?

Including speaker IDs, ASR confidence scores, and per-word timestamps adds structural overhead to each segment. In most pipelines, this metadata inflates the total payload by roughly 10–20%, which is why optional metadata should be stripped when token budgets are tight.

What files in video-use handle transcript generation and packing?

The browser-use/video-use repository splits the workflow across helpers/transcribe.py for ASR inference, helpers/transcribe_batch.py for parallel processing, and helpers/pack_transcripts.py for serialization and compression. Documentation is available in README.md and SKILL.md.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →