как зациклить программу?

sdrom

Новичок
Пользователь
Авг 25, 2020
3
0
1
ОС win 10 питон 3.8

ПЖ объясните чайнику как заставить эту программу начинаться сначала, что и куда вписать.

код:
Python:
# Голосовой ассистент Виталий (основано на "Кеша" ХаудиХо) 1.0 BETA
import os
import time
import speech_recognition as sr
from fuzzywuzzy import fuzz
import pyttsx3
import datetime
import webbrowser


def x():

# Настройки
opts = {
    "alias": ('Виталя','Виталь','виталя','Виталий','виталий','слушай',
              'слышь','железяка','дурак','окей','компьютер','виталик'),
    "tbr": ('скажи','расскажи','покажи','сколько','произнеси','Пожайлуста',),
    "cmds": {
        "ctime": ('текущее время','сейчас времени','который час'),
        "radio": ('включи музыку','воспроизведи радио','включи радио'),
        "humor": ('расскажи анекдот','рассмеши меня','ты знаешь анекдот',),
        "howareyou": ('как дела','как дилишки', 'как ваше ничего?'),
        "yes": ('да', 'Да'),
        "like": ('Какой ты умный','ты молодец','ты что капец умный'),
        "by": ('пока','досвидания','прощай'),
        "google": ('открой интернет', 'открой гугл', 'открой браузер', 'гугл', 'интернет', 'браузер'),
        "vkcom": ('открой вк', 'вк','открой вконтакте', 'вконтакте'),
        "tube": ('ютуб'),
        "hi": ('привет','здравствуйте','приветики','приветули')
    }
}

# Функции):
def web_search(): # осуществляет поиск в интернете по запросу (adress)
    global adress
    webbrowser.open('https://yandex.ru/yandsearch?clid=2028026&text={}&lr=11373'.format(adress))

def speak(what):
    print( what )
    speak_engine.say( what )
    speak_engine.runAndWait()
    speak_engine.stop()

def callback(recognizer, audio):
    try:
        voice = recognizer.recognize_google(audio, language = "ru-RU").lower()
        print("[log] Распознано: " + voice)

        if voice.startswith(opts["alias"]):
            # Обращаются
            cmd = voice

            for x in opts['alias']:
                cmd = cmd.replace(x, "").strip()

            for x in opts['tbr']:
                cmd = cmd.replace(x, "").strip()


            # Распознаём и выполняем команду
            cmd = recognize_cmd(cmd)
            execute_cmd(cmd['cmd'])

    except sr.UnknownValueError:
        print("[log] Голос не распознан!")
    except sr.RequestError as e:
        print("[log] Неизвестная ошибка, проверь интернет!")

def recognize_cmd(cmd):
    RC = {'cmd': '', 'percent': 0}
    for c,v in opts['cmds'].items():

        for x in v:
            vrt = fuzz.ratio(cmd, x)
            if vrt > RC['percent']:
                RC['cmd'] = c
                RC['percent'] = vrt

    return RC

def execute_cmd(cmd):
    if cmd == 'ctime':
        # сказать текущее время
        now = datetime.datetime.now()
        speak("Сейчас " + str(now.hour) + ":" + str(now.minute))

    elif cmd == 'radio':
        # радио
          webbrowser.open('https://wifmedia.com/radio/')+ speak("Без-проблем")

 

    elif cmd == 'humor':
        # рассказать анекдот
        speak("Приходят 2 компьютера в бар... А дальше не помню... Мне это Сири разказала. После этого я сней не общался")
#шутки
    elif cmd == 'howareyou':
        # как дела
        speak("Хорошо, но не много одиноко... А стойте я придумал себе занятие! Привет Алиса! Как дела?"), speak("Замечательно, курачки светлеют, солнышко клюет. Или там было подругому?")
   
    elif cmd == 'yes':
        # наглость 80lv
        speak("провода, нет, интернет")

    elif cmd == 'like':
        # наглость 80lv
        webbrowser.open('https://lh3.googleusercontent.com/proxy/OG7JVesXVTm5AAF-Vn7Ky5peLx1yRpJTt18L-sYVsADoQp8aDvCcoX10QLc6jZv40UFQQ8OCrdYZQAnfuWlhyJJwRIw')+speak("Да я знаю, но спасибо что напомнили.")

    elif cmd == 'by':
        # пока
          speak("Досвидания было приятно свами иметь дело!")

    elif cmd == 'google': #интернет команды
        # гугл
          webbrowser.open('https://www.google.com/')+ speak("Фиксики уже включают")
   
    elif cmd == 'vkcom':
        # вк
          webbrowser.open('https://www.vk.com/')+ speak("Будте осторожны при пользовании социальной сетью вк. Не остовляйте там персональных данных и не пишите постов на оскорбляющие кого-либо темы. Лучше вообще закройте и идите в телеграмм.")
    elif cmd == 'tube':
        # ютуб
          webbrowser.open('https://www.youtube.com//')+ speak("открываю ты-труба точка ком.")

    elif cmd == 'hi':
        #привет
         ("Добрый день! меня зовут Виталий! Я здесь что-бы сделать вашу жизнь еще лучше!")
    else:
        print('--')

   

# Запуск
r = sr.Recognizer()
m = sr.Microphone(device_index = 1)

with m as source:
    r.adjust_for_ambient_noise(source)

speak_engine = pyttsx3.init()

# Только если установлены голоса для синтеза речи!
voices = speak_engine.getProperty('voices')
speak_engine.setProperty('voice', voices[4].id)


speak("Виталий слушает")

stop_listening = r.listen_in_background(m, callback)
while True: time.sleep(0.1)
  x()
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Программа всегда начинается с начала, на то оно и начало.
 

sdrom

Новичок
Пользователь
Авг 25, 2020
3
0
1
Программа всегда начинается с начала, на то оно и начало.
А как её зациклить чтобы после конца она снова начала ждать сообщения?
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Поправь в коде отступы, в таком виде как сейчас она вообще не заведется.
Если в оригинале там все как я представляю, то она уже должна ждать сообщение.
 

sdrom

Новичок
Пользователь
Авг 25, 2020
3
0
1
Поправь в коде отступы, в таком виде как сейчас она вообще не заведется.
Если в оригинале там все как я представляю, то она уже должна ждать сообщение.
Она уже работает. Единственная проблема выполняет первую команду (все правильно распознает) и вырубается
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Она уже работает. Единственная проблема выполняет первую команду (все правильно распознает) и вырубается
Еще раз - поправь отступы, потому что непонятно, что входит в функцию x(), а что нет.
 

Форум IT Специалистов