Keyboardaibrain / app.py
Tanseer45203's picture
Create app.py
2c5f657 verified
import os
import streamlit as st
from groq import Groq
from dotenv import load_dotenv
# Load API key
load_dotenv()
API_KEY = os.getenv("GROQ_API_KEY")
# Initialize Groq client
client = Groq(api_key=API_KEY)
# Streamlit App Title
st.title("🧠 Brain-to-Text AI Keyboard")
# User input: Simulated brain signal (text description)
st.subheader("Think of a sentence, then describe it in words:")
thought_input = st.text_area("Describe your thought:", height=100)
# Virtual keyboard (optional)
st.subheader("Or use the virtual keyboard to refine your thought:")
if "typed_text" not in st.session_state:
st.session_state.typed_text = ""
# Define keyboard layout
keyboard_layout = [
["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
["A", "S", "D", "F", "G", "H", "J", "K", "L"],
["Z", "X", "C", "V", "B", "N", "M", "←"],
["Space"]
]
# Display keyboard
for row in keyboard_layout:
cols = st.columns(len(row))
for i, key in enumerate(row):
if cols[i].button(key):
if key == "←":
st.session_state.typed_text = st.session_state.typed_text[:-1]
elif key == "Space":
st.session_state.typed_text += " "
else:
st.session_state.typed_text += key
# Display user-typed text
st.text_area("Refined Thought:", value=st.session_state.typed_text, height=100)
# Generate AI-based Brain-to-Text Conversion
if st.button("Convert Thought to Text"):
full_input = thought_input.strip() + " " + st.session_state.typed_text.strip()
if full_input.strip():
try:
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": full_input}]
)
st.write("### AI Interpreted Thought:")
st.write(response.choices[0].message.content)
except Exception as e:
st.error(f"Error: {e}")
else:
st.warning("Please describe a thought before converting.")