Asi say-narration

Use macOS text-to-speech for agent narration and announcements. Sub-agents announce themselves using different language voices speaking English. Use for multi-agent workflows where each agent has a distinct voice identity.

install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/say-narration" ~/.claude/skills/plurigrid-asi-say-narration-10e393 && rm -rf "$T"
manifest: skills/say-narration/SKILL.md
source content

Say Narration (macOS TTS)

Use macOS text-to-speech for agent announcements and narration.

MANDATORY: NextColor Per Interaction

EVERY interaction MUST use NextColor with the voice name as the seed.

;; Before EVERY voice announcement, compute NextColor
(def color (next-color (seed-from-string "Ava (Premium)")))
;; color determines the trit assignment: MINUS(-1), ERGODIC(0), PLUS(+1)

The voice name string IS the seed for deterministic color assignment. This ensures GF(3) conservation across all voice interactions.

Quality Requirements

ONLY use Enhanced or Premium quality voices. NEVER use:

  • Base/standard quality voices (no suffix)
  • British man voice (Daniel)
  • Any novelty voices (Albert, Bad News, Bells, Boing, etc.)

Approved High-Quality Voices

bmorphism Mathematician Personas (Premium)

VoiceLanguageMathematician PersonaHaiku Theme
Anna (Premium)GermanEmmy NoetherSymmetry, Algebra
Emma (Premium)ItalianMaria Adelaide SneiderAlgorithms dance
Federica (Premium)ItalianPia NalliTheorems flow
Serena (Premium)English UKBertha SwirlesQuantum waves
Petra (Premium)GermanRuth MoufangAlgebra speaks
Yuna (Premium)KoreanHee OhHidden patterns
Alva (Premium)SwedishSonja KorovkinPatterns flow
Amélie (Premium)French CASophie GermainPrime numbers
Ewa (Premium)PolishMaria WielgusLogic roots
Kiyara (Premium)HindiShakuntala DeviNumbers dance
Majed (Premium)ArabicMaha Al-AswadNumbers dance
Tünde (Premium)HungarianJulia ErdősNumbers soar
Han (Premium)ChineseChen JingrunPrime dancing
Lilian (Premium)ChineseHua LuogengNumber theory
Sinji (Premium)Chinese HKShing-Tung YauManifolds reveal
Yue (Premium)ChineseChern Shiing-shenDifferential forms

Currently Installed Voices (221 total, 14 Premium/Enhanced)

VoiceQualityLanguagePersonaSeed
Ava (Premium)Premiumen_US-
"Ava (Premium)"
AnnaStandardde_DEEmmy Noether
"Anna (German (Germany))"
AmélieStandardfr_CASophie Germain
"Amélie (French (Canada))"
MilenaStandardru_RUOlga Ladyzhenskaya
"Milena (Russian (Russia))"
TingtingStandardzh_CNWang Zhenyi
"Tingting"
SinjiStandardzh_HKShing-Tung Yau
"Sinji"
Ava (Enhanced)Enhanceden_US-
"Ava (Enhanced)"
Allison (Enhanced)Enhanceden_US-
"Allison (Enhanced)"
Samantha (Enhanced)Enhanceden_US-
"Samantha (Enhanced)"
Nathan (Enhanced)Enhanceden_US-
"Nathan (Enhanced)"
Evan (Enhanced)Enhanceden_US-
"Evan (Enhanced)"
Nicky (Enhanced)Enhanceden_US-
"Nicky (Enhanced)"
Noelle (Enhanced)Enhanceden_US-
"Noelle (Enhanced)"
Alice (Enhanced)Enhancedit_IT-
"Alice (Enhanced)"
Emma (Enhanced)Enhancedit_ITMaria Sneider
"Emma (Enhanced)"
Federica (Enhanced)Enhancedit_ITPia Nalli
"Federica (Enhanced)"
Paola (Enhanced)Enhancedit_IT-
"Paola (Enhanced)"

Install Missing Voices

Open System Settings > Accessibility > Spoken Content > System Voice > Manage Voices

Priority installs for GF(3) triadic coverage:

  1. Anna (Premium) - German - MINUS validator voice
  2. Amélie (Premium) - French - ERGODIC coordinator voice
  3. Yuna (Premium) - Korean - PLUS generator voice

Usage Pattern (MANDATORY)

# Step 1: Compute NextColor with voice name as seed
# (conceptually - the color determines agent role)

# Step 2: Announce with high-quality voice
say -v "Ava (Premium)" "Agent Oracle reporting status"
say -v "Allison (Enhanced)" "Technical analysis complete"
say -v "Nathan (Enhanced)" "Macro calculations finished"

Agent Voice Assignments (Updated)

AgentVoiceTrit Role
Agent-Nash-OracleAva (Premium)NextColor("Ava (Premium)")
Agent-Technical-VultureNathan (Enhanced)NextColor("Nathan (Enhanced)")
Agent-Macro-BasaltAllison (Enhanced)NextColor("Allison (Enhanced)")
Agent-Exa-StalkerAlice (Enhanced)NextColor("Alice (Enhanced)")
Agent-Contrarian-PhoenixEvan (Enhanced)NextColor("Evan (Enhanced)")
Agent-Temporal-SpecterSamantha (Enhanced)NextColor("Samantha (Enhanced)")
Agent-Theta-HarvesterEmma (Enhanced)NextColor("Emma (Enhanced)")
Agent-Narrative-ProteusNoelle (Enhanced)NextColor("Noelle (Enhanced)")

List Available High-Quality Voices

say -v '?' | grep -E "(Enhanced|Premium)"

GF(3) Conservation

Each voice interaction contributes to the triadic balance:

  • Seed = voice name string
  • Color = NextColor(seed) → {-1, 0, +1}
  • Sum across session must satisfy Σ trits ≡ 0 (mod 3)

Tips

  • Italian Enhanced voices speaking English creates distinctive character
  • Use Premium voices for primary agents (best quality)
  • Never use Daniel or any British male voices
  • Never use novelty/effect voices