首页 > 解决方案 > engine.runandWait() 卡住

问题描述

我的脚本只是停止并在之后卡住engine.runandWait()......如果有人知道如何让它继续,我将不胜感激!似乎答案不在脚本本身,因为我尝试了超级简单的脚本......我还尝试了卸载和重新安装portaudiopyaudio并且pyttsx3

这是我的脚本:

import speech_recognition as sr
import pyttsx3
import pywhatkit
import datetime
import wikipedia
import time
import pyjokes

listener = sr.Recognizer()
engine = pyttsx3.init()
voices = engine.setProperty('voices', "french")

def talk(text):
    engine = pyttsx3.init()
    engine.say(text)
    engine.runAndWait()


def take_command():
    command = ''

    try:
        with sr.Microphone() as source:
            print("...")
            voice = listener.listen(source)
            command = listener.recognize_google(voice,language = 'fr-FR')
            command = command.lower()
    except:
        talk("Je me mets en veille")
        pass

    return command

def run_jeff(run):
    command = take_command()
    if 'youtube' in command:
        command = command.replace('youtube','')
        command = command.replace('ouvre','')
        pywhatkit.playonyt(command)

    elif "stop" in command:
        talk("Je vais dodo")
        run = False

    elif 'bonjour' in command or 'salut' in command :
        talk('Bonjour, comment allez-vous ?')
        talk(info)

    elif 'blague' in command :
        talk(pyjokes.get_joke())



    else :
        talk("Pouvez-vous répétez je n'ai pas compris ?")
    print(command)

run = True

while True:
    run_jeff(run)
    if run == False:
        exit()
    

标签: pythonpython-3.xpyttsx3

解决方案


在 def talk 部分,您可以删除第一行和 while True 语句,删除 if run == False,并在 take 命令部分添加一个 elif 语句,在命令中说 elif 'thank you':exit(你的助手)。试试看


推荐阅读