Whispero
Audio transcription and deep audio analysis with any OpenAI-compatible
provider. Defaults to Gemini's native audio input (transcribes and
reasons in one pass); also works with OpenAI, Groq, Together, or any
Whisper-style /v1/audio/transcriptions endpoint.
Unlike pure ASR models, the Gemini path processes audio with reasoning: it transcribes, cleans up, structures output, detects speakers, emotions, and action items in a single pass.
Install
pip install whispero
Setup
# Gemini (default) - free key at https://aistudio.google.com/apikey
export GEMINI_API_KEY="your-key-here"
# ...or any provider key, picked up automatically
export WHISPERO_API_KEY="your-key-here"
export OPENAI_API_KEY="your-key-here"
Usage
# Simple transcription, Gemini (Portuguese default)
whispero meeting.mp3
# English transcription
whispero call.mp3 --lang en
# YouTube URL directly, no download needed (Gemini only)
whispero "https://www.youtube.com/watch?v=..." --lang en
whispero-analyze "https://www.youtube.com/watch?v=..."
# OpenAI-compatible provider (Whisper-style API)
whispero meeting.mp3 --provider openai
whispero meeting.mp3 --provider openai \
--base-url https://api.groq.com/openai/v1 \
--model whisper-large-v3
# Deep analysis: transcript, speakers, tone, emotions, urgency,
# intent, action items, key moments, irony/sarcasm detection
whispero-analyze meeting.mp3
whispero-analyze meeting.mp3 --provider openai \
--base-url https://api.groq.com/openai/v1
# Faster upload for large files (compresses to opus 32k first, local files only)
whispero long.mp3 --compress
# Configurable fallback models (comma-separated, tried in order)
whispero meeting.mp3 --fallback-models gemini-2.0-flash
Features
- Two providers:
gemini(default, native audio + YouTube URLs) andopenai(any OpenAI-compatible/v1/audio/transcriptionsendpoint) - Speaker diarization ([FALANTE 1], [FALANTE 2] with voice characteristics)
- Retry with exponential backoff on rate limits and server errors
--fallback-models: configurable comma-separated fallback list--compressflag: converts to opus 32k mono 16kHz via ffmpeg before upload- JSON validation on analysis output
- Zero pip dependencies, only stdlib + ffmpeg
Benchmark
50 seconds of real audio, Gemini (Portuguese):
| Script | Time | Output |
|---|---|---|
| transcribe.py | ~4s | faithful transcript |
| transcribe.py --compress | ~4s | same, half the upload size |
| audio_analyze.py | ~14s | full JSON analysis |
GTA 6 trailer via YouTube URL (no download):
| Script | Time | Output |
|---|---|---|
| transcribe.py | ~12s | dialogue + song lyrics + on-screen text |
| audio_analyze.py | ~23s | 4 speakers, tone, 9 key moments, intent |
License
Apache 2.0 — see LICENSE.
Metadata
Release files for whispero 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| whispero-0.1.0.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| whispero-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.0 kB
Release files / whispero-0.1.0.tar.gz
| Download URL | whispero-0.1.0.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8553ac135cdb5a71c79403161b51e289736de9128bf1e36716c7e6e5c46140a4
|
|
BLAKE2b-256 checksum How to use checksums |
a7213d2b093d8e1210edd8248d0adddb4bbfaf9bf3799b4a46e588a12e9b6278
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / whispero-0.1.0-py3-none-any.whl
| Download URL | whispero-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09e27563ab96a876e77500495b2df5bb9f5d0ba481b11efea2f69b28056935ce
|
|
BLAKE2b-256 checksum How to use checksums |
46e4f4ecbf9497b94ad134c87d300cedc9b37ed2127e4f519fea81e51461fd20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency log