VoiceVault / ui /tabs /settings_tab.py
NinjainPJs's picture
Initial release: VoiceVault v1.0.0 β€” Voice-First RAG Knowledge Agent
85f900d
"""
ui.tabs.settings_tab
====================
Tab 4 β€” Settings
All configurable runtime parameters:
- ASR model selection (Large-v3 GPU vs Distil-Large CPU)
- Voice output: toggle, rate, pitch, voice selector
- Retrieval: k, BM25 vs vector weight, re-ranker on/off
- LLM: Groq vs Gemini toggle, max answer length, citation density
- Chunking: chunk size, overlap (advanced)
Status: PLACEHOLDER β€” full implementation in Phase 5.
"""
from __future__ import annotations
import gradio as gr
def build_settings_tab() -> None:
"""
Build and render the Settings tab.
Called by app.py within a gr.Tab("Settings") block.
"""
gr.Markdown(
"""
## βš™οΈ Settings
*Configure ASR, retrieval, generation, and voice output parameters.*
---
**Coming in Phase 5 (partially Phase 3 & 4):**
- 🎀 ASR: Whisper Large-v3 (GPU) vs Distil-Whisper (CPU)
- πŸ”Š Voice: toggle, speaking rate, pitch, browser voice selector
- πŸ” Retrieval: number of results (k), re-ranker on/off
- 🧠 LLM: Groq vs Gemini, max tokens, citation density
- 🧩 Chunking: target size, overlap (advanced)
"""
)
with gr.Accordion("🎀 ASR Settings", open=True):
gr.Radio(
label="Whisper Model",
choices=["Large-v3 (GPU, best quality)", "Distil-Large-v3 (CPU, fast)"],
value="Large-v3 (GPU, best quality)",
interactive=False,
)
with gr.Accordion("πŸ”Š Voice Output", open=True):
gr.Checkbox(label="Enable Voice Output", value=True, interactive=False)
gr.Slider(label="Speaking Rate", minimum=0.5, maximum=2.0, value=1.0, step=0.1, interactive=False)
gr.Slider(label="Pitch", minimum=0.5, maximum=2.0, value=1.0, step=0.1, interactive=False)
with gr.Accordion("πŸ” Retrieval Settings", open=False):
gr.Slider(label="Number of Final Chunks (k)", minimum=1, maximum=10, value=5, step=1, interactive=False)
gr.Checkbox(label="Cross-Encoder Re-ranking", value=True, interactive=False)
with gr.Accordion("🧠 LLM Settings", open=False):
gr.Radio(
label="Primary LLM",
choices=["Groq Llama-3.1-70B (fast)", "Gemini 1.5 Flash (fallback)"],
value="Groq Llama-3.1-70B (fast)",
interactive=False,
)
gr.Slider(label="Max Answer Tokens", minimum=100, maximum=800, value=500, step=50, interactive=False)
with gr.Accordion("🧩 Chunking Settings (Advanced)", open=False):
gr.Slider(label="Target Chunk Size (tokens)", minimum=200, maximum=800, value=500, step=50, interactive=False)
gr.Slider(label="Chunk Overlap (tokens)", minimum=0, maximum=100, value=50, step=10, interactive=False)