from faceVerificationUtilization import FaceValidation, FaceRecord, Recognize, UploadVoice import gradio as gr with gr.Blocks(theme=gr.themes.Soft()) as demo: with gr.Tabs(): with gr.Tab("Face Validation"): gr.Markdown("## Cek validasi wajah") gr.Interface(fn=FaceValidation, inputs=gr.Image(sources="webcam", streaming=True), outputs="text", live=True) with gr.Tab("Face Record"): gr.Markdown("## Ambil Foto Wajah & Simpan Fitur") name = gr.Textbox(label="Nama User") webcam = gr.Image( type="pil", sources=["webcam"], label="Ambil Foto dari Kamera", streaming=False ) status1 = gr.Textbox(label="Status Foto 1") status2 = gr.Textbox(label="Status Foto 2") status3 = gr.Textbox(label="Status Foto 3") status4 = gr.Textbox(label="Status Foto 4") with gr.Row(): b1 = gr.Button("Ambil Foto 1") b2 = gr.Button("Ambil Foto 2") b3 = gr.Button("Ambil Foto 3") b4 = gr.Button("Ambil Foto 4") b1.click(fn=lambda img, n: FaceRecord(img, n, 1), inputs=[webcam, name], outputs=status1) b2.click(fn=lambda img, n: FaceRecord(img, n, 2), inputs=[webcam, name], outputs=status2) b3.click(fn=lambda img, n: FaceRecord(img, n, 3), inputs=[webcam, name], outputs=status3) b4.click(fn=lambda img, n: FaceRecord(img, n, 4), inputs=[webcam, name], outputs=status4) with gr.Tab("Face Recognition"): gr.Markdown("## Cek Siapa Anda") gr.Interface( fn=Recognize, inputs=gr.Image(type="numpy", sources=["webcam"], streaming=True), outputs="text", live=True ) with gr.Tab("Voice Processing"): with gr.Row(): with gr.Column(scale=1): gr.Markdown("## 🎤 Voice Recorder (.wav)") gr.Markdown("Rekam suara Anda lalu otomatis diunggah ke **n8n** untuk transkripsi & ringkasan.") audio_input = gr.Audio( sources=["microphone"], type="filepath", label="🎙️ Rekam Suara", show_download_button=True ) submit_btn = gr.Button("⏫ Stop & Upload", variant="primary") status = gr.Label(label="Status") with gr.Column(scale=1): transcription = gr.Textbox( label="📄 Hasil Transkripsi", interactive=False, lines=5 ) summary = gr.Textbox( label="📝 Ringkasan", interactive=False, lines=5 ) submit_btn.click( UploadVoice, inputs=audio_input, outputs=[status, transcription, summary] ) if __name__ == "__main__": demo.launch()