#!/bin/bash
# ksay — Kokoro 82M TTS, better than say -v Eddy, fully offline after install, 4x RTF on M2
set -e
ROOT="$(cd "$(dirname "$0")" && pwd)"
VOICE="af_bella"
OUT=""
TEXT=""
PLAY=1
while [[ $# -gt 0 ]]; do
  case "$1" in
    -v|--voice) VOICE="$2"; shift 2;;
    -o|--output-file) OUT="$2"; shift 2;;
    -l|--list-voices) PYTHONPATH="" "$ROOT/venv/bin/python" "$ROOT/engine_kokoro_tts.py" --list-voices; exit 0;;
    --no-play) PLAY=0; shift;;
    --) shift; TEXT="$*"; break;;
    -*) echo "unknown $1" >&2; exit 2;;
    *) TEXT="${TEXT:+$TEXT }$1"; shift;;
  esac
done
if [[ -z "$TEXT" && ! -t 0 ]]; then TEXT=$(cat); fi
if [[ -z "$TEXT" ]]; then echo "usage: ksay [-v voice] [-o file.wav] \"text\"  |  echo text | ksay" >&2; exit 1; fi
TMP="${OUT:-/tmp/ksay-$$.wav}"
PYTHONPATH="" "$ROOT/venv/bin/python" "$ROOT/engine_kokoro_tts.py" "$TEXT" -v "$VOICE" -o "$TMP" 2>&1 | grep -vE "UserWarning|FutureWarning|Defaulting|You are sending|torch/nn|WeightNorm|super\(\)" || true
if [[ -z "$OUT" ]]; then
  if [[ "$PLAY" -eq 1 ]]; then afplay "$TMP"; rm -f "$TMP"; fi
else
  echo "saved $TMP (as $OUT requested but kokoro writes $TMP, copy)"
  cp "$TMP" "$OUT" 2>/dev/null || true
fi
