Пишу голосого помощника
Я пытаюсь написать написать простую в реализации для своего проекта программу, в которой когда я говорю, например я здороваюсь с программой, она отвечала мне в ответ, в первом прототипе я ее вообще не слышу, сейчас же у меня почему-то программа не хочет узнавать функцию hello_margo
Сейчас же я даже не могу ее вызвать.
Фрагмент функции из приветствия
def hello_margo():
global engine
hello = ['Привет, я ваш голосовой помощник. Иногда я торможу. Я еще в разработке. Ну что приступим?', 'Привет','Я рада вас снова слышать','Приветствую мой повелитель','Вечер в хату','Привет, чем могу быть полезна?','Да, я вас слушаю','Чем могу помочь?']
z = random.choices(hello)
engine.say(z)
Сам код на python
import pyttsx3
import os
import speech_recognition as sr
import random
engine = pyttsx3.init();
text = ''
task_number = 0
def talk(words):
print(words)
os.system("say " + words)
commands = ['привет']
cmds = {
'привет' : hello_margo,
'добрый день' : hello_margo
}
def hello_margo():
global engine
hello = ['Привет, я ваш голосовой помощник. Иногда я торможу. Я еще в разработке. Ну что приступим?', 'Привет','Я рада вас снова слышать','Приветствую мой повелитель','Вечер в хату','Привет, чем могу быть полезна?','Да, я вас слушаю','Чем могу помочь?']
z = random.choices(hello)
engine.say(z)
def listen_and_speek():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Говорите")
r.pause_threshold = 1
r.adjust_for_ambient_noise(source, duration=1)
audio = r.listen(source)
try:
text = r.recognize_google(audio, language="ru-RU").lower()
print("Вы сказали " + text)
except sr.UnknownValueError:
talk("Я вас не поняла")
text = listen_and_speek()
return text
def cmd_start():
global cmds, engine, task_number, text
print(text)
if (text in cmds):
if (text != 'привет'):
case = ['Секундочку', 'Сейчас','Вот ваш результат', 'Выполняю',]
engine.say(random.choices(case))
cmds[text]()
elif text == '':
pass
task_number += 1
if (task_number % 10 == 0):
engine.say('Что-нибудь еще?')
engine.runAndWait()
engine.stop()
def main():
global text, talk, cmd_start
try:
talk()
if text != '':
cmd_start()
i = 0
except(UnboundLocalError):
pass
except(TypeError):
pass
while True:
main()
'''engine.say("Я сейчас говорю написанный текст");
engine.runAndWait() ;'''
Когда я пытаюсь запустить код у меня выходит ошибка
Traceback (most recent call last):
File "/Users/lmistie/Desktop/My_Project/Pytnon/test-python3/./test-1.py", line 17, in <module>
'привет' : hello_margo,
NameError: name 'hello_margo' is not defined
Как это исправить?
Ответы (1 шт):
Автор решения: Roman
→ Ссылка
Поменять местами def hello_margo(): ... и cmds = {...}. А то вы на функцию ссылаетесь до того как её объявили