Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from gtts import gTTS | |
| from fpdf import FPDF | |
| import re | |
| from bardapi import Bard | |
| import os | |
| os.environ['_BARD_API_KEY']='eQh423v7DpPCjWpZLDOn-W1tXSsMsNt0wP-bmUiC15idnPMDY_bX6T4Z7H9aNjaYgZHFww.' | |
| class Chatbot: | |
| def __init__(self): | |
| self.chat_history = [] | |
| def respond(self, user_input): | |
| response = Bard().get_answer(user_input)['content'] | |
| self.chat_history.append({"user": user_input, "bot": response}) | |
| translated_speech_path = self.text_to_speech(response) | |
| chat_history_formatted = "\n".join(f'User: {chat["user"]}\nBot: {chat["bot"]}\n' for chat in self.chat_history) | |
| return translated_speech_path, response, chat_history_formatted | |
| def text_to_speech(self, text): | |
| temp_file = "response.mp3" | |
| tts = gTTS(text=text, lang='en') | |
| tts.save(temp_file) | |
| return temp_file | |
| def save_chat_history_as_pdf(chat_history): | |
| clean_chat_history = re.sub('<br>', '\n', chat_history) | |
| pdf = FPDF() | |
| pdf.add_page() | |
| pdf.set_font("Arial", size=12) | |
| pdf.multi_cell(0, 10, txt=clean_chat_history) | |
| pdf_output_path = "chat_history.pdf" | |
| pdf.output(pdf_output_path) | |
| return pdf_output_path | |
| def save_chat_history_as_txt(chat_history): | |
| txt_output_path = "chat_history.txt" | |
| with open(txt_output_path, "w") as txt_file: | |
| txt_file.write(chat_history) | |
| return txt_output_path | |
| def chatbot_response(user_input): | |
| translated_speech_path, response, chat_history_formatted = chatbot.respond(user_input) | |
| formatted_chat_history = "\n".join(f'User: {chat["user"]}<br>Bot: {chat["bot"]}<br><br>' for chat in chatbot.chat_history) | |
| pdf_output_path = save_chat_history_as_pdf(formatted_chat_history) | |
| return translated_speech_path, response, pdf_output_path, formatted_chat_history | |
| chatbot = Chatbot() | |
| chatbot_interface = gr.Interface( | |
| fn=chatbot_response, | |
| inputs="text", | |
| outputs=[ | |
| gr.components.Audio(type='numpy', label="Audio Response"), | |
| gr.components.Textbox(label="Text Response"), | |
| gr.components.File(label="Download as PDF"), | |
| gr.components.HTML(label="Chat History") | |
| ], | |
| live=False, | |
| title="Interactive Chatbot Assistant" | |
| ) | |
| chatbot_interface.launch() |