Desktop: M3 feature parity with the Android app
- final_transcribe gains optional speaker labeling and library upload: diarize_url runs a second tinydiarize pass and merges the turn times onto the quality transcript as 'Sprecher 1/2:' labels (diarize_merge, port of the Android Diarization object; failures keep the transcript unlabeled); library_url uploads the WAV + txt/srt/json bundle with the agenda — the server then generates summary + agenda coverage - WhisperServerEngine supports diarize mode (tinydiarize form field + speaker_turn_next parsing); multipart builder handles multiple files - CLI: --agenda-file, --diarize-url, --library-url (env vars MEETREC_DIARIZE_URL / MEETREC_LIBRARY_URL) - GUI: Library URL + Diarize URL fields and an agenda editor; upload progress lands in the status bar - validated end-to-end against the live servers: recording -> large-v3 transcription -> txt/srt/json -> library upload (all four files, device=desktop) -> server summary/agenda pipeline ran (honest error for a noise-only test recording)
This commit is contained in:
@@ -104,6 +104,9 @@ Key options:
|
||||
| `--language` | force a language code, e.g. `en`, `de` (default: autodetect) |
|
||||
| `--device` | `auto` / `cpu` / `cuda` (default `auto`); faster-whisper only |
|
||||
| `--compute-type`| `int8` / `int8_float16` / `float16` / `float32` (default `int8`); faster-whisper only |
|
||||
| `--agenda-file` | text file with agenda items, one per line — uploaded for the coverage check |
|
||||
| `--diarize-url` | tinydiarize server URL → transcript gets `Sprecher 1/2:` labels (or `MEETREC_DIARIZE_URL`) |
|
||||
| `--library-url` | meetrec-server URL → uploads the recording and triggers summary + agenda check (or `MEETREC_LIBRARY_URL`) |
|
||||
|
||||
`Ctrl+C` stops recording and runs the final transcription.
|
||||
|
||||
@@ -138,6 +141,22 @@ Notes on `whisper-server`:
|
||||
- Run your own with the Docker Compose stack in `server/whisper-server/` — Vulkan GPU (AMD/NVIDIA/Intel), model auto-download, Tailscale-only binding.
|
||||
- The server has no authentication: keep it on Tailscale or behind a VPN/firewall.
|
||||
- `verbose_json` reports language names ("german") rather than ISO codes.
|
||||
|
||||
## Meeting protocol (library, summary, agenda, speakers)
|
||||
|
||||
The desktop app has feature parity with the Android app's M3 set:
|
||||
|
||||
```sh
|
||||
MEETREC_SERVER_URL=http://100.103.83.12:8085 \
|
||||
MEETREC_LIBRARY_URL=http://100.103.83.12:8090 \
|
||||
MEETREC_DIARIZE_URL=http://100.103.83.12:8086 \
|
||||
meetrec-cli --engine whisper-server --agenda-file agenda.txt -o meeting
|
||||
```
|
||||
|
||||
- `--library-url` uploads the WAV + transcripts after the final pass; the server then generates the German summary (Ollama, gemma4:12b) and checks which agenda items were discussed (browse everything in the Android app's Library tab).
|
||||
- `--agenda-file` supplies the agenda items (one per line).
|
||||
- `--diarize-url` adds a second tinydiarize pass whose speaker-turn times are merged onto the transcript as `Sprecher 1:/Sprecher 2:` labels (2 speakers, best-effort on non-English audio; failures keep the transcript unlabeled).
|
||||
- The GUI has the same options as fields (Library URL, Diarize URL, agenda editor).
|
||||
- `--device` / `--compute-type` do not apply (GPU vs. CPU is decided by the whisper.cpp build).
|
||||
|
||||
## Project layout
|
||||
|
||||
Reference in New Issue
Block a user