Skip to main content

Text To Audio Drama (TTAD) program, uses play-like scripts.

Project description

voxtalkz

voxtalkz is an open source python library that aims to provide a service to convert play-like-scripts to semi-relisic audio-dramas.

Getting Started

Prerequisites

Python >= 3.6
pip

voxtalkz needs several python libraries to function:

Google Text To Speach (gTTS)

Pydub (pydub)

These will be atomatically installed with pip.

Installing

pip install voxtalkz

Note: if pip fails, pip3 should work

Testing

Write a short script and save it as test.script.

# Assign a name to an actor
Susan:british_woman

# Make her say Hello, World!
Susan:Hello, World!

There are two easy options to run voxtalks

  1. Open the commandline and navigate to your file.

    Run the script.

    python3 -m voxtalkz test.script test --debug
    
  2. Run this in a python shell:

    import voxtalks
    voxtalkz.say(<path/to/test.script>, <output_file_name>, debug=True)
    

Assuming all went well, you should see a file named test.mp3. Play it with your favorate mp3 playing program. (Other filetypes will be made avilable upon request)

Using wavnet voices

instead of python3 -m voxtalkz test.script test --debug, use python3 -m voxtalkz test.script test --debug --cloud <my_api_key> (May not work)

Or in Idle or a script: python import voxtalks voxtalkz.say(<path/to/test.script>, <output_file_name>, debug=True, cloudKey=<my_api_key>)

replace <my_api_key> with a Google Cloud TextToSpeach API key, (google Google Cloud TextToSpeach API key it to find out how to get one)

This will give you MUCH better sounding voices than the default default ones, but keep in mind, there are differant voices for wavenet. Look at the help section for more info.

Modifiers for wavenet voices are supported via ssml, with a simple conversion script such that:

Susan:real_american_woman

Susan: Hello World! __I really like dirt.__ *Dirt tasts good.*

Will sound like: Hello world! I really like dirt. Dirt tasts good.

Keep in mind, emphisising a word will break the flow of a sentance, such that the following

Susan:real_american_woman

Susan: I __really__ like dirt.

Will sound like I. Really. Like dirt.

Use a sound Effect

Navigate to your home directory (On windows that's C:/Users/Username) and create a folder named .voxtalkz.

Navigate into that folder and create a new folder named soundEffects.

Download a .mp3 or .wav sound effect (other filetypes will be made available upon request, or as I need them) and place it in the .voxtalkz/soundEffects/ folder, for this tutorial we will assume the file is called footsteps.mp3.

Write a short script and save it as test2.script.

# Assign a name to an actor
Susan:british_woman

# Make her say Hello, World!
Susan:Hello, World!
Susan:Goodbye, World!

# Add the soud effect
*footsteps

Open the commandline and navigate to your file. Run the script.

python3 -m voxtalkz test2.script test2 --debug

Play test2.mp3

Adding a Modifier

Write a short script and save it as test3.script.

# Assign a name to an actor
Susan:british_woman

# Make her say Hello, World! as a little girl
Susan:Hello, World!@PITCH=0.3

# Make her say Goodbye, World! as an old woman
Susan:Goodbye, World!@PITCH=-0.3

Open the commandline and navigate to your file. Run the script.

python3 -m voxtalkz test3.script test3 --debug

Play the resulting test3.mp3.

Using in in Python with lists

	import voxtalkz

	TalkzBox = voxtalkz.voxTalkz('',<outputfilename>)
	mylist = [['Susan','british_woman'],['Susan', 'Hello, world!']]
	TalkzBox.ListToSound(mylist)

Using as a Python Library

Copy voxtalkz.py to the folder with the python file you want to use it with.

Add these line of code to your program:

import voxtalkz

TalkzBox = voxtalkz.voxTalkz(<scriptname>,<outputfilename>)
Parsed = TalkzBox.Parse(TalkzBox.file)
OutputSound = TalkzBox.ListToSound(Parsed)
# OutputSound is an instance of pydub.AudioSegment. It can be proccesed with pydub now.
OutputSound.export(filename, format='<.wav, .mp3, and others>')

Contributing

Any and all help will be greatly appriciated! Any feature requests will be implemented if possible.

Authors

License

This project is licensed under the GNUv3 License - see the LICENSE.md file for details

Usage

Usage: python3 -m voxtalkz [input file, output file] 

Converts play-like script to a .mp3 file 
Script file must be written in this manner: 

#The first time a unknown name is called, instead of making the person talk, the name will be assigned to a person. 
Susan:american_woman
#Then the person will "talk"
Susan:Hello, world!
#Comments are allowed!
*soundeffect_without_filename_extension

Effects can be applied by adding an @ symbal the the effect name, like so:
person1:hello, world!@VOLUME=8
A second effect can be applied by using the pipe("|") like so:
person1:Hello, World!@FADE|VOLUME=8

List of all effects:
	@FADE | Fade to nothing
	@FADE_IN | Fade in from silent
	@OVERLAY | Overlays the sound onto what has already been recorded. Use @OVERLAY=VAR1 to START the overlay at the begining of where you assigned @VAR=1
	@REPEAT= | Repeat audio segment however many times you specify. e.g. (american_woman:Hello, world!@REPEAT=10) would produce Someone saying "Hello, world!" ten times
	@VAR=    | Assign a number to a temporary table. Only used with @OVERLAY
	@VOLUME= | Set volume change in decibels. A negitive number will reduce the volume
	@PITCH=  | Set pitch change. e.g. "american_woman:Hello, world!@PITCH=0.3" would make the person sound like a little girl, while "american_woman:Hello, world!@PITCH=-0.3" would sound like an old woman
Wavenet/Cloud voice specific effects:
	@SPEAKINGRATE= | number from 0.25 to 4.0, where 1 is normal, 2 is twice as fast, 0.5 if half speed...

List of all normal actors:
	indian_man | Clearly speaks
	american_woman | Clearly speaks
	scottish_woman
	russian_woman
	drawling_man
	danish_woman | Clearly speaks
	dutch_woman
	au_woman | Clearly speaks
	british_woman | Clearly speaks
	indian_woman | Clearly speaks
	spanish_woman
	french_woman
	hindu_woman
	alien_man
	italian_man
	phone_woman
	korean_man | Clearly speaks
	dramatized_woman
	silly_man
	robot_man
	dramitized_girl
	bored_teen
	happy_girl
	boss_lady
	young_grandma
	spoiled_girl
	american_woman

List of all wavenet actors:
    "real_australian_woman":["en-AU-Wavenet-A","en-AU"],
    "real_australian_man":["en-AU-Wavenet-B","en-AU"],
    "real_personal_australian_woman":["en-AU-Wavenet-C","en-AU"],
    "real_personal_australian_man":["en-AU-Wavenet-D","en-AU"],

    "real_indian_woman":["en-IN-Wavenet-A","en-IN"],
    "real_indian_man":["en-IN-Wavenet-B","en-IN"],
    "real_personal_indian_woman":["en-IN-Wavenet-C","en-IN"],
    "real_personal_indian_man":["en-IN-Wavenet-D","en-IN"],

    "real_british_woman":["en-GB-Wavenet-A","en-GB"],
    "real_british_man":["en-GB-Wavenet-B","en-GB"],
    "real_personal_british_woman":["en-GB-Wavenet-C","en-GB"],
    "real_urgent_british_woman":["en-GB-Wavenet-F","en-GB"],
    "real_personal_british_man":["en-GB-Wavenet-D","en-GB"],

    "real_young_american_man":["en-US-Wavenet-A","en-US"],
    "real_middleage_american_man":["en-US-Wavenet-B","en-US"],
    "real_american_man":["en-US-Wavenet-B","en-US"],
    "real_middleage_american_woman":["en-US-Wavenet-C","en-US"],
    "real_american_woman":["en-US-Wavenet-C","en-US"],
    "real_middleage_personal_american_man":["en-US-Wavenet-D","en-US"],
    "real_middleage_personal_american_woman":["en-US-Wavenet-E","en-US"],
    "real_young_personal_american_woman":["en-US-Wavenet-F","en-US"],
    "real_distracted_middleage_american_woman":["en-US-Wavenet-G","en-US"],
    "real_young_american_woman":["en-US-Wavenet-H","en-US"],
    "real_young_personal_american_man":["en-US-Wavenet-I","en-US"],
    "real_cocky_american_man":["en-US-Wavenet-J","en-US"]
    + all normal actors

Sound effects must be in the .mp3 or .wav format and placed in /home/user/.voxtalk/soundEffects
To use footsteps.mp3 as a sound effect: put '*footsteps' in your script

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

voxtalkz-1.2.9.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

voxtalkz-1.2.9-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file voxtalkz-1.2.9.tar.gz.

File metadata

  • Download URL: voxtalkz-1.2.9.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0

File hashes

Hashes for voxtalkz-1.2.9.tar.gz
Algorithm Hash digest
SHA256 6a39c4e5f01be4afdce4d5a276be7b731ad32b18c8ac8e3b02f2ef56732d65a8
MD5 0cce8d66a622c3d8d7f737a249229831
BLAKE2b-256 3b103829146cb0188a61eb2832b1be51ee63114130d027d9f3534400708e9c88

See more details on using hashes here.

File details

Details for the file voxtalkz-1.2.9-py3-none-any.whl.

File metadata

  • Download URL: voxtalkz-1.2.9-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0

File hashes

Hashes for voxtalkz-1.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 0770efbe3f043ce37fe43d9c1fdb295608e1c52eedfbfbf0653476ed4332be61
MD5 86bfa4cd7df38cd5b8bc7d533c1a69c6
BLAKE2b-256 95b33e47df81ee717f7919a2d7bbc4b109ff9a28f6cb1ddb9ecb9be57283b3b9

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