import streamlit as st from transformers import pipeline from gtts import gTTS import tempfile import os from googletrans import Translator # Initialize Hugging Face text-generation model pipeline (you can choose a different model like GPT-2, GPT-3, etc.) generator = pipeline("text-generation", model="gpt2") # Initialize Translator for language detection and translation translator = Translator() # Function for text generation def generate_text(user_input): try: # Generate response using the GPT-2 model response = generator(user_input, max_length=150, num_return_sequences=1) return response[0]['generated_text'] except Exception as e: return f"Error generating text: {e}" # Function for text-to-speech with language support def text_to_speech(text, lang): try: tts = gTTS(text=text, lang=lang) # Create a temporary file to store the audio temp_audio = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") tts.save(temp_audio.name) return temp_audio.name except Exception as e: return f"Error generating speech: {e}" # Streamlit Page Configuration st.set_page_config(page_title="GPT-2 Chatbot with Text-to-Speech (Multi-language)", layout="wide") # Sidebar navigation menu = st.sidebar.radio("Navigation", ["Chatbot", "About"]) # Language options languages = { "English": "en", "Spanish": "es", "French": "fr", "German": "de", "Italian": "it", "Portuguese": "pt", "Dutch": "nl", "Russian": "ru", "Chinese": "zh", "Japanese": "ja", "Hindi": "hi" } # Chatbot Interface if menu == "Chatbot": st.title("GPT-2 Chatbot with Multi-language Support") st.write("Welcome to the GPT-2 powered chatbot with multiple language support. Ask any question, and I will generate a response.") # Language selection lang_choice = st.selectbox("Select Language for Chatbot", list(languages.keys())) lang_code = languages[lang_choice] # Text input for the user user_input = st.text_input(f"Ask your question in {lang_choice}:", "") if st.button("Generate Response"): if user_input: # Translate user input to English (or the language of the model) translated_input = translator.translate(user_input, src=lang_code, dest="en").text # Generate response from GPT-2 model generated_text = generate_text(translated_input) # Translate the response back to the selected language translated_response = translator.translate(generated_text, src="en", dest=lang_code).text st.write(f"### Response in {lang_choice}:") st.write(translated_response) # Convert response to speech in selected language audio_path = text_to_speech(translated_response, lang_code) st.audio(audio_path, format="audio/mp3") else: st.warning("Please enter a question.") # About Section elif menu == "About": st.title("About") st.write(""" This is a simple web application powered by GPT-2 (Hugging Face Transformers) and Google Text-to-Speech (gTTS). **Features:** - Ask a question in your preferred language, and GPT-2 will generate a response. - The response will be translated back to your language and also converted to speech. **How it works:** - GPT-2 model generates text based on your input in any language. - The text is then translated to English, processed by GPT-2, and translated back to your preferred language. - The response is converted to speech using the `gTTS` library in the selected language. """)