嗨,我正在 Mac 上试验语音合成,我总是在程序中放入 while 循环,以便我可以使用它们,直到我决定停止,并且使用此代码,它会重复“您想让我说什么? ”同时它会说我告诉它说的任何话。
from Cocoa import NSSpeechSynthesizer
while 1==1
sp = NSSpeechSynthesizer.alloc().initWithVoice_(None)
sp.startSpeakingString_("What would you like me to say?")
say_1 = raw_input("What would you like me to say?")
sp.startSpeakingString_(say_1)
有人可以告诉我如何告诉 python 等到它完成说出我告诉它的内容吗?
最佳答案
您似乎正在寻找 NSSpeechSynthesizer
instance method: isSpeaking
。您可以编写一个轮询循环来测试它是否正在说话,并在不再说话时继续工作。像这样的事情:
import time
from Cocoa import NSSpeechSynthesizer
while 1:
sp = NSSpeechSynthesizer.alloc().initWithVoice_(None)
sp.startSpeakingString_("What would you like me to say?")
say_1 = raw_input("What would you like me to say?")
sp.startSpeakingString_(say_1)
while sp.isSpeaking(): # loop until it finish to speak
time.sleep(0.9) # be nice with the CPU
print 'done speaking'
更新: time.sleep
比循环内的 continue
更好。后者会浪费大量的CPU和电池(正如@kindall所指出的)。
希望这有帮助!
关于python - 如何让python等待上一个任务完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365243/