Skip to main content

FastDub

PyPI version Downloads Python versions License GitHub stars

FastDub is a Python package and command-line utility for automated subtitle voiceovers, video dubbing, audio ducking, dynamic voice changing, subtitle translation, and YouTube integration.


Features

  • Automated Video Dubbing: Generate speech from subtitle files (.srt, .vtt) and embed the audio into videos (.mp4, .mkv).
  • Audio Ducking (Sidechain Compression): Dynamically lower original background audio level while speech is active.
  • Dynamic Voice Changing: Switch voices mid-track using subtitle anchors (!:).
  • Subtitle Translation: Auto-translate subtitles to target languages using Google Translate or alternative services.
  • YouTube Integration: Download video playlists/channels, search YouTube directly from CLI, and upload dubbed videos back to YouTube with translated titles and descriptions.
  • Cross-Platform: Support for SAPI voices on Windows and eSpeak/RHVoice on Linux.

Installation

System Dependencies

Ubuntu / Debian

sudo apt update -y && sudo apt upgrade -y
sudo apt install -y python3 python3-pip ffmpeg espeak libxml2-dev libxslt1-dev

macOS

brew install ffmpeg espeak

Installing FastDub

Via PyPI with pip

# Core package
pip install FastDub

# Install all optional dependencies (Translation + YouTube support)
pip install "FastDub[ALL]"

Extra Feature Bundles

Extra Description Command
TR Subtitle translation support pip install "FastDub[TR]"
YT YouTube downloading and search pip install "FastDub[YT]"
YTU YouTube video uploading pip install "FastDub[YTU]"
tortoise Tortoise-TTS engine support (Heavy) pip install "FastDub[tortoise]"
ALL All optional features combined pip install "FastDub[ALL]"

Via Poetry

poetry add fastdub --extras "all"

Quick Start

Basic Local Video Dubbing

To voiceover all videos in a target directory:

fastdub -i ./input_folder -v "Yuriy" --no-sidechain -sf srt -vf mp4

Or using python module invocation:

python -m fastdub -i ./input_folder -l ru

Subtitle Translation

Translate subtitles to Russian before voice acting:

fastdub -i ./input_folder -tr -l ru -ts google

YouTube Download & Dubbing

Process a single YouTube video:

fastdub -yt -i "https://youtu.be/DD5UKQggXTc" -l ru

Process videos from a YouTube Search query:

fastdub -yt -yts -i "#python" -yts-l 5 -l ru

Process an entire YouTube channel:

fastdub -yt -i "c/UCi-5OZ2tYuwMLIcEyOsbdRA" -l ru

YouTube Upload Setup

To upload processed videos to YouTube (FastDub[YTU]):

  1. Go to Google Cloud Console Credentials.
  2. Create OAuth 2.0 Client ID for Desktop App.
  3. Download the JSON credentials file and place it in your working directory as client_secrets.json.
  4. Run FastDub with upload flags:
fastdub -i ./input_folder -ytu -ytu-ps private -ytu-t

Advanced Usage

Dynamic Voice Anchors

Change the active voice actor for specific sections by inserting anchor tokens in your subtitle file.

Example SRT subtitle content:

1
00:00:01,000 --> 00:00:04,000
!:Yuriy Hello, welcome to this video!

2
00:00:04,500 --> 00:00:08,000
!:Elena Here is the next speaker.

If voice anchors are updated and cached files need to be refreshed, clear the cache using -rc:

fastdub -i ./input_folder -rc 1

Tortoise-TTS Support

FastDub now supports Tortoise-TTS for high-quality voice cloning and text-to-speech. Tortoise generates highly realistic voices but requires significantly more processing power (CUDA is highly recommended).

  1. Install with Tortoise support:
    pip install "FastDub[tortoise]"
    
  2. Use the Tortoise engine: Specify --tts-engine tortoise. You can use any Tortoise voice preset (e.g., random, angie, train_atkins) as the voice argument.
    fastdub -i ./input_folder -te tortoise -v random
    
  3. Tortoise Presets (Quality vs Speed): By default, FastDub uses the fast preset for Tortoise. You can change this using the --tortoise-preset argument:
    fastdub -i ./input_folder -te tortoise -tp high_quality -v angie
    
    Available presets: ultra_fast, fast, standard, high_quality.

Command Line Arguments Reference

usage: fastdub [-h] [-rc {0,1,2}] [-ra | --cleanup-audio | -n-ra | --no-cleanup-audio]
               [-ev | --export-video | -n-ev | --no-export-video] [-l LANGUAGE]
               [-ll {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}]
               [-tc THREADS_COUNT] -i INPUT [-vf VIDEO_FORMAT] [-sf SUBTITLES_FORMAT]
               [-En EXCLUDE [EXCLUDE ...]] [-Eu EXCLUDE_UNDERSCORE]
               [-sc | --sidechain | -n-sc | --no-sidechain]
               [-sc-args SIDECHAIN_FFMPEG_PARAMS] [-sc-lvl SIDECHAIN_LEVEL_SC]
               [-v VOICE] [-a ALIGN] [-v-set-a VOICE_SET_ANCHOR]
               [-fll {trace,debug,verbose,info,warning,error,fatal,panic,quiet}]
               [-y | --confirm | -n-y | --no-confirm] [-af AUDIO_FORMAT] [-wm WATERMARK]
               [-tb | --traceback | -n-tb | --no-traceback] [-yt]
               [-ak API_KEYS [API_KEYS ...]] [-yts] [-yts-l YOUTUBE_SEARCH_LIMIT]
               [-yts-rg YOUTUBE_SEARCH_REGION] [-ytu]
               [-ytu-ps {private,public,unlisted}] [-ytu-t] [-tr] [--rewrite-srt | --no-rewrite-srt]
               [-ts TRANSLATE_SERVICE]

Python API Usage

FastDub modules can be imported directly into Python applications:

from fastdub import GlobalSettings, dubber

GlobalSettings.language = "ru"
GlobalSettings.threads_count = 4

# Perform dubbing operation programmatically
dubber.dub(
    input_dir="./media",
    voice="Yuriy",
    export_video=True,
    sidechain=True
)

Development & Publishing

FastDub uses Poetry for build backend management.

Build Package

poetry build

Publish Package

poetry publish

Issues & Support

If you encounter any issues or have feature requests, please open an issue on GitHub Issues.


License

Distributed under the MIT License. See LICENSE for details.

Download files

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

Source Distribution

fastdub-3.9.0.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

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

fastdub-3.9.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file fastdub-3.9.0.tar.gz.

File metadata

  • Download URL: fastdub-3.9.0.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.14 Linux/7.1.4-zen1

File hashes

Hashes for fastdub-3.9.0.tar.gz
Algorithm Hash digest
SHA256 38c5e6a08d88e9a1bc9c259ba274ae7f6534739382e564c71abcb3347b286f7a
MD5 b647fec0d2c4d2ba167c1f7d76610953
BLAKE2b-256 d4920df81762d9f513905b8cb134adfab9fa99511c073dfac1e2f98d85965f19

See more details on using hashes here.

File details

Details for the file fastdub-3.9.0-py3-none-any.whl.

File metadata

  • Download URL: fastdub-3.9.0-py3-none-any.whl
  • Upload date:
  • Size: 30.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.14 Linux/7.1.4-zen1

File hashes

Hashes for fastdub-3.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d50e3fc301cd132323a36fbb9435a127a505d8b4c5202a9853bfc10f2e5832c5
MD5 63360f739dc4a918d699b262228ac576
BLAKE2b-256 963c289f9c077be1862071d1542a575a22892f567db46b5a05b6f1d52c38c3e6

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