This is WallFlower, the perfect tool for studying.
If you're ever studying for a class, explaining your course to the wall, talking to noone except bricks and cement then WallFlower is the perfect tool for you. First, upload your course material then explain parts of it you want to rehearse. WallFlower will point you to deeper understanding with socratic questions and will point out discrepancies with your course material if there are any.
This agent is perfect for reviewing thanks to its active listening and helpful socratic questions.
The Text-To-Speech and Speech-To-Text were made using ElevenLabs and the socratic questions were made using Gemini using Openrouter credits.
We are very proud of this project, as we find it is genuinely a good tool that we would use on a day to day basis.
It’s strongly recommended to use a virtual environment to keep dependencies isolated.
python -m venv venvActivate the virtual environment:
macOS / Linux
source venv/bin/activateWindows (PowerShell)
venv\Scripts\Activate.ps1With the virtual environment activated, install the required packages:
pip install -r requirements.txtFor local development, you must provide API keys in two places:
AGENT_ID identifies the specific ElevenLabs voice agent your application will use.
Create the directory and file if they do not exist:
mkdir -p .streamlit
touch .streamlit/secrets.tomlAdd the following content:
ELEVENLABS_API_KEY = "your key"
GEMINI_API_KEY = "your key"
AGENT_ID = "agent_9201kfsny903f7qansjbs6rmej5a"Create a secret.env file in the project root and add:
ELEVENLABS_API_KEY = "your key"
GEMINI_API_KEY = "your key"
AGENT_ID = "agent_9201kfsny903f7qansjbs6rmej5a"secrets.toml or secret.env to version control. These should be listed in .gitignore.
The pyaudio package requires additional system-level dependencies.
If you use Homebrew, install PortAudio first:
brew install portaudioInstall the required system packages:
sudo apt-get update
sudo apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev libasound-dev libsndfile1-dev -yFor other Linux distributions, refer to the PyAudio README for the equivalent PortAudio development package.
FFmpeg is required for audio processing.
brew install ffmpegsudo apt update
sudo apt install -y ffmpegOnce all dependencies and secrets are configured, start the Streamlit app:
streamlit run streamlit_app.pyThe app should open automatically in your browser. If it doesn’t, check the terminal output for the local URL.
- If PyAudio fails to install, ensure PortAudio is installed correctly for your OS.
- Double-check that API keys are present in both
secrets.tomlandsecret.env. - Make sure your virtual environment is activated before installing or running anything.
You're all set to stop staring and start sharing!