#!/usr/bin/env bash
# Adaptador entre el TTS por comando de Hermes y la voz que ya usa el naranja.
#
#   voz-verde.sh <salida.wav> <fichero-con-el-texto>
#
# ── Por que existe este fichero ─────────────────────────────────────────────
#
# Hermes tiene un proveedor de TTS por comando (`type: command`) que NO esta
# documentado en su web pero si en el codigo: tools/tts_tool.py, el bloque
# "Custom command providers". Eso es lo que permite que el verde hable con la
# MISMA voz que el naranja en vez de con la que Piper se descargue por su
# cuenta — y sin esa igualdad, comparar los dos carriles no diria nada.
#
# Las interfaces no encajan directamente y por eso hay adaptador:
#
#   jarvis-piper.sh  espera   <salida.wav> <texto como argumento>
#   Hermes entrega            {output_path} y {input_path}, un FICHERO con el texto
#
# Hermes ejecuta con shell=True, asi que un "$(cat ...)" en la plantilla habria
# funcionado. No se hace por dos motivos: _run_command_tts llama a
# hermes_subprocess_env(inherit_credentials=False), que LIMPIA el entorno, de
# modo que JARVIS_PIPER_VOZ y JARVIS_PIPER_TONO no llegarian; y una plantilla
# con comillas anidadas dentro de un YAML es justo el sitio donde un fallo no
# se ve hasta que suena mal.
#
# ── Que voz, y por que esta ────────────────────────────────────────────────
#
# davefx a tono 1.0, que es lo que tiene puesto el naranja HOY en
# nucleo/boca/voz.py (POR_DEFECTO = "davefx", JARVIS_PIPER_TONO = "1.0").
#
# OJO: el README describe sharvard + 0.86 = 106 Hz como "la puesta". Eso era el
# JARVIS sobre Newelle. El nucleo cambio a davefx "porque se eligio a oido". El
# verde copia al NUCLEO, que es contra quien se va a comparar, no al README.
set -uo pipefail

RAIZ=$(cd -P "$(dirname "${BASH_SOURCE[0]:-$0}")/.." && pwd)

SALIDA=${1:-}
ENTRADA=${2:-}

[ -n "$SALIDA" ]     || { echo "falta el fichero de salida" >&2; exit 1; }
[ -f "$ENTRADA" ]    || { echo "no esta el fichero de texto: $ENTRADA" >&2; exit 1; }

TEXTO=$(cat "$ENTRADA")
[ -n "$TEXTO" ] || { echo "el fichero de texto esta vacio" >&2; exit 1; }

# Las variables se ponen aqui porque Hermes limpia el entorno antes de llamar.
export JARVIS_PIPER_VOZ=${JARVIS_PIPER_VOZ:-es_ES-davefx-medium}
export JARVIS_PIPER_TONO=${JARVIS_PIPER_TONO:-1.0}

exec "$RAIZ/config/jarvis-piper.sh" "$SALIDA" "$TEXTO"
