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