TalkGPT / app.py
Aniquel's picture
Update app.py
fab5430
raw
history blame
1.97 kB
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()