generated from nhcarrigan/template
feat: add meeting transcription app scaffolding
- Add Python backend structure with FastAPI for transcription/summarization - Add React UI with audio recording, transcript, and summary views - Configure Tauri to manage Python backend lifecycle - Set up Windows cross-compilation with cargo-xwin - Add Gitea CI workflow for lint, test, and multi-platform builds - Configure ESLint, Prettier, and Vitest for code quality Note: App scaffolding only - Python env and models not yet set up
This commit is contained in:
+120
@@ -0,0 +1,120 @@
|
||||
# Chronara - Local Meeting Transcription & Summarization
|
||||
|
||||
A Windows desktop application that transcribes, diarizes, and summarizes meetings using only locally-running models.
|
||||
|
||||
## Features
|
||||
|
||||
- 🎙️ Real-time audio transcription with speaker diarization (WhisperX)
|
||||
- 📝 Intelligent meeting summarization (Llama 3.2)
|
||||
- 🖥️ Everything runs locally - no cloud services required
|
||||
- 📦 All models bundled - no separate downloads needed
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Transcription**: WhisperX (Whisper + speaker diarization)
|
||||
- **Summarization**: Llama 3.2 1B/3B
|
||||
- **Backend**: Python with FastAPI
|
||||
- **Frontend**: Tauri + React
|
||||
- **Model Runtime**: llama-cpp-python
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
chronara/
|
||||
├── src/
|
||||
│ ├── backend/ # Python FastAPI backend
|
||||
│ ├── components/ # React components
|
||||
│ └── App.tsx # Main React app
|
||||
├── src-tauri/ # Tauri configuration
|
||||
├── models/ # Bundled model files
|
||||
├── scripts/ # Build and setup scripts
|
||||
└── assets/ # Icons, resources
|
||||
```
|
||||
|
||||
## Development Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 18+ with pnpm
|
||||
- Python 3.10+
|
||||
- Rust (for Tauri)
|
||||
- Windows build tools (for native modules)
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/naomi-lgbt/chronara.git
|
||||
cd chronara
|
||||
```
|
||||
|
||||
2. Install frontend dependencies:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
```
|
||||
|
||||
3. Install Python dependencies:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
4. Download the AI models:
|
||||
|
||||
```bash
|
||||
python scripts/download_models.py
|
||||
```
|
||||
|
||||
5. Run in development mode:
|
||||
|
||||
```bash
|
||||
pnpm tauri:dev
|
||||
```
|
||||
|
||||
## Building for Production
|
||||
|
||||
### Windows
|
||||
|
||||
1. Download models if not already done:
|
||||
|
||||
```bash
|
||||
python scripts/download_models.py
|
||||
```
|
||||
|
||||
2. Build the Windows executable:
|
||||
|
||||
```bash
|
||||
python scripts/build_windows.py
|
||||
```
|
||||
|
||||
The installer will be created in `src-tauri/target/release/bundle/nsis/`.
|
||||
|
||||
## Usage
|
||||
|
||||
1. **Start Recording**: Click the "Start Recording" button to begin capturing audio
|
||||
2. **Real-time Transcription**: Watch as the conversation is transcribed with speaker labels
|
||||
3. **Generate Summary**: After recording, click "Generate Summary" for an AI-powered meeting summary
|
||||
4. **Export**: Download both the full transcript and summary as text files
|
||||
|
||||
## Model Information
|
||||
|
||||
### Transcription (WhisperX)
|
||||
|
||||
- **Model**: OpenAI Whisper base model with WhisperX enhancements
|
||||
- **Features**: Speaker diarization, timestamp alignment
|
||||
- **Size**: ~150MB
|
||||
|
||||
### Summarization (Llama 3.2)
|
||||
|
||||
- **1B Model**: Fast, good for basic summaries (~1.2GB)
|
||||
- **3B Model**: Better quality summaries (~2.5GB)
|
||||
- **Format**: GGUF quantized models
|
||||
|
||||
## Privacy & Security
|
||||
|
||||
- All processing happens locally on your machine
|
||||
- No audio or text data is sent to external servers
|
||||
- Models are bundled with the application
|
||||
- Meeting data stays on your device
|
||||
Reference in New Issue
Block a user