Generate audio books from text documents
pip install jmes-ttsThis project requires Python 3.12 and uses uv to manage dependencies.
You can create a virtual environment with all the necessary dependencies by running:
uv sync --all-extras --devThis will install all necessary dependencies and install this project in editable mode.
You can activate the venv with:
. .venv/bin/activatePoe the Poet is the task runner
used for this project, it's automatically installed as part of the
dev dependencies. To see a list of available tasks, run the
poe command with no args.
To run the tests for this project run:
poe testBefore submitting a PR, ensure the prcheck task runs successfully:
poe prcheckThe jmes-tts command is the main interface for converting text to speech.
It offers several options to customize the conversion process.
jmes-tts --text "Hello, world!" --output hello.mp3This will convert the text "Hello, world!" to speech and save it as "hello.mp3".
--filename: Input file to convert to speech--text: Text to convert to speech--bucket: S3 bucket for long-form text (optional)--output: Output audio file (default: output.mp3)--language: Language of phrase (default: english)--language-code: Language code override (optional)--voice: Voice to use for text-to-speech (optional)--engine: TTS engine (optional)--list-languages: List language presets and Polly language codes
Supported --language values:
english(default)frenchspanishcantonesemandarin
Run jmes-tts --list-languages to see all presets and the full list of
supported language codes.
For longer texts, you can specify an S3 bucket and the path to a local file:
jmes-tts --filename long_text.txt --bucket my-s3-bucket --output long_audio.mp3- You must provide either
--filenameor--text, but not both. - If your text is larger than 3000 (billable) characters, you need to provide
the
--bucketargument. Otherwise synchronous TTS will be used. - If no output file is specified, the audio will be saved as
output.mp3in the current directory.