ошибка инициализации pyttsx3, нельзя использовать pyttsx3

У меня возникли проблемы при использовании атрибута .getproperty('voices') в pyttsx3. Поэтому я решил удалить его, а затем переустановить с помощью PIP, чтобы посмотреть, может ли это решить проблему.

Предыдущая ссылка, когда у меня была ошибка .getproperty('voices'): Почему я получаю сообщение об ошибке с pyttsx3, когда пытаюсь получить доступ к свойствам голоса?

Теперь, когда я снова установил его с помощью PIP, я даже не могу его инициализировать.

import pyttsx3
engine = pyttsx3.init()

Это дает эту ошибку:

Traceback (most recent call last):
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\__init__.py", line 20, in init
    eng = _activeEngines[driverName]
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\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 "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 3, in <module>
    from comtypes.gen import SpeechLib  # comtypes
ImportError: cannot import name 'SpeechLib' from 'comtypes.gen' (C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\gen\__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\ctypes\__init__.py", line 123, in WINFUNCTYPE
    return _win_functype_cache[(restype, argtypes, flags)]
KeyError: (<class 'ctypes.HRESULT'>, (<class 'comtypes.automation.tagVARIANT'>, <class 'comtypes.LP_POINTER(ISpeechRecoGrammar)'>), 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    engine = pyttsx3.init()
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\__init__.py", line 22, in init
    eng = Engine(driverName, debug)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\engine.py", line 30, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\driver.py", line 50, in __init__
    self._module = importlib.import_module(name)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\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\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pyttsx3\drivers\sapi5.py", line 6, in <module>
    engine = comtypes.client.CreateObject("SAPI.SpVoice")
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\client\__init__.py", line 250, in CreateObject
    return _manage(obj, clsid, interface=interface)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\client\__init__.py", line 188, in _manage
    obj = GetBestInterface(obj)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\client\__init__.py", line 110, in GetBestInterface
    mod = GetModule(tlib)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\client\_generate.py", line 110, in GetModule
    mod = _CreateWrapper(tlib, pathname)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\client\_generate.py", line 184, in _CreateWrapper
    mod = _my_import(fullname)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\client\_generate.py", line 24, in _my_import
    return __import__(fullname, globals(), locals(), ['DUMMY'])
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\gen\_C866CA3A_32F7_11D2_9602_00C04F8EE628_0_5_4.py", line 455, in <module>
    ISpeechRecoContext._methods_ = [
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\__init__.py", line 329, in __setattr__
    self._make_methods(value)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\site-packages\comtypes\__init__.py", line 698, in _make_methods
    prototype = WINFUNCTYPE(restype, *argtypes)
  File "C:\Users\saife\AppData\Local\Programs\Python\Python38-32\lib\ctypes\__init__.py", line 125, in WINFUNCTYPE
    class WinFunctionType(_CFuncPtr):
TypeError: item 1 in _argtypes_ passes a union by value, which is unsupported.

person saiffarid    schedule 19.02.2020    source источник


Ответы (7)


Открыть командную строку Напишите:

pip uninstall pyttsx3

Затем:

pip install pyttsx3==2.71

И ваша проблема будет решена.

person Dhruv Maradiya    schedule 30.09.2020

Попробуйте вместо этого:

engine= pyttsx3.init('dummy')
person Dhananjay Arne    schedule 30.04.2020

Если вы используете Mac/Linux, установите libespeak1, используя sudo apt install libespeak1

person Sairaj K    schedule 07.02.2021

Надеюсь, вы пытаетесь установить pyttsx3 с сайта https://pypi.org/project/pyttsx3/. .

Вы смогли выполнить pip install pyttsx3 без каких-либо проблем? Вы пытаетесь запустить приведенный выше код из jupyter? если да, то, пожалуйста, не запускайте весь код за раз, т.е. приведенный ниже код

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

сначала запустите import pyttsx3 в одиночку, а затем попробуйте добавить свой код один за другим. Я сталкивался с подобной проблемой ранее много раз, когда запускал ее на разных системах. Я не знаю, почему возникает эта проблема, но описанные выше шаги наверняка решат проблему.

person Jai    schedule 20.02.2020
comment
Он у меня уже установлен. Я запускаю код в оболочке Python 3.8.1. - person saiffarid; 20.02.2020
comment
pyttsx3 поддерживается с python 3.0 до 3.7, я рекомендую вам понизить версию python до 3.7. Вы можете найти информацию о поддержке на pypi.org для вашего подтверждения. Спасибо - person Jai; 20.02.2020
comment
У меня не всегда была эта ошибка. Когда у меня возникла ошибка getproperies («голоса»), как описано в вопросе. Я решил удалить pyttsx3 и снова установить его. Теперь я получаю эту ошибку инициализации - person saiffarid; 20.02.2020

Я не знаю, удалось ли вам обойти эту проблему, но сегодня утром у меня было то же самое, и я исправил ее, понизив версию pyttsx3 с последней до версии 2.71.

Кажется, в последней версии есть некоторые отсутствующие коммиты, которые не были разрешены (если вы читали ветку откуда это сообщение)

person Dark Hippo    schedule 08.06.2020

Вам необходимо предоставить аргумент ключа драйвера для инициализации. "dummy" или "sapi5" будут работать.

engine = pyttsx3.init('dummy')

or

engine = pyttsx3.init('sapi5')
person Kushal Yadav    schedule 05.09.2020

Я столкнулся с той же проблемой в своем проекте, но для меня работает простое изменение версии Python с 3.8 на 3.6.

person Muzamal Ali    schedule 06.11.2020