import gradio as gr
# Import modules from other files
from chatbot import model_inference, EXAMPLES, chatbot
from voice_chat import respond
# Define Gradio theme
theme = gr.themes.Soft(
primary_hue="sky",
secondary_hue="violet",
neutral_hue="gray",
font=[gr.themes.GoogleFont('orbitron')]
)
# Create Gradio blocks for different functionalities
# Chat interface block
with gr.Blocks(
css=""".gradio-container .avatar-container {height: 40px width: 40px !important;} #duplicate-button {margin: auto; color: white; background: #f1a139; border-radius: 100vh; margin-top: 2px; margin-bottom: 2px;}""",
) as chat:
gr.Markdown("### Image Chat, Image Generation, Image classification and Normal Chat")
gr.ChatInterface(
fn=model_inference,
chatbot = chatbot,
examples=EXAMPLES,
multimodal=True,
cache_examples=False,
autofocus=False,
concurrency_limit=10,
)
# Voice chat block
with gr.Blocks() as voice:
gr.Markdown("Sometimes, it takes because of long queue")
with gr.Row():
audio_input = gr.Audio(label="Voice Chat (BETA)", sources="microphone", type="filepath", waveform_options=False)
output = gr.Audio(label="OUTPUT", type="filepath", interactive=False, autoplay=True, elem_classes="audio")
audio_input.change( fn=respond, inputs=[audio_input], outputs=[output], queue=False)
with gr.Blocks() as image:
gr.HTML("")
with gr.Blocks() as instant2:
gr.HTML("")
with gr.Blocks() as video:
gr.Markdown("""More Models are coming""")
gr.TabbedInterface([ instant2], ['Instant🎥'])
# Main application block
with gr.Blocks(theme=theme, title="OpenGPT 4o DEMO") as demo:
gr.Markdown("# OpenGPT 4o")
gr.TabbedInterface([chat, voice, image, video], ['💬 SuperChat','🗣️ Voice Chat', '🖼️ Image Engine', '🎥 Video Engine'])
demo.queue(max_size=300)
demo.launch()