VORTEX / app.py
Jarvis-11's picture
Update app.py
7c95496 verified
Raw
History Blame Contribute Delete
2.87 kB
import gradio as gr
import openai
import os
import datetime
from gtts import gTTS
from io import BytesIO
# Set your OpenAI API key here
openai.api_key = os.getenv("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") # Replace with your API key or use environment variables
def generate_response(user_input, chat_history):
# Format previous chat history for context
messages = [{"role": "system", "content": "You are VORTEX, an AI chatbot developed by Jarvis-11. Be helpful, knowledgeable, and friendly."}]
for msg in chat_history:
messages.append({"role": "user", "content": msg[0]})
messages.append({"role": "assistant", "content": msg[1]})
messages.append({"role": "user", "content": user_input})
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages
)
bot_reply = response['choices'][0]['message']['content'].strip()
except Exception as e:
bot_reply = f"Error: {str(e)}"
return bot_reply
def chatbot_interface(user_input, chat_history, file, audio_input):
if audio_input is not None:
import speech_recognition as sr
recognizer = sr.Recognizer()
with sr.AudioFile(audio_input) as source:
audio_data = recognizer.record(source)
try:
user_input = recognizer.recognize_google(audio_data)
except sr.UnknownValueError:
user_input = "Sorry, I couldn't understand the audio."
# Handle file input
if file is not None:
user_input += f"\n(File uploaded: {file.name})"
bot_response = generate_response(user_input, chat_history)
chat_history.append((user_input, bot_response))
# Generate voice output
tts = gTTS(bot_response)
tts_io = BytesIO()
tts.write_to_fp(tts_io)
tts_io.seek(0)
return chat_history, tts_io
with gr.Blocks() as demo:
gr.Markdown("# 🤖 VORTEX - Your AI Companion")
chatbot = gr.Chatbot()
state = gr.State([])
with gr.Row():
txt = gr.Textbox(placeholder="Type your message here...", label="Your Message")
file_input = gr.File(label="Upload a File (Optional)")
audio_input = gr.Audio(type="filepath", label="Upload Voice Message")
voice_output = gr.Audio(label="VORTEX Voice Reply")
txt.submit(chatbot_interface, [txt, state, file_input, audio_input], [chatbot, voice_output])
file_input.change(chatbot_interface, [txt, state, file_input, audio_input], [chatbot, voice_output])
audio_input.change(chatbot_interface, [txt, state, file_input, audio_input], [chatbot, voice_output])
gr.Markdown("---")
gr.Markdown("Built with ❤️ by Jarvis-11 | Powered by OpenAI & Gradio")
demo.launch()