Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
import torch | |
from huggingface_hub import InferenceClient | |
# Initialize pipeline | |
sentiment_analyzer = pipeline("text-classification", model="tabularisai/multilingual-sentiment-analysis") | |
summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
chatbot = InferenceClient("HuggingFaceH4/zephyr-7b-beta") | |
speech_model = pipeline("automatic-speech-recognition", model="openai/whisper-small") | |
# Sentiment analysis functoin that takes text and returns sentiment and confidence | |
def analyze_sentiment(text): | |
result = sentiment_analyzer(text)[0] | |
return f"Sentiment: {result['label']}", f"Confidence: {result['score']:.2f}" | |
# Function where users can engage in a conversational interface. | |
def chat_response( | |
message, | |
max_tokens = 500, | |
temperature = 0.8, | |
top_p = 0.8, | |
): | |
messages = [{"role": "system", "content": 'You are an assistant for a company called TrailTrek Gears Co specialized in Hiking'}] | |
messages.append({"role": "user", "content": message}) | |
response = "" | |
for message in chatbot.chat_completion( | |
messages, | |
max_tokens=max_tokens, | |
stream=True, | |
temperature=temperature, | |
top_p=top_p, | |
): | |
token = message.choices[0].delta.content | |
response += token | |
yield response | |
# A summarization function | |
def summarize_text(text): | |
# Ensure text is within model's max length | |
max_length = 1024 | |
if len(text.split()) > max_length: | |
text = " ".join(text.split()[:max_length]) | |
summary = summarizer(text, max_length=130, min_length=30, do_sample=False) | |
return summary[0]['summary_text'] | |
# A function that takes text and outputs a speech of the text | |
def speech_to_text(audio): | |
if audio is None: | |
return "Please upload an audio file or record audio to transcribe." | |
# Transcribe the audio | |
result = speech_model(audio) | |
return result["text"] | |
with gr.Blocks(title="TrailTrek Gears AI Suite") as demo: | |
gr.Markdown("# TrailTrek Gears AI Suite") | |
with gr.Tab("Sentiment Analysis"): | |
gr.Markdown("### Analyze the sentiment of your text") | |
with gr.Row(): | |
sentiment_input = gr.Textbox(label="Enter text to analyze", lines=4) | |
with gr.Column(): | |
sentiment_label = gr.Textbox(label="Sentiment") | |
confidence_score = gr.Textbox(label="Confidence Score") | |
sentiment_button = gr.Button("Analyze Sentiment") | |
sentiment_button.click( | |
analyze_sentiment, | |
inputs=sentiment_input, | |
outputs=[sentiment_label, confidence_score] | |
) | |
with gr.Tab("Chatbot"): | |
gr.Markdown("# Stateless Chatbot using Zephyr-7b-beta") | |
with gr.Row(): | |
chat_input = gr.Textbox( | |
placeholder="Type your message here...", | |
label="Your Message" | |
) | |
chat_output = gr.Textbox( | |
label="Assistant Response", | |
interactive=False | |
) | |
chat_input.submit(chat_response, inputs=chat_input, outputs=chat_output) | |
with gr.Tab("Summarization"): | |
gr.Markdown("### Get a concise summary of your text") | |
with gr.Row(): | |
summary_input = gr.Textbox(label="Enter text to summarize", lines=8) | |
summary_output = gr.Textbox(label="Summary", lines=4) | |
summary_button = gr.Button("Generate Summary") | |
summary_button.click( | |
summarize_text, | |
inputs=summary_input, | |
outputs=summary_output | |
) | |
with gr.Tab("Speech-to-Text"): | |
gr.Markdown("### Convert speech to text using Whisper") | |
with gr.Row(): | |
with gr.Column(): | |
audio = gr.Audio( | |
"microphone", | |
type="filepath", | |
label="Record or upload audio" | |
) | |
transcribe_button = gr.Button("Transcribe Audio") | |
text_output = gr.Textbox( | |
label="Transcribed Text", | |
lines=4, | |
placeholder="Transcribed text will appear here..." | |
) | |
transcribe_button.click( | |
speech_to_text, | |
inputs=audio, | |
outputs=text_output | |
) | |
# Launch the app | |
if __name__ == "__main__": | |
demo.launch() |