Нейроляпки: когда лень рисовать заставки к аудиокниге...

Автор: Евгений Задорожный

...я поручу это скрипту.

Продолжаю эксперименты с автоматизацией создания медиа-контента.

Ранее я уже рассказывал, как озвучить книгу по ролям. Но для YouTube одной аудиодорожки мало — нужен видеоряд. Статичная картинка на 8 часов — скучно. Делать полноценную анимацию — долго и дорого.

Я нашел компромисс: комикс-сетка 3x3 для каждой главы, которая генерируется автоматически и отражает реальные события текста.

Шаг 1. Создаём озвучку поглавно.

Скрипт из предыдущей записи https://author.today/post/756755 разделяет текст на чанки по размеру и количеству голосов:

Read the following dialogue naturally.
Switch voices exactly as indicated by the speaker labels.
Apply the emotional tone specified in brackets (e.g., [tone: angry]), BUT DO NOT READ THE TEXT IN BRACKETS OUT LOUD. Just act it out.

Dialogue:
Male_Casual [tone: scared]: Ты… кто ты такой, чёрт возьми?
Male_Hero [tone: cold_assertive]: Твой новый кочегар.
Male_Casual [tone: resigned_grudging]: Хорошо. Место в кочегарке твоё. Твоя пайка и твой угол среди крыс. Работать будешь за двоих, ублюдок. Мы в расчёте.

И озвучивает их через Gemini API. На выходе - один mp3 на каждую главу.

Шаг 2. Создаём комиксы поглавно.

Вручную промптить 30 глав — это не мой метод, поэтому — скрипт https://pastes.io/generate-chapter-comics-with-gemini-api

Логика работы:

  1. Скрипт читает текст главы.
  2. Просит текстовую модель составить сценарий (раскадровку) из 9 ключевых сцен.
  3. Передает этот сценарий в графическую модель для отрисовки.

Промпт для сценариста (текстовой модели):

You are a Director of Photography.
Analyze Chapter {chapter_num} and create a visual breakdown for a 3x3 Comic Book Grid (9 panels).
Task:
1. Select 9 key moments that summarize the chapter chronologically.
2. Describe each panel visually (action, lighting, angle).
3. Identify which characters from this list are present: {CHARACTER_IMAGES}.
Output Format:
Return ONLY the visual description string that will be fed into an Image Generator.
Start with: "A 3x3 comic book grid showing..."
Combine the descriptions of 9 panels into one cohesive narrative prompt.

Chapter Text (excerpt): {chapter_text}

Промпт для художника (генерация изображения):Здесь важно задать жесткий стиль, чтобы все главы выглядели как часть одного произведения. Я использую стиль "Мрачный русский брутализм + дизельпанк".

Generate a SINGLE image containing a 3x3 grid of panels (Comic Page).
FORMAT: Graphic Novel Page, strict 3x3 Grid Layout (9 panels total).
SETTING: 1888, Grim Russian brutalism meets dieselpunk dystopia (анти-попаданец).
STYLE: Hyper-realistic cinematic digital art, "Black Mirror" mixed with "Chernobyl".
ATMOSPHERE: Cold, gloomy, volumetric fog, dramatic lighting.
COLORS: Desaturated steel grey, deep blue, signal red accents.
NO speech bubbles, NO text, NO frames/borders between panels - just the images.
Aspect Ratio: 16:9.

INSTRUCTIONS:
- Strictly follow the 3x3 grid layout.
- Use the provided character reference images to maintain facial consistency.
- If a character is looking at a screen, camera must be over-the-shoulder.

Пример, с обрамлением для видео:


Шаг 3. Склеиваем комиксы в один book-visual.mp4 

Имея картинку chapter_01.png и озвучку chapter_01.mp3, теперь нужно создать видеофайл, где картинка висит ровно столько, сколько длится звук.

Я использую Bash-скрипт, который пробегается по всем файлам, считывает длительность MP3 и генерирует input.txt для FFmpeg: 

# Concat list
file 'chapter000.png'
duration 22.344000
file 'chapter_00.png'
duration 424.440000
file 'chapter_01.png'
duration 968.160000

ffmpeg -f concat -safe 0 -i input.txt -vf "fps=10,format=yuv420p" \
-c:v libx264 -tune stillimage -preset ultrafast \
book.mp4

Бонусом скрипт сразу генерирует список таймкодов для YouTube:

00:00 Вступление
00:22 Пролог
07:26 Глава 1
23:34 Глава 2
39:04 Глава 3

Шаг 4. Сборка аудиокниги

Параллельно склеиваем все главы в один большой файл book.mp3. На этом этапе полезно сделать нормализацию громкости, чтобы главы не "скакали" по звуку.

# Two-pass loudness normalization
ffmpeg -i "$input" -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=summary -f null - 2>&1 | tee "$TEMP_DIR/pass1_$i.log"
# Extract measured values and apply normalization
ffmpeg -i "$input" -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 44100 -b:a 192k "$normalized" -y 2>&1 | grep -v "^frame="

Шаг 5. Используем Suno для создания фоновых  мелодий.

Я взял за основу такой Suno Instrumental Style, и с различными вариациями создал 20 MP3. Жаль, у них нет официального API, пришлось вручную "Create/Download" 😉 

rhythmic, masterfully composed, grand scale, atmospheric noir, rhythmic ticking, electric, electric sparks sound design, cinematic sub-bass, dark ambient, dark ambient thriller, cello, heavy cello melodies, shadows and light, haunting, instrumental, light, ominous

Треки перемешал, склеил в один фоновый background.mp3.

Шаг 6: финальная сборка

Последний штрих — магия FFmpeg. Мы берем:

  1. Видеоряд из комиксов (book_visual.mp4).
  2. Озвучку (book.mp3).
  3. Фоновую музыку (background.mp3).

Миксуем это вместе, понижая громкость музыки до 18%, чтобы она не перебивала голос чтеца:

ИТОГ

В результате получается полноценная видео-книга на 7.5 часов, 1.5GB mp4. Картинка меняется каждую главу, показывая ключевые события в виде стильного комикса. Звук плотный, с атмосферой и музыкой. И всё это — с минимальным ручным вмешательством. 🙂 

Youtube: 


Экономика проекта:

  • Визуал: 30 глав = 30 генераций. При цене ~$0.04 за картинку — это $1.5.
  • Озвучка: Около 450 вызовов API (модель gemini-2.5-flash-preview-tts) на 10 а.л. текста — примерно $8.5.
  • Итого: Готовая аудиокнига с уникальным видеорядом за $10 
+17
111

0 комментариев, по

5 945 0 141
Мероприятия

Список действующих конкурсов, марафонов и игр, организованных пользователями Author.Today.

Хотите добавить сюда ещё одну ссылку? Напишите об этом администрации.

Наверх Вниз