Skip to content

jacob-sauve/wallflower

Repository files navigation

wallfl🌼wer

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.

Project Setup Guide


1. Create and Activate a Virtual Environment

It’s strongly recommended to use a virtual environment to keep dependencies isolated.

python -m venv venv

Activate the virtual environment:

macOS / Linux

source venv/bin/activate

Windows (PowerShell)

venv\Scripts\Activate.ps1

2. Install Python Dependencies

With the virtual environment activated, install the required packages:

pip install -r requirements.txt

3. Configure API Keys (Required for Local Testing)

For local development, you must provide API keys in two places:

A. .streamlit/secrets.toml

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.toml

Add the following content:

ELEVENLABS_API_KEY = "your key"
GEMINI_API_KEY = "your key"
AGENT_ID = "agent_9201kfsny903f7qansjbs6rmej5a"

B. secret.env

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"

⚠️ Do not commit secrets.toml or secret.env to version control. These should be listed in .gitignore.
⚠️ Make sure your AGENT_ID is the same as above, otherwise you will not be using the Wallflower custom-tailored ElevenLabs agent!


4. System Dependencies (PyAudio)

The pyaudio package requires additional system-level dependencies.

macOS

If you use Homebrew, install PortAudio first:

brew install portaudio

Linux (Debian/Ubuntu)

Install the required system packages:

sudo apt-get update
sudo apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev libasound-dev libsndfile1-dev -y

For other Linux distributions, refer to the PyAudio README for the equivalent PortAudio development package.


5. Install FFmpeg

FFmpeg is required for audio processing.

macOS (Homebrew)

brew install ffmpeg

Linux (Debian/Ubuntu)

sudo apt update
sudo apt install -y ffmpeg

6. Run the Application

Once all dependencies and secrets are configured, start the Streamlit app:

streamlit run streamlit_app.py

The app should open automatically in your browser. If it doesn’t, check the terminal output for the local URL.


Troubleshooting

  • If PyAudio fails to install, ensure PortAudio is installed correctly for your OS.
  • Double-check that API keys are present in both secrets.toml and secret.env.
  • Make sure your virtual environment is activated before installing or running anything.

You're all set to stop staring and start sharing! ‼️🗣️🔥

About

An active listening study assistant to take the inner dialogue outside.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors