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 :

Metadata

Release files for pyttsx3 2.99

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyttsx3 2.99
File Size Uploaded
pyttsx3-2.99.tar.gz 34.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyttsx3 2.99
File Interpreter ABI Platform
pyttsx3-2.99-py3-none-any.whl Python 3 none any Details

Total release size: 66.1 kB

Release files / pyttsx3-2.99.tar.gz

Download URL pyttsx3-2.99.tar.gz
Size 34.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a18a5601530a570c43491b4112887fc34c47e118fc937287db8d21905da1f74e
BLAKE2b-256 checksum
How to use checksums
944ea37786f666f4f084fc45e026ca1e63f7b49ac0d90b53fa35ae62b73c96a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 8, 2025.

Transparency log

Release files / pyttsx3-2.99-py3-none-any.whl

Download URL pyttsx3-2.99-py3-none-any.whl
Size 32.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff3e4ff756c24d72b9f3f2f304e0edaafd0f58adb0e6f4b90d930440cda8b207
BLAKE2b-256 checksum
How to use checksums
84149fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 8, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

2.99 This release

2 release files

2.98

2 release files

2.97

2 release files

2.95

2 release files

2.92

2 release files

2.91

2 release files

2.90

1 release file

2.88

1 release file

2.87

1 release file

2.86

1 release file

2.84

1 release file

2.83

1 release file

2.81

1 release file

2.80

1 release file

2.71

1 release file

2.9

1 release file

2.8

1 release file

2.7

2 release files

2.6

1 release file

2.5

1 release file

1.15

1 release file

1.14

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page