Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| from sentence_transformers import SentenceTransformer, util | |
| from gtts import gTTS | |
| import tempfile | |
| import os | |
| # Load the Gita dataset | |
| def load_data(): | |
| return pd.read_csv("Bhagwad_Gita.csv") | |
| data = load_data() | |
| # Load the embedding model | |
| def load_model(): | |
| return SentenceTransformer('all-MiniLM-L6-v2') | |
| model = load_model() | |
| # Preprocess verses and create embeddings | |
| def get_embeddings(data): | |
| verses = data['Verse'].astype(str).tolist() | |
| embeddings = model.encode(verses, convert_to_tensor=True) | |
| return verses, embeddings | |
| verses, verse_embeddings = get_embeddings(data) | |
| # App Title | |
| st.title("π GeetaGPT β Divine Wisdom from the Bhagavad Gita") | |
| # User Input | |
| user_question = st.text_input("Ask your question to Lord Krishna:") | |
| if user_question: | |
| # Embed the question | |
| question_embedding = model.encode(user_question, convert_to_tensor=True) | |
| # Compute cosine similarities | |
| scores = util.pytorch_cos_sim(question_embedding, verse_embeddings)[0] | |
| best_idx = scores.argmax().item() | |
| # Get the best matching verse | |
| matched_verse = verses[best_idx] | |
| chapter = data.iloc[best_idx]['Chapter'] | |
| verse_number = data.iloc[best_idx]['Verse Number'] | |
| # Greet and show result | |
| greeting = "ποΈ Jai Shri Krishna!\n\n" | |
| st.markdown(f"{greeting}**Chapter {chapter}, Verse {verse_number}:**\n\n*{matched_verse}*") | |
| # Optional: Generate audio | |
| if st.checkbox("π Hear it aloud"): | |
| tts = gTTS(text=matched_verse, lang='en') | |
| with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as fp: | |
| tts.save(fp.name) | |
| st.audio(fp.name, format="audio/mp3") | |
| os.remove(fp.name) | |