Ошибка reportUndefinedVariable при вызове функций через переменную (внутри функции)

Уверен, что поиск ответа на мой вопрос будет очень легким для многих, но я относительно новичок. После написания 4 более-менее серьезных Telegram Ботов я решил написать голосового ассистента, как отдельный серьезный проект, не без помощи Интернета, конечно. Изначально функционал STT выполнялся через Speech Recognition, но сменил его на модуль Vosk. Всё отлично, быстро, offline, но столкнулся с ошибкой, наверное, начальной школы - основ ЯП Python. И встрял. Я буду сильно благодарен любой помощи!

import json, pyaudio
from vosk import Model, KaldiRecognizer 
import speech_recognition as sr
from fuzzywuzzy import fuzz

settings = {
    "nm": ("ассистент", "ассист", "осис", "азиз", "аси", "асюш", "asis", "assist", "брат", "родной", "тис", "алиса", "а siri", "siri"),
    "commands": {
    "что ты умеешь": ("что ты умеешь", "что ты можешь", "какие у тебя функции")

model = Model("model")
device = 1 # в ориг. коде: int(index_input)
rec = KaldiRecognizer(model, 16000)
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, 
                frames_per_buffer=80000, input_device_index=device)
stream.start_stream()
print("\n▤ Всё готово!\n➢ Приятного общения!")

def callback():
    while True:
        data = stream.read(4000, exception_on_overflow=False)
        if (rec.AcceptWaveform(data)) and (len(data)) > 0:
            answer = json.loads(rec.Result())
            if answer["text"]:
                yield answer["text"]
for voice in callback():
    print(voice)

    if voice.startswith(settings["nm"]):
        print(f"Вы: {voice.capitalize()}")
        cmd = voice
        for x in settings["nm"]:
            cmd = cmd.replace(x, "").strip()
        cmd = rec_cmd(cmd) # ОШИБКА ТУТ! - (reportUndefinedVariable)
        cmd = commands_execute(cmd) # ОШИБКА ТУТ! - (reportUndefinedVariable)

def rec_cmd(cmd):
    rc = {"cmd": "", "percent": 0}
    for c, v in settings["commands"].items():
        for i in v:
            vrt = fuzz.ratio(cmd, i)
            if vrt > rc["percent"]:
                rc["cmd"] = c
                rc["percent"] = vrt
    return rc

def commands_execute(cmd):
    if cmd == "что ты умеешь":
        print("\n● Ассистент: Открывать: Google, Яндекс, Youtube. Показывать погоду в Вашем городе...")
        print("★ Ассистент: Включать: Радиостанции (4) - DFM, Русское Радио, Like FM, Love Radio...")
    else:
        print("\n✖ Ассистент: Мне жаль, я не знаю такую команду...\n")


Ответы (0 шт):