我一直在尝试构建一个将输入作为文本并将输出作为语音的应用程序。
我参考了这个网站来了解 Python 中的 Text-To-Speech 模块: https ://pythonprogramminglanguage.com/text-to-speech/
当我运行程序时,它完美地完成了这项工作,但我无法使用暂停或恢复等其他功能。所以我尝试为语音功能创建一个新线程,以便我可以随时更改它的语音。
这是程序:
import threading
import win32com.client as wincl
speak = wincl.Dispatch("SAPI.SpVoice")
t=threading.Event()
def s():
global t
t.set()
data="""This is a story of two tribal Armenian boys who belonged to the
Garoghlanian tribe. """
s=speak.Speak(data)
t1=threading.Thread(target=s)
t1.start
但是我正在尝试使用 tkinter 在 GUI 中实现该程序。我希望应用程序在用户单击按钮时读取文本。由于 tkinter 的按钮将命令作为函数,我为新线程的初始化和启动创建了一个函数,但它产生了一个我无法解释并找到解决方案的错误。
这是出错的程序:
import threading
import win32com.client as wincl
speak = wincl.Dispatch("SAPI.SpVoice")
t=threading.Event()
def s():
global t
t.set()
data="""This is a story of two tribal Armenian boys who belonged to the
Garoghlanian tribe. """
s=speak.Speak(data)
def strt():
t1=threading.Thread(target=s)
t1.start()
这是错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Application\Python\lib\threading.py", line 916, in _bootstrap_inner
self.run()
File "C:\Application\Python\lib\threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\absan\Desktop\Python\Project-SpeakIt\SI-1.py", line 32, in
speakITheart
s=speak.Speak(data)
File "C:\Users\absan\AppData\Local\Temp\gen_py\3.6\C866CA3A-32F7-11D2-9602-
00C04F8EE628x0x5x4.py", line 2980, in Speak
, 0)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None,
None, 0, -2147221008), None)
编辑:伙计们,当我写这篇文章时,我以某种方式找到了解决它的方法。我刚刚将这些行添加到程序中
import pyttsx3
engine = pyttsx3.init()
我真的不知道它是如何或为什么修复错误但它有效!所以这篇文章可能对面临同样问题的人有所帮助。
干杯!!