import pyttsx works in python 2.7, but not in python3

13,099

Solution 1

I believe you are looking for the library:

pyttsx3

This python3 compatible version is now packaged in pypi and works pretty well for both python2 and python3 and as far as i have tested , it didn't give any error.

just use :

pip install pyttsx3

Usage :

import pyttsx3
engine = pyttsx3.init()
engine.say("I am talking now ");
engine.setProperty('rate',100)  
engine.runAndWait();

Solution 2

I attempted to install pyttsx on Python 3.4 (on Windows). Here's what I discovered:

The pyttsx found on PyPi was developed by Peter Parente on GitHub.

Parente has abandoned further development, and never ported it to Python 3. I cannot even get his version to install on Python 3. I am not sure how you managed this.

A user called James Percent forked it and made a fairly minimal attempt to make it Python 3 compatible.

I found that attempt didn't go far enough, because - while I could install it and even import pyttsx successfully, when I tried to call pyttsx.init() it would do a dynamic import of a driver, and fail with an import error.

I made a further fork to fix that, which I will submit to James Percent. With those changes in place, I am able to run @Khanrad's test script.

Share:
13,099
mnr
Author by

mnr

I'm friends with technology. But I'm not blindly in love with it. It has to be questioned. It has to be explained. Sometimes it's just dead wrong. It needs firm guidance. I prioritize people over technology. Bigger, better, and faster features make shinier products, but usually, that isn't what people want. People don't want widgets, they want elegance and relevance. I'm an educator, manager, evangelist, marketer, technologist, futurist, coder. I point to the future. I explain the present. I learn from the past. I know people speak different languages: marketing, sales, engineering, management, strategy. I'm fluent in all of those. There is poetry in technology, but it's obscured if we use the wrong nouns and verbs. Sometimes I'm abrupt. Sometimes I apologize. I'm passionate, but willing to believe I'm wrong. I try to inform myself, and I know there are at least two answers to every problem. "Why" is my favorite question, followed by "When." I write science fiction. Sometimes it's about spaceships, sometimes it's about products. The goal is the same; explain where we want to be, point out hazards, celebrate arrival. I'm engaging. Informed. Opinionated. Respectful. Your thoughts?

Updated on June 08, 2022

Comments

  • mnr
    mnr almost 2 years

    Question: why is python3 unable to find the engine module when importing pyttsx?

    Details:

    I'm doing this on a raspberry pi with Raspbian Wheezy

    Under python 2.7, the following works:

    >>> import pyttsx
    

    Under python3, the following happens:

    >>> import pyttsx
    Traceback (etc...)
     File "<stdin>", line 1, in <module>
     File "/usr/local/lib/python3.2/dist-packages/pyttsx-1.1-py3.2.egg/pyttsx/__init__.py", line 18, in <module>
    ImportError: No module named engine
    

    I've installed and used sudo pip install pyttsx

    I've imported sys

    sys.path contains this...

    >>> print (sys.path) 
    ['','/usr/local/lib/python3.2/dist-packages/setuptools-5.4.1-py3.2.egg', '/usr/local/lib/python3.2/dist-packages/pyttsx-1.1-py3.2.egg', '/usr/lib/python3.2','usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload','/usr/local/lib/python3.2/dist-packages','/usr/lib/python3/dist-packages']
    

    ls /usr/local/lib/python3.2/dist-packages results in...

    easy-install.pth pyttsx-1.1-py3.2.egg setuptools-5.4.1-py3.2.egg setuptools.pth
    

    unzip -t /usr/local/lib/python3.2/dist-packages/pyttsx-1.1-py3.2.egg shows....

    pyttsx/__init__.py  OK
    pyttsx/voice.py   OK
    pyttsx/engine.py  OK
    (etc...)
    No errors detected in compressed data of pyttsx-1.1-py3.2.egg
    

    Thanks for your help!