# Clean Transcriber
A command-line tool to turn any YouTube video, local audio or video file into a clean, readable text transcript. It uses the transcription model of your choice (local or API-based) for transcription and your preferred LLM to automatically clean and reformat the output.
## Features
1. **Multiple input formats**: Supports various audio and video formats for flexible usage (e.g., YouTube URL, `.mp3`, `.wav`, `.m4a`, `.opus`, `.mp4`, `.mkv`, `.mov`).
2. **Multiple output format**: Generate clean transcripts in TXT, SRT, or VTT formats.
3. **Flexible transcription models**: Choose from various local (Whisper, Voxtral) and API-based (OpenAI, Mistral) models for different use cases.
5. **LLM-powered cleaning** that removes filler words, fixes grammar, and organizes content into readable paragraphs.
6. **Wide LLM support** - use Gemini, ChatGPT, Claude or any other (local) LLM for cleaning.
## Quick Start
```bash
# Transcribe a YouTube video
clean-transcribe "https://www.youtube.com/watch?v=VIDEO_ID"
# Transcribe a local video file
clean-transcribe "/path/to/your/video.mp4"
# Transcribe a specific segment of a video
clean-transcribe "https://www.youtube.com/watch?v=VIDEO_ID" --start "1:30" --end "2:30"
# Create clean subtitles from a video
clean-transcribe "https://www.youtube.com/watch?v=VIDEO_ID" -f srt -o subtitles.srt
```
## Installation
**Option 1: use pip:**
```bash
pip install clean-transcribe
```
**Option 2: Install as package**
```bash
git clone https://github.com/itsmevictor/clean-transcribe && cd clean-transcribe
pip install -e .
clean-transcribe "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
```
## Configuration
### Key Options
- `--format, -f`: Output format (txt, srt, vtt)
- `--model, -m`: Transcription model (whisper-tiny, whisper-base, whisper-small, whisper-medium, whisper-large, whisper-turbo, whisper-1-api, gpt-4o-transcribe-api, gpt-4o-mini-transcribe-api, voxtral-mini-api, voxtral-small-api, voxtral-mini-local, voxtral-small-local)
- `--start`: Start time for transcription (e.g., "1:30")
- `--end`: End time for transcription (e.g., "2:30")
- `--transcription-prompt`: Custom prompt for Whisper to guide transcription
- `--llm-model`: LLM for cleaning (gemini-2.0-flash-exp, gpt-4o-mini, etc.)
- `--cleaning-style`: presentation, conversation, or lecture
- `--save-raw`: Keep both raw and cleaned versions
- `--no-clean`: Skip AI cleaning
## LLM-Powered Cleaning Setup
### Quick Setup (Recommended)
```bash
# Install and configure Gemini (fast + cost-effective)
llm install llm-gemini
llm keys set gemini
# Enter your Gemini API key when prompted
# Or use any other LLM provider
# OpenAI
llm keys set openai
# Anthropic Claude
llm install llm-claude-3
llm keys set claude
```
*Uses Simon Willison's excellent [llm package](https://github.com/simonw/llm) for provider flexibility.*
### Cleaning Process
**What it does:**
- Removes filler words (um, uh, so, like, you know, etc.)
- Fixes grammar and punctuation errors
- Organizes content into logical paragraphs
- Maintains original meaning and context
**Cleaning styles:**
- **presentation**: Professional tone, organized paragraphs
- **conversation**: Natural flow, minimal cleanup
- **lecture**: Educational format, clear sections for notes
*Note: SRT/VTT preserve timing while cleaning text content.*
## Feedback
I'd love to hear your feedback! If you encounter any issues, have suggestions for new features, or just want to share your experience, please don't hesitate to [open an issue](https://github.com/itsmevictor/clean-transcribe/issues).
Raw data
{
"_id": null,
"home_page": "https://github.com/itsmevictor/clean-transcribe",
"name": "clean-transcribe",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "youtube transcription whisper ai cleaning subtitles srt vtt",
"author": "Victor Kreitmann",
"author_email": "victor.kreitmann@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/1a/40/c0e71b6a63f2af32f0949675f59108237806bf9680ef7e41925d7b09e84c/clean_transcribe-1.0.1.tar.gz",
"platform": null,
"description": "# Clean Transcriber\n\nA command-line tool to turn any YouTube video, local audio or video file into a clean, readable text transcript. It uses the transcription model of your choice (local or API-based) for transcription and your preferred LLM to automatically clean and reformat the output.\n\n## Features\n\n1. **Multiple input formats**: Supports various audio and video formats for flexible usage (e.g., YouTube URL, `.mp3`, `.wav`, `.m4a`, `.opus`, `.mp4`, `.mkv`, `.mov`).\n2. **Multiple output format**: Generate clean transcripts in TXT, SRT, or VTT formats.\n3. **Flexible transcription models**: Choose from various local (Whisper, Voxtral) and API-based (OpenAI, Mistral) models for different use cases.\n5. **LLM-powered cleaning** that removes filler words, fixes grammar, and organizes content into readable paragraphs. \n6. **Wide LLM support** - use Gemini, ChatGPT, Claude or any other (local) LLM for cleaning.\n\n## Quick Start\n\n```bash\n# Transcribe a YouTube video\nclean-transcribe \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# Transcribe a local video file\nclean-transcribe \"/path/to/your/video.mp4\"\n\n# Transcribe a specific segment of a video\nclean-transcribe \"https://www.youtube.com/watch?v=VIDEO_ID\" --start \"1:30\" --end \"2:30\"\n\n# Create clean subtitles from a video\nclean-transcribe \"https://www.youtube.com/watch?v=VIDEO_ID\" -f srt -o subtitles.srt\n```\n\n## Installation\n\n**Option 1: use pip:**\n```bash\npip install clean-transcribe\n```\n\n**Option 2: Install as package**\n```bash\ngit clone https://github.com/itsmevictor/clean-transcribe && cd clean-transcribe \npip install -e .\nclean-transcribe \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\" \n```\n\n## Configuration\n\n### Key Options\n- `--format, -f`: Output format (txt, srt, vtt)\n- `--model, -m`: Transcription model (whisper-tiny, whisper-base, whisper-small, whisper-medium, whisper-large, whisper-turbo, whisper-1-api, gpt-4o-transcribe-api, gpt-4o-mini-transcribe-api, voxtral-mini-api, voxtral-small-api, voxtral-mini-local, voxtral-small-local)\n- `--start`: Start time for transcription (e.g., \"1:30\")\n- `--end`: End time for transcription (e.g., \"2:30\")\n- `--transcription-prompt`: Custom prompt for Whisper to guide transcription\n- `--llm-model`: LLM for cleaning (gemini-2.0-flash-exp, gpt-4o-mini, etc.)\n- `--cleaning-style`: presentation, conversation, or lecture\n- `--save-raw`: Keep both raw and cleaned versions\n- `--no-clean`: Skip AI cleaning\n\n## LLM-Powered Cleaning Setup\n\n### Quick Setup (Recommended)\n```bash\n# Install and configure Gemini (fast + cost-effective)\nllm install llm-gemini\nllm keys set gemini\n# Enter your Gemini API key when prompted\n\n# Or use any other LLM provider\n\n# OpenAI\nllm keys set openai\n\n# Anthropic Claude \nllm install llm-claude-3\nllm keys set claude\n```\n\n*Uses Simon Willison's excellent [llm package](https://github.com/simonw/llm) for provider flexibility.*\n\n### Cleaning Process\n\n**What it does:**\n- Removes filler words (um, uh, so, like, you know, etc.)\n- Fixes grammar and punctuation errors \n- Organizes content into logical paragraphs\n- Maintains original meaning and context\n\n**Cleaning styles:**\n- **presentation**: Professional tone, organized paragraphs\n- **conversation**: Natural flow, minimal cleanup\n- **lecture**: Educational format, clear sections for notes\n\n*Note: SRT/VTT preserve timing while cleaning text content.*\n\n## Feedback\n\nI'd love to hear your feedback! If you encounter any issues, have suggestions for new features, or just want to share your experience, please don't hesitate to [open an issue](https://github.com/itsmevictor/clean-transcribe/issues).\n",
"bugtrack_url": null,
"license": null,
"summary": "A simple CLI to transcribe Youtube videos or local audio/video files and produce easy-to-use transcripts for analysis, reading, or subtitles.",
"version": "1.0.1",
"project_urls": {
"Bug Reports": "https://github.com/itsmevictor/clean-transcribe/issues",
"Homepage": "https://github.com/itsmevictor/clean-transcribe",
"Source": "https://github.com/itsmevictor/clean-transcribe"
},
"split_keywords": [
"youtube",
"transcription",
"whisper",
"ai",
"cleaning",
"subtitles",
"srt",
"vtt"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a7d8b436ef66ba86ad81be65aaca902e199e6374c42dc7d39f197e32c0485212",
"md5": "6d57a78ebf34d7119b9c64bb8ff8240a",
"sha256": "8030425d79df9c09b44d7ef10400e66ed247a04a7c949253738abf52a4ad3a00"
},
"downloads": -1,
"filename": "clean_transcribe-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6d57a78ebf34d7119b9c64bb8ff8240a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 22985,
"upload_time": "2025-09-13T16:52:20",
"upload_time_iso_8601": "2025-09-13T16:52:20.678372Z",
"url": "https://files.pythonhosted.org/packages/a7/d8/b436ef66ba86ad81be65aaca902e199e6374c42dc7d39f197e32c0485212/clean_transcribe-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1a40c0e71b6a63f2af32f0949675f59108237806bf9680ef7e41925d7b09e84c",
"md5": "df7d860a2bbc22121b0fb5aba7fc218a",
"sha256": "dd256cbbe9184a28ceef72adab1f551c7f031a57f00cce43d8bf8844ae9596bc"
},
"downloads": -1,
"filename": "clean_transcribe-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "df7d860a2bbc22121b0fb5aba7fc218a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 18962,
"upload_time": "2025-09-13T16:52:21",
"upload_time_iso_8601": "2025-09-13T16:52:21.662384Z",
"url": "https://files.pythonhosted.org/packages/1a/40/c0e71b6a63f2af32f0949675f59108237806bf9680ef7e41925d7b09e84c/clean_transcribe-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-13 16:52:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "itsmevictor",
"github_project": "clean-transcribe",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "yt-dlp",
"specs": [
[
">=",
"2023.12.30"
]
]
},
{
"name": "openai-whisper",
"specs": [
[
">=",
"20231117"
]
]
},
{
"name": "click",
"specs": [
[
">=",
"8.1.7"
]
]
},
{
"name": "click-option-group",
"specs": [
[
">=",
"0.5.6"
]
]
},
{
"name": "pydub",
"specs": [
[
">=",
"0.25.1"
]
]
},
{
"name": "ffmpeg-python",
"specs": [
[
">=",
"0.2.0"
]
]
},
{
"name": "tqdm",
"specs": [
[
">=",
"4.66.1"
]
]
},
{
"name": "llm",
"specs": [
[
">=",
"0.13.0"
]
]
},
{
"name": "llm-gemini",
"specs": [
[
">=",
"0.1.0"
]
]
},
{
"name": "openai",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.25.0"
]
]
},
{
"name": "mistral-common",
"specs": [
[
">=",
"1.8.1"
]
]
},
{
"name": "timm",
"specs": []
},
{
"name": "librosa",
"specs": []
}
],
"lcname": "clean-transcribe"
}