Skip to main content

Script ./bin/meeting-start

./bin/meeting-start

Usage:

  • German: meeting-start --de

  • English: meeting-start --en

  • Auto: meeting-start --auto

#!/usr/bin/env bash
set -euo pipefail

HERE="$(cd "$(dirname "$0")" && pwd)"
source "$HERE/../lib/paths.sh"
source "$HERE/../lib/audio.sh"
source "$HERE/../lib/whisper.sh"

LANG_MODE="auto"
while [[ $# -gt 0 ]]; do
  case "$1" in
    --de)   LANG_MODE="de"; shift ;;
    --en)   LANG_MODE="en"; shift ;;
    --auto) LANG_MODE="auto"; shift ;;
    *) echo "Usage: meeting-start [--de|--en|--auto]"; exit 2 ;;
  esac
done

# Whisper language flag nur setzen, wenn nicht auto
LANG_OPT=()
if [[ "$LANG_MODE" != "auto" ]]; then
  LANG_OPT=(--language "$LANG_MODE")
fi

echo "📁 Session: $SESSION"
echo "🔊 Audio source: $AUDIO_SOURCE"
echo "🗣️  Language: $LANG_MODE"
echo "----"
echo "Live transcript will appear below. Stop with: meeting-stop"
echo "----"

# Audioaufnahme (Systemaudio)
ffmpeg -hide_banner -loglevel error \
  -f pulse -i "$AUDIO_SOURCE" \
  -ac 1 -ar 16000 \
  "$AUDIO" &
FFMPEG_PID=$!

# Transkription: liest die wachsende WAV-Datei
# Ausgabe geht sowohl live ins Terminal als auch ins Transkriptfile
"$WHISPER" -m "$MODEL" -f "$AUDIO" $COMMON_OPTS "${LANG_OPT[@]}" | \
  tee -a "$TRANSCRIPT" &
WHISPER_PID=$!

cat > "$META" <<EOF
SESSION=$SESSION
AUDIO=$AUDIO
TRANSCRIPT=$TRANSCRIPT
ISO_STAMP=$ISO_STAMP
LANG_MODE=$LANG_MODE
AUDIO_SOURCE=$AUDIO_SOURCE
FFMPEG_PID=$FFMPEG_PID
WHISPER_PID=$WHISPER_PID
EOF


echo "$FFMPEG_PID" > "$SESSION/ffmpeg.pid"
echo "$WHISPER_PID" > "$SESSION/whisper.pid"

# Optional: Wenn du willst, dass das Script „dran bleibt“ und du live siehst:
# -> Wir blocken nicht hart, damit du in einem zweiten Terminal folgen kannst.
echo "✅ Started. Transcript: $TRANSCRIPT"
echo "➡️  Follow anytime with: meeting-follow"