import streamlit as st import time from sincode_model import BeamSearchDecoder from PIL import Image import base64 st.set_page_config(page_title="සිංCode Prototype", page_icon="🇱🇰", layout="centered") def add_bg_from_local(image_file): try: with open(image_file, "rb") as f: data = f.read() b64_data = base64.b64encode(data).decode() st.markdown( f""" """, unsafe_allow_html=True ) except FileNotFoundError: pass @st.cache_resource def load_system(): decoder = BeamSearchDecoder() return decoder background_path = "images/background.png" add_bg_from_local(background_path) with st.sidebar: logo = Image.open("images/SinCodeLogo.jpg") st.image(logo, width=200) st.title("සිංCode Project") st.info("Prototype") st.markdown("### 🏗 Architecture") st.success(""" **Hybrid Neuro-Symbolic Engine** Combines rule-based speed with Deep Learning (XLM-R) context awareness. **Adaptive Code-Switching** Intelligently detects and preserves English contexts. **Contextual Disambiguation** Resolves Singlish ambiguity using sentence-level probability. """) st.markdown("---") st.write("© 2026 Kalana Chandrasekara") st.title("සිංCode: Context-Aware Transliteration") st.markdown("Type Singlish sentences below. The system handles **code-mixing**, **ambiguity**, and **punctuation**.") input_text = st.text_area("Input Text", height=100, placeholder="e.g., Singlish sentences type krnna") if st.button("Transliterate", type="primary", use_container_width=True) and input_text: try: with st.spinner("Processing..."): decoder = load_system() start_time = time.time() result, trace_logs = decoder.decode(input_text) end_time = time.time() st.success("Transliteration Complete") st.markdown(f"### {result}") st.caption(f"Time: {round(end_time - start_time, 2)}s") with st.expander("See How It Works (Debug Info)", expanded=True): st.write("Below shows the candidate scoring for each word step:") for log in trace_logs: st.markdown(log) st.divider() except Exception as e: st.error(f"Error: {e}")