Spaces:
Running
Running
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() |