import os import time import openai import gradio as gr from gtts import gTTS from io import BytesIO from IPython.display import Audio, display # Set OpenAI API key openai.api_key = os.environ.get("OPENAI_API_KEY") # Set OpenAI GPT-3 model MODEL = "text-davinci-002" # Initialize chat history as an empty list chat_history = [] # Define function to generate speech from text using Google Text-to-Speech (gTTS) def text_to_speech(text): tts = gTTS(text=text) mp3 = BytesIO() tts.write_to_fp(mp3) mp3.seek(0) display(Audio(mp3, autoplay=True)) # Define function to get chatbot response def chat(text): # Append user input to chat history chat_history.append(f"User: {text}") # Use OpenAI's GPT-3.5 model to generate chatbot response response = openai.Completion.create( model=MODEL, prompt = r"Conversation with user:\n" + "\n".join(chat_history) + r"\nChatbot:", temperature=0.5, max_tokens=1024, n=1, stop=None, frequency_penalty=0, presence_penalty=0 ).choices[0].text.strip() # Append chatbot response to chat history chat_history.append(f"Chatbot: {response}") # Generate speech from chatbot response text_to_speech(response) return response # Define function to clear chat history def clear_chat(): global chat_history chat_history = [] # Define interface interface = gr.Interface( chat, inputs=["text", gr.Audio(source="microphone", type="numpy"), ], outputs=["text", gr.outputs.Voice()], title="Chatbot with OpenAI's GPT-3.5 Model", description="An interactive chatbot using OpenAI's GPT-3.5 model with chat persistence and voice inputs/outputs.", theme="default", layout="vertical", allow_flagging=False, allow_screenshot=False, allow_download=False, show_input=True, show_output=True ) # Run interface interface.launch()