Как стать автором
Обновить

Автоматическая генерация комиксов с озвучкой через GPT-4

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.9K

Мультимодальный telegram-бот, который я недавно сделал, получил оглушительный успех ? Я был удивлен, сколько людей воспользовались им и форкнули/лайкнули на гитхабе. Но захотелось чего-то большего.

Я решил создать сервис, где люди могут создавать свои собственные комиксы, сказки, да и вообще любые истории. Желательно одним нажатием кнопки.

Моя идея заключалась в том, чтобы создать программу, которая бы могла генерировать истории на основе небольшого числа параметров. Это был язык, затравка для генерации текста, визуальный сеттинг, и т.д. Я знал, что для этого мне нужно использовать GPT-4, какое то API для картинок, переводчик, и синтезатор речи. После быстрой проверки, оказалось что все это доступно и не так уж дорого!

В голове родилась следующая картинка:

Прототип UI
Прототип UI

На реализацию ушло чуть меньше двух недель. Но прошу не судить слишком строго - ведь я в одном лице разработчик backenda, frontenda, devops-инженер, дизайнер, product manager и маркетолог. И еще кое-кто.

Некоторые технические моменты опишу ниже.

Картинки

Решил использовать старый добрый Stable Diffusion, ведь он дешевый (даже опенсорсный, но я использую API) и довольно неплохо рисует, а MidJourney все равно закрыт.

Генерирую изображение, соответствующее описанию каждого шага сцены. Кроме того, я добавил различные визуальные стили и сеттинг, чтобы сделать изображения более привлекательными и соответствующими контексту сцены. Например, я использовал стилизацию изображений в стиле Star Wars, Disney, Marvel и т.д. Все это на выбор пользователя.

В результате я получаю набор изображений в едином стиле, которые готовы для генерации видео.

Недавно в одном сообществе подбросили почти гениальную идею - не создавать картинки, а гуглить их на Google Pictures. Это бесплатно, быстро, и в некоторых случаях даже лучше работает, например для новостей. Определенно реализую.

Звук

Когда я только начал работать над проектом, я столкнулся с проблемой – как сделать так, чтобы пользователи могли не только читать, но и слушать созданные истории?

И тут мне пришла в голову идея озвучивать кусочки текста через Google Text-to-Speech. Он позволяет создавать реалистичное голосовое сопровождение на разных языках и с различными голосами.

Нужно лишь разбить текст, сгенерированный GPT-4 на абзацы, и отправить каждый абзац на озвучивание. Таким образом, пользователи могут читать историю и одновременно слушать ее озвученную версию. Это делает процесс чтения более интересным и увлекательным, а также помогает людям, которые предпочитают слушать текст, а не читать его.

Видео

Самым сложным оказалась сборка истории через videoshow.js.

Для создания видео я создал объекты, которые будут содержать информацию о каждом кадре видео. Для этого я использовал примерно такой код:

const videoOptions = {
  fps: 25,
  loop: 5,
  transition: true,
  transitionDuration: 1,
  videoBitrate: 1024,
  videoCodec: "libx264",
  size: "640x?",
  audioBitrate: "128k",
  audioChannels: 2,
  format: "mp4",
  pixelFormat: "yuv420p",
};

const imageDescriptions = [
  { path: "path/to/image1.jpg", caption: "Caption 1" },
  { path: "path/to/image2.jpg", caption: "Caption 2" },
  { path: "path/to/image3.jpg", caption: "Caption 3" },
];

const audio = "path/to/combined/audio.mp3";

В этом коде я определил параметры видео, такие как частота кадров, длительность цикла, битрейт видео и аудио, а также размер видео и формат файла. Также создается массив объектов, каждый из которых содержит путь к картинке и ее описание, а также путь к одному большому аудио файлу.

Далее я создал массив объектов, каждый из которых будет представлять собой кадр видео:

const frames = [];

for (let i = 0; i < imageDescriptions.length; i++) {
  const image = imageDescriptions[i];

  const frame = {
    path: image.path,
    caption: image.caption,
    loop: 5,
  };

  frames.push(frame);
}

В этом коде я прохожу по каждой картинке и создаю объект кадра, который содержит путь к картинке, ее описание и длительность кадра.

Наконец, собирается видео, используя созданные ранее объекты:

videoshow(frames, videoOptions)
  .audio(audio)
  .save("path/to/output.mp4")
  .on("start", function (command) {
    console.log("ffmpeg process started:", command);
  })
  .on("error", function (err, stdout, stderr) {
    console.error("Error:", err);
  })
  .on("end", function (output) {
    console.log("Video created in:", output);
  });

Довольно много времени ушло на отладку всего этого. И вот, для примера, одна из получившихся историй:

Глобализация

Генератор историй не привязан к языку, является полностью глобальным. На самом деле, на любом языке из списка Google Text-2-Speech.

Так что в моих планах запуск в том числе и на американский рынок, ProductHunt, Y Combinator и все такое ? Буду рад любой поддержке в этом направлении.

Философские вопросы

Наконец, использование контента, созданного искусственным интеллектом, вызывает несколько философских вопросов. Например, какова роль человека в создании и использовании такого контента? Каковы этические вопросы, связанные с использованием искусственного интеллекта для создания контента, который может имитировать человеческий разум и поведение? Каково будущее создания и использования контента, созданного искусственным интеллектом, и как это повлияет на нашу культуру и общество в целом? Эти вопросы требуют серьезного обсуждения и размышления, чтобы мы могли максимально эффективно использовать потенциал искусственного интеллекта в нашем мире.

Но я решил сначала сделать, а потом уже думать об этом ?

Будет ли автоматический контент достаточно высокого качества?

Сегодня существуют алгоритмы, которые способны создавать достаточно качественный тексты, звук, изображения. Однако, пока что они не могут заменить творческий потенциал человека и создать нечто совершенно новое и оригинальное.

Функция редактирования истории может помочь в том чтобы сделать контент более качественным и интересным. Редактирование позволяет улучшить и доработать отдельные слайды, исправить ошибки, добавить новые элементы, расставить ударения наконец. Кроме того, редактор всегда может внести свой творческий вклад.

А что думаете вы? Интересный ли проект? Стали бы пользоваться? Какие способы монетизации посоветуете?

UPD: ознакомиться с проектом можно по этой ссылке

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Что вам больше всего не нравится в сгенерированном контенте?
26.67% Текст4
40% Графика6
33.33% Звук5
Проголосовали 15 пользователей. Воздержались 10 пользователей.
Теги:
Хабы:
Всего голосов 9: ↑6 и ↓3+6
Комментарии17

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань