Как следует написать функцию вызова работы скрипта Python + pycharm
Час добрый, знаю что вопрос фундаментальный и от части глупый, но раз его задаю, то значит что не могу найти решение. Суть в том, что не выходит понять каким образом запустить скрипт (будет прикреплен в конце) без появления ошибок при написании запуска Знаю что данные функции вызывают запуск всех функций (написал только про speak) И пожалуйста дайте ответ если его знаете, а не закидывайте минусами без объяснения. И сам прекрасно понимаю что данный вопрос является по сути глупым
def main():
speak()
if __name__ == "__main__":
main()
Но при вводе такой конструкции мне выдает данную ошибку: TypeError: speak() missing 1 required positional argument: 'what'
И примерно такая же картина обстоит и с остальным. Подскажите пожалуйста как правильно написать вызов работы всех функций. Полный код без if name == "main":
import os
import time
from fuzzywuzzy import fuzz
import speech_recognition as sr
import pyttsx3
import datetime
opts = {
"alias": ('кира', 'окей кира', 'кирара', 'привет кира', 'привет кирара',
'окей кирара'),
"tbr": ('сколько', 'скажи', 'найди', 'произнеси'),
"cmds": {
"ctime": ('сколько время', 'текущее время', 'который час', 'какой час'),
"music": ('включи музыку', 'включи яндекс музыку', 'открой яндекс музыку', 'открой музыку'),
"open_yutb": ('включи ютуб', 'открой ютуб')
}
}
print("1")
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):
print("3")
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):
print('4')
if cmd == 'ctime':
now = datetime.datetime.now()
speak("Сейчас" + str(now.hour) + ":" + str(now.minute))
elif cmd == 'music':
speak('Я пока что не могу включить музыку')
else:
print('Команда не распознана')
speak('Команда не распознана')
# Запуск
r = sr.Recognizer()
m = sr.Microphone(device_index=1)
with m as source:
r.adjust_for_ambient_noise(source)
speak_engine = pyttsx3.init()