Skip to main content

Create video (with voice over) from slides deck

Project description

1. One line description

A tool to generate a video with synchronized voice over from a slides deck.

2. Overview

This tool (called 'vwvo' which stands for 'Video With Voice Over') takes two input files (a PDF file containing a deck of slides and a TXT file containing what to say on each of them) and generates a video with synchronized voice over:

PDF file ------. 
(slides)        \
                 \     .-------.
                  +--->|vwvo.py|-----> Video file (with voice over)
                 /     '-------'
                /
TXT file ------' 
(what to say)

3. Information for users

3.1. Installation and usage

You don't need to install anything as you can run it directly from PyPI (and you will always get the latest version). For this, make sure you have 'ffmpeg' (a multimedia framework) and 'uv' (a python package manager) installed. Then simply run the 'vwvo' script like this:

$ uvx vwvo --help

...and read all the details.

NOTE 1: The first time you run it a lot of dependencies (~1 GiB) will be downloaded to the "uv" local cache.

NOTE 2: In case you prefer to install it locally (so that you don't need Internet access the next time you want to run it), run this:

$ uv tool install vwvo

...and from that point on you will be able to directly run vwvo like this:

$ vwvo --help

3.2. Example

The 'example' directory contains files 'slides.pdf' and 'script.txt' that you can use to test the tool:

$ uvx vwvo --slides path/to/slides.pdf --script path/to/script.txt

...and then play the resulting 'output/slides.mp4' video file. Enjoy!

4. Information for developers

4.1. Local development

To run locally, clone the repo and, from the top level folder, run this:

$ uv run vwvo

NOTE: The first time you run it a lot of dependencies (~1 GiB) will be downloaded to a ".venv" folder. As long as you don't delete it it will be reused on future invokations.

4.2. Running the code linter

Before merging new changes you must also check that the following command returns an empty list of warnings:

$ ruff check .

NOTE: You might need to install "ruff" first. If so, use you distro's package manager.

4.3. Distribution (PyPI)

Once you are ready to make a release:

  1. Increase the "version" number in file "pyproject.toml"

  2. Run the next command:

    $ uv build $ uv publish

  3. Tell your users that a new version is available and that it will be automatically available when they run this:

    $ uvx run vwvo

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

vwvo-0.1.0.tar.gz (7.2 MB view details)

Uploaded Source

Built Distribution

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

vwvo-0.1.0-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file vwvo-0.1.0.tar.gz.

File metadata

  • Download URL: vwvo-0.1.0.tar.gz
  • Upload date:
  • Size: 7.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vwvo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d0b1cc3f0fade3409a53ec89439ff743fc12b0809d3313ada4f520d64600de1f
MD5 5659384dd1ed29aac099d03395190565
BLAKE2b-256 9bf87af1d3f6114c74be7eae387abd02d6fed25669fa0271b59cde974caf4893

See more details on using hashes here.

File details

Details for the file vwvo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vwvo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vwvo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 09cb6076270b6d55f2e1959cdab91fd5082257db9df5402da0bfdb188d7feb51
MD5 7bd5958be5d981c0444ab8ba9d43e2ab
BLAKE2b-256 d7ade036f83efade785817a564d156ebc0bd5fddc54bffd4aa29e388e898e674

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