tts-director — скилл
Скилл готовит текст к озвучке: разбивает ролик на биты, переписывает для слуха и расставляет теги ElevenLabs v3 и v4 по бюджету.
- 85 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Скрипт `ab.py` отправляет текст в ElevenLabs с вашим ключом и тратит кредиты.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/tts-directorОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скрипт `ab.py` отправляет текст в ElevenLabs с вашим ключом и тратит кредиты.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
tts-director — скилл, который режиссирует текст перед озвучкой, чтобы голос звучал как живой человек, а не диктор. Сделан в первую очередь для персидского и поддерживает английский. Рассчитан на аудиотеги ElevenLabs v3 и v4, для других TTS-сервисов есть заметки. Скилл размечает ритм ролика (крючок, подводка, пункты списка, подсказка, шутка, призыв), переписывает текст для слуха с сохранением фактов и ставит теги в жестком бюджете: примерно один тег на три-четыре фразы, до двух смехов на ролик, смена подачи каждые 8–12 секунд. Бесплатный линтер находит перебор тегов, письменный регистр и ошибки под выбранную модель. Метка `--approve` фиксирует утвержденный текст, а `--check-approved` не пускает в генерацию, пока текст не совпадет.
Для кого. Авторам коротких видео и озвучки, которые делают рилсы и ролики на ElevenLabs и хотят живой подачи без перебора тегов.
Подходит, если
- Сценарий для рилса уходит в ElevenLabs v4, и текст надо переписать под слух.
- Озвучка звучит как реклама: на каждой строке стоит `[excited]`.
- Перед тратой кредитов спорные строки проверяют на своем голосе через A/B.
- Перед генерацией нужно зафиксировать утвержденный текст и не пускать правки мимо проверки.
Не подходит, если
- Нужен готовый синтез речи: скилл готовит текст, а озвучивает ElevenLabs.
- Другая TTS-платформа без аудиотегов: скилл подходит ей слабо.
- Ключ ElevenLabs использовать нельзя: A/B-проверка тратит кредиты.
Пример запроса к агенту
Перепиши сценарий рилса для озвучки в ElevenLabs v4: разметь биты, поставь теги по бюджету, прогони линтер и покажи план A/B.Ограничения
Скрипты написаны на Python 3.9 и новее без зависимостей, `ffmpeg` нужен по желанию. Линтер `tag_lint.py` работает бесплатно, а `ab.py` отправляет текст в ElevenLabs и тратит кредиты, ключ задается в `ELEVENLABS_API_KEY`. Модель `eleven_v4` игнорирует `speed` и `style`, а `multilingual_v2`, flash и turbo читают теги вслух. Распознавание речи доказывает, что смех исполнен, но не что строка звучит взволнованно: решает человеческий слух. Проект не связан с ElevenLabs.
Как отключить. Удалите папку `~/.claude/skills/tts-director` или папку скилла в проекте. Ключ `ELEVENLABS_API_KEY` уберите из окружения и файлов `.env`.
Частые вопросы
Как поставить скилл?
Выполните `git clone https://github.com/aligh98/tts-director ~/.claude/skills/tts-director`. Можно клонировать и в `.claude/skills/` проекта.
Какой бюджет тегов в скилле?
Примерно один тег на три-четыре фразы, от нуля до двух смехов на рилс и смена подачи каждые 8–12 секунд.
Что проверяет линтер?
Строки без метки роли, перебор тегов, письменный регистр, повторы междометий, ошибки под модель и начало ролика с приветствия.
Как не потратить кредиты зря?
Запустите `ab.py` с флагом `--dry-run`: он покажет стоимость и ничего не отправит. Затем проверьте спорные строки на своем голосе.
Нужен ли ключ ElevenLabs?
Для линтера нет. Ключ нужен только скрипту `ab.py`, который отправляет текст в ElevenLabs и тратит кредиты.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
Скиллыvideo-production-skill ведет агента от сценария до ролика: слайды, озвучка со сверкой распознаванием, субтитры, обложка.
Скилл собирает из темы озвученное видео в 4K: исследование, сценарий, локальный TTS, монтаж на Remotion и сведение в FFmpeg
Скилл превращает SRT-субтитры в пакет промптов для картинок и видео: 21 стиль, раскадровка по тайм-кодам, без генерации медиа
Скилл video-explainer собирает вертикальный ролик 9:16 из сценария: озвучка, субтитры, Remotion и проверка перед рендером
Скилл превращает китайский текст озвучки в анимированный HTML для записи экрана: ручной ход кадров или субтитры SRT
Десять скиллов от ElevenLabs: озвучка текста, расшифровка, голосовые агенты, звуковые эффекты, музыка, дубляж и очистка голоса через API
Коротко о README
Описание рассказывает о двух типичных проблемах озвучки, перечисляет шесть шагов скилла, показывает установку и команды скриптов, а затем собирает выводы по моделям ElevenLabs.
Бейдж для README
Исходный SKILL.md
--- name: tts-director description: Direct a script for text-to-speech so it sounds like a real, engaged human, not a narrator reading. Persian (Farsi) first, English supported. It rewrites the text for the ear, maps the beats of a short-form video (reel, TikTok, Short), and adds ElevenLabs v3/v4 audio tags only where they earn their place ([excited], [whispers], [laughs], [chuckles], [gasps], [sighs], [sarcastic]...). It checks for over-tagging with a free linter and A/B-tests risky lines on the real voice before a full run. It also covers model rules (eleven_v4 ignores speed and style; multilingual_v2, flash and turbo read tags aloud) and converts the result for other TTS engines (OpenAI, Azure, Google). Use for ANY script headed to ElevenLabs or another TTS, and whenever someone wants a voice that is more exciting, emotional, expressive, human or viral, or asks about tone, emotion, laughter, pauses or pacing in TTS: «لحن»، «احساس»، «هیجان»، «خنده»، «تگ»، «انسانیتر»، «گوینده»، «صداگذاری». --- # TTS director: write for the ear, tag the beats, test by ear A great voiceover is about 80% text and 20% tags. The text sets the rhythm, the register and where the energy goes. Tags only push a delivery the text has already set up. A script with a tag on every line sounds like an over-acted ad and loses the viewer. A script with none often sounds read. This skill does not replace your TTS pipeline. It prepares the text that goes into it. Scripts are stdlib Python 3.9+; ffmpeg/ffprobe are optional and give durations. ## Workflow Do the steps in order. The tools check them, so none can be skipped silently: - `tag_lint.py` gives an ERROR when a line has no beat label; - `tag_lint.py --check-approved` fails until the person has approved the exact text. Gate your TTS call on it. Before step 1, read the delivery reference for the script's language (`references/persian-delivery.md` or `references/english-delivery.md`) and `references/audio-tags.md`. The linter checks only part of them. 1. **Beat map, inside the script.** End every spoken line with « # ROLE ENERGY» (energy 1–5): ``` [excited] Wait, this ends Friday... and it's not coming back! # HOOK 5 [whispers] Here's the trick... # TIP 2 ``` The roles are: - HOOK - SETUP - REVEAL - ITEM (a list point) - TIP (insider advice) - JOKE or IRONY - WARNING - CTA Plan the arc before touching words. See [Viral arc](#viral-arc). Strip the labels before the text goes to the TTS: `tag_lint.strip_beats(text)` does it, or remove everything from « #» to the end of each line. For a script that is not a short-form video, pass `--no-beats`. 2. **Rewrite for the ear.** Keep the meaning and every fact. Rewriting means: - shorter sentences; - the punch word moved to the end; - the interjections a native speaker would actually use; - punctuation that marks breaths.