Meeting Buddy is an automated system for recording, transcribing, and generating meeting notes in real-time. It captures audio in 15-second intervals, transcribes the audio using Whisper, and generates comprehensive meeting notes using OpenAI's GPT models.
- Real-time audio recording and transcription
- Automatic meeting notes generation
- Live transcript and meeting notes viewing
- Question detection for interviews
- Support for behavioral, programming, and system design questions
- Python 3.12
- OpenAI API key
- FFmpeg (for Whisper transcription)
export PATH="$(brew --prefix)/opt/python@3.12/libexec/bin:$PATH"
- Create a new conda environment:
python -m venv venv
source venv/bin/activate- Install the required packages:
pip install -r requirements.txt- Set up your OpenAI API key:
export OPENAI_API_KEY='your-api-key-here'After you first run the program, you will have a config.yaml file in your program folder. You may check this to see any options you want to update.
See: local-ai-notes.md
If you want to get started with a valid file rather than waiting for the generated defaults, here's the current blueprint. Note this may change across releases.
You'll want to make sure you set valid values for your own accounts for things like:
openai_api_key openai_model
Or use the app config panel to do so.
audio_channels: 1
audio_chunk_size: 1024
audio_rate: 44100
check_interval: 120
chunk_record_duration: 15
combine_interval: 5
context_directory: /Users/[your user]/chris/ai-dev/meeting_buddy/context
local_llm_model: ollama/mistral:v0.3-32k
log_level: INFO
meeting_notes_file: meeting_notes_summary.md
meeting_prompt_file: app/prompts/meeting_prompt.md
monitor_interval: 1
openai_api_key: ...
openai_model: gpt-4o-2024-11-20
output_directory: /Users/cmathias/chris/ai-dev/meeting_buddy/output
prompts_directory: /Users/cmathias/chris/ai-dev/meeting_buddy/app/prompts
summary_interval: 5
transcribe_interval: 1
user_meeting_context_file: meeting_context_note.txt
watch_directory: /Users/cmathias/chris/ai-dev/meeting_buddy/data
websocket_port: 9876
whisper_model: base
There are three ways to start the application
All methods will start both the WebSocket service and the Streamlit interface. The application will be available at http://localhost:8501:
- Use Docker (with GPU support):
# Build the Docker image
docker build -t meeting-buddy .
# Run the container with GPU support
docker run --gpus all -p 11434:11434 -p 8501:8501 meeting-buddyThe application will be available at http://localhost:8501
- Using the shell script (recommended):
./run_app.sh- Using Python directly:
python app/mb/run_app.py- Set up your environment:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtYou can create an env.sh that has config values you don't want exposed, e.g.
export OPENAI_API_KEY=[your key]and then
source env.shFor development, you might want to run the service and UI separately:
- Start the WebSocket service:
python app/mb/service.py- In a separate terminal, start the Streamlit interface:
streamlit run app/pages/home.pyThis setup allows you to modify and restart either component independently during development.
For testing and debugging the WebSocket service, you can use the included test client. The client allows you to manually interact with a running service instance.
Make sure the service is running first (python -m app/mb/service.py), then start the test client:
python -m app.mb.socket_testAvailable commands in interactive mode:
start- Start recordingstop [meeting_name]- Stop recording (meeting name optional)summarize <text>- Request summary of provided textlisten- Start listening for messages in backgroundstoplisten- Stop listening for messagesquit- Exit the program
Example usage:
Enter command> start
Enter command> listen
Received: {"type": "transcription", "text": "..."}
Enter command> stoplisten
Enter command> stop my_meeting
Enter command> quitBy default, the client connects to ws://localhost:{config.websocket_port}. You can specify a different URI using the --uri argument:
python -m app.mb.socket_test --uri ws://localhost:9000