Поток отделения условно бесконечного цикла от графической части(kivy)
class ScreenApp(App):
def build(self):
Window.clearcolor = (.17, .19, .24, 1)
Window.size = (setWindowSize())
self.icon = 'icon.png'
self.title = 'LORA'
self.screen_manager = ScreenManager()
print("initializing first screen..")
return screen_manager
def recAudio():
global LNG
r = sr.Recognizer()
with sr.Microphone() as sourse:
print('Cкажи что-нибудь')
audio = r.listen(sourse)
data = ''
try:
data = r.recognize_google(audio, language = LNG).lower()
print("YOU: " +data)
except sr.UnknownValueError:
print('Google не понимает аудио, ошибка неизвестна')
except sr.RequestError as ee:
print('Ошибка запроса: '+ee)
return data
def listen():
date = 'date'
whois = 'who is'
wiki.set_lang("en")
copy = 'copy'
paste = 'paste'
open = 'open'
browser = 'browser'
notepad = 'notepad'
say = 'say'
joke = 'joke'
while True:
if isRUS() == True:
date = 'дату'
whois = 'кто такой'
wiki.set_lang("ru")
copy = 'скопируй'
paste = 'вставь'
open = 'открой'
browser = 'хром'
notepad = 'блокнот'
say = 'скажи'
joke = 'пошути'
text = recAudio()
response = ''
#скокпировать вставить доделать
if(copy in text):
copy()
if(paste in text):
paste()
# выполнение команд с упоминанием Лоры
if (wakeUp(text) == True):
print('ты сказал кодовую фразу!')
response += greeting(text)
loraspeak()
#дальше проверка на кодовые слова и соответствующие функции
lora_app = ScreenApp()
lora_app.run()
ScreenApp - класс графической библиотеки от kivy, подробное описание элементов в builder listen() - функция которая должна выполнятся независимо от графического интерфейса и не вызывать зависаний
Подскажите как лучше или проще вызывать условно бесконечный цикл распознования голоса в отдельном потоке, независимо от графического интерфейса, желательно создать дополнительный поток, не трогая уже созданные функции kivy, которые обрабатывают нажатия и так далее