hyperframes-mediaмедиаассеты для HyperFrames
Три команды пресинга для видеокомпозиций: TTS с Kokoro (54 голоса, 9 языков, локально), транскрипция Whisper и обработка изображений.
Установка
npx -y skills add heygen-com/hyperframes --skill hyperframes-media --agent claude-codeHyperFrames Media
Создание аудио- и медиаассетов для HyperFrames-композиций: озвучка (TTS), фоновая музыка, звуковые эффекты, транскрипция, субтитры и удаление фона — через единый аудиодвижок scripts/audio.mjs.
Аудиодвижок — один источник для TTS, BGM, SFX
Воркфлоу НЕ реализуют аудио самостоятельно и не используют копии вендорных библиотек. Есть один движок — scripts/audio.mjs — который принимает нейтральный audio_request.json и записывает audio_meta.json (плюс ассеты в assets/voice|bgm|sfx):
node <MEDIA_DIR>/scripts/audio.mjs --request ./audio_request.json --hyperframes . --out ./audio_meta.json
Все три возможности деградируют по одному переключателю — наличию HeyGen-учётных данных ($HEYGEN_API_KEY / $HYPERFRAMES_API_KEY / ~/.heygen):
| Возможность | Учётные данные HeyGen есть | Нет учётных данных |
|---|---|---|
| TTS | HeyGen Starfish REST (нативные временны́е метки слов) | → ElevenLabs → Kokoro (цепочка с transcribe) |
| BGM | Получение из библиотеки HeyGen | Локальная генерация Lyria → MusicGen (отдельный процесс) |
| SFX | Получение из библиотеки HeyGen (min_score 0.4) | Встроенная библиотека из 21 файла (assets/sfx/) |
Формат запроса (audio_request.json): { provider?, lang?, speed?, lines: [{ id, text, sfx?: [names] }], bgm: { mode?, query?, prompt? } }. Поле bgm.mode: retrieve | generate | none; при отсутствии — auto.
Формат вывода (audio_meta.json, ключи по id): { tts_provider, voice_id, bgm, bgm_pending, …, voices, sfx, total_duration_s }.
Флаг --only tts,bgm,sfx запускает подмножество и дополняет существующий --out.
Предварительная проверка — статус входа перед любым аудио
Всегда выполняйте перед генерацией голоса или BGM. Отсутствие HeyGen-учётных данных — не повод молча переключиться на локальные движки: сначала рекомендуйте войти в систему и дайте пользователю решить.
npx hyperframes auth status
- Вошли → выводит аккаунт; продолжайте.
- Не вошли (
exit 1) → выводит инструкцию по регистрации. Рекомендуйте войти:npx hyperframes auth login— браузерный OAuth, создаёт аккаунт. Для существующего HeyGen API-ключа:npx hyperframes auth login --api-key(сохраняется в~/.heygen). ОСТАНОВИТЕСЬ и ждите выбора пользователя перед генерацией — это реальная точка принятия решений. npx hyperframes auth status --jsonвозвращает{ configured, recommended_action, offline_engines }для детерминированного ветвления.
Цепочки провайдеров
TTS
| Порядок | Провайдер | Определяется когда | Временны́е метки слов |
|---|---|---|---|
| 1 | HeyGen (Starfish) | $HEYGEN_API_KEY / hyperframes auth login | Да, нативные |
| 2 | ElevenLabs | $ELEVENLABS_API_KEY установлен | Нет — добавьте transcribe |
| 3 | Kokoro-82M (локальный, 54 голоса) | Всегда (ключ не нужен) | Нет — добавьте transcribe |
BGM и SFX
| Ассет | HeyGen type | Куда попадает | Fallback (нет учётных данных) |
|---|---|---|---|
| BGM | music | assets/bgm/track.mp3 (получение) · track.wav (генерация) | Lyria / MusicGen генерация |
| SFX | sound_effects (min_score 0.4) | assets/sfx/<slug>.mp3 | Встроенная библиотека из 21 файла |
Обязательные правила
- Один движок, никаких копий. Производите аудио через
scripts/audio.mjs. Не реализуйте TTS/BGM/SFX внутри воркфлоу — пишите адаптерaudio_request.jsonи вызывайте движок. - «HeyGen доступен» = разрешимые учётные данные, не CLI. Опубликованный
hyperframes ttsможет быть только с Kokoro. - Voice ID зависят от провайдера.
am_michael— только Kokoro; HeyGen UUID не работают с Kokoro. При указании--voiceтакже фиксируйте--provider. - Всегда передавайте
--modelвtranscribe. Дефолтныйsmall.enмолча переводит не-английское аудио. - HeyGen возвращает временны́е метки слов; ElevenLabs / Kokoro — нет. Движок автоматически цепляет
transcribeдля последних двух. - Субтитры потребляют плоский массив слов с
{ id, text, start, end }. - BGM/SFX по умолчанию — получение из HeyGen; fallback — генерация (BGM) или встроенная библиотека (SFX). Называйте эффекты конкретно (
glass shatter, неdramatic sound); отсутствие совпадений пропускает, не блокирует рендер. SFX на громкости ~0.35 под голосом + BGM. - HTML субтитров воркфлоу — сгенерированный вывод. Источник переиспользуемого скина —
.hyperframes/caption-skin.html; не редактируйтеcompositions/captions.htmlнапрямую.
Маршрутизация по задачам
| Задача | Источник |
|---|---|
Схема движка, audio_request.json, флаг --only | scripts/audio.mjs (заголовок) |
| TTS — провайдеры, голоса, временны́е метки слов | references/tts.md |
| BGM — получение HeyGen + генерация Lyria/MusicGen | references/bgm.md |
| SFX — получение HeyGen + встроенная библиотека | references/sfx.md |
| Транскрипция Whisper | references/transcribe.md |
| Удаление фона | references/remove-background.md |
| TTS → транскрипция → субтитры | references/tts-to-captions.md |
| Авторинг субтитров — стиль, группировка слов | references/captions/authoring.md |
| Анимация субтитров — karaoke, маркеры, аудиореактивность | references/captions/motion.md |
