Skip to content

ArtBox

ArtBox is a tool set for handling multimedia files.

Features

TBD

Setup

ArtBox uses some dependencies that maybe would not work well in your machine. In order to have everything well installed, create a conda/mamba environment and install artbox there.

$ mamba create --name artbox "python>=3.8.1,<3.12" pygobject pip
$ conda activate artbox
$ pip install artbox

Examples

For the following examples, create the a temporary folder for artbox:

$ mkdir /tmp/artbox

Convert text to audio

By default, the artbox speech uses edge-tts engine, but if you can also specify gtts with the flag --engine gtts.

$ echo "Are you ready to join Link and Zelda in fighting off this unprecedented threat to Hyrule?" > /tmp/artbox/text.md
$ artbox speech text-to-speech \
    --title artbox \
    --input-path /tmp/artbox/text.md \
    --output-path /tmp/artbox/speech.mp3 \
    --engine edge-tts

If you need to generate the audio for different language, you can use the flag --lang:

$ echo "Bom dia, mundo!" > /tmp/artbox/text.md
$ artbox speech text-to-speech \
    --title artbox \
    --input-path /tmp/artbox/text.md \
    --output-path /tmp/artbox/speech.mp3 \
    --lang pt

If you are using edge-tts engine (the default one), you can also specify the locale for that language, for example:

$ echo "Are you ready to join Link and Zelda in fighting off this unprecedented threat to Hyrule?" > /tmp/artbox/text.md
$ artbox speech text-to-speech \
    --title artbox \
    --input-path /tmp/artbox/text.md \
    --output-path /tmp/artbox/speech.mp3 \
    --engine edge-tts \
    --lang en-IN

Additionally, if you are using edge-tts, you can specify --rate, --volume, and --pitch, for example:

$ echo "Do you want some coffee?" > /tmp/artbox/text.md
$ artbox speech text-to-speech \
    --title artbox \
    --input-path /tmp/artbox/text.md \
    --output-path /tmp/artbox/speech.mp3 \
    --engine edge-tts \
    --lang en \
    --rate +10% \
    --volume -10% \
    --pitch -5Hz

Download a youtube video

If you want to download videos from the youtube, you can use the following command:

$ artbox youtube download \
    --url https://www.youtube.com/watch?v=zw47_q9wbBE \
    --output-path /tmp/artbox/

The command above downloads using a random resolution. If you want a specific resolution, use the flat --resolution:

$ artbox youtube download \
    --url https://www.youtube.com/watch?v=zw47_q9wbBE \
    --output-path /tmp/artbox/ \
    --resolution 360p

Create a song based on the musical notes

# json format
echo '["E", "D#", "E", "D#", "E", "B", "D", "C", "A"]' > /tmp/artbox/notes.txt
$ artbox sound notes-to-audio \
  --input-path /tmp/artbox/notes.txt \
  --output-path /tmp/artbox/music.mp3 \
  --duration 2

Remove the audio from a video

First, download the youtube video https://www.youtube.com/watch?v=zw47_q9wbBE as explained before.

Next, run the following command:

$ artbox video remove-audio \
  --input-path "/tmp/artbox/The Legend of Zelda Breath of the Wild - Nintendo Switch Presentation 2017 Trailer.mp4" \
  --output-path /tmp/artbox/botw.mp4

Extract the audio from a video

First, download the youtube video https://www.youtube.com/watch?v=zw47_q9wbBE as explained before.

Next, run the following command:

$ artbox video extract-audio \
  --input-path "/tmp/artbox/The Legend of Zelda Breath of the Wild - Nintendo Switch Presentation 2017 Trailer.mp4" \
  --output-path /tmp/artbox/botw-audio.mp3

Combine audio and video files

First, execute the previous steps:

  • Download a youtube video
  • Remove the audio from a video
  • Extract the audio from a video

Next, run the following command:

$ artbox video combine-video-and-audio \
  --video-path /tmp/artbox/botw.mp4 \
  --audio-path /tmp/artbox/botw-audio.mp3 \
  --output-path /tmp/artbox/botw-combined.mp4

Additional dependencies

If you want to use Python to play your audio files, you can install playsound:

$ pip wheel --use-pep517 "playsound (==1.3.0)"

Troubleshoot

After installing with poetry install:

  • Patch pytube (ref: pytube/pytube#1773): sed -i 's/(r"^$\\w+\\W")/(r"^\\w+\\W")/' $CONDA_PREFIX/lib/python3.*/site-packages/pytube/cipher.py