我无法创建线程并通过python中的另一个定义运行它

时间:2019-03-15 09:37:18

标签: python text-to-speech win32com pyttsx

我一直在尝试构建一个将输入作为文本并将输出作为语音的应用程序。

我转介了这个网站,以了解python中的文本转语音模块: 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()

我真的不知道如何或为什么可以解决该错误,但它可以正常工作! 因此,这篇文章对面临相同问题的人可能会有帮助。

干杯!

0 个答案:

没有答案