Python 我正在制作一个虚拟助手程序,但我发现了这个错误

Python 我正在制作一个虚拟助手程序,但我发现了这个错误,python,python-3.x,keyerror,sapi,pyttsx,Python,Python 3.x,Keyerror,Sapi,Pyttsx,基本上,我正试图在我的Windows10笔记本电脑上制作一个虚拟助手程序,但当我运行下面的脚本时,我发现了一个非常大的错误。我很困惑,所以我需要以下代码的帮助 我在Windows10中使用的是Python3.8版。我收到一个错误,KeyError:'sapi5',在处理上述异常期间,会发生另一个异常。 我的代码正在导入pyttsx3。为了解决这个问题,我找到了一个类似于我的问题的解决方案 给出解决方案的人说的是安装pypiwin32模块,这样它已经安装了,但仍然不起作用。所以请为我的问题提供解决

基本上,我正试图在我的Windows10笔记本电脑上制作一个虚拟助手程序,但当我运行下面的脚本时,我发现了一个非常大的错误。我很困惑,所以我需要以下代码的帮助

我在Windows10中使用的是Python3.8版。我收到一个错误,
KeyError:'sapi5'
,在处理上述异常期间,会发生另一个异常。 我的代码正在导入pyttsx3。为了解决这个问题,我找到了一个类似于我的问题的解决方案 给出解决方案的人说的是安装pypiwin32模块,这样它已经安装了,但仍然不起作用。所以请为我的问题提供解决方案我只想要解决方案

engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
print(voices[1].id)
engine.setProperty('voice', voices[0].id)

def speak(audio):
    engine.say(audio)
    engine.runAndWait()

if __name__ == "__main__":
    speak("bhanu is Iron man")


PS F:\Andi>python-u“F:\Andi\Andi.py”
回溯(最近一次呼叫最后一次):
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\pyttsx3\\uuuu init\uuuu.py”,第20行,在init中
eng=\u活动引擎[driverName]
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\weakref.py”,第131行,在u\getitem中__
o=自身数据[键]()
KeyError:“sapi5”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:\Users\HP\AppData\Local\Programs\Python38-32\lib\site packages\pyttsx3\drivers\sapi5.py”,第3行,在
从comtypes.gen导入SpeechLib#comtypes
ImportError:无法从“comtypes.gen”(C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\gen\\uuuu init\uuuu.py)导入名称“SpeechLib”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
WINFUNCTYPE中的文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\ctypes\\uuuuuu init\uuuuuu.py”,第123行
return\u win\u functype\u cache[(restype,argtypes,flags)]
KeyError:(,(,),0)
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“f:\Andi\Andi.py”,第3行,在
engine=pyttsx3.init('sapi5')
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\pyttsx3\\uuuu init\uuu.py”,第22行,在init中
eng=引擎(驱动器名称,调试)
文件“C:\Users\HP\AppData\Local\Programs\Python38-32\lib\site packages\pyttsx3\engine.py”,第30行,在\uuu init中__
self.proxy=driver.DriverProxy(weakref.proxy(self)、driverName、debug)
文件“C:\Users\HP\AppData\Local\Programs\Python38-32\lib\site packages\pyttsx3\driver.py”,第50行,在\uuu init中__
self.\u模块=导入lib.import\u模块(名称)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\importlib\\uuuuuu init\uuuuuu.py”,第127行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第1014行,在\u gcd\u导入中
文件“”,第991行,在“查找”和“加载”中
文件“”,第975行,在“查找”和“加载”中解锁
文件“”,第671行,在\u加载\u解锁
exec_模块中第783行的文件“”
文件“”,第219行,在“调用”中,删除了“帧”
文件“C:\Users\HP\AppData\Local\Programs\Python38-32\lib\site packages\pyttsx3\drivers\sapi5.py”,第6行,在
engine=comtypes.client.CreateObject(“SAPI.SpVoice”)
CreateObject中的文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\client\ \uuuuuu init\uuuuuu.py”,第250行
返回管理(obj,clsid,接口=接口)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\client\\uuuu init\uuuu.py”,第188行,在\u manage中
obj=GetBestInterface(obj)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\client\ \uuuu init\uuuu.py”,第110行,在GetBestInterface中
mod=GetModule(tlib)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\client\\u generate.py”,第110行,在GetModule中
mod=\u CreateWrapper(tlib,路径名)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\client\\ u generate.py”,第184行,位于\u CreateWrapper中
mod=\u我的\u导入(全名)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\client\\u generate.py”,第24行,在“我的导入”中
return uuu import uuuuu(全名,globals(),locals(),['DUMMY']))
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\gen\\ C866CA3A\U 32F7\U 11D2\U 9602\U 00C04F8EE628\U 0\U 5\U 4.py”,第139行
ISpeechBaseStream.\u方法=[
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\\uuuuuu init\uuuuuu.py”,第329行,位于__
自我制作方法(值)
文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\site packages\comtypes\\uuuuuuuuu init\uuuuuuuuu.py”,第698行,在\u make\u方法中
prototype=WINFUNCTYPE(重新类型,*argtypes)
WINFUNCTYPE中的文件“C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\ctypes\ \uuuuuu init\uuuuuuu.py”,第125行
类WinFunctionType(\u CFuncPtr):
TypeError:_argtypes_中的项1通过值传递union,这是不受支持的。

我在尝试运行脚本时发现此错误…

这帮助我解决了问题。您也可以尝试一下。
pip uninstall pyttsx3
pip install pyttsx3==2.6

如果您正在使用linux,请尝试使用文档中的“espeak”TTS引擎而不是“sapi5”,如果您只运行
pyttsx3.init()
,它将选择您可用的最佳驱动程序。如果您确实决定使用sapi5,那么文档中会说在windows上它是
“sapi5”
pip uninstall pyttsx3
pip install pyttsx3==2.6