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/
│   ├── 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

Paths

Path: meetings/bin/

  • Executable scripts. 

Path: meetings/lib/

  • Scripts to be used by 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 (current architecture)

TranscriptOMatic is implemented as a small set of composable shell scripts. Each script has a clearly defined responsibility within the session lifecycle. No script relies on implicit system state or hard-coded audio devices.

ScriptsLibrary scripts (meetings/lib/)

Script: meetings/lib/paths.sh

Creates:Responsible
for 
session creation and path management.

On invocation, it:

  • Sessioncreates Directorya new session directory
~/meetings/recordings/<ISO_TIMESTAMP>/
    Session Files

    defines canonical file locations:

    • audio.wav

    • transcript.txt

    • meta.env

      Timestamps (ISO)

      provides these paths to all other scripts

      andThis script is the only place where session directories are created.

        Provides path information for all scripts

        Script: meetings/lib/whisper.sh

        Contains:Defines the speech recognition backend configuration.

        It contains:

        • the path to the local whisper.cpp installation

        the language model used (currently ggml-base.bin) ASR parameter

        model usedselection (language-specific vs. multilingual)

        streaming parameters

        threading configuration suitable for a Raspberry Pi–class system

        The setup is explicitly optimized for Scriptlive transcription: using whisper-stream, not for batch processing.

        No audio devices are referenced here.

        Executable scripts (meetings/bin/)

        meeting-start

          Creates

          Starts a new directorylive intranscription meetings/recordings/

          session.

          Responsibilities

          1. startsSession
          2. ffmpeg (feeds system audio into audio.wav)
          whisper.cpp initialization
          • creates livea transcriptnew fromsession audio
          directory feedsvia transcript into meetings/recordings/$DATE/transcript.txt
          paths.sh writes informationthe intoactive session path to ~/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.current according to

                Audio graph setup (PipeWire)

                  ensures a persistent null sink (discord_sink)

                  routes Discord audio into that sink

                  exposes the timestampsink containedmonitor inas meta.enva virtual microphone (whisper_mic)

                  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.