Мультимодальный telegram-бот, который я недавно сделал, получил оглушительный успех ???? Я был удивлен, сколько людей воспользовались им и форкнули/лайкнули на гитхабе. Но захотелось чего-то большего.
Я решил создать сервис, где люди могут создавать свои собственные комиксы, сказки, да и вообще любые истории. Желательно одним нажатием кнопки.
Моя идея заключалась в том, чтобы создать программу, которая бы могла генерировать истории на основе небольшого числа параметров. Это был язык, затравка для генерации текста, визуальный сеттинг, и т.д. Я знал, что для этого мне нужно использовать GPT-4, какое то API для картинок, переводчик, и синтезатор речи. После быстрой проверки, оказалось что все это доступно и не так уж дорого!
В голове родилась следующая картинка:
На реализацию ушло чуть меньше двух недель. Но прошу не судить слишком строго - ведь я в одном лице разработчик 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)
rombell
00.00.0000 00:00Не, извините, слушать ЭТО невозможно. Врёт с интонациями, врёт с ударениями, врёт с ритмом.
o5tk
00.00.0000 00:00поставить фон. без фона, да, крипово. паузы между словами, даже минимальные делают своё дело. убрать тишину и сойдет. ребенку.
Extender Автор
00.00.0000 00:00Да, фоновую музыку добавлю сегодня-завтра. Надеюсь это не вызовет проблем с авторскими правами
rombell
00.00.0000 00:00+2Извините, я бы не рискнул портить ребёнку голову вот таким. Это взрослому сформировавшемуся человеку можно, стиснув зубы, если жизнь заставила, послушать. Формирующемуся ребёнку — не стоит.
Extender Автор
00.00.0000 00:00На самом деле качество это интересный вопрос. А что все таки больше смущает/вызывает вопросы- сам текст, пальцы/картинки или русская озвучка? Я в целом ожидаю быстрого прогресса по всем трем этим направлениям. Текст лучше с GPT-4, картинки лучше в Midjourney, озвучка лучше для мейнстрим языков.
rombell
00.00.0000 00:00+1яж написал — слушать ЭТО невозможно. Врёт с интонациями, врёт с ударениями, врёт с ритмом.
Что до текста — я бы тоже поостерёгся, но в данном случае это уже второй уровень опасности.
Что до рук — издревле в детских книжках полно четырёхпалых, не проблема. Визуально мы видим вокруг норму пальцев постоянно.
А вот с нынешним дефицитом живого общения испортить маленькому человеку речь кривой начиткой — запросто
Extender Автор
00.00.0000 00:00Согласен, русский синтезатор не идеален - это всего лишь WaveNet. Можно расставить ударения. Хотя голос B как по мне самый нормальный из всех. А вот в английском и других языках доступны Studio и Neural2 голоса - это просто песня!
sergeyns
Сколько там пальцев на руке у богатыря на первом плане на КДПВ? 6 или7? И еще какие-то странные )))
Extender Автор
Ну, согласен с пальцами беда ???? но они не так уж часто лезут в кадр) и вообще, всегда же можно перерисовать слайд!
IvanPetrof
Откуда мы знаем как на самом деле выглядели богатыри и сколько у них было пальцев? Никого же не удивляют змей горыныч о трёх головах, изба на курьих ногах и кащей со смертью в яйце?
пальцы - мелочь))