Add Streamlit meeting assistant MVP
This commit is contained in:
@@ -8,8 +8,9 @@ local processing backend.
|
||||
|
||||
The first product milestone is a desktop GUI that lets a user:
|
||||
|
||||
- select an existing audio recording
|
||||
- create and edit structured meeting metadata and participants
|
||||
- select an existing WAV, FLAC, or M4A recording
|
||||
- create and edit structured meeting metadata and relevant people, including whether
|
||||
they were present or only mentioned
|
||||
- optionally map anonymous `SPEAKER_XX` labels to known participants
|
||||
- start the Meeting Lab processing pipeline
|
||||
- follow stage-based progress
|
||||
@@ -23,7 +24,7 @@ reference recorder, but imported audio is not tied to OBS-specific behavior.
|
||||
|
||||
```text
|
||||
Audio file
|
||||
-> FFmpeg preparation (mono, 16 kHz PCM WAV)
|
||||
-> FFmpeg preparation (mono, 16 kHz PCM WAV; normalization optional)
|
||||
-> whisper.cpp transcription (large-v3-turbo)
|
||||
-> optional pyannote.audio Community-1 diarization
|
||||
-> direct full-transcript protocol generation
|
||||
@@ -58,8 +59,67 @@ orchestration and protocol-generation logic. Meeting Assistant owns the GUI,
|
||||
context and participant editing, explicit speaker mapping, progress display,
|
||||
protocol editing and export.
|
||||
|
||||
The code currently contains the initial Meeting Assistant project and domain
|
||||
foundation. The GUI has not yet been implemented.
|
||||
Audio normalization is enabled by default and can be disabled in the processing
|
||||
options. This controls loudness normalization only: Meeting Lab still prepares
|
||||
every WAV, FLAC or M4A source as canonical audio before transcription.
|
||||
|
||||
## Run the Streamlit MVP
|
||||
|
||||
The development setup expects `meeting-assistant` and `meeting-lab` to be
|
||||
sibling repositories. Meeting Lab currently imports its API through the
|
||||
`src.meeting_lab` package path, so its repository root must be supplied on
|
||||
`PYTHONPATH`. Meeting Assistant does not modify `sys.path` at runtime.
|
||||
|
||||
Create a virtual environment and install Meeting Assistant, including
|
||||
Streamlit:
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
.venv/bin/pip install -e '.[dev]'
|
||||
.venv/bin/pip install -e ../meeting-lab
|
||||
```
|
||||
|
||||
Configure at least the local whisper.cpp model. All supported values are shown
|
||||
in `.env.example`; export them in the shell because the application does not
|
||||
load `.env` files implicitly:
|
||||
|
||||
```bash
|
||||
export MKA_WHISPER_MODEL=/path/to/ggml-large-v3-turbo.bin
|
||||
export MKA_WHISPER_EXECUTABLE=whisper-cli
|
||||
export MKA_FFMPEG_EXECUTABLE=ffmpeg
|
||||
export MKA_PROTOCOL_MODEL=qwen3.8:27B
|
||||
```
|
||||
|
||||
Optional machine-specific settings include:
|
||||
|
||||
- `MKA_DATA_ROOT` (default: `data/meetings`)
|
||||
- `MKA_OLLAMA_ENDPOINT` (default: `http://127.0.0.1:11434`)
|
||||
- `MKA_WHISPER_THREADS` (default: `auto`)
|
||||
- `MKA_FFMPEG_EXECUTABLE` (default: `ffmpeg` found on `PATH`)
|
||||
- `MKA_DIARIZATION_MODE` (`auto`, `cpu`, or `gpu`; default: `auto`)
|
||||
- `MKA_DIARIZATION_RUNTIME` (`native` or `container`; default: `native`)
|
||||
- `MKA_DIARIZATION_CONTAINER_IMAGE` (required for container diarization)
|
||||
|
||||
From the Meeting Assistant repository, start the UI with:
|
||||
|
||||
```bash
|
||||
PYTHONPATH=src:../meeting-lab .venv/bin/streamlit run src/mka/ui/streamlit_app.py
|
||||
```
|
||||
|
||||
Streamlit opens `http://localhost:8501` by default. Installing the sibling
|
||||
Meeting Lab project supplies its runtime requirements such as PyYAML and
|
||||
Requests. Optional diarization dependencies are needed only when diarization
|
||||
is enabled.
|
||||
|
||||
Uploaded source files are stored under
|
||||
`data/meetings/<meeting-id>/uploads/`. Meeting Lab run artifacts are stored
|
||||
under `data/meetings/<meeting-id>/runs/`. The reviewed protocol is saved as
|
||||
`protocol_edited.md` inside its run directory; the generated `protocol.md`
|
||||
remains unchanged.
|
||||
|
||||
The upload remains in its original format and is passed unchanged to Meeting Lab.
|
||||
Meeting Lab creates the canonical mono 16 kHz signed PCM16 WAV run artifact used by
|
||||
transcription; Meeting Assistant does not duplicate audio conversion.
|
||||
|
||||
See [Architecture](docs/architecture.md), [Project Knowledge](PROJECT_KNOWLEDGE.md),
|
||||
[Roadmap](ROADMAP.md) and [ADR 0011](docs/adr/0011-use-meeting-lab-mvp-backend.md).
|
||||
|
||||
Reference in New Issue
Block a user