Files
INTUIA/Testes/aldsa.py
T

116 lines
4.0 KiB
Python
Raw Normal View History

2026-03-15 13:27:50 +00:00
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()