Как прервать голосового помощника в python

Я создаю голосового помощника, который может рассказывать истории. Пока бот рассказывает истории, я хочу прервать его и попросить его остановиться, вернуться назад или закончить рассказ. Я пробовал несколько способов, но они не работают. Я не могу слушать, пока он говорит, потому что после того, как часть разговора заканчивается, он переходит к части прослушивания.

заранее спасибо

Вот мой код

while True:
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Talk")
        
        audio_text = r.listen(source)
        print("Time over, thanks")
        try:
            
            inp=r.recognize_google(audio_text, language = "en-IN")
            print("Text: "+inp)
        except:
            inp="sorry"
            print("Sorry, I did not get that")
    
    
    if inp.lower() == "quit":
        bot_voice("Ok bye see you later")
        break
    if inp.lower() == "sorry":
        bot_voice("Sorry, I did not get that")
    if (deter==0):
        y=-1
        deter=1
        for x in stories:
            m=x
            y=m.find(inp)
            if(y>-1):
                filename = 'Stories/data/'+x+'.txt'
                with open(filename) as f_in:
                    for line in f_in:
                        bot_voice(line)
                break
            
    
    else:
        results = model.predict([bag_of_words(inp, words)])
        results_index = numpy.argmax(results)
        tag = labels[results_index]

        for tg in data["intents"]:
            if tg['tag'] == tag:
                responses = tg['responses']
        reply=random.choice(responses)
        if(reply=='7417'):
            filename = "Stories/list.txt"
            bot_voice("I know quite a few stories, they are")
            with open(filename) as f_in:
                for x,line in enumerate(f_in):
                    bot_voice(line)
            bot_voice("which one you want")
            deter=0
        else:
            print("bot:",reply)
            bot_voice(reply)

person vik    schedule 28.02.2021    source источник


Ответы (1)


Это невозможно с используемым вами распознаванием речи. Это распознавание речи принимает ввод и не обеспечивает вывод. С вашей системой вывода, которая, как я полагаю, похожа на pyttsx, она будет просто читать, как сказано. Вам потребуется система остановки, и вам нужно будет сделать это с помощью программы на основе машинного обучения, которая способна вести диалог и может останавливаться, когда вам говорят остановиться, и принимать ключевые слова в качестве команд.

Я рекомендую Pytorch в качестве основы для машинного обучения Python. Вот статья о разговорном ИИ.

Статья о диалоговом ИИ с Pytorch

person Redgar Tech    schedule 08.03.2021