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)