import tkinter as tk from tkinter import Menu, messagebox, filedialog import os import threading import speech_recognition as sr from pydub import AudioSegment from moviepy.editor import VideoFileClip # Importando moviepy para manipular vídeo def validar_login(): user = userdig.get() password = passdig.get() if user == "admin" and password == "12345": login.destroy() abre_janela_principal() else: messagebox.showerror("Erro", "User ou password incorretos!") is_playing = False video_position = 0 transcribed_text = "" def abre_janela_principal(): janela_principal = tk.Tk() janela_principal.title("Kl3z - PJ- AI") janela_principal.geometry('800x500') menu_bar = Menu(janela_principal) carregar_menu = Menu(menu_bar, tearoff=0) carregar_menu.add_command(label="Carregar video", command=carregar_video) carregar_menu.add_command(label="Carregar audio", command=carregar_audio) carregar_menu.add_separator() carregar_menu.add_command(label="Sair", command=janela_principal.destroy) menu_bar.add_cascade(label="Carregar informação", menu=carregar_menu) Relatorios = Menu(menu_bar, tearoff=0) Relatorios.add_command(label="Inserir") Relatorios.add_command(label="Download Texto", command=baixar_texto) menu_bar.add_cascade(label="Relatórios", menu=Relatorios) Opcoes = Menu(menu_bar, tearoff=0) Opcoes.add_command(label="Baixar texto", command=baixar_texto) Opcoes.add_command(label="Definições2") menu_bar.add_cascade(label="Opções", menu=Opcoes) janela_principal.config(menu=menu_bar) global video video = tk.Label(janela_principal, bg='black') video.pack(expand=True, fill=tk.BOTH) video.place(x=50, y=50, width=500, height=300) janela_principal.mainloop() def carregar_video(): global video_caminho video_caminho = filedialog.askopenfilename(title="Selecione um vídeo", filetypes=[("Vídeos", "*.mp4;*.avi;*.mov")]) if video_caminho: threading.Thread(target=reproduzir_video, args=(video_caminho,)).start() def reproduzir_video(video_path): global transcribed_text video_clip = VideoFileClip(video_path) video_clip.preview() # Reproduz o vídeo com áudio # Chama a função para transcrever o áudio após a reprodução do vídeo transcrever_audio(video_path) def carregar_audio(): audio = filedialog.askopenfilename(title="Selecione um ficheiro audio", filetypes=[("Áudios", "*.mp3;*.wav;*.ogg")]) if audio: os.startfile(audio) def transcrever_audio(video_path): global transcribed_text audio_path = "audio.wav" audio_segment = AudioSegment.from_file(video_path) audio_segment.export(audio_path, format="wav") recognizer = sr.Recognizer() with sr.AudioFile(audio_path) as source: audio_data = recognizer.record(source) try: transcribed_text = recognizer.recognize_google(audio_data, language="pt-BR") print("Transcrição: ", transcribed_text) except sr.UnknownValueError: print("Não foi possível entender o áudio") except sr.RequestError: print("Erro ao solicitar resultados da API") def baixar_texto(): if transcribed_text: caminho_arquivo = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text files", "*.txt")]) if caminho_arquivo: with open(caminho_arquivo, 'w', encoding='utf-8') as f: f.write(transcribed_text) messagebox.showinfo("Sucesso", "Texto salvo com sucesso!") else: messagebox.showwarning("Atenção", "Nenhum texto transcrito para salvar.") # Janela de login login = tk.Tk() login.title("Login") login.geometry("300x200") label_usuario = tk.Label(login, text="Usuário:") label_usuario.pack(pady=5) userdig = tk.Entry(login) userdig.pack(pady=5) label_senha = tk.Label(login, text="Senha:") label_senha.pack(pady=5) passdig = tk.Entry(login, show="*") passdig.pack(pady=5) botao_login = tk.Button(login, text="Login", command=validar_login) botao_login.pack(pady=20) login.mainloop()