Rama JARVIS-GREEN, independiente de master (el nucleo naranja queda intacto). - README propio del carril verde con diagrama de arquitectura y capturas del panel. - verde/: arranque, panel web, puente de voz (escucha local con faster-whisper + habla con la voz del naranja), pruebas (07 voz, 08 escucha), config y notas. - Integracion RAG: nucleo/saber/busca_cli.py + skill buscar-en-apuntes, para que el agente consulte el mismo indice que el nucleo. - Todo local (127.0.0.1); sin datos personales (rutas y modelo de GPU scrubeados).
51 lines
2.5 KiB
Bash
Executable file
51 lines
2.5 KiB
Bash
Executable file
#!/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"
|