pythontext-to-speechpython-3.8ubuntu-20.04pyttsx

Having problem using 'pyttsx3' on Ubuntu 20.04


I am on Ubuntu 20.04. Tried the following code on Pycharm CE. Just to speak out "Hello World".

import pyttsx3
pyttsx3.speak("Hello World!")

Getting the following output showing tons of errors. Please help!

 Traceback (most recent call last):
  File "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/__init__.py", line 20, in init
    eng = _activeEngines[driverName]
  File "/usr/lib/python3.8/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 "/home/masrafi/PycharmProjects/audio book/audio book.py", line 2, in <module>
    pyttsx3.speak("Hello World!")
  File "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/__init__.py", line 28, in speak
    engine = init()
  File "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/__init__.py", line 22, in init
    eng = Engine(driverName, debug)
  File "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/engine.py", line 30, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
  File "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/driver.py", line 50, in __init__
    self._module = importlib.import_module(name)
  File "/usr/lib/python3.8/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 "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/drivers/espeak.py", line 9, in <module>
    from . import _espeak, toUtf8, fromUtf8
  File "/home/masrafi/PycharmProjects/audio book/venv/lib/python3.8/site-packages/pyttsx3/drivers/_espeak.py", line 18, in <module>
    dll = cdll.LoadLibrary('libespeak.so.1')
  File "/usr/lib/python3.8/ctypes/__init__.py", line 451, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python3.8/ctypes/__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libespeak.so.1: cannot open shared object file: No such file or directory

 Process finished with exit code 1

Solution

  • As the error points out: OSError: libespeak.so.1: cannot open shared object file: No such file or directory, that library must be installed using

    sudo apt install libespeak-dev