0

i am trying to convert text to speech using pyttsx3 in python. but i am getting the error maybe on driverName.

Here is my code

import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()

Here is the Output which gives error.

Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
============ RESTART: D:/abhi/My Program/text-to-speech(pyttsx3).py ============
Traceback (most recent call last):
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\site-packages\pyttsx3\__init__.py", line 20, in init
    eng = _activeEngines[driverName]
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\weakref.py", line 131, in __getitem__
    o = self.data[key]()
KeyError: None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/abhi/My Program/text-to-speech(pyttsx3).py", line 2, in <module>
    engine = pyttsx3.init()
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\site-packages\pyttsx3\__init__.py", line 22, in init
    eng = Engine(driverName, debug)
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\site-packages\pyttsx3\engine.py", line 30, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\site-packages\pyttsx3\driver.py", line 50, in __init__
    self._module = importlib.import_module(name)
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\site-packages\pyttsx3\drivers\sapi5.py", line 3, in <module>
    import win32com.client
  File "C:\Users\Laptop\AppData\Local\Programs\Python\Python38\lib\site-packages\win32com\__init__.py", line 5, in <module>
    import win32api, sys, os
ImportError: DLL load failed while importing win32api: The specified module could not be found.
>>>

2 Answers2

0

Your code is no problem.

It can run successfully on my Windows 10, my python version is 3.7.3.

ImportError: DLL load failed while importing win32api: The specified module could not be found.

Your win32api module does not seem to be installed correctly, please use pip uninstall pywin32 to uninstall and use pip install pywin32 to install again.

You can also refer other methods in the link to solve it.

For KeyError: None, you can refer Python KeyError Exceptions and How to Handle Them to do some error handling.

Finally, please follow this tutorial to convert text to speech.

Strive Sun
  • 5,988
  • 1
  • 9
  • 26
0

I sloved my own problem. Firstly! I uninstalled Python-3.8 from control panel and installed Python-3.7.2(and added to path during installation).

Secondly,Upgraded setuptool using cmd -> pip install --upgrade setuptools. after that I installed SpeechRecognition, pyttsx3

and after that I also installed PyAudio-0.2.11-cp37-cp37m-win_amd64.whl using whl file(because pyaudio is necessary to run this program).

Link to download whl file-> Here .

Now, This program works.