rahulhans's picture
Upload 15 files
a26e606 verified
import gradio as gr
import torch
from models.text_gen import TextGenerator
from models.summarizer import TextSummarizer
from models.image_gen import ImageGenerator
from models.audio_gen import AudioGenerator
from models.code_gen import CodeGenerator
# Debug GPU availability
print(f"CUDA available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"CUDA device count: {torch.cuda.device_count()}")
print(f"Current CUDA device: {torch.cuda.current_device()}")
print(f"CUDA device name: {torch.cuda.get_device_name(0)}")
print(f"CUDA device properties: {torch.cuda.get_device_properties(0)}")
# Initialize the models
text_generator = TextGenerator()
text_summarizer = TextSummarizer()
image_generator = ImageGenerator()
audio_generator = AudioGenerator()
code_generator = CodeGenerator()
def generate_text(prompt, max_length, temperature, top_p):
try:
generated_text = text_generator.generate_text(
prompt=prompt,
max_length=max_length,
temperature=temperature,
top_p=top_p
)
return generated_text
except Exception as e:
return f"Error generating text: {str(e)}"
def summarize_text(text, max_length, min_length):
try:
summary = text_summarizer.summarize(
text=text,
max_length=max_length,
min_length=min_length
)
return summary
except Exception as e:
return f"Error generating summary: {str(e)}"
def generate_image(prompt, num_steps, guidance_scale):
try:
image = image_generator.generate_image(
prompt=prompt,
num_inference_steps=num_steps,
guidance_scale=guidance_scale
)
return image
except Exception as e:
return f"Error generating image: {str(e)}"
def generate_audio(text):
try:
audio, sample_rate = audio_generator.generate_audio(
text=text
)
return (sample_rate, audio)
except Exception as e:
return f"Error generating audio: {str(e)}"
def generate_code(prompt, max_length, temperature, top_p):
try:
code = code_generator.generate_code(
prompt=prompt,
max_length=max_length,
temperature=temperature,
top_p=top_p
)
return code
except Exception as e:
return f"Error generating code: {str(e)}"
# Create the Gradio interface
with gr.Blocks(title="GenAI Content Studio") as app:
gr.Markdown("# 🎨 GenAI Content Studio")
gr.Markdown("### Free and Open-Source AI Content Generation")
with gr.Tabs():
with gr.TabItem("Text Generation"):
with gr.Row():
with gr.Column():
prompt = gr.Textbox(
label="Enter your prompt",
placeholder="Type your text here...",
lines=3
)
with gr.Row():
max_length = gr.Slider(
minimum=50,
maximum=500,
value=100,
step=50,
label="Max Length"
)
temperature = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.7,
step=0.1,
label="Temperature"
)
top_p = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.9,
step=0.1,
label="Top P"
)
generate_btn = gr.Button("Generate Text")
with gr.Column():
output = gr.Textbox(
label="Generated Text",
lines=10,
interactive=False
)
generate_btn.click(
fn=generate_text,
inputs=[prompt, max_length, temperature, top_p],
outputs=output
)
with gr.TabItem("Text Summarization"):
with gr.Row():
with gr.Column():
text_input = gr.Textbox(
label="Enter text to summarize",
placeholder="Paste your text here...",
lines=10
)
with gr.Row():
max_summary_length = gr.Slider(
minimum=50,
maximum=200,
value=130,
step=10,
label="Max Summary Length"
)
min_summary_length = gr.Slider(
minimum=10,
maximum=100,
value=30,
step=10,
label="Min Summary Length"
)
summarize_btn = gr.Button("Summarize Text")
with gr.Column():
summary_output = gr.Textbox(
label="Generated Summary",
lines=5,
interactive=False
)
summarize_btn.click(
fn=summarize_text,
inputs=[text_input, max_summary_length, min_summary_length],
outputs=summary_output
)
with gr.TabItem("Image Generation"):
with gr.Row():
with gr.Column():
image_prompt = gr.Textbox(
label="Enter your image prompt",
placeholder="Describe the image you want to generate...",
lines=3
)
with gr.Row():
num_steps = gr.Slider(
minimum=20,
maximum=100,
value=50,
step=10,
label="Number of Steps"
)
guidance_scale = gr.Slider(
minimum=1.0,
maximum=20.0,
value=7.5,
step=0.5,
label="Guidance Scale"
)
generate_image_btn = gr.Button("Generate Image")
with gr.Column():
image_output = gr.Image(
label="Generated Image",
type="pil"
)
generate_image_btn.click(
fn=generate_image,
inputs=[image_prompt, num_steps, guidance_scale],
outputs=image_output
)
with gr.TabItem("Audio Generation"):
with gr.Row():
with gr.Column():
audio_text = gr.Textbox(
label="Enter text to convert to speech",
placeholder="Type what you want to hear...",
lines=3
)
generate_audio_btn = gr.Button("Generate Audio")
with gr.Column():
audio_output = gr.Audio(
label="Generated Audio",
type="numpy"
)
generate_audio_btn.click(
fn=generate_audio,
inputs=[audio_text],
outputs=audio_output
)
with gr.TabItem("Code Generation"):
with gr.Row():
with gr.Column():
code_prompt = gr.Textbox(
label="Enter your code prompt",
placeholder="Describe the code you want to generate...",
lines=3
)
with gr.Row():
max_length = gr.Slider(
minimum=50,
maximum=500,
value=100,
step=50,
label="Max Length"
)
temperature = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.7,
step=0.1,
label="Temperature"
)
top_p = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.9,
step=0.1,
label="Top P"
)
generate_code_btn = gr.Button("Generate Code")
with gr.Column():
code_output = gr.Code(
label="Generated Code",
language="python"
)
generate_code_btn.click(
fn=generate_code,
inputs=[code_prompt, max_length, temperature, top_p],
outputs=code_output
)
if __name__ == "__main__":
app.launch()