#!/usr/bin/env bash set -euo pipefail TEXT="${1:-}" OUT_WAV="${2:-}" DEFAULT_VOICE="en_US-hal_6409-medium.onnx" VOICE="${3:-$DEFAULT_VOICE}" SPEED="${4:-1.0}" PIPER_BIN="/home/sam/speech_piper/piper/piper" MODEL_DIR="/home/sam/speech_piper/data" if [[ -z "$TEXT" || -z "$OUT_WAV" ]]; then echo "Usage: $0 \"text\" /path/to/out.wav [voice.onnx] [speed]" exit 1 fi TMP_WAV="/tmp/piper_doorbell_$$.wav" echo "$TEXT" | \ "$PIPER_BIN" --model "$MODEL_DIR/$VOICE" --output_file "$TMP_WAV" \ --length-scale "$SPEED" # Convert to ESP-friendly WAV: 16kHz mono 16-bit sox "$TMP_WAV" -r 16000 -c 1 -b 16 -e signed-integer "$OUT_WAV" rm -f "$TMP_WAV" echo "Wrote: $OUT_WAV"