Skip to main content

Video transcription and translation tool using Whisper and Gemini

Project description

Nakplae

A simple, elegant tool for transcribing videos to SRT subtitles and translating them with minimal dependencies.

Features

  • Transcribe video files to SRT subtitles using Whisper locally (multiple model options)
  • Support for multilingual content using language-agnostic models (tiny, base, small, medium, large)
  • Faster English-specific models available (tiny.en, base.en, small.en, medium.en)
  • GPU acceleration for maximum performance (CUDA and Apple Silicon MPS support)
  • Translate SRT subtitles using Google's Gemini 2.0 Flash model
  • Supports translation to any language (defaults to Thai)
  • Real-time Whisper progress output for better visibility
  • Simple command-line interface
  • Minimal dependencies

Installation

Setup Environment

  1. Create a virtual environment:

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  2. Install the package:

    # Installation from PyPI (includes GPU support by default)
    pip install nakplae
    

    For developers:

    # Clone the repository
    git clone https://github.com/elimydlarz/nakplae.git
    cd nakplae
    
    # Install in development mode
    pip install -e ".[dev]"
    

Prerequisites

  1. Ensure you have FFmpeg installed (required by Whisper)

    • On macOS: brew install ffmpeg
    • On Ubuntu: sudo apt install ffmpeg
    • On Windows: Download from the official website or use chocolatey
  2. For local LLM translation (optional):

    • Install llama.cpp and ensure llama is in your PATH
  3. For Gemini translation:

    • Set GEMINI_API_KEY environment variable with your API key:
      export GEMINI_API_KEY=your_api_key_here
      
    • Uses the Gemini 2.0 Flash model for translations with improved rate limiting

Usage

After installation, you can use the nakplae command directly:

# Basic usage (translates to Thai by default)
nakplae video_file.mp4

# Translate to a different language
nakplae video_file.mp4 --lang "Spanish"

# Only transcribe, don't translate
nakplae video_file.mp4 --transcribe-only

# Specify output directory
nakplae video_file.mp4 --lang "French" --output /path/to/output

# Use a faster model for multilingual content
nakplae video_file.mp4 --model tiny

# Use English-specific model for faster English transcription
nakplae video_file.mp4 --model small.en 

# Use a more accurate model for important content
nakplae video_file.mp4 --model medium

If you installed in development mode, you can also run:

python -m nakplae video_file.mp4 --lang "Spanish"

The program will automatically use GPU acceleration if available (CUDA on NVIDIA GPUs or MPS on Apple Silicon).

Development

# Run tests
pytest

# Format code
black .

# Run linter
ruff check .

# Run type checker
mypy nakplae

Publishing

To publish a new release to PyPI:

# 1. Update version in pyproject.toml

# 2. Build the package
python -m build

# 3. Upload to PyPI (requires API token)
python -m twine upload dist/*X.Y.Z* -u __token__ -p $PYPI_API_TOKEN

Project Structure

nakplae/
├── nakplae/
│   ├── __init__.py
│   ├── __main__.py
│   ├── transcribe.py
│   └── translate.py
├── tests/
├── pyproject.toml
├── requirements.txt
└── requirements-dev.txt

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nakplae-1.1.3.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nakplae-1.1.3-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file nakplae-1.1.3.tar.gz.

File metadata

  • Download URL: nakplae-1.1.3.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for nakplae-1.1.3.tar.gz
Algorithm Hash digest
SHA256 6d991a94e7d345a89a9c59f4d1cce2d72961d56c6de0a2115f9b55b9beee71a7
MD5 ca9beec8b8b0dba5fcda01b8ff18f0b2
BLAKE2b-256 423110f14df8d5a61dec00318a5c0f5ec0fd64b49d2dcf632a59d1982d84b832

See more details on using hashes here.

File details

Details for the file nakplae-1.1.3-py3-none-any.whl.

File metadata

  • Download URL: nakplae-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for nakplae-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e2d534e0ab4dd5a8f735297f8b99135bee493a8b721e95cebecc1b8b955dee27
MD5 a8cca05520a83741f7019c1bb1e97dba
BLAKE2b-256 1245bd9118adc06f777f4fda2f27a84d8b6bb6de40662e0e01c4ae80e594b88e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page