Skip to content

advantageous/meeting_buddy

 
 

Repository files navigation

TODO: DONE - * Fix integration w/threads (Chris) DONE - * Make streamlit start/stop to run record/transcribe from UI (Chris) DONE - * Summarize minute chunks with local llm (Chris) DONE - * Show minute-summaries rolling (Chris) DONE - * Only do big LLM summary at the end (Chris) DONE - * Spinners and lock for clearer "processing" signaling DONE - * Download buttons for summary/transcript working DONE - * Upload button/storage for meeting notes path/files

Left Off

  • Bug- debug the summarizer to ensure prompt selection by timeframe is working

  • Bug- final summarization not working

  • Upload button/storage for meeting context path/files

  • Clean up file-system/archiving and make a nice listing on a second tab to view prior meetings

  • Summary extracted to json used for the render & possibly graph storage (Rick)

  • Graph integration of meetings (Rick)

  • Graph integration of documentation

Meeting Buddy

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.

Features

  • 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

Prerequisites

  • Python 3.12.7
  • Conda package manager
  • OpenAI API key
  • FFmpeg (for Whisper transcription)

Installation

export PATH="$(brew --prefix)/opt/[email protected]/libexec/bin:$PATH"

  1. Create a new conda environment:
python -m venv venv
source venv/bin/activate
  1. Install the required packages:
pip install -r requirements.txt
  1. Set up your OpenAI API key:
export OPENAI_API_KEY='your-api-key-here'

Core Components

Program Description How to Run
record.py Records audio in 15-second intervals python record.py
transcribe.py Transcribes audio files using Whisper python transcribe.py
combine_all.py Combines transcription files python combine_all.py
create_meeting_notes.py Generates meeting notes using GPT python create_meeting_notes.py
view.py Web interface for viewing meeting notes streamlit run view.py
transcripts_viewer.py Web interface for viewing transcripts streamlit run transcripts_viewer.py
question_detector.py Detects interview questions python question_detector.py
answer_creator.py Generates answers for detected questions python answer_creator.py
answer_viewer.py Web interface for viewing answers streamlit run answer_viewer.py

Getting Started

  1. Set up a .env file in the project root:
CHUNK_RECORD_DURATION=2
WATCH_DIRECTORY=../../data
OUTPUT_DIRECTORY=../../output
  1. Set up your environment:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
source env.sh

Running the Application

There are two ways to start the application:

  1. Using the shell script (recommended):
./run_app.sh
  1. Using Python directly:
python app/mb/run_app.py

Both methods will start both the WebSocket service and the Streamlit interface. The application will be available at http://localhost:8501

Development Setup

For development, you might want to run the service and UI separately:

  1. Start the WebSocket service:
python app/mb/service.py
  1. In a separate terminal, start the Streamlit interface:
streamlit run app/pages/home.py

This setup allows you to modify and restart either component independently during development.

WebSocket Test Client

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.

Usage

Make sure the service is running first (python -m app/mb/service.py), then start the test client:

python -m app.mb.socket_test

Available commands in interactive mode:

  • start - Start recording
  • stop [meeting_name] - Stop recording (meeting name optional)
  • summarize <text> - Request summary of provided text
  • listen - Start listening for messages in background
  • stoplisten - Stop listening for messages
  • quit - 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> quit

By default, the client connects to ws://localhost:8765. You can specify a different URI using the --uri argument:

python -m app.mb.socket_test --uri ws://localhost:9000

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.5%
  • Shell 0.5%