-
Notifications
You must be signed in to change notification settings - Fork 0
/
tkinter.py
97 lines (77 loc) · 2.59 KB
/
tkinter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import speech_recognition as sr
import pyttsx3
# from openai import openai_secret_manager
import openai
import tkinter as tk
import os
engine = pyttsx3.init()
engine.setProperty('voice', 'com.apple.speech.synthesis.voice.Krzysztof')
api_key = os.getenv("OPENAI_API_KEY")
if api_key is None:
print("Nie udało się odczytać wartości zmiennej środowiskowej OPENAI_API_KEY.")
exit(1)
openai.api_key = api_key
model_engine = "text-davinci-003"
# Definicja funkcji, która będzie czytać tekst na głos
def speak(text):
engine.say(text)
engine.runAndWait()
# Definicja funkcji, która będzie rozpoznawać mowę i zwracać tekst
def recognize_speech():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Rozpocznij dyktowanie...")
audio = r.listen(source)
try:
print("Rozpoznawanie...")
text = r.recognize_google(audio, language='pl-PL')
print("Tekst rozpoznany: " + text)
return text
except sr.UnknownValueError:
print("Nie udało się rozpoznać mowy.")
return ""
except sr.RequestError as e:
print("Błąd połączenia z serwerem Google; {0}".format(e))
return ""
# Definicja funkcji, która wywoła API OpenAI i pobierze odpowiedź
def generate_answer(question):
response = openai.Completion.create(
engine=model_engine,
prompt=(f"Q: {question}\nA:"),
temperature=0.7,
max_tokens=150,
n=1,
stop=None,
frequency_penalty=0,
presence_penalty=0,
)
answer = response.choices[0].text.strip()
return answer
# Definicja funkcji, która zostanie wywołana po wciśnięciu przycisku
def ask_question():
# Odczytanie pytania z pola tekstowego
question = question_entry.get()
# Wywołanie API OpenAI i pobranie odpowiedzi
answer = generate_answer(question)
# Wyświetlenie odpowiedzi w polu tekstowym i odczytanie jej na głos
answer_text.delete(1.0, tk.END)
answer_text.insert(tk.END, answer)
speak(answer)
# Konfiguracja interfejsu użytkownika
root = tk.Tk()
root.title("ChatGPT")
# Pole tekstowe do wprowadzenia pytania
question_label = tk.Label(root, text="Wpisz pytanie lub użyj dyktowania:")
question_label.pack()
question_entry = tk.Entry(root, width=50)
question_entry.pack()
# Przycisk do wysłania pytania
ask_button = tk.Button(root, text="Zapytaj ChatGPT", command=ask_question)
ask_button.pack()
# Pole tekstowe do wyświetlenia odpowiedzi
answer_label = tk.Label(root, text="Odpowiedź:")
answer_label.pack()
answer_text = tk.Text(root, height=10)
answer_text.pack()
root.mainloop()
#%%