smart-transcriber
Transcribe meeting audio and generate structured notes using OpenAI APIs.
Install
pip install smart-transcriber
Quick Start
export OPENAI_API_KEY="sk-..."
transcribe meeting.mp3
This produces meeting.md with a summary, decisions, action items, speaker-labeled transcript, and more.
Requirements
- Python 3.11+
- OpenAI API key — set
OPENAI_API_KEYenvironment variable - ffmpeg — required for audio files larger than 25 MB (auto-detected)
Install ffmpeg: https://ffmpeg.org/download.html
Usage
transcribe <audio_file> [options]
Examples
# Basic transcription with summary
transcribe meeting.mp3
# Specify output path
transcribe meeting.mp3 --out notes.md --json-out notes.json
# Outline style instead of report
transcribe meeting.wav --style outline
# Use a different analysis model
transcribe meeting.m4a --analysis-model gpt-5-mini
# Transcription only (no summary/analysis)
transcribe meeting.mp3 --no-analysis
# Re-analyze a saved transcript
transcribe --analysis-only --transcript-input raw.json --out notes.md
# Render wall-clock timestamps
transcribe meeting.mp3 --start-time 09:30
# Provide hints for better results
transcribe meeting.mp3 --num-speakers 4 --prompt "Acme Corp, Project Phoenix"
Options
| Option | Default | Description |
|---|---|---|
audio_file |
— | Path to audio file (extension auto-detected) |
--out |
<audio_stem>.md |
Markdown output path |
--json-out |
— | JSON output (analysis + transcript) |
--transcript-json |
— | Save raw transcription JSON |
--transcribe-model |
whisper-1 |
Transcription model |
--analysis-model |
gpt-5.2 |
Analysis/summary model |
--language |
en |
Language hint for transcription |
--num-speakers |
— | Speaker count hint |
--prompt |
— | Transcription prompt (names, jargon) |
--style |
report |
Output style: report or outline |
--include-metadata |
off | Show metadata in outline style |
--disclaimer |
— | Disclaimer text at top of notes |
--no-analysis |
off | Skip analysis, transcribe only |
--analysis-only |
off | Skip transcription, analyze saved JSON |
--transcript-input |
— | JSON input for --analysis-only |
--chunk-seconds |
600 |
Chunk length for large files |
--merge-gap-seconds |
2 |
Max gap to merge same-speaker segments |
--max-merge-seconds |
45 |
Max duration per merged line |
--max-merge-words |
80 |
Max words per merged line |
--start-time |
— | Render wall-clock timestamps (HH:MM or HH:MM:SS) |
How It Works
The tool makes two OpenAI API calls per file:
- Transcription — audio → text with timestamps (Whisper API)
- Analysis — text → structured summary, speaker labels, decisions, action items (Chat API)
For large files (>25 MB), audio is automatically split into chunks using ffmpeg, transcribed separately, and merged.
Performance
Expect processing time to scale with audio duration. For faster results:
# Use a smaller analysis model
transcribe meeting.mp3 --analysis-model gpt-5-mini
# Skip analysis entirely
transcribe meeting.mp3 --no-analysis
License
Metadata
Release files for smart-transcriber 0.2.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 | |
|---|---|---|---|
| smart_transcriber-0.2.0.tar.gz | 161.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| smart_transcriber-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 181.5 kB
Release files / smart_transcriber-0.2.0.tar.gz
| Download URL | smart_transcriber-0.2.0.tar.gz |
|---|---|
| Size | 161.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f574b5da65ba7042ba7f77f7a595171477034a7eb429e653c39c0ba69ef7686c
|
|
BLAKE2b-256 checksum How to use checksums |
e01d8d66d43cf456454cbc182fa9672de7d6ed3b76767f18947769ee72f1e7c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / smart_transcriber-0.2.0-py3-none-any.whl
| Download URL | smart_transcriber-0.2.0-py3-none-any.whl |
|---|---|
| Size | 20.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
32d9a4365647dc419e0dbd60c583217d5760bdf3ee1e0e30f9cbc9fe7180a576
|
|
BLAKE2b-256 checksum How to use checksums |
fe3170d3024a62056a2dc52877cac3865f357074fd180f5a5f1f7c7ad0d5846f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|