A fully functional web-based Voice Meeting Assistant that performs live speech-to-text transcription, generates meeting summaries, and extracts action items using free, open-source libraries.
- Record voice input from microphone
- Transcribe speech to text using OpenAI Whisper (open-source)
- Generate summaries using Hugging Face T5-small model
- Extract action items from transcripts
- Save meetings locally in JSON format
- Export summaries as PDF
- View past meetings
- Backend: FastAPI (Python)
- Frontend: React.js
- Transcription: OpenAI Whisper (openai-whisper)
- Summarization: Hugging Face Transformers (t5-small)
- Storage: Local JSON files
- Python 3.8+
- Node.js 14+
- Git
-
Navigate to the backend directory:
cd backend -
Install Python dependencies:
pip install -r requirements.txt -
Run the backend server:
uvicorn app:app --reloadThe backend will be running on
http://localhost:8000.
-
Navigate to the frontend directory:
cd frontend -
Install Node.js dependencies:
npm install -
Start the React development server:
npm startThe frontend will be running on
http://localhost:3000.
- Open your browser and go to
http://localhost:3000. - Click "Start Recording" to begin recording your voice.
- Click "Stop Recording" to end the recording and transcribe the audio.
- Click "Summarize" to generate a summary and extract action items.
- Click "Save Meeting" to store the meeting data locally.
- View past meetings in the "Past Meetings" section.
- Export summaries as PDF using the "Export as PDF" button.
voice-meeting-assistant/
├── backend/
│ ├── app.py
│ ├── requirements.txt
│ ├── models/
│ │ ├── summarizer.py
│ │ └── whisper_transcriber.py
│ ├── utils/
│ │ └── storage.py
│ └── data/
│ └── meetings.json
├── frontend/
│ ├── package.json
│ ├── public/
│ ├── src/
│ │ ├── App.js
│ │ ├── components/
│ │ │ ├── Recorder.js
│ │ │ ├── TranscriptDisplay.js
│ │ │ └── SummaryDisplay.js
│ │ ├── api.js
│ │ └── index.js
└── README.md
POST /transcribe: Transcribes uploaded audio filePOST /summarize: Generates summary and action items from transcriptPOST /save_meeting: Saves meeting dataGET /get_meetings: Retrieves all saved meetings
- All processing is done locally; no data is sent to external servers.
- First run may take longer due to model downloads.
- Ensure microphone permissions are granted in the browser.
- The app is designed for short recordings; long meetings may require optimization.
This project uses open-source libraries and is free to use.