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
-
Create a virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
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
-
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
- On macOS:
-
For local LLM translation (optional):
- Install llama.cpp and ensure
llamais in your PATH
- Install llama.cpp and ensure
-
For Gemini translation:
- Set
GEMINI_API_KEYenvironment 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
- Set
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d991a94e7d345a89a9c59f4d1cce2d72961d56c6de0a2115f9b55b9beee71a7
|
|
| MD5 |
ca9beec8b8b0dba5fcda01b8ff18f0b2
|
|
| BLAKE2b-256 |
423110f14df8d5a61dec00318a5c0f5ec0fd64b49d2dcf632a59d1982d84b832
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2d534e0ab4dd5a8f735297f8b99135bee493a8b721e95cebecc1b8b955dee27
|
|
| MD5 |
a8cca05520a83741f7019c1bb1e97dba
|
|
| BLAKE2b-256 |
1245bd9118adc06f777f4fda2f27a84d8b6bb6de40662e0e01c4ae80e594b88e
|