File size: 3,682 Bytes
89e32fe
d88ec6f
84675d1
89e32fe
d88ec6f
 
89e32fe
d88ec6f
 
89e32fe
d88ec6f
 
e8b325c
d88ec6f
 
89e32fe
d88ec6f
 
2be0d21
89e32fe
d88ec6f
89e32fe
d88ec6f
 
89e32fe
d88ec6f
 
89e32fe
 
 
 
 
 
 
d88ec6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89e32fe
d88ec6f
 
 
 
 
 
 
 
 
 
 
 
89e32fe
d88ec6f
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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.
    """)