Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何随时停止pyttsx3演讲_Python 3.x_Pyttsx - Fatal编程技术网

Python 3.x 如何随时停止pyttsx3演讲

Python 3.x 如何随时停止pyttsx3演讲,python-3.x,pyttsx,Python 3.x,Pyttsx,我想让pyttsx从我的剪贴板上读取文本,这样我就可以复制一个文本,然后让计算机为我读取它,它工作得很好,除了它真的很烦人我不能随心所欲地停止文本到语音,我要么停止整个程序并重新启动,要么让它完成,尽管我已经失去了兴趣 我试过使用engine.StartOOP和engine.endloop,但它只是让我的代码卡住了,也许有一种使用StartOOP的方法,我可以按一下按钮退出演讲,但我真的不知道如何使用StartOOP 然后我尝试了以下脚本: import win32com.client

我想让pyttsx从我的剪贴板上读取文本,这样我就可以复制一个文本,然后让计算机为我读取它,它工作得很好,除了它真的很烦人我不能随心所欲地停止文本到语音,我要么停止整个程序并重新启动,要么让它完成,尽管我已经失去了兴趣

我试过使用engine.StartOOP和engine.endloop,但它只是让我的代码卡住了,也许有一种使用StartOOP的方法,我可以按一下按钮退出演讲,但我真的不知道如何使用StartOOP

然后我尝试了以下脚本:

    import win32com.client as wincl
    speak = wincl.Dispatch("SAPI.SpVoice")
    speak.Speak("Hello World")
再说一遍。效果很好,但我不知道如何在演讲中阻止它

哦,是的,我试过使用线程,问题是引擎。runAndWait()会让语音运行,其他一切都会等待

    import keyboard
    import win32clipboard
    import pyttsx3

    def init():
        print("init")
        def start(text):
            engine = pyttsx3.init()
            #more code here but its just setting the volume and speech rate
            engine.say(text,"txt")
            engine.runAndWait()

        def action():
              win32clipboard.OpenClipboard()
              data = win32clipboard.GetClipboardData()
              win32clipboard.CloseClipboard()
              start(data)

        keyboard.add_hotkey("ctrl+alt", lambda: action())

    init()

所以基本上是的,我正在寻找一种用热键停止文本到语音的方法,如果pyttsx3不可能的话,这很好,但我想使用一个不需要互联网的文本到语音模块,因为我的连接有时非常差哈哈

我现在感觉很笨,我解决了它,我在以前的尝试中使用了pynput,然后用键盘试了试,达到了我之前的状态(无法在演讲中停止文本)

不管怎样,如果你想知道如何让pyttsx3用用户输入关闭。。。这是:

def onWord(name, location, length):
    print ('word', name, location, length)
    if keyboard.is_pressed("esc"):
       engine.stop()

    engine.connect('started-word', onWord)
只需将其复制并粘贴到“engine.say('您的文本')”的正上方即可 当您按下键盘上的esc键时,发动机将停止,同时确保:

     import keyboard

在脚本的顶部

有没有办法对着麦克风说话?当按下“esc”键时,您是否可以将麦克风的听觉称为“停止”?