akhfzl
update-link-migration
a51aaf6
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()