voice-quality-audition

v2026.09.24

Audition Kokoro TTS voices to compare quality and grade. TRIGGERS - audition voices, kokoro voices, voice comparison

GitHub
安装命令
npx skhub add terrylica/voice-quality-audition
Markdown
SKILL.md

Voice Quality Audition

Compare Kokoro TTS voice quality across all available voices. Runs tts_kokoro_audition.sh which plays a passage with each top voice. Each voice announces its name before reading the passage. Uses clipboard text or a default passage.

Platform: macOS (Apple Silicon)


Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

When to Use This Skill

  • Audition all available Kokoro voices to hear quality differences
  • Compare specific voices side-by-side for a project
  • Re-evaluate voice grades after a Kokoro engine upgrade
  • Select a new default voice for TTS_VOICE_EN or TTS_VOICE_ZH
  • Test how a particular passage sounds across multiple voices

Requirements

  • Kokoro TTS engine installed and healthy (kokoro-install.sh --health)
  • Apple Silicon Mac with MLX Metal available
  • afplay available (ships with macOS)
  • Audition script at plugin scripts/tts_kokoro_audition.sh
  • Shared library at plugin scripts/lib/tts-common.sh

Voice Catalog

Voice IDNameGradeGender
af_heartHeartAFemale
af_bellaBellaA-Female
af_nicoleNicoleB-Female
af_aoedeAoedeC+Female
af_koreKoreC+Female
af_sarahSarahC+Female
am_adamAdamF+Male
am_michaelMichaelunratedMale
am_echoEchoDMale
am_puckPuckunratedMale

Current defaults (configured in ~/.claude/automation/claude-telegram-sync/moon.yml env:; the launchd service reads overrides from that directory's .env):

  • English voice: af_heart (Grade A) via TTS_VOICE_EN
  • Chinese voice: zf_xiaobei via TTS_VOICE_ZH
  • macOS say fallback EN: Samantha via TTS_VOICE_SAY_EN
  • macOS say fallback ZH: Ting-Ting via TTS_VOICE_SAY_ZH

See Voice Catalog for detailed characteristics and grade criteria.


Workflow Phases

Phase 1: Preflight

Verify Kokoro is installed and healthy:

kokoro-install.sh --health

All 6 checks must pass (venv, Python 3.14, mlx_audio importable, kokoro_common.py, tts_generate.py, version.json).

Phase 2: Text Selection

The audition script reads from the macOS clipboard (pbpaste). If the clipboard is empty or not text, it falls back to a built-in passage about reading in a library.

To audition with custom text, copy the desired passage to the clipboard before running.

Phase 3: Ask User — Full or Selective Audition

Use AskUserQuestion to determine scope:

  • Full audition — Play all 10 voices sequentially (takes several minutes)
  • Select specific voices — Run only a subset (e.g., top 3 female voices)

For a selective audition, edit the VOICES array in the script or pass voice IDs manually.

Phase 4: Execute Audition

~/.local/bin/tts_kokoro_audition.sh

Or directly from the plugin source:

/path/to/plugins/tts-tg-sync/scripts/tts_kokoro_audition.sh

The script acquires the TTS lock, plays each voice sequentially with a 1-second gap, then releases the lock on exit.

Phase 5: Feedback

Use AskUserQuestion to collect the user's preference:

  • Which voice sounded best?
  • Any voices to eliminate from future consideration?
  • Should we update grade assignments?

Phase 6: Apply Configuration

Optionally update the default voice in the bot's moon.yml env: block:

# ~/.claude/automation/claude-telegram-sync/moon.yml
env:
  TTS_VOICE_EN: "af_heart"   # Change to preferred voice ID
  TTS_VOICE_ZH: "zf_xiaobei"

The launchd service does not receive moon.yml env:, so also set TTS_VOICE_EN=<voice> in that directory's .env. Restart the Telegram bot for the new voice to take effect.


TodoWrite Task Templates

1. [Preflight] Verify Kokoro TTS is installed and healthy (kokoro-install.sh --health)
2. [Text] Check clipboard for passage, fall back to default if empty
3. [Select] Ask user: full audition (all 10 voices) or specific voices
4. [Audition] Run tts_kokoro_audition.sh and let user listen
5. [Feedback] Ask user which voice they prefer and collect grade feedback
6. [Apply] Optionally update TTS_VOICE_EN in moon.yml env: and .env, then restart bot

Post-Change Checklist

  • Kokoro health check passed before audition
  • All selected voices played without errors
  • User confirmed preferred voice
  • moon.yml env: and .env updated with new voice ID (if changed)
  • Bot restarted after configuration change (if applicable)
  • Voice catalog grades updated in reference doc (if re-graded)

Troubleshooting

IssueCauseSolution
No audio playsKokoro not installedRun kokoro-install.sh --install or use full-stack-bootstrap skill
Audio cuts off mid-sentenceTTS lock stolen by another processCheck for competing TTS processes: pgrep -la afplay
Voice sounds wrongInvalid voice ID in Kokoro modelVerify voice ID exists in VOICES array; check Kokoro version
Clipboard emptyNo text copiedScript uses default passage automatically; no action needed
"ERROR: Local Kokoro not found"Venv or script missingRun kokoro-install.sh --health to diagnose; --install to fix
FAILED for a specific voiceVoice not available in modelVoice may require a different Kokoro version; check model compatibility
Lock not releasedScript crashed without cleanupRemove stale lock: rm -f /tmp/kokoro-tts.lock
All voices sound identicalKokoro model not loaded properlyRe-download model: kokoro-install.sh --upgrade

Reference Documentation

  • Voice Catalog - Comprehensive voice listing with quality grades, characteristics, and selection guidance
  • Evolution Log - Change history for this skill

Post-Execution Reflection

After this skill completes, reflect before closing the task:

  1. Locate yourself. — Find this SKILL.md's canonical path (Glob for this skill's name) before editing. All corrections target THIS file and its sibling references/ — never other documentation.
  2. What failed? — Fix the instruction that caused it. If it could recur, add it as an anti-pattern.
  3. What worked better than expected? — Promote it to recommended practice. Document why.
  4. What drifted? — Any script, reference, or external dependency that no longer matches reality gets fixed now.
  5. Log it. — Every change gets an evolution-log entry with trigger, fix, and evidence.

Do NOT defer. The next invocation inherits whatever you leave behind.



发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

plugins/tts-tg-sync/skills/voice-quality-audition

默认分支

main

最新提交

b657cca

Tree SHA

906e003