python - 如何让python等待上一个任务完成?

标签 python while-loop speech-synthesis

嗨,我正在 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/

相关文章:

python - Tensorflow - 可训练变量不随时间变化

python - 转义单引号 JSON

php - 从所有行中获取所有字段 - MYSQL

PHP while循环基于MYSQL查询结果丢失第一行

Perl:如何跳出嵌套循环?

c++ - 如何在 Windows 10 上以编程方式定义音频输出?

python - Alpine Linux 中缺少软件包,即使它列在软件包 repo 网站上

c++ - 文字转语音传字符串说话

speech-synthesis - 语音合成 API 支持的语言

python - 确保四舍五入的百分比总和为每组 100(最大余数法)