DinaBot / app.py
zaafirriaz's picture
Update app.py
e7606b5 verified
import gradio as gr
from transformers import pipeline
from gtts import gTTS
import os
from pydub import AudioSegment
from pydub.playback import play
# Load a public model for question answering
qa_pipeline = pipeline("question-answering", model="distilbert-base-uncased-distilled-squad")
# Function to generate the answer and dinosaur speech
def answer_question(question):
context = "Provide the context or text where the answer should be found."
result = qa_pipeline(question=question, context=context)
answer = result['answer']
# Generate speech
tts = gTTS(text=answer, lang='en')
tts.save("answer.mp3")
# Play the speech
audio = AudioSegment.from_mp3("answer.mp3")
play(audio)
return answer, "answer.mp3"
# HTML for the dinosaur image as background
image_html = """
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0;
height: 100vh;
background-image: url('https://i.pinimg.com/736x/b6/e8/61/b6e86149d3180b11018d9c3de1af92e6.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
</style>
</head>
<body>
</body>
</html>
"""
# Define Gradio interface
iface = gr.Blocks()
with iface:
gr.Markdown(
"""
# Ancient Interface with Modern Dinosaur
Ask a question and get an answer from our modern dinosaur!
"""
)
with gr.Row():
question_input = gr.Textbox(label="Ask a Question")
answer_text = gr.Textbox(label="Answer")
audio_output = gr.Audio(label="Dinosaur Speech")
question_input.change(answer_question, inputs=question_input, outputs=[answer_text, audio_output])
gr.HTML(image_html)
# Launch the interface
iface.launch(share=True)