Spaces:
Sleeping
Sleeping
File size: 3,796 Bytes
86b946a 9030e5b bfaeb19 ac37763 bfaeb19 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 cab6a89 a6532a3 9030e5b cab6a89 b453ff2 a6532a3 9030e5b a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 a6532a3 b453ff2 ac37763 b453ff2 ac37763 b453ff2 9030e5b a6532a3 d06f4eb 883b37e f845a0a 9030e5b b453ff2 9030e5b a197dc7 883b37e b453ff2 9030e5b b453ff2 e0d541d b453ff2 ac37763 b453ff2 9030e5b 3405778 |
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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
import streamlit as st
from gradio_client import Client
from st_audiorec import st_audiorec
from gtts import gTTS
from IPython.display import Audio, display
# Constants
TITLE = "AgriTure"
DESCRIPTION = """
----
This Project demonstrates a model fine-tuned by Achyuth. This Model is named as "AgriaTure". This Model helps the farmers and scientists to develop the art of agriculture and farming.
Hope this will be a Successful Project!!!
~Achyuth
----
"""
# Initialize client
whisper_client = Client("https://sanchit-gandhi-whisper-large-v2.hf.space/")
# Function to convert text to speech using gTTS
def text_to_speech(text, lang='en'):
tts = gTTS(text=text, lang=lang, slow=False)
tts.save("response.mp3")
return "response.mp3"
# Function to transcribe audio
def transcribe(wav_path):
return whisper_client.predict(
wav_path,
"transcribe",
api_name="/predict"
)
# Prediction function
def predict(message, system_prompt='Your name is AgriaTure...', temperature=0.7, max_new_tokens=4096, Topp=0.5, Repetitionpenalty=1.2):
with st.status("Starting client"):
client = Client("https://huggingface-projects-llama-2-7b-chat.hf.space/")
st.write("Requesting Audio Transcriber")
with st.status("Requesting AgriTure v1"):
st.write("Requesting API")
response = client.predict(
message,
system_prompt,
max_new_tokens,
temperature,
Topp,
500,
Repetitionpenalty,
api_name="/chat"
)
st.write("Done")
return response
# Streamlit UI
st.title(TITLE)
st.write(DESCRIPTION)
if "messages" not in st.session_state:
st.session_state.messages = []
# Display chat messages from history on app rerun
for message in st.session_state.messages:
with st.chat_message(message["role"], avatar=("๐งโ๐ป" if message["role"] == 'human' else '๐ฆ')):
st.markdown(message["content"])
textinput = st.chat_input("Ask AgriTure anything...")
wav_audio_data = st_audiorec()
if wav_audio_data is not None:
with st.status("Transcribing audio..."):
# save audio
with open("audio.wav", "wb") as f:
f.write(wav_audio_data)
prompt = transcribe("audio.wav")
st.write("Transcribed Given Audio โ")
st.chat_message("human", avatar="๐ฟ").markdown(prompt)
st.session_state.messages.append({"role": "human", "content": prompt})
# transcribe audio
response = predict(message=prompt)
with st.chat_message("assistant", avatar='๐ฟ'):
st.markdown(response)
# Convert AI response to speech
speech_file = text_to_speech(response)
# Display assistant response in chat message container
with st.chat_message("assistant", avatar='๐ฟ'):
st.markdown(response)
# Play the generated speech
display(Audio(speech_file, autoplay=True))
# Add assistant response to chat history
st.session_state.messages.append({"role": "assistant", "content": response})
# React to user input
if prompt := textinput:
# Display user message in chat message container
st.chat_message("human", avatar="๐ฟ").markdown(prompt)
# Add user message to chat history
st.session_state.messages.append({"role": "human", "content": prompt})
response = predict(message=prompt)
# Convert AI response to speech
speech_file = text_to_speech(response)
# Display assistant response in chat message container
with st.chat_message("assistant", avatar='๐ฟ'):
st.markdown(response)
# Play the generated speech
display(Audio(speech_file, autoplay=True))
# Add assistant response to chat history
st.session_state.messages.append({"role": "assistant", "content": response})
|