#python #python-3.x #pyttsx3
#python #python-3.x #pyttsx3
Вопрос:
При использовании модуля pyttsx3 в моей виртуальной среде python 3.8.5 с помощью этого кода:
import pyttsx3
def speak(speak):
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
engine.getProperty('rate')
engine.setProperty('rate', 155)
engine.say(speak)
engine.runAndWait()
speak("Hello")
Я получаю эту ошибку при компиляции приведенного выше кода:
Traceback (most recent call last):
File "D:virtualenvvenvlibsite-packagespyttsx3__init__.py", line 20, in init
eng = _activeEngines[driverName]
File "c:usersCurrentUserappdatalocalprogramspythonpython38-32libweakref.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:/virtualenv/hehe.py", line 12, in <module>
speak("Hello")
File "d:/virtualenv/hehe.py", line 4, in speak
engine = pyttsx3.init()
File "D:virtualenvvenvlibsite-packagespyttsx3__init__.py", line 22, in init
eng = Engine(driverName, debug)
File "D:virtualenvvenvlibsite-packagespyttsx3engine.py", line 30, in __init__
self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
File "D:virtualenvvenvlibsite-packagespyttsx3driver.py", line 50, in __init__
self._module = importlib.import_module(name)
File "c:usersCurrentUserappdatalocalprogramspythonpython38-32libimportlib__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 "D:venvlibsite-packagespyttsx3driverssapi5.py", line 1, in <module>
import comtypes.client # Importing comtypes.client will make the gen subpackage
File "D:virtualenvvenvlibsite-packagescomtypes__init__.py", line 1176, in <module>
class IPersist(IUnknown):
File "D:virtualenvvenvlibsite-packagescomtypes__init__.py", line 1180, in IPersist
COMMETHOD([], HRESULT, 'GetClassID',
File "D:virtualenvvenvlibsite-packagescomtypes__init__.py", line 1099, in COMMETHOD
from comtypes.automation import VARIANT
File "D:virtualenvvenvlibsite-packagescomtypesautomation.py", line 4, in <module>
import decimal
File "c:usersCurrentUserappdatalocalprogramspythonpython38-32libdecimal.py", line 3, in <module>
from _decimal import *
AttributeError: module 'numbers' has no attribute 'Number'
Каждый раз, когда я запускаю данный код python, возникает вышеуказанная ошибка, и я использую VS code в качестве среды разработки в Windows 10
Ответ №1:
Извлеките pyttsx3.init()
из функции. Это не должно вызываться повторно. Он должен вызываться только один раз.
import pyttsx3
engine = pyttsx3.init()
def speak(word):
#set engine properties
engine.say(word)
engine.runAndWait()
speak('Speak')
Комментарии:
1. обновите номера с помощью pip или переустановите pyttx3
Ответ №2:
Это должно сработать:
import pyttsx3
engine = pyttsx3.init()
def speak(word):
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
rate = engine.getProperty('rate')
engine.setProperty('rate', 155)
engine.say(word)
engine.runAndWait()
speak("Hello")
Комментарии:
1. Я немного отредактировал код. Теперь это должно сработать. Попробуйте и дайте мне знать.