我希望 pyttsx 从我的剪贴板读取文本,所以我可以复制文本,然后让计算机为我读取它,它工作得很好,除了它真的很烦人我不能随意停止文本到语音,我要么尽管我已经失去了兴趣,但必须停止整个程序并重新启动或让它完成。
我试过使用engine.startloop和engine.endloop,但它只是让我的代码卡住了,也许有一种方法可以使用startloop,我可以在按下按钮时退出语音,但老实说我不知道如何使用startloop .
然后我尝试了这个脚本:
import win32com.client as wincl
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak("Hello World")
再次。效果很好,但我不知道如何在演讲中停止它。
哦,是的,我尝试使用线程,问题是 engine.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 不可能,那很好,但我想使用不需要互联网的文本到语音模块,因为我的连接是有时安静穷哈哈