PlayHT text-to-speech: synthesize speech, list voices, and manage instant voice clones. Trigger phrases: playht, play ht, text to speech, TTS, voice clone.
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill playht
Generate spoken audio from text with PlayHT voices, browse stock and cloned voices, and create instant voice clones. Reach for this when the user wants narration or voiceovers, a voice library lookup, or a voice cloned from a sample.
All commands go through bin/playht.py. PlayHT uses a single uppercase AUTHORIZATION: Bearer <key> header (older dual-header docs are stale); the CLI wires it through the credential surrogate.
bin/playht.py auth
# {"ok": true, "voices": 120} on success
bin/playht.py voices
# list stock voices (id, name, language, gender)
bin/playht.py tts --text "Welcome to the show." --voice-id <VOICE_ID> --out show.mp3
# streaming synthesis to a local MP3 file; prints the saved path
bin/playht.py clones
# list your cloned voices
bin/playht.py clone --json clone-body.json
# create an instant voice clone; body follows the current PlayHT docs
# for POST /api/v2/cloned-voices/instant/ (confirmation-gated)
Notes:
tts returns audio binary. The CLI writes it to --out (default playht-output.mp3) and prints the resulting path. Max 20,000 characters per request; PlayHT rate-limits to 120 requests/min per key.playht (credential is collected as custom.playht)credentials.request_api_access); generate one under Settings, then API, in the PlayHT dashboardapi.play.htcustom_header:AUTHORIZATION (uppercase; the stored credential value must include the Bearer prefix, since the helper places the header value verbatim: AUTHORIZATION: Bearer <key>)bin/playht.py authtts calls within the character cap; split long scripts before calling.clone or any batch job. Only clone voices the user has the right to clone.Authorization + X-USER-ID); the current API uses the single uppercase AUTHORIZATION header.🧪 Draft: written from PlayHT's current public docs with paths cross-checked at build time; not yet live-tested end-to-end. TTS jobs (async batch synthesis) are not yet in the CLI.
Take anil-matcha/playht from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.