Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
from transformers import pipeline | |
class GeradorTrilhaAprendizado: | |
def __init__(self): | |
self.device = 0 if torch.cuda.is_available() else -1 | |
self.transcriber = pipeline("automatic-speech-recognition", | |
model="openai/whisper-base", | |
device=self.device) | |
self.generator = pipeline("text-generation", | |
model="gpt2-large", # Modelo maior | |
device=self.device) | |
def processar_audio(self, | |
audio_path: str, | |
nome_trilha: str, | |
nivel: str = "intermediário", | |
incluir_recursos: bool = True) -> tuple: | |
try: | |
transcricao = self.transcriber(audio_path)["text"] | |
prompt = f""" | |
Crie uma trilha de aprendizado estruturada para nível {nivel} com base no seguinte objetivo: | |
{transcricao} | |
Inclua: | |
1. Objetivos de aprendizagem específicos | |
2. Pré-requisitos necessários | |
3. Módulos de estudo sequenciais | |
4. Projetos práticos | |
5. Marcos de avaliação | |
Trilha de aprendizado para {nome_trilha}: | |
""" | |
analise = self.generator(prompt, | |
max_length=500, # Aumentado | |
num_return_sequences=1, | |
temperature=0.7, # Adicionado | |
top_p=0.95)[0]["generated_text"] # Adicionado | |
if incluir_recursos: | |
recursos = self._gerar_recursos(nivel, transcricao) | |
analise += "\n\n" + recursos | |
return (transcricao, analise, "✅ Trilha gerada com sucesso!") | |
except Exception as e: | |
return (f"Erro: {str(e)}", "Não foi possível gerar a análise.", "❌ Ocorreu um erro") | |
def _gerar_recursos(self, nivel: str, objetivo: str) -> str: | |
recursos_por_nivel = { | |
"iniciante": { | |
"cursos": ["Fundamentos Básicos", "Introdução Prática"], | |
"livros": ["Guia do Iniciante", "Primeiros Passos"], | |
"projetos": ["Projeto inicial guiado", "Mini-projetos práticos"] | |
}, | |
"intermediário": { | |
"cursos": ["Especialização Prática", "Técnicas Avançadas"], | |
"livros": ["Guia Completo", "Estudos de Caso"], | |
"projetos": ["Projetos de média complexidade", "Desafios práticos"] | |
}, | |
"avançado": { | |
"cursos": ["Masterclass Avançada", "Especialização Profissional"], | |
"livros": ["Técnicas Avançadas", "Estado da Arte"], | |
"projetos": ["Projetos complexos", "Contribuições open-source"] | |
} | |
} | |
recursos = recursos_por_nivel[nivel] | |
return f""" | |
📚 Recursos Recomendados para Nível {nivel}: | |
1. Cursos Recomendados: | |
- {recursos['cursos'][0]} | |
- {recursos['cursos'][1]} | |
2. Material de Estudo: | |
- {recursos['livros'][0]} | |
- {recursos['livros'][1]} | |
3. Projetos Práticos: | |
- {recursos['projetos'][0]} | |
- {recursos['projetos'][1]} | |
4. Recursos Adicionais: | |
- Comunidades de prática | |
- Mentoria entre pares | |
- Workshops práticos | |
- Avaliações periódicas | |
""" | |
def criar_interface(): | |
with gr.Blocks(theme=gr.themes.Soft()) as app: | |
gr.Markdown(""" | |
# 🎓 Gerador de Trilha de Aprendizado | |
Grave ou faça upload de um áudio descrevendo seus objetivos e receba uma trilha personalizada! | |
""") | |
with gr.Row(): | |
with gr.Column(): | |
audio_input = gr.Audio( | |
type="filepath", | |
label="Áudio", | |
sources=["microphone", "upload"] | |
) | |
nome_trilha = gr.Textbox( | |
label="Nome da Trilha", | |
placeholder="Dê um nome para sua trilha" | |
) | |
nivel = gr.Dropdown( | |
choices=["iniciante", "intermediário", "avançado"], | |
value="intermediário", | |
label="Nível de Dificuldade" | |
) | |
incluir_recursos = gr.Checkbox( | |
label="Incluir Recursos Recomendados", | |
value=True | |
) | |
processar_btn = gr.Button("🚀 Gerar Trilha de Aprendizado") | |
with gr.Row(): | |
with gr.Column(): | |
status = gr.Markdown() | |
transcricao = gr.Textbox(label="Transcrição do Áudio", lines=4) | |
analise = gr.Textbox(label="Sua Trilha de Aprendizado", lines=10) | |
processar_btn.click( | |
fn=GeradorTrilhaAprendizado().processar_audio, | |
inputs=[audio_input, nome_trilha, nivel, incluir_recursos], | |
outputs=[transcricao, analise, status] | |
) | |
return app | |
if __name__ == "__main__": | |
app = criar_interface() | |
app.queue() | |
app.launch() |