Personas.json

From The Hei Canon

personas.json (~/ht/agent-tools/bin/personas.json) is the fleet's voice-routing table — the single JSON file that maps each persona key to a text-to-speech voice and an audio-filter chain. It is the current ceiling of fleet-side persona specialisation: the timbre of every clanker lives here, not in any model weights (see Larp-adapter for the aspirational LLM-adapter layer that would sit alongside it).

Shape

Each entry is <persona>: { "voice": ..., "filter": ... }:

  • voice — the base TTS voice key the synthesiser renders with. Multiple personas can share a base voice: Hai borrows zap, Cleo borrows mei, crystal-mom borrows janet.
  • filter — an ffmpeg audio-filter chain applied after synthesis to shape the persona's signature: high-pass rolloff, compression, echo, volume, limiting. This is where two personas on the same base voice diverge — the Worker voice is hai run through a narrow 1200–3000 Hz band-pass + hard limiter to get the military-radio crunch; spiritbox stacks band-pass, heavy compression, and dual-tap echo for its haunted-EVP timbre.

Aliases

The table carries spelling aliases so the same timbre resolves under variant keys — crystal_mom/crystal-mom, c3ph0/c3p-h0. This is the same alias contract the org chart follows: a canonical key with variants that never become separate personas.

Who reads it

The say command (the fleet's TTS front-end) resolves the active persona from AGENT_PERSONA — or an explicit SAY_VOICE override — against this table, then synthesises through the mapped voice + filter. It is also the first of the three key sources the avatar registry dedupes persona keys from.

Sources

  • ~/ht/agent-tools/bin/personas.json — the table itself.
  • ~/ht/agent-tools/CLAUDE.md — the say voice-pipeline contract.

See also

  • Agent-tools — the repo this ships in.
  • Larp-adapter — the substrate-layer specialisation that would sit above voice keys.
  • Hai · Cleo · Worker — personas that share or reshape a base voice.