Сказ о том, как нейрохомяк пляшет за донаты 🐹

 Публичный пост
13 июня 2026  38

Ахах, нехорошо так начинать, но ничего не могу с собой поделать) Вспоминается видос: «Смотри, шо мужчина в 37 лет может делать». Это втройне смешно, потому что так совпало, что я мужчина и мне как раз 37.

Преамбула

Помнится, это был какой-то холодный январский вечер 2023, когда до меня дошло осознание, что за доселе невиданного зверя выпустила на свет OpenAI и как теперь всё изменится. Я хорошо помню этот вечер, потому что в тот момент передо мной приоткрылась целая вселенная возможностей.

Конечно же, всё не случилось в один день, но в один момент сбылась давняя мечта идиота — я открыл компанию. И не простую, а музыкальную. И назвал её SINGEN SOUND. Забавно, что интуитивно данное название воспринимается как «поющий звук», хотя изначально я закладывал совсем другое: Singularity Generation Sound, а оно вон как получилось. «Поющий звук» так даже лучше. Скажу честно, что к музыке я имею отношение очень опосредованное. Я не знаком с нотной грамотой, не имею особого слуха и голоса, однако к какому-то сочинительству и исполнительству меня тянуло с самых малых лет. В возрасте годков трёх меня магнитом тянуло к пианино. В гостях я мог часами сидеть за клавишами и наигрывать какие-то гипнотические мотивы интуитивного сочинительства. В подростковом возрасте я открыл для себя сэмплирование и с пацанами во дворе сколотил бэнд. И вот мне 37, и у меня нежданно-негаданно появился AI.

Я никогда не мог пожаловаться на отсутствие каких-либо идей: у меня их всегда с избытком. И я начал свой поиск. Поиск способов применения AI-музыки и построения AI-лейбла медиаимперии. Какие-то из идей ещё недостаточно созрели, поэтому оставим их на попозже, ну а сегодня я расскажу вам о проекте музыкальных бродкастов.

Идея

Идея была проста до безобразия. Взять какое-то миловидное животное и заставить его танцевать под мою музыку за донаты. Если энергия есть, животинка пляшет. Если нет, то грустит. Если чьё-то сердце ёкнет и упадёт копеечка, то энергия взмывает на максимум. К слову, заглянем чуть в будущее — этим самым сразу пресеку часто задаваемый вопрос в комментариях. Когда я запустился с первым персонажем и расшарил стрим по друзьям, то только ленивый не спросил меня об одной вещи. В общем, ответ: «Нет». Персонаж сиськи показывать не будет. Будьте покойны.

Ну так вот: начался поиск первого персонажа. И, может, банально, но выбор пал на хомяка. Не спрашивайте почему. Не знаю. Возможно, в своё время перетопал. В общем, не суть. Началась долгая и мучительная генерация. Первые результаты были, на мой взгляд, ужасающими: Midjourney никак не могла поймать мою волну. Другие игроки тоже не справлялись.

Для меня было очень важно, чтобы персонаж получился милым и содержал несколько особенных деталей. Глаза должны были быть особенными. На тот момент мне как раз вспомнилась история нашей миграции из Украины после начала боевых действий в феврале 2022 года. Моему сыну на тот момент было 5 лет, и незадолго до переезда он знатно выносил мне все мозги, потому что фанател по зверькам из Happy Meal. Я колесил по всей Одессе, чтобы собрать полную коллекцию. Ему нравились их особенные стеклянные глаза. Я подумал, что это неплохая отсылка: глаза должны быть с изюминкой. В общем, так родилась щекастая звезда — CheekStar, со звёздочками в глазах. Спасителем стала Gemini, которая сгенерировала то, что в итоге я и оставил.

Анимация

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

Логика подсказывала очевидное: сделать 3D-рендер, засадить хомяку скелет и рулить им, как только вздумается. Чем не план? Однако всё оказалось не так-то просто. Поиск AI-решений привёл к нескольким игрокам (meshy.ai, tripo3d.ai), но результат был плюс-минус одинаковым. Если само формирование 3D-модели ещё куда ни шло, то вот внедрение скелета и воспроизведение движений «плыло», как только могло. Очевидность данного решения резко сместилась в зону невозможности его использования на данный момент времени. Поэтому пришлось слегка пришибиться с небес на землю и искать нечто другое.

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

Больше всех мне сначала зашёл Seedance, ещё самой первой версии. Он делал чистенько, аккуратно, без лишней самодеятельности. Остальные справлялись раз через раз, щедро посыпая результат артефактами. Однако на склейке был обнаружен общий грех, который был почти у всех моделей: они постоянно пытались «улучшить» картинку. «Улучшить» в их понимании — это подкрутить цвета, поменять оттенки, добавить свой маленький художественный почерк, о котором никто не просил. Для обычного видео, может, и ладно. Для зацикленной анимации — туфта редкостная, потому что стыки между клипами начинают «нервничать», выдавая всю кухню с потрохами. В результате, на моих тестах только KlingAI оказался единственной моделью, которая более-менее держала консистентную гамму на первых кадрах. Переходы наконец стали выглядеть плавно. Не идеально, но достаточно, чтобы я впервые за долгое время подумал: «Бинго!»

Радость длилась недолго, ибо нагрянула другая беда. Я почти глазом не моргнул и принял её как родную. Пока хомяк плясал на стандартном фоне, всё выглядело хорошо, но стоило подставить что-нибудь поярче, поживее, подинамичнее — вылез новый сюрприз. Механизм удаления хромакея Keylight 1.2 в After Effects делал хомяка полупрозрачным в некоторых местах. Фон буквально просвечивал. В этот момент захотелось придумать, что, мол, типа это не хомяк, а его призрак, материализовавшийся после мучительной смерти от моих рук. Такое себе получится кладбище домашних животных, подумал я и начал искать решение проблемы. Много чего перепробовал, не буду перечислять, уж поверьте на слово, но финальный результат особо не радовал. Единственное, что хотелось бы отметить, так это AI-решения. Оказалось, что их для удаления фона сейчас как грязи. Казалось бы, выбирай любое и живи счастливо, но нет. На хомяке они тупо не работали как надо, плюс любой экспериментальный рендер на моей машине длился минимум минут 40–50. В результате — либо те же просветы, либо другие чудеса на ровном месте. Возможно, где-то там лежит ключ решения моей проблемы, но из-за отсутствия мощного GPU и нежелания выкидывать дополнительные бабки на облачные инстансы пришлось вернуться к After Effects.


В итоге, как это часто бывает в реальной разработке, выехал я на настоящем таком огроменном костыле! Кладёшь в After Effects два слоя, обработанные через Keylight. Один — более прозрачный, второй — менее, но обрезанный по контуру. Накладываешь одно на другое, немного шаманишь, и получается вполне приличный результат. Хомяк больше не просвечивает. Вот теперь точно: «Бинго!»

В итоге получился следующий пайплайн: сначала генерирую стартовую позу. Она же становится и финальной, чтобы петля сходилась сама в себя. Скармливаю кадры KlingAI и получаю танец в скромных 1280×720. Готовую композицию апскейлю через HitPaw Video Enhancer (оплатил единоразово). Через After Effects проворачиваю тот самый шахер-махер с двумя слоями хомяка для устранения просветов. Далее экспортирую в .mov с альфа-каналом, конвертирую в .webm и на выходе получаю фрагменты, которые можно тасовать в каком угодно порядке. Всё это, ясное дело, скриптами, ибо чокнуться мне пока что рановато. Хомяк танцует, луп не разваливается, глаз не успевает заскучать, а система наконец-то начинает вырисовываться в картину маслом.

Не идеально. Не Pixar. Но для первого рабочего этапа — пойдёт. На этом работа с анимацией достигла своего апогея. По крайней мере, на сейчас. Хомяк ожил. Заплясал. Большего мне, честно говоря, и не надо.

Эй, уважаемый, что за омлет, а где же яйца музыка?

И вправду. Что первичнее: хомяк или то, под что он будет танцевать? Загадка вселенной. Но тут я решил не мудрить. Никаких концептуальных полотен — хомяку нужен не концерт, а саундтрек его маленькой жизни. Фоновая музыка под настроение, разбитая по темам: сегодня диско, завтра рок, послезавтра что-нибудь ещё. Каждая тема — отдельный альбом, отдельная атмосфера, отдельный повод зацепиться за ухо, включить стрим на фоне и забыть выключить.

Как вы уже могли заметить, для меня очень важна осмысленная символика, поэтому название для самого проекта я подбирал особенно тщательно. В итоге остановился на сочетании двух неправильно написанных слов (потому что правильно неинтересно, ну и никнеймы в соцсетях были заняты). Stream Meme превратилось в Streemim, что в принципе в произношении и по-английски, и по-русски выполняет свою задачу.

На сегодняшний день вышло четыре атмосферных альбома: диско (Mirror Ball Season 26https://dplnk.to/SyPLS1e), рок (Promethean Stormhttps://dplnk.to/ZVNm6F6), 8-bit (1 HP LEFThttps://dplnk.to/ErDGFht) и самый свежий, опубликованный на днях, гавайский (Do Not Disturbhttps://dplnk.to/3pT0MSR). И вот тут я сразу хочу осадить скептиков, которые уже потянулись написать комментарии типа «фу, нейронкой нагенерил». Так точно, но не совсем. Разница, как говорится, есть, по крайней мере для меня.


Расскажу, как рождается всё это нейронное звучание на примере одного альбома. Хотел бы я просто «нажать кнопку и получить двенадцать треков — залить и жить себе припеваючи». Но нет. Сначала зарождается концепция. У того же 1 HP LEFT это не просто «сборник 8-bit», а целая история! Одно название чего только стоит, над ним я мучился пару дней, не меньше. 1 HP LEFT — за этим целый эпос, полный приключений и преодоления опасных опасностей, житие на пределе своих возможностей с минимальным остатком. В принципе, описал своё состояние последних нескольких лет) В общем, разумный NPC просыпается запертым внутри старого игрового картриджа и пробивается сквозь уровни собственного существования к своему создателю — чтобы в финале выяснить, что последний босс — это его собственное отражение. Под эту историю я генерирую десятки вариантов каждого трека, отслушиваю, отбраковываю, оставляю только те, что попадают в нерв. А дальше начинается самое мясо — режиссура. Я прогоняю все треки через аудиоанализ: энергия, темп, тональность по колесу Camelot, громкость в LUFS — и выстраиваю порядок не на глазок, а по энергетической кривой. Где разгон, где пик, где провал, где выдох. Алгоритм отсекает резкие скачки темпа и не даёт поставить три минорных трека подряд, чтобы ухо не уставало. Вот за этим я и сижу часами — не чтобы «нагенерить», а чтобы двенадцать треков сложились в дорогу, а не в папку «всякое разное».

Теперь от высокого спустимся к прагматике. Поговорим о том, кто всё это публикует, — про любимый дистрибьютор LANDR. И тут уж простите, я немного поною. У них есть жёсткое правило: не больше двенадцати AI-assisted треков в месяц. Без вариантов. Поэтому на стриме у меня по пятнадцать треков на тему — чтобы за час одно и то же не долбило по ушам, — а в альбом уходит ровно двенадцать. Три лишних я думал раздавать патреонщикам, если это, конечно, вообще кому-то сдалось, но до этого, как водится, руки пока не дошли. Но это, как говорится, полбеды. LANDR наотрез отказывается отдавать AI-assisted релизы на социальные платформы и в системы аудиоотпечатков — ту самую кухню, благодаря которой трек подцепляется в TikTok, Reels и прочих местах. А значит, когда я выкладываю шортс со своим же собственным треком, площадка его не опознаёт, не подтягивает в библиотеку и не даёт другим людям найти музыку прямо из ролика. Тот самый виток, ради которого всё и затевалось, — увидел в шортсе, кликнул, ушёл слушать альбом — просто обрезается на корню. С этой колокольни LANDR был не самым лучшим выбором, поэтому, вероятно, предстоит долгая и мучительная миграция на другого игрока с попыткой перепубликации.

Ну и напоследок — без ложной скромности. Я эти треки слушаю сам. Мне в кайф. Гоняю под рок-альбом за рулём, разгребая бесконечные семейные дела. Под гавайский просто чилю. Закрываю глаза, слышу тёплое море и волны, отдыхаю и ловлю летние вайбы!)

Вариативность — наше всё

Каждый музыкальный пак тащит за собой целый визуальный мир. К нему привязаны свои фоны, и — самое вкусное — премиум-костюмы для самого CheekStar. Диско — это блёстки, зеркальные шары и наряды. Гавайский — пальмы, закаты и цветочные гирлянды. И так по каждой теме: своя атмосфера, свой дресс-код, своя пачка образов, которых уже накопилось не на один десяток.


А дальше в дело вступает геймификация. Премиум-костюмы — это не просто украшательство, а награда: на пике энергии, когда зрители как следует раскачали счётчик, хомяк переодевается в самый цимес. И вот здесь история смыкается с монетизацией — ровно эти премиум-образы со временем и поедут на продажу как NFT. То есть костюм перестаёт быть просто пикселями на хомяке и становится коллекционной вещью, которой можно будет владеть.

Ну а что ж под капотом?

Закулисье, честно говоря, ещё тот тёмный лес. Тут всё далеко не так мило и ванильно.

Админка

Начнём с пульта. Дёргать продакшен хотелось самым удобным образом, поэтому я собрал себе полноценную админку, с которой можно гонять хоть один стрим, хоть десяток. У каждого канала — живой дашборд: переключаю треки на лету, кручу громкость, начисляю «энергию» руками или отдаю на откуп авто-тику, поджигаю эффекты на сцене, шлю зрителям благодарности и одним тычком перезагружаю весь плеер, попутно косясь на графики. Тут же — управление рестримом, тонкая настройка геймификации (пороги энергии, цветовые зоны, премиум-диапазон), донат-ссылки, призывы к действию и целые библиотеки контента: персонажи, анимационные паки, фоны, альбомы и сцены — связки «фон + музыка + анимации», которые я раскидываю по расписанию, какая когда крутится. Фуух...


Плеер

И, конечно же, отдельная трудовая гордость — многофункциональный плеер. Точнее, один движок, который живёт сразу в трёх ипостасях.

Первая — живой плеер для зрителей и стрима. Это Canvas-рендерер в честных 1920×1080, который при этом умеет подстраиваться подо всё на свете: ловит ориентацию экрана, масштабирует сцену под ширину устройства. Один и тот же плеер одинаково бодро крутится и на десктопе, и на телефоне, и внутри OBS как источник. А управляется он вживую из админки по веб-сокетам: сменил трек, тикнул энергией, поджёг эффект, дёрнул перезагрузку — всё прилетает мгновенно. Сверху навешаны оверлеи: виджет Now Playing, который флипается в QR-код, пульсирующая CTA-плашка, бренд-плашка, шкала энергии и лента донатов. Ну и сам маскот со своими паками анимаций (passive / active / premium) поверх видеофонов с бесшовным лупом.

Вторая ипостась — тот же движок, но поставленный на вертикальный рельс: фиксированная сцена 9:16, 1080×1920, под TikTok, Reels, Shorts и иже с ними. Он целиком параметризуется через URL — выбираешь персонажа, набор анимаций, фон, паттерн, число циклов, бренд — и собираешь любую комбинацию вообще без единой строчки нового кода. Заточен он не под зрителя, а под запись и автоматическую нарезку: сцена детерминированная, поэтому стабильно пишется в полноразмерные ролики по темам.

Третья — генератор вариантов, и вот это уже моя личная боль гордость. Он берёт те самые длинные записи и крошит их в короткие клипы под постинг в TikTok, Shorts и Reels. Крошит не абы как: каждым клипом рулит манифест, где для него прописано всё — тип нарезки (full / trim / teaser), с какой секунды стартуем, какой BPM, сколько склеек, сколько эффектов, какой цветовой «лук» (teal / punchy / vintage / dreamy). Зачем такая морока? Потому что на публикации более упрощённых версий уже успел поймать теневой бан, и площадки перестали добровольно рекомендовать контент. Посмотрим, смогу ли из него выйти.

Стриминг

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


Звучит складно — ровно до того момента, как взглянешь на ценник. Сама стриминговая машина + 8–10 терабайт исходящего трафика в месяц. Этого с лихвой хватает, чтобы одним росчерком вычеркнуть всех больших облачных ребят: на AWS и ему подобных только за egress можно смело идти продавать почку) В живых остаются лишь хостеры с безлимитным каналом — Hetzner, Netcup, OVH. Добавьте сюда вторую засаду: одним процессором тут не отделаешься. Нужен GPU, а нормальный сервер с железным кодеком начинает себя окупать только штук от шести-семи параллельных стримов. Так что пока это хождение по мукам: скромная коробка под один поток сейчас и план перепрыгнуть на GPU-сервер.

Параллельно ковыряю задачу посложнее. OBS — штука прекрасная, но в дата-центре, без монитора и в товарных количествах он ведёт себя как капризная примадонна: толком ни в контейнер не упакуешь, ни отмасштабируешь без бубна. Поэтому потихоньку мигрирую в сторону связки headless Chromium + FFmpeg — она компактнее, заворачивается в контейнеры и плодится по стримам без лишних соплей. Дело небыстрое и местами мучительное, но именно так из доморощенного костыля понемногу вырастает что-то похожее на стоящую платформу. В процессе.

Эпилог

На самом деле я могу душнить ещё долго. Рассказывать, например, о всяких приколах, которых со временем меньше не становится: как YouTube начал засыпать стримы страйками за нарушение правил сообщества, а на повторных проверках как ни в чём не бывало возвращать нормальный статус. И так далее, и тому подобное.

Думал я навалять проектик по-быстрому. Пару неделек максимум. О Боже, как же я ошибался… Планов много: новые темы, геймификация, интерактив. В конце концов, может, придётся превращать хомяка в личность, кто знает…

Главное, что вся эта история всё-таки завелась. Я начинал с одного и в процессе пришёл к абсолютно другому. По сути, была изобретена некая платформа для ведения онлайн-стримов с динамическим содержимым. Из этого можно развить абсолютно любой абсурд: игры, гадания, предсказания… Голь на выдумки хитра.

Ну и если кто-то реально знает, как превратить эту историю в источник дохода — дайте знать)

Постскриптум

На самом деле — конечно же, это история про то, во что сублимировать мои внутренние истязания. Streemim и CheekStar — это лишь вершина айсберга среди того, что я делаю и ещё планирую в рамках SINGEN SOUND. Проекты с превращением AI-generated в Original музыку ещё впереди. Не говоря о моих попытках поиграть в Волдеморта и разделить свою душу по альтер-эго исполнителям. Надеюсь, буду жив, не помру и смогу обо всём этом рассказать через какое-то время) Ещё ж работать надо)

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

P.S. Да, и донатить сейчас ничего не надо — стоит авто-чардж, энергия капает сама через какое-то время, хомяк пляшет из чистого энтузиазма)

P.P.S. Какой премиум-хомяк попался именно вам?)

Откомментируйте первым 👇

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб