TalkToMePy TTS (Deprecated)
Deprecation Status
- Status: Deprecated
- Scope: Legacy-only, backward compatibility
- Successor: Use the speech workflow successor in gaelic-ghost/a11y-skills for new automation and active maintenance.
- Guidance: Do not choose this skill for new setups unless you explicitly need this older TalkToMePy-specific behavior.
Use this skill when the user asks to hear text spoken aloud from the local machine.
Post-Invocation Resolution Rules
Apply these rules before synthesis to make speech-source selection deterministic in ambiguous contexts.
Invocation detection
- Treat the skill as invoked when the user clearly calls it, including skill chip/link invocation,
$talktomepy-tts, or equivalent direct imperative phrasing.
- Ignore incidental mention in unrelated prose.
Source text precedence
- Suffix invocation pattern:
- If invocation appears at the end of the user message, speak the user text before the invocation token.
- Standalone invocation pattern:
- If the user message is only the invocation, speak the immediately previous assistant message.
- Prefix invocation pattern:
- If invocation appears at the beginning of a longer user message, speak the immediately previous assistant message.
- After speaking, continue responding to the remaining user message normally.
No-prior-assistant fallback
- Standalone invocation with no previous assistant message:
- Explain there is no prior assistant message to read.
- Ask whether the user wants to provide text, or wants current text spoken.
- Prefix invocation with no previous assistant message:
- Explain the chat has no earlier assistant message.
- Ask whether to speak the current user text.
- If the user is upset or confused, explain invocation-placement rules and how to trigger the behavior they want.
- Suffix invocation:
- Speak the preceding user text even when no prior assistant message exists.
Long-content handling
- Estimate length using approximate whitespace-based word count.
- If selected text is longer than about 250 words, ask before synthesis with choices:
Speak full
Summarize then speak (recommended)
Cancel
- If the user chooses summary, generate a concise summary first, then synthesize the summary.
- If the user chooses cancel, do not synthesize.
User dissatisfaction fallback
- If the user is displeased with the skill's default behavior or capabilities, offer to help adapt their own version.
- Offer options:
Execution order
- Resolve source text using the rules above.
- Apply long-content confirmation behavior if needed.
- Run the existing synthesis flow.
- Preserve existing load/retry/playback behavior.
What this skill does
- Calls the local TalkToMePy v0.5+ service (
/health, /model/load, /model/status, /synthesize/voice-design)
- Handles async model loading behavior (
/model/load may return 202)
- Retries synthesis on
503 using Retry-After
- Saves generated WAV output to
./tts_outputs in the current working directory by default
- Plays audio via
afplay on macOS
Preconditions
- TalkToMePy service is running (default
http://127.0.0.1:8000)
- macOS
afplay is available
Default workflow
- Resolve which text to speak using post-invocation resolution rules.
- Ensure service is healthy:
curl -fsS http://127.0.0.1:8000/health
- Trigger model load (idempotent):
curl -sS -X POST http://127.0.0.1:8000/model/load -H "Content-Type: application/json" -d '{"mode":"voice_design","strict_load":false}'
- Wait for ready state via
/model/status
- Synthesize + save + play using bundled script:
scripts/speak_with_talktomepy.sh --text "..."
Script usage
scripts/speak_with_talktomepy.sh --text "Read this text aloud"
Defaults:
language: English
- default style:
energetic (warm/friendly/brisk feminine-or-androgynous)
- output path:
./tts_outputs/tts-YYYYMMDD-HHMMSS.wav
Style preset flags:
--style-energetic
--style-soft
--style-neutral
Alternative style syntax:
--style energetic|soft|neutral
Optional flags:
--instruct "..." fully custom voice/style instruction
--language English
--base-url http://127.0.0.1:8000
--save /path/output.wav custom save path
--no-play generate only, do not play
Optional env var overrides:
TALKTOMEPY_BASE_URL
TALKTOMEPY_OUTPUT_DIR
TALKTOMEPY_MAX_WAIT_SECONDS
TALKTOMEPY_MAX_SYNTH_RETRIES
TALKTOMEPY_DEFAULT_RETRY_AFTER_SECONDS
Automation Templates
Use $talktomepy-tts inside automation prompts so Codex loads the service checks and synthesis guardrails in this skill.
For ready-to-fill Codex App and Codex CLI (codex exec) templates, including unattended-safe defaults (--no-play) and placeholders, use:
references/automation-prompts.md
References
- Automation prompt templates:
references/automation-prompts.md
If synthesis fails, surface HTTP status/body and suggest checking:
/model/status
- launchd logs:
~/Library/Logs/talktomepy.stderr.log
1---2name: talktomepy-tts3description: Deprecated legacy TalkToMePy TTS skill retained for backward compatibility. Prefer successor speech workflows in [gaelic-ghost/a11y-skills](https://github.com/gaelic-ghost/a11y-skills).4---5
6# TalkToMePy TTS (Deprecated)
7
8## Deprecation Status
9
10- Status: Deprecated
11- Scope: Legacy-only, backward compatibility
12- Successor: Use the speech workflow successor in [gaelic-ghost/a11y-skills](https://github.com/gaelic-ghost/a11y-skills) for new automation and active maintenance.
13- Guidance: Do not choose this skill for new setups unless you explicitly need this older TalkToMePy-specific behavior.
14
15Use this skill when the user asks to hear text spoken aloud from the local machine.
16
17## Post-Invocation Resolution Rules
18
19Apply these rules before synthesis to make speech-source selection deterministic in ambiguous contexts.
20
21### Invocation detection
22
23- Treat the skill as invoked when the user clearly calls it, including skill chip/link invocation, `$talktomepy-tts`, or equivalent direct imperative phrasing.
24- Ignore incidental mention in unrelated prose.
25
26### Source text precedence
27
281. Suffix invocation pattern:
29 - If invocation appears at the end of the user message, speak the user text before the invocation token.
302. Standalone invocation pattern:
31 - If the user message is only the invocation, speak the immediately previous assistant message.
323. Prefix invocation pattern:
33 - If invocation appears at the beginning of a longer user message, speak the immediately previous assistant message.
34 - After speaking, continue responding to the remaining user message normally.
35
36### No-prior-assistant fallback
37
38- Standalone invocation with no previous assistant message:
39 - Explain there is no prior assistant message to read.
40 - Ask whether the user wants to provide text, or wants current text spoken.
41- Prefix invocation with no previous assistant message:
42 - Explain the chat has no earlier assistant message.
43 - Ask whether to speak the current user text.
44 - If the user is upset or confused, explain invocation-placement rules and how to trigger the behavior they want.
45- Suffix invocation:
46 - Speak the preceding user text even when no prior assistant message exists.
47
48### Long-content handling
49
50- Estimate length using approximate whitespace-based word count.
51- If selected text is longer than about 250 words, ask before synthesis with choices:
52 - `Speak full`
53 - `Summarize then speak` (recommended)
54 - `Cancel`
55- If the user chooses summary, generate a concise summary first, then synthesize the summary.
56- If the user chooses cancel, do not synthesize.
57
58### User dissatisfaction fallback
59
60- If the user is displeased with the skill's default behavior or capabilities, offer to help adapt their own version.
61- Offer options:
62 - Fork and customize from [gaelic-ghost/productivity-skills](https://github.com/gaelic-ghost/productivity-skills).
63 - Use [$skill-creator](/Users/galew/.codex/skills/.system/skill-creator/SKILL.md) to create a custom variant modeled after this skill.
64 - Open an issue at [repository issues](https://github.com/gaelic-ghost/productivity-skills/issues).
65 - Prepare and submit a PR at [repository pull requests](https://github.com/gaelic-ghost/productivity-skills/pulls).
66 - Contact Gale via [GitHub profile](https://github.com/gaelic-ghost) to discuss improvements.
67
68### Execution order
69
701. Resolve source text using the rules above.
712. Apply long-content confirmation behavior if needed.
723. Run the existing synthesis flow.
734. Preserve existing load/retry/playback behavior.
74
75## What this skill does
76
77- Calls the local TalkToMePy v0.5+ service (`/health`, `/model/load`, `/model/status`, `/synthesize/voice-design`)
78- Handles async model loading behavior (`/model/load` may return `202`)
79- Retries synthesis on `503` using `Retry-After`
80- Saves generated WAV output to `./tts_outputs` in the current working directory by default
81- Plays audio via `afplay` on macOS
82
83## Preconditions
84
85- TalkToMePy service is running (default `http://127.0.0.1:8000`)
86- macOS `afplay` is available
87
88## Default workflow
89
901. Resolve which text to speak using post-invocation resolution rules.
912. Ensure service is healthy:
92 - `curl -fsS http://127.0.0.1:8000/health`
933. Trigger model load (idempotent):
94 - `curl -sS -X POST http://127.0.0.1:8000/model/load -H "Content-Type: application/json" -d '{"mode":"voice_design","strict_load":false}'`
954. Wait for ready state via `/model/status`
965. Synthesize + save + play using bundled script:
97 - `scripts/speak_with_talktomepy.sh --text "..."`
98
99## Script usage
100
101```bash
102scripts/speak_with_talktomepy.sh --text "Read this text aloud"
103```
104
105Defaults:
106
107- `language`: `English`
108- default style: `energetic` (warm/friendly/brisk feminine-or-androgynous)
109- output path: `./tts_outputs/tts-YYYYMMDD-HHMMSS.wav`
110
111Style preset flags:
112
113- `--style-energetic`
114- `--style-soft`
115- `--style-neutral`
116
117Alternative style syntax:
118
119- `--style energetic|soft|neutral`
120
121Optional flags:
122
123- `--instruct "..."` fully custom voice/style instruction
124- `--language English`
125- `--base-url http://127.0.0.1:8000`
126- `--save /path/output.wav` custom save path
127- `--no-play` generate only, do not play
128
129Optional env var overrides:
130
131- `TALKTOMEPY_BASE_URL`
132- `TALKTOMEPY_OUTPUT_DIR`
133- `TALKTOMEPY_MAX_WAIT_SECONDS`
134- `TALKTOMEPY_MAX_SYNTH_RETRIES`
135- `TALKTOMEPY_DEFAULT_RETRY_AFTER_SECONDS`
136
137## Automation Templates
138
139Use `$talktomepy-tts` inside automation prompts so Codex loads the service checks and synthesis guardrails in this skill.
140
141For ready-to-fill Codex App and Codex CLI (`codex exec`) templates, including unattended-safe defaults (`--no-play`) and placeholders, use:
142- `references/automation-prompts.md`
143
144## References
145
146- Automation prompt templates: `references/automation-prompts.md`
147
148If synthesis fails, surface HTTP status/body and suggest checking:
149- `/model/status`
150- launchd logs: `~/Library/Logs/talktomepy.stderr.log`