Ultralearning / app.py
DHEIVER's picture
Update app.py
12bee70 verified
raw
history blame
5.46 kB
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()