clean-transcribe


Nameclean-transcribe JSON
Version 1.0.1 PyPI version JSON
download
home_pagehttps://github.com/itsmevictor/clean-transcribe
SummaryA simple CLI to transcribe Youtube videos or local audio/video files and produce easy-to-use transcripts for analysis, reading, or subtitles.
upload_time2025-09-13 16:52:21
maintainerNone
docs_urlNone
authorVictor Kreitmann
requires_python>=3.7
licenseNone
keywords youtube transcription whisper ai cleaning subtitles srt vtt
VCS
bugtrack_url
requirements yt-dlp openai-whisper click click-option-group pydub ffmpeg-python tqdm llm llm-gemini openai requests mistral-common timm librosa
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.95620s