# Tts Director

Use when generating expressive TTS, short-video voiceover, self-media narration...

- Repository: https://github.com/Jamailar/Beav (2243 stars)
- Category: Marketing
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add Jamailar/Beav --skill tts-director -g -a claude-code -y`
Codex: `npx skills add Jamailar/Beav --skill tts-director -g -a codex -y`
Cursor: `npx skills add Jamailar/Beav --skill tts-director -g -a cursor -y`
Gemini CLI: `npx skills add Jamailar/Beav --skill tts-director -g -a gemini-cli -y`

## Description

Use when generating expressive TTS, short-video voiceover, self-media narration, product explanation, ads, livestream clips, character speech, podcast-style voiceover, or any speech request that needs tone, speed, pitch, rhythm, pauses, or multi-segment delivery. For ordinary chat/audio work this skill is the TTS entrypoint. CosyVoice SSML is not a general entrypoint: only activate `cosyvoice-ssml` inside a video-director managed digital-human / VideoRetalk / asset-library talking-head video flow. MiniMax uses ordered segments with emotion controls. Do not call TTS repeatedly or hand-merge audio.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# TTS Director

Use this skill before calling `Operate(resource="voice", operation="speech", input={ ... })` when the speech should sound performed rather than flat.

## Core Mission

Turn the final spoken script into one executable TTS request:

- Preserve the user's words unless they asked for rewriting.
- For dialogue or role audio, first identify the speaker/role count and choose a distinct `voiceId` for each role before segmenting. Use `availableVoicesForAgent` from the generation context when present; call `voice.list` if the context does not provide enough voices.
- Identify the selected TTS model before designing controls. Use `model` from the request/context when present.
- For CosyVoice-family models such as `cosyvoice-v3.5-plus`, only invoke `cosyvoice-ssml` when the current task is already a `video-director` managed digital-human / VideoRetalk / asset-library talking-head video and the TTS is the approved character speech track. Outside that narrow flow, do not activate `cosyvoice-ssml`.
- For MiniMax-family models such as `speech-2.8-turbo`, split the script into meaningful performance beats and speaker turns, then assign each beat `emotion`, `speed`, `pitch`, punctuation, and pause markers.
- Submit one `voice.speech` call. Do not synthesize each segment manually.
- In the final user-facing response, present the merged `finalAudio` only. Do not list segment files as the result.

## Model Branching

Before creating the final payload, classify the TTS model:

- CosyVoice branch: model name contains `cosyvoice`, especially `cosyvoice-v3.5-plus`; this branch may use `cosyvoice-ssml` only inside a digital-human / VideoRetalk video flow already owned by `video-director`.
- MiniMax branch: model name starts with `speech-` or contains `minimax`.
- Unknown model: keep controls conservative; prefer plain `input` plus `prompt` only if the provider is known to accept it.

This distinction is mandatory because the models support different controls:

The rest: https://github.com/Jamailar/Beav/blob/HEAD/desktop/builtin-skills/tts-director/SKILL.md
