|
import streamlit as st |
|
from transformers import pipeline |
|
from gtts import gTTS |
|
import tempfile |
|
import os |
|
from googletrans import Translator |
|
|
|
|
|
generator = pipeline("text-generation", model="gpt2") |
|
|
|
|
|
translator = Translator() |
|
|
|
|
|
def generate_text(user_input): |
|
try: |
|
|
|
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}" |
|
|
|
|
|
def text_to_speech(text, lang): |
|
try: |
|
tts = gTTS(text=text, lang=lang) |
|
|
|
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}" |
|
|
|
|
|
st.set_page_config(page_title="GPT-2 Chatbot with Text-to-Speech (Multi-language)", layout="wide") |
|
|
|
|
|
menu = st.sidebar.radio("Navigation", ["Chatbot", "About"]) |
|
|
|
|
|
languages = { |
|
"English": "en", |
|
"Spanish": "es", |
|
"French": "fr", |
|
"German": "de", |
|
"Italian": "it", |
|
"Portuguese": "pt", |
|
"Dutch": "nl", |
|
"Russian": "ru", |
|
"Chinese": "zh", |
|
"Japanese": "ja", |
|
"Hindi": "hi" |
|
} |
|
|
|
|
|
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.") |
|
|
|
|
|
lang_choice = st.selectbox("Select Language for Chatbot", list(languages.keys())) |
|
lang_code = languages[lang_choice] |
|
|
|
|
|
user_input = st.text_input(f"Ask your question in {lang_choice}:", "") |
|
|
|
if st.button("Generate Response"): |
|
if user_input: |
|
|
|
translated_input = translator.translate(user_input, src=lang_code, dest="en").text |
|
|
|
generated_text = generate_text(translated_input) |
|
|
|
|
|
translated_response = translator.translate(generated_text, src="en", dest=lang_code).text |
|
st.write(f"### Response in {lang_choice}:") |
|
st.write(translated_response) |
|
|
|
|
|
audio_path = text_to_speech(translated_response, lang_code) |
|
st.audio(audio_path, format="audio/mp3") |
|
else: |
|
st.warning("Please enter a question.") |
|
|
|
|
|
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. |
|
""") |