gemini-transcribe-wrapper
Zero-config wrapper for free-tier Gemini 3.5 Transcribe that breaks long audio into
API-safe chunks and merges the results back into .speakers.srt / .srt / .txt.
- GitHub: https://github.com/tayaee/gemini-transcribe-wrapper
- PyPI: https://pypi.org/project/gemini-transcribe-wrapper/
Quick Start
Prerequisites
- Get an API key for free from https://aistudio.google.com/api-keys/.
- Install uv (https://docs.astral.sh/uv/getting-started/installation/).
Install the tool
Linux / macOS:
export GEMINI_API_KEY=your_key_here
uv tool install --python 3.13 gemini-transcribe-wrapper@latest
gtw -v
Windows (PowerShell):
$env:GEMINI_API_KEY = "your_key_here"
uv tool install --python 3.13 gemini-transcribe-wrapper@latest
gtw -v
Windows (Command Prompt):
set GEMINI_API_KEY=your_key_here
uv tool install --python 3.13 gemini-transcribe-wrapper@latest
gtw -v
Transcribe for free (see Limites below)
With GEMINI_API_KEY set (from step 2):
gtw sample.mp4
Or pass the key directly:
gtw --gemini-api-key YOUR_API_KEY sample.mp4
gtw --gemini-api-key YOUR_API_KEY *.mp4
Done: sample.speakers.srt, sample.srt, sample.txt appear next to the input.
Any local video/audio works (.mp4, .mp3, etc.).
Limits
This wrapper exists to get past the Gemini free tier limits:
- Max 2 API calls per minute: chunks are transcribed sequentially with a built-in delay (default 30s) between API calls.
- Max 30 minutes of audio per call: long files are split into 29m50s chunks (packed to the max so the 25 calls/day budget is used efficiently), transcribed, then merged.
- Max 25 API calls per day: once the daily quota is used up, the API returns HTTP 429. If you hit it, the tool prints the limits above: free tier users should try again tomorrow, or switch to a paid tier (enable billing) to keep going immediately.
Usage tracking: every API call is counted per day (PST, resets at midnight
Pacific) and saved to ~/.cache/gemini-transcribe-wrapper/usage.json. Every
run (gtw -v, gtw --help, or after transcription) prints today's count on
the last line, e.g.
API calls today 2026-08-28 (PST-08:00): 3/25 (free tier limit: 25).
Chunked transcription keeps the same global timeline as a single pass (word
timestamps match within 0.5s; verified by verify-chunk-secs.sh). If you want
an ffsubsync-aligned SRT for manual comparison, pass --ffsubsync-srt to also
write <base>.ffsubsync.srt (aligned to the full audio via
uvx --python 3.13 ffsubsync <audio> -i <srt> --max-offset-seconds=120 --gss --overwrite-input); the main .srt/.speakers.srt always keep the
raw transcript timestamps.
.speakers.srt (speaker diarization, still a standard .srt for media
players), .srt (no speaker labels), and .txt
(clean text) are all generated at once by default. Don't need one? Turn it
off:
gtw sample.mp4 --no-speakers-srt --no-txt # keep only .srt
gtw sample.mp4 --no-srt # keep .speakers.srt + .txt
See gtw --help for all options (speaker name
mapping, transcript re-rendering, temp dir, etc.).
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gemini_transcribe_wrapper-0.0.11.tar.gz.
File metadata
- Download URL: gemini_transcribe_wrapper-0.0.11.tar.gz
- Upload date:
- Size: 93.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
189f45661f035a26af3122a54f07c8299a7028b32748f946dabeee17a3bae332
|
|
| MD5 |
9de381f7a424529b137d1225738e1633
|
|
| BLAKE2b-256 |
c2815363bfbd7b852edc4ee1a4eaa11868c2504f298471a5407152e3f9943c9e
|
File details
Details for the file gemini_transcribe_wrapper-0.0.11-py3-none-any.whl.
File metadata
- Download URL: gemini_transcribe_wrapper-0.0.11-py3-none-any.whl
- Upload date:
- Size: 28.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df85ffc30f5266d115e655da9b583b82497571dde8d81ab52360d369d6586dc7
|
|
| MD5 |
b30571293cc103015a33f47cd95c47cf
|
|
| BLAKE2b-256 |
db60bb91d72bf42318f5e1d7e2d7fb1f21ee2e29073a0122c663648360201962
|