30 lines
678 B
Bash
Executable File
30 lines
678 B
Bash
Executable File
#!/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"
|