#!/usr/bin/env bash # Adaptador entre el TTS por comando de Hermes y la voz que ya usa el naranja. # # voz-verde.sh # # ── 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 # 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"