Screen play / drama text to multi-voice audio play converter
dramaTTS parses scripts (plain text files) for theatre/screen plays and converts them into a multi-voice audio plays (wave-files).
While the script parsing functionality is provided by the dramaTTS program itself, it relies on external tools for the audio processing:
The Festival Speech Synthesis System (herein referred to as Festival) is used for speech synthesis
Sound eXchange (SoX) for audio post-processing.
SoX, Festival as well as voices and lexicons for Festival have to be installed in order to create audio output with dramaTTS.
See the dramaTTS documentation for more details
dramaTTS, Copyright (c) 2020 Thies Hecker
dramaTTS is free software released under the GPLv3 license (see the full disclaimer in COPYING and the LICENSE file for details). It is written python and you can download the source code from dramaTTS’s gitlab page.
dramaTTS is realized using:
PyQt, Copyright (c) Riverbank Computing Limited
setuptools_scm, Copyright (c) Ronny Pfannschmidt.
While dramaTTS is a standalone application, it is of limited use without Festival and SoX being installed, which provide the audio rendering (only script parsing including syntax highlighting, etc. is available).
While the Festival application itself and SoX are released under free software licenses as well, specific components, which are commonly bundled with Festival (i.e. certain lexicons and voices) may be released under non-free licenses.
For instance the festlex-OALD lexicon, which can be found among other files (incl. the source code of the latest Festival release) on the Festvox 2.5 release page lexicon is restricted to non-commercial use only.
The dramaTTS documentation will provide an example for a Festival distribution based on free components only.
Please see the COPYING file in the source code repository for details on licenses and copyright disclaimers of the individual components.
As mentioned above dramaTTS consists of 2 main components: a script parser and a scheduler/configurator for the audio-rendering.
The script parser features:
configurable input file formatting
syntax highlighting (identifies different content like new scenes, dialogue lines, narrative descriptions,…)
text string substitutions supporting regular expressions
some utility functions like sorting speakers according to their number of text lines
The audio-renderering part basically provides a front-end to Festival and SoX with following features supported:
Altering of Festival voices (pitch, tempo and volume)
support for multiple CPU cores to accelerate audio rendering (dispatches parallel processes for individual lines)
using a Festival server for rendering is supported
some post-processing: normalize all voices, combine audio files (lines -> scenes -> single project file)
(re-)rendering of individual scenes or speakers
You will need a python3 distribution installed and for most convenience you should have either the pip or conda package manager installed.
On linux you will most likely have python and pip already installed - if not you should be able to install them with distributions package-manager.
E.g. for debian based system like ubuntu just run:
sudo apt-get python3-pip
or on arch based:
sudo pacman -S python-pip
To install dramaTTS with pip:
pip install dramatts
Note, that on some distributions you may install python2 and python3 in parallel. In such cases you should make sure, that you not using a pip for your python2 environment to install dramaTTS. Eventually you need to use pip3 as a command. You can check if you are using the correct pip by calling:
To install dramaTTS with conda:
conda install -c thecker dramatts
In both cases pip or conda should download all required dependencies and should be able to launch the program. To do that just type:
python -m dramatts.dramatts_gui
The GUI should pop up and you can import text files, define roles etc., but you will not be able render audio unless you have installed Festival (and its components) and SoX.
See the dramaTTS documentation for more details.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.