Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#!/bin/bash# ac-talk — Speak text on the Docker host machine via TTS# Usage: ac-talk "Hello world"# ac-talk -v espeak "Hello world"# echo "build done" | ac-talkDOCKER_HOST_IP="${AC_HOST_IP:-172.17.0.1}"SSH_USER="${AC_HOST_USER:-me}"VOICE="${VOICE:-flite}"# Parse flagswhile [ $# -gt 0 ]; do case "$1" in -v|--voice) VOICE="$2"; shift 2 ;; -h|--help) echo "Usage: ac-talk [-v flite|espeak] \"text to speak\"" echo " echo \"text\" | ac-talk" echo "" echo "Speaks text on the Docker host machine." echo "Env: AC_HOST_IP (default: 172.17.0.1)" echo " AC_HOST_USER (default: me)" echo " VOICE (default: flite)" exit 0 ;; --) shift; break ;; -*) echo "Unknown flag: $1" >&2; exit 1 ;; *) break ;; esacdone# Get text from args or stdinTEXT="$*"if [ -z "${TEXT}" ]; then TEXT=$(cat)fiif [ -z "${TEXT}" ]; then echo "ac-talk: no text provided" >&2 exit 1fi# Escape single quotes for remote shellESCAPED=$(printf '%s' "${TEXT}" | sed "s/'/'\\\\''/g")case "${VOICE}" in espeak|espeak-ng) CMD="espeak-ng '${ESCAPED}' 2>/dev/null || espeak '${ESCAPED}' 2>/dev/null" ;; flite|*) CMD="flite -t '${ESCAPED}' 2>/dev/null" ;;esacssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -o LogLevel=ERROR \ "${SSH_USER}@${DOCKER_HOST_IP}" "${CMD}" 2>/dev/nullif [ $? -ne 0 ]; then echo "ac-talk: failed to reach host at ${DOCKER_HOST_IP}" >&2 exit 1fi