<p align="center">
<img src=".github/logo.svg?sanitize=true" width="200px" height="200px">
</p>
<h2 align="center">Offline Text To Speech (TTS) converter for Python </h2>
[](https://pepy.tech/project/pyttsx3)  [](https://github.com/nateshmbhat/pyttsx3) [](https://github.com/nateshmbhat/pyttsx3) [](https://pypi.org/project/pyttsx3/) [](https://github.com/nateshmbhat/pyttsx3) [](https://github.com/nateshmbhat)
`pyttsx3` is a text-to-speech conversion library in Python. Unlike alternative libraries, **it works offline**.
<a class="bmc-button" target="_blank" href="https://www.buymeacoffee.com/nateshmbhat"><img src="https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg" alt="Buy me a coffee 😇"><span style="margin-left:5px;font-size:19px !important;">Buy me a coffee 😇</span></a>
## 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 :
```python3
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**
```python3
import pyttsx3
pyttsx3.speak("I will speak this text")
```
**Changing Voice , Rate and Volume :**
```python3
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.
[AVSpeech]: https://developer.apple.com/documentation/avfoundation/speech_synthesis
[eSpeak]: https://github.com/espeak-ng/espeak-ng?tab=readme-ov-file#readme
[NSSpeechSynthesizer]: https://developer.apple.com/documentation/appkit/nsspeechsynthesizer
[SAPI5]: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms723627(v=vs.85)
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)
Raw data
{
"_id": null,
"home_page": null,
"name": "pyttsx3",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "gtts, ivona, offline text to speech, offline tts, pyttsx, pyttsx for python3, pyttsx3, speech, speech synthesis, text to speech, text to speech for python, tts, TTS for python3",
"author": null,
"author_email": "Natesh M Bhat <nateshmbhatofficial@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/94/4e/a37786f666f4f084fc45e026ca1e63f7b49ac0d90b53fa35ae62b73c96a8/pyttsx3-2.99.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <img src=\".github/logo.svg?sanitize=true\" width=\"200px\" height=\"200px\">\n</p>\n<h2 align=\"center\">Offline Text To Speech (TTS) converter for Python </h2>\n\n\n[](https://pepy.tech/project/pyttsx3)  [](https://github.com/nateshmbhat/pyttsx3) [](https://github.com/nateshmbhat/pyttsx3) [](https://pypi.org/project/pyttsx3/) [](https://github.com/nateshmbhat/pyttsx3) [](https://github.com/nateshmbhat)\n\n\n`pyttsx3` is a text-to-speech conversion library in Python. Unlike alternative libraries, **it works offline**.\n\n<a class=\"bmc-button\" target=\"_blank\" href=\"https://www.buymeacoffee.com/nateshmbhat\"><img src=\"https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg\" alt=\"Buy me a coffee \ud83d\ude07\"><span style=\"margin-left:5px;font-size:19px !important;\">Buy me a coffee \ud83d\ude07</span></a>\n\n## Installation :\n\n\tpip install pyttsx3\n\n> If you get installation errors , make sure you first upgrade your wheel version using :\n`pip install --upgrade wheel`\n\n\n## Features :\n\n- \u2728Fully **OFFLINE** text to speech conversion\n- \ud83c\udf88 Choose among different voices installed in your system\n- \ud83c\udf9b Control speed/rate of speech\n- \ud83c\udf9a Tweak Volume\n- \ud83d\udcc0 Save the speech audio as a file\n- \u2764\ufe0f Simple, powerful, & intuitive API\n\n\n#### Linux installation requirements :\n\n+ If you are on a Linux system and if the voice output is not working, then :\n\n\tInstall espeak-ng and libespeak1 as shown below:\n\n\t```\n\tsudo apt update && sudo apt install espeak-ng libespeak1\n\t```\n\n## Usage :\n\n```python3\nimport pyttsx3\nengine = pyttsx3.init()\n\n# For Mac, If you face error related to \"pyobjc\" when running the `init()` method :\n# Install 9.0.1 version of pyobjc : \"pip install pyobjc>=9.0.1\"\n\nengine.say(\"I will speak this text\")\nengine.runAndWait()\n```\n\n**Single line usage with speak function with default options**\n\n```python3\nimport pyttsx3\npyttsx3.speak(\"I will speak this text\")\n```\n\n**Changing Voice , Rate and Volume :**\n\n```python3\nimport pyttsx3\nengine = pyttsx3.init() # object creation\n\n# RATE\nrate = engine.getProperty('rate') # getting details of current speaking rate\nprint (rate) # printing current voice rate\nengine.setProperty('rate', 125) # setting up new voice rate\n\n# VOLUME\nvolume = engine.getProperty('volume') # getting to know current volume level (min=0 and max=1)\nprint (volume) # printing current volume level\nengine.setProperty('volume',1.0) # setting up volume level between 0 and 1\n\n# VOICE\nvoices = engine.getProperty('voices') # getting details of current voice\n#engine.setProperty('voice', voices[0].id) # changing index, changes voices. o for male\nengine.setProperty('voice', voices[1].id) # changing index, changes voices. 1 for female\n\nengine.say(\"Hello World!\")\nengine.say('My current speaking rate is ' + str(rate))\nengine.runAndWait()\nengine.stop()\n\n# Saving Voice to a file\n# On Linux, make sure that 'espeak-ng' is installed\nengine.save_to_file('Hello World', 'test.mp3')\nengine.runAndWait()\n```\n\n### **Full documentation of the Library**\n\nhttps://pyttsx3.readthedocs.io\n\n#### Included Text-To-Speech Engines by Operating System\n| | Linux | macOS | Windows |\n|-------------------------|:-----:|:-----:|:-------:|\n| [AVSpeech][] | | \u2705\ufe0e | |\n| [eSpeak][] | \u2705\ufe0e | \u2705\ufe0e | \u2705\ufe0e |\n| [NSSpeechSynthesizer][] | | \u2705\ufe0e | |\n| [SAPI5][] | | | \u2705\ufe0e |\n\n> [!NOTE]\n> * AVSpeechSynthesizer support is still experimental.\n> * NSSpeechSynthesizer is deprecated by Apple.\n\n[AVSpeech]: https://developer.apple.com/documentation/avfoundation/speech_synthesis\n[eSpeak]: https://github.com/espeak-ng/espeak-ng?tab=readme-ov-file#readme\n[NSSpeechSynthesizer]: https://developer.apple.com/documentation/appkit/nsspeechsynthesizer\n[SAPI5]: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms723627(v=vs.85)\n\nFeel free to wrap another text-to-speech engine for use with ``pyttsx3``.\n\n### Project Links :\n\n* PyPI (https://pypi.org/project/pyttsx3)\n* GitHub (https://github.com/nateshmbhat/pyttsx3)\n* Full Documentation (https://pyttsx3.readthedocs.org)\n",
"bugtrack_url": null,
"license": null,
"summary": "Text to Speech (TTS) library for Python 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak.",
"version": "2.99",
"project_urls": {
"Homepage": "https://github.com/nateshmbhat/pyttsx3"
},
"split_keywords": [
"gtts",
" ivona",
" offline text to speech",
" offline tts",
" pyttsx",
" pyttsx for python3",
" pyttsx3",
" speech",
" speech synthesis",
" text to speech",
" text to speech for python",
" tts",
" tts for python3"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "84149fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650",
"md5": "f62b7e09aa4c6f400033e9a7ee06838a",
"sha256": "ff3e4ff756c24d72b9f3f2f304e0edaafd0f58adb0e6f4b90d930440cda8b207"
},
"downloads": -1,
"filename": "pyttsx3-2.99-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f62b7e09aa4c6f400033e9a7ee06838a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 32157,
"upload_time": "2025-07-08T12:24:20",
"upload_time_iso_8601": "2025-07-08T12:24:20.299268Z",
"url": "https://files.pythonhosted.org/packages/84/14/9fb5842581f0419b5eb85f8c26c1c0c0f4cf6b4d5be638ae3157316a2650/pyttsx3-2.99-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "944ea37786f666f4f084fc45e026ca1e63f7b49ac0d90b53fa35ae62b73c96a8",
"md5": "229bc0443002eca4b9a09ec3bdbc47b5",
"sha256": "a18a5601530a570c43491b4112887fc34c47e118fc937287db8d21905da1f74e"
},
"downloads": -1,
"filename": "pyttsx3-2.99.tar.gz",
"has_sig": false,
"md5_digest": "229bc0443002eca4b9a09ec3bdbc47b5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 33968,
"upload_time": "2025-07-08T12:24:21",
"upload_time_iso_8601": "2025-07-08T12:24:21.314616Z",
"url": "https://files.pythonhosted.org/packages/94/4e/a37786f666f4f084fc45e026ca1e63f7b49ac0d90b53fa35ae62b73c96a8/pyttsx3-2.99.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-08 12:24:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nateshmbhat",
"github_project": "pyttsx3",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyttsx3"
}