Голосовой ввод и вывод с графическим интерфейсом с использованием Python
Я пытался создать базового голосового помощника с использованием Python - он слушает мою команду и при необходимости отвечает голосом (открытие веб-страницы или ответ, рассказывающий анекдот и т. Д.). Я использую
pyttsx3
и
speech_recognition
за это. Что касается этого, он работает нормально - он слушает меня и говорит свой ответ (и выводит то же самое рядом с терминалом).
Я хочу создать базовый графический интерфейс, который будет работать с ним, чтобы я мог превратить его в полноценное приложение. Ничего особенного - только цветной фон, зеленый свет, когда он "слушает", и бесконечная область прокрутки, чтобы распечатать, что он говорит рядом.
Я пробовал использовать для этого PySimpleGUI. Сначала я просто установил
print=sg.Print
, где sg - это то, что я импортировал
PySimpleGui
в виде. В идеале это могло бы запустить "Окно отладки" и распечатать там все. Однако окно отладки часто переставало отвечать, а также возникала задержка.
Это базовый код, который я запускаю
import pyttsx3
import PySimpleGUI as sg
import speech_recognition as sr
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)
#print=sg.Print
def speak(audio):
engine.say(audio)
engine.runAndWait()
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio, language ='en-in')
print(f"User said: {query}\n")
except Exception as e:
print(e)
print("Unable to Recognizing your voice.")
speak("Sorry, I didn't get that.")
return "None"
return query
if __name__ == '__main__':
while True:
query=takeCommand().lower()
if 'how are you' in query:
speak("I am fine, thanks")
print("I am fine, thanks")
speak("You?")
resp = takeCommand()
for i in ["good","fine","okay"]:
if i in resp:
speak(f"That's good to know, user.")
print(f"That's good to know, user.")
Когда вы запускаете его как есть, он запускается в терминале. Если вы скажете "Как дела?" После того, как отобразится "слушает", он ответит. Однако, когда вы раскомментируете часть для печати, она запускается в окне отладки графического интерфейса и наблюдается заметная задержка. Почему это так? Кроме того, как мне это сделать, используя отдельное окно, а не отладочное? Если не PySimpleGUI, что мне использовать?