Skip to main content

Structure


meetings/
├── bin/
│   ├── meeting-start        # starts recording + live transcription
│   ├── meeting-stop         # stops recording, asks for meeting name, renames files
│   ├── meeting-follow       # follow transcript while it is being written
│   └── summarize-meeting    # create post-meeting summaries
│
├── lib/
│   ├── audio.sh             # defines the system audio monitor source
│   ├── paths.sh             # creates session dirs + defines file paths
│   └── whisper.sh           # whisper.cpp binary, model, ASR parameters
│
└── recordings/
    └── 2025-03-24_1930/     # session directory (created on meeting-start)
        ├── audio.wav        # raw system audio recording
        ├── transcript.txt  # live transcript (grows during meeting)
        ├── meta.env        # session metadata (PIDs, language, timestamps)
        ├── 2025-03-24T1930_project-sync_transcript.txt
        ├── 2025-03-24T1930_project-sync_audio.wav
        └── summary.md      # created by summarize-meeting

Description of Paths and Scripts

Paths

Path: meetings/bin/

  • Executable scripts. 

Path: meetings/lib/

  • Scripts to be includedused inby the executable scripts. 

Path: meetings/recordings/

  • Subdirectories (ISO timestamp format) containing:
    • Audio files (to be deleted after the transcript has been written)
    • transcript.txt (renamed and timestamped after the meeting's end by the meeting-stop script)
    • meta.env (Meeting information)
      • PIDs
      • language used
      • the meeting's timestamps
    • summary.md (meeting summary in Markdown format)
Scripts

Script: meetings/lib/audio.sh

  • Provides the name of the system audio device

Script: meetings/lib/paths.sh

Creates: 

  • Session Directory
  • Session Files 
    • audio.wav

    • transcript.txt

    • meta.env

  • Timestamps (ISO)

and

  • Provides path information for all scripts

Script: meetings/lib/whisper.sh

Contains:

  • the path to the local whisper.cpp installation
  • the language model used (currently ggml-base.bin
  • ASR parameter used

Script: meetings/bin/meeting-start

  • Creates a new directory in meetings/recordings/
  • starts
    • ffmpeg (feeds system audio into audio.wav)
    • whisper.cpp 
      • creates live transcript from audio
      • feeds transcript into meetings/recordings/$DATE/transcript.txt
  • writes information into meetings/recordings/$DATE/meta.env
  • finetunes whisper.cpp by language switch --de, --en, --auto

Script: meetings/bin/meeting-stop

  • Stops the recording
  • asks for a meeting name
    • replaces spaces with hyphens
  • renames the meeting-related files
    • audio.wav
    • transcript.txt
  • according to the timestamp contained in meta.env

Script: meetings/bin/meeting-follow

  • Shows the transcript while it is written
    • mainly to monitor the process, but can be used as a live transcript, too.
  • Needs to run in a different terminal from meeting-start

Script: meetings/bin/summarize-meeting

  • Creates a summary file based on the meeting transcript.