import gradio as gr
from pathlib import Path
from ui.handlers import handle_verify, handle_upload, handle_reset, handle_audio_change
# Đọc CSS và JS từ file thật
# Bỏ @import trong CSS vì Gradio không cho phép
_CSS = (Path(__file__).parent / "styles.css").read_text()
_JS = (Path(__file__).parent / "recorder.js").read_text()
_RECORDER_HTML = """
Nhấn để bắt đầu ghi âm
● Đang xử lý âm thanh...
🎧 Nghe lại bản ghi:
"""
def build_ui() -> gr.Blocks:
with gr.Blocks(theme=gr.themes.Base(), css=_CSS, title="Lumi Voice Collector") as demo:
# --- Font + permissions (thay thế @import trong CSS) ---
gr.HTML("""
""")
# --- Header ---
gr.HTML("""
🎙️
Thu thập giọng nói "Lumi ơi"
Giúp huấn luyện wake word cho trợ lý Lumi
""")
# --- Steps ---
gr.HTML("""
1
Ghi âm
2
Kiểm tra
3
Gửi lên
""")
# --- Instruction ---
gr.HTML("""
📋 Hướng dẫn
1. Nhấn nút mic để bắt đầu ghi âm 2. Nói rõ "Lumi ơi" vào micro 3. Nhấn lại để dừng — đợi thanh xử lý biến mất 4. Nhấn Kiểm tra → đạt ≥ 0.8 → nhấn Gửi