Skip to main content

Offline Text To Speech (TTS) converter for Python

Downloads Downloads

pyttsx3 is a text-to-speech conversion library in Python. Unlike alternative libraries, it works offline.

Buy me a coffee 😇Buy me a coffee 😇

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 :

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyttsx3-2.99.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

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

pyttsx3-2.99-py3-none-any.whl (32.2 kB view details)

Uploaded Python 3

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

Hashes for pyttsx3-2.99.tar.gz
Algorithm Hash digest
SHA256 a18a5601530a570c43491b4112887fc34c47e118fc937287db8d21905da1f74e
MD5 229bc0443002eca4b9a09ec3bdbc47b5
BLAKE2b-256 944ea37786f666f4f084fc45e026ca1e63f7b49ac0d90b53fa35ae62b73c96a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyttsx3-2.99.tar.gz:

Publisher: python_publish.yml on nateshmbhat/pyttsx3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pyttsx3-2.99-py3-none-any.whl
Algorithm Hash digest
SHA256 ff3e4ff756c24d72b9f3f2f304e0edaafd0f58adb0e6f4b90d930440cda8b207
MD5 f62b7e09aa4c6f400033e9a7ee06838a
BLAKE2b-256 84149fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyttsx3-2.99-py3-none-any.whl:

Publisher: python_publish.yml on nateshmbhat/pyttsx3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.99 This release

2 files

2.98

2 files

2.97

2 files

2.95

2 files

2.92

2 files

2.91

2 files

2.90

1 file

2.88

1 file

2.87

1 file

2.86

1 file

2.84

1 file

2.83

1 file

2.81

1 file

2.80

1 file

2.71

1 file

2.9

1 file

2.8

1 file

2.7

2 files

2.6

1 file

2.5

1 file

1.15

1 file

1.14

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page