diff --git a/VoiceGPT.py b/VoiceGPT.py new file mode 100644 index 0000000000000000000000000000000000000000..501d8ba14fc3dbdbce8d909680f22183b48c90a7 --- /dev/null +++ b/VoiceGPT.py @@ -0,0 +1,75 @@ +import pyttsx3 +import speech_recognition as sr +import openai +import threading +import time + +openai.api_key = "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" + +# engine = pyttsx3.init() +# voices = engine.getProperty('voices') +# engine.setProperty('voice', voices[14].id) +# engine.setProperty('rate', 175) + +recognizer = sr.Recognizer() +mic = sr.Microphone() + +user_name = "moongmoong" +gpt_name = "FOSS bot" + +def listen(engine): + with mic as source: + print("Listening...") + audio = recognizer.listen(source) + try: + print("Recognizing...") + text = recognizer.recognize_google(audio) + print(user_name + text) + return text + except sr.UnknownValueError: + speak(engine, "Sorry, I couldn't understand.") + print("speak return") + return "" + except sr.RequestError: + speak(engine, "Sorry, I couldn't reach the speech recognition service.") + return "" + +def generate_response(prompt): + response = openai.Completion.create( + engine="text-davinci-003", + prompt=prompt, + max_tokens=50, + temperature=0.7, + n=1, + stop=None, + frequency_penalty=0.0, + presence_penalty=0.0 + ) + return response.choices[0].text.strip() + +def speak(engine, text): + engine.say(text) + engine.runAndWait() + +def main(engine): + user_input = listen(engine) + if user_input: + prompt = user_name + ": " + user_input + "\n" + gpt_name + ": " + response = generate_response(prompt) + print(gpt_name + response) + speak(engine, response) + else: + speak(engine, "I'm Sorry. Please say again.") + +while True: + engine = pyttsx3.init() + engine._inLoop = False + voices = engine.getProperty('voices') + engine.setProperty('voice', voices[14].id) + engine.setProperty('rate', 175) + + t = threading.Thread(target=main, args=(engine,)) + + t.start() + t.join() + time.sleep(3)