Text to Speech (TTS) library for Python 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak.
Project description
Offline Text To Speech (TTS) converter for Python
pyttsx3
is a text-to-speech conversion library in Python. Unlike alternative libraries, it works offline.
Installation :
pip install pyttsx3
If you get installation errors , make sure you first upgrade your wheel version using :
pip install --upgrade wheel
Features :
- ✨Fully OFFLINE text to speech conversion
- 🎈 Choose among different voices installed in your system
- 🎛 Control speed/rate of speech
- 🎚 Tweak Volume
- 📀 Save the speech audio as a file
- ❤️ Simple, powerful, & intuitive API
Linux installation requirements :
-
If you are on a Linux system and if the voice output is not working, then :
Install espeak-ng and libespeak1 as shown below:
sudo apt update && sudo apt install espeak-ng libespeak1
Usage :
import pyttsx3
engine = pyttsx3.init()
# For Mac, If you face error related to "pyobjc" when running the `init()` method :
# Install 9.0.1 version of pyobjc : "pip install pyobjc>=9.0.1"
engine.say("I will speak this text")
engine.runAndWait()
Single line usage with speak function with default options
import pyttsx3
pyttsx3.speak("I will speak this text")
Changing Voice , Rate and Volume :
import pyttsx3
engine = pyttsx3.init() # object creation
# RATE
rate = engine.getProperty('rate') # getting details of current speaking rate
print (rate) # printing current voice rate
engine.setProperty('rate', 125) # setting up new voice rate
# VOLUME
volume = engine.getProperty('volume') # getting to know current volume level (min=0 and max=1)
print (volume) # printing current volume level
engine.setProperty('volume',1.0) # setting up volume level between 0 and 1
# VOICE
voices = engine.getProperty('voices') # getting details of current voice
#engine.setProperty('voice', voices[0].id) # changing index, changes voices. o for male
engine.setProperty('voice', voices[1].id) # changing index, changes voices. 1 for female
engine.say("Hello World!")
engine.say('My current speaking rate is ' + str(rate))
engine.runAndWait()
engine.stop()
# Saving Voice to a file
# On Linux, make sure that 'espeak-ng' is installed
engine.save_to_file('Hello World', 'test.mp3')
engine.runAndWait()
Full documentation of the Library
https://pyttsx3.readthedocs.io
Included Text-To-Speech Engines by Operating System
Linux | macOS | Windows | |
---|---|---|---|
AVSpeech | ✅︎ | ||
eSpeak | ✅︎ | ✅︎ | ✅︎ |
NSSpeechSynthesizer | ✅︎ | ||
SAPI5 | ✅︎ |
[!NOTE]
- AVSpeechSynthesizer support is still experimental.
- NSSpeechSynthesizer is deprecated by Apple.
Feel free to wrap another text-to-speech engine for use with pyttsx3
.
Project Links :
- PyPI (https://pypi.org/project/pyttsx3)
- GitHub (https://github.com/nateshmbhat/pyttsx3)
- Full Documentation (https://pyttsx3.readthedocs.org)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyttsx3-2.99.tar.gz
.
File metadata
- Download URL: pyttsx3-2.99.tar.gz
- Upload date:
- Size: 34.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
a18a5601530a570c43491b4112887fc34c47e118fc937287db8d21905da1f74e
|
|
MD5 |
229bc0443002eca4b9a09ec3bdbc47b5
|
|
BLAKE2b-256 |
944ea37786f666f4f084fc45e026ca1e63f7b49ac0d90b53fa35ae62b73c96a8
|
Provenance
The following attestation bundles were made for pyttsx3-2.99.tar.gz
:
Publisher:
python_publish.yml
on nateshmbhat/pyttsx3
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
pyttsx3-2.99.tar.gz
-
Subject digest:
a18a5601530a570c43491b4112887fc34c47e118fc937287db8d21905da1f74e
- Sigstore transparency entry: 267515799
- Sigstore integration time:
-
Permalink:
nateshmbhat/pyttsx3@6340ae4806ba299b12bd9b29973a9b64a23a125d
-
Branch / Tag:
refs/heads/master
- Owner: https://github.com/nateshmbhat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
python_publish.yml@6340ae4806ba299b12bd9b29973a9b64a23a125d
-
Trigger Event:
push
-
Statement type:
File details
Details for the file pyttsx3-2.99-py3-none-any.whl
.
File metadata
- Download URL: pyttsx3-2.99-py3-none-any.whl
- Upload date:
- Size: 32.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ff3e4ff756c24d72b9f3f2f304e0edaafd0f58adb0e6f4b90d930440cda8b207
|
|
MD5 |
f62b7e09aa4c6f400033e9a7ee06838a
|
|
BLAKE2b-256 |
84149fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650
|
Provenance
The following attestation bundles were made for pyttsx3-2.99-py3-none-any.whl
:
Publisher:
python_publish.yml
on nateshmbhat/pyttsx3
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
pyttsx3-2.99-py3-none-any.whl
-
Subject digest:
ff3e4ff756c24d72b9f3f2f304e0edaafd0f58adb0e6f4b90d930440cda8b207
- Sigstore transparency entry: 267515800
- Sigstore integration time:
-
Permalink:
nateshmbhat/pyttsx3@6340ae4806ba299b12bd9b29973a9b64a23a125d
-
Branch / Tag:
refs/heads/master
- Owner: https://github.com/nateshmbhat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
python_publish.yml@6340ae4806ba299b12bd9b29973a9b64a23a125d
-
Trigger Event:
push
-
Statement type: