Мультимодальный 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: ознакомиться с проектом можно по этой ссылке

Комментарии (16)


  1. sergeyns
    00.00.0000 00:00
    +2

    Сколько там пальцев на руке у богатыря на первом плане на КДПВ? 6 или7? И еще какие-то странные )))


    1. Extender Автор
      00.00.0000 00:00

      Ну, согласен с пальцами беда ???? но они не так уж часто лезут в кадр) и вообще, всегда же можно перерисовать слайд!


    1. IvanPetrof
      00.00.0000 00:00
      +3

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

      пальцы - мелочь))


  1. rombell
    00.00.0000 00:00

    Не, извините, слушать ЭТО невозможно. Врёт с интонациями, врёт с ударениями, врёт с ритмом.


    1. o5tk
      00.00.0000 00:00

      поставить фон. без фона, да, крипово. паузы между словами, даже минимальные делают своё дело. убрать тишину и сойдет. ребенку.


      1. Extender Автор
        00.00.0000 00:00

        Да, фоновую музыку добавлю сегодня-завтра. Надеюсь это не вызовет проблем с авторскими правами


        1. savostin
          00.00.0000 00:00

          Генерите музыку AI ;)


          1. Extender Автор
            00.00.0000 00:00

            Эм, а такие модели есть?? Киньте ссылку ???? Я пока хотел просто микшировать через sox какую то нормальную человеческую музыку


            1. savostin
              00.00.0000 00:00

              На счет моделей не в курсе, я далек от AI. Сервисы есть.


      1. rombell
        00.00.0000 00:00
        +2

        Извините, я бы не рискнул портить ребёнку голову вот таким. Это взрослому сформировавшемуся человеку можно, стиснув зубы, если жизнь заставила, послушать. Формирующемуся ребёнку — не стоит.


        1. Extender Автор
          00.00.0000 00:00

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


          1. rombell
            00.00.0000 00:00
            +1

            яж написал — слушать ЭТО невозможно. Врёт с интонациями, врёт с ударениями, врёт с ритмом.
            Что до текста — я бы тоже поостерёгся, но в данном случае это уже второй уровень опасности.
            Что до рук — издревле в детских книжках полно четырёхпалых, не проблема. Визуально мы видим вокруг норму пальцев постоянно.
            А вот с нынешним дефицитом живого общения испортить маленькому человеку речь кривой начиткой — запросто


    1. Extender Автор
      00.00.0000 00:00

      Согласен, русский синтезатор не идеален - это всего лишь WaveNet. Можно расставить ударения. Хотя голос B как по мне самый нормальный из всех. А вот в английском и других языках доступны Studio и Neural2 голоса - это просто песня!


  1. savostin
    00.00.0000 00:00

    У меня в качестве эксперимента такое получилось.


    1. Extender Автор
      00.00.0000 00:00

      А вы все руками делали? Сколько времени ушло?


      1. savostin
        00.00.0000 00:00

        Там в описании список сервисов, я только свел все в видео, впрочем можно было и это в ffmpeg сделать. Часик.