Spaces:
Runtime error
Runtime error
import streamlit as st | |
import requests | |
import base64 | |
import os | |
import llama_index | |
from audio_recorder_streamlit import audio_recorder | |
from openai import OpenAI | |
from llama_index import VectorStoreIndex, SimpleDirectoryReader | |
os.environ['OPENAI_API_KEY'] = os.getenv("apikey") | |
API_KEY = os.getenv("apikey") | |
def RAG(text): | |
documents = SimpleDirectoryReader("db3").load_data() | |
index = VectorStoreIndex.from_documents(documents) | |
query_engine = index.as_query_engine() | |
response = query_engine.query(text) | |
# Extract the text from the response | |
response_text = response.response if hasattr(response, 'response') else str(response) | |
return response_text | |
def linkRAGhindi(text): | |
new_prompt="निम्नलिखित प्रश्न के लिए सबसे उपयुक्त वेबसाइट लिंक दें"+text | |
documents = SimpleDirectoryReader("db1").load_data() | |
index = VectorStoreIndex.from_documents(documents) | |
query_engine = index.as_query_engine() | |
response = query_engine.query(new_prompt) | |
# Extract the text from the response | |
response_text = response.response if hasattr(response, 'response') else str(response) | |
return response_text | |
def rechindi(text): | |
new_prompt="निम्नलिखित प्रश्न के लिए सबसे उपयुक्त वेबसाइट लिंक दें"+text | |
documents = SimpleDirectoryReader("db2").load_data() | |
index = VectorStoreIndex.from_documents(documents) | |
query_engine = index.as_query_engine() | |
response = query_engine.query(new_prompt) | |
# Extract the text from the response | |
response_text = response.response if hasattr(response, 'response') else str(response) | |
return response_text | |
def linkRAGenglish(text): | |
new_prompt="Give the most appropiate website link for the following question "+text | |
documents = SimpleDirectoryReader("db1").load_data() | |
index = VectorStoreIndex.from_documents(documents) | |
query_engine = index.as_query_engine() | |
response = query_engine.query(new_prompt) | |
# Extract the text from the response | |
response_text = response.response if hasattr(response, 'response') else str(response) | |
return response_text | |
def recenglish(text): | |
new_prompt="Give the most intresting other website link for the following question "+text | |
documents = SimpleDirectoryReader("db2").load_data() | |
index = VectorStoreIndex.from_documents(documents) | |
query_engine = index.as_query_engine() | |
response = query_engine.query(new_prompt) | |
# Extract the text from the response | |
response_text = response.response if hasattr(response, 'response') else str(response) | |
return response_text | |
def transcribe_text_to_voice_english(audio_location): | |
client = OpenAI(api_key=API_KEY) | |
audio_file = open(audio_location, "rb") | |
transcript = client.audio.transcriptions.create(model="whisper-1", file=audio_file) | |
return transcript.text | |
def transcribe_text_to_voice_hindi(audio_location): | |
url = "https://api.runpod.ai/v2/faster-whisper/runsync" | |
with open(audio_location, "rb") as audio_file: | |
audio_base64 = base64.b64encode(audio_file.read()).decode('utf-8') | |
payload = { | |
"input": { | |
"audio_base64": audio_base64, | |
"model": "small", | |
"transcription": "plain_text", | |
"translate": True, | |
"language": "hi", | |
"temperature": 0, | |
"best_of": 5, | |
"beam_size": 5, | |
"patience": 1, | |
"suppress_tokens": "-1", | |
"condition_on_previous_text": False, | |
"temperature_increment_on_fallback": 0.2, | |
"compression_ratio_threshold": 2.4, | |
"logprob_threshold": -1, | |
"no_speech_threshold": 0.6, | |
"word_timestamps": False | |
}, | |
"enable_vad": False | |
} | |
headers = { | |
"accept": "application/json", | |
"content-type": "application/json", | |
"authorization": "X01PG949AHTOVRYHLQZKSRIWN82UHBUU5JYLNAHM" | |
} | |
response = requests.post(url, json=payload, headers=headers) | |
response_json = response.json() | |
transcription = response_json["output"]["transcription"] | |
translation = response_json["output"]["translation"].strip().split('\n')[-1].strip() | |
return transcription, translation | |
def recommendation(text): | |
client = OpenAI(api_key=API_KEY) | |
messages = [{"role": "user", "content": text}] | |
response = client.chat.completions.create(model="gpt-3.5-turbo-1106", messages=messages) | |
return response.choices[0].message.content | |
def text_to_speech_ai(speech_file_path, api_response): | |
client = OpenAI(api_key=API_KEY) | |
response = client.audio.speech.create(model="tts-1",voice="nova",input=api_response) | |
response.stream_to_file(speech_file_path) | |
st.title("🚀 SHRESHTH 💬 Bhuvan Assistant") | |
# Radio wheel for language selection | |
language = st.radio("Language/भाषा",["English", "हिंदी"]) | |
# Displaying description based on selected language | |
if language == "English": | |
mode = st.radio("Select Mode Of Input", ["Voice","Text"]) | |
st.write("Smart - Helpful - Robust - Effortless - System for Text-to-speech and Human-like Assistance") | |
if mode == "Voice" or mode == "आवाज": | |
st.write("Click on the voice recorder and let me know how I can help you today with your Queries Regarding Bhuvan!") | |
audio_bytes = audio_recorder( | |
text="", | |
recording_color="#e8b62c", | |
neutral_color="#6aa36f", | |
icon_name="microphone", | |
icon_size="2x", | |
) | |
if audio_bytes: | |
# Save the Recorded File | |
audio_location = "audio_file.wav" | |
with open(audio_location, "wb") as f: | |
f.write(audio_bytes) | |
if language == "English": | |
text=transcribe_text_to_voice_english(audio_location) | |
st.write(text) | |
else: | |
text,trans=transcribe_text_to_voice_hindi(audio_location) | |
st.write(text) | |
link_response = linkRAGenglish(text) | |
st.write("SHRESHTH:", link_response) | |
api_response = RAG(text) | |
st.write("SHRESHTH:", api_response) | |
speech_file_path = 'audio_response.mp3' | |
text_to_speech_ai(speech_file_path, api_response) | |
st.audio(speech_file_path) | |
recctext="recommend top three other websites that could interest the user depending on this link and answer : " + link_response + api_response | |
recc=linkRAGenglish(recctext) | |
st.write("SHRESHTH:", recc) | |
else: | |
# Text input option | |
text_input = st.text_area("Enter your text here and press Enter", "") | |
if st.button("Submit"): | |
# Process the entered text | |
link_response = linkRAGenglish(text_input) | |
st.write("SHRESHTH:", link_response) | |
api_response = RAG(text_input) | |
st.write("SHRESHTH:", api_response) | |
# Read out the text response using tts | |
speech_file_path = 'audio_response.mp3' | |
text_to_speech_ai(speech_file_path, api_response) | |
st.audio(speech_file_path) | |
recctext="recommend top three other websites that could interest the user depending on this link and answer : " + link_response + api_response | |
recc=linkRAGenglish(recctext) | |
st.write("SHRESHTH:", recc) | |
else: | |
mode = st.radio("इनपुट मोड का चयन करें", ["आवाज", "टेक्स्ट"]) | |
st.write("स्मार्ट - सहायक - मजबूत - प्रयासहीन - पाठ-से-बोल के लिए एक सिस्टम और मानव जैसी सहायता") | |
if mode == "Voice" or mode == "आवाज" or mode == "ভয়েস": | |
st.write("आवाज रेकॉर्डर पर क्लिक करें और मुझसे यह बताएं कि आज आपकी भुवन से संबंधित सवालों में मैं आपकी कैसे मदद कर सकता हूँ!") | |
audio_bytes = audio_recorder( | |
text="", | |
recording_color="#e8b62c", | |
neutral_color="#6aa36f", | |
icon_name="microphone", | |
icon_size="2x", | |
) | |
if audio_bytes: | |
# Save the Recorded File | |
audio_location = "audio_file.wav" | |
with open(audio_location, "wb") as f: | |
f.write(audio_bytes) | |
if language == "English": | |
text=transcribe_text_to_voice_english(audio_location) | |
st.write(text) | |
else: | |
text,trans=transcribe_text_to_voice_hindi(audio_location) | |
st.write(text) | |
link_response = linkRAGhindi(text) | |
st.write("श्रेष्ठ:", link_response) | |
api_response = RAG(text) | |
st.write("श्रेष्ठ:", api_response) | |
# Read out the text response using tts | |
speech_file_path = 'audio_response.mp3' | |
text_to_speech_ai(speech_file_path, api_response) | |
st.audio(speech_file_path) | |
recctext="recommend top three other websites that could interest the user depending on this link and answer : " + link_response + api_response | |
recc=rechindi(recctext) | |
st.write("श्रेष्ठ:", recc) | |
else: | |
# Text input option | |
text_input = st.text_area("आप यहाँ अपना टेक्स्ट दर्ज करें और एंटर दबाएं", "") | |
if st.button("एंटर"): | |
# Process the entered text | |
link_response = linkRAGhindi(text_input) | |
st.write("श्रेष्ठ:", link_response) | |
api_response = RAG(text_input) | |
st.write("श्रेष्ठ:", api_response) | |
# Read out the text response using tts | |
speech_file_path = 'audio_response.mp3' | |
text_to_speech_ai(speech_file_path, api_response) | |
st.audio(speech_file_path) | |
recctext="recommend top three other websites that could interest the user depending on this link and answer : " + link_response + api_response | |
recc=rechindi(recctext) | |
st.write("श्रेष्ठ:", recc) | |