Два года назад я решил написать свою голосовую платформу. Кажется много увлекся
Всем привет!
На Пикабу я давно. Раньше что-то сюда писал, комментировал, да и в целом довольно активный пользователь.
И сегодня хочу рассказать вам одну историю. Скорее всего, личную, хотя она уже, наверное, как год назад вышла за рамки личной.
Началось всё в 2024 году.
В конце года меня, как и многих, ошарашила новость о блокировке Дискорда. Да, для многих из нас это был второй дом, и все впали в небольшую депрессию. В целом штука штатная, и все начали думать, как бы это дело разрулить.
А я человек такой - постоянно бросаю себе вызовы. Чего-то не хватает? Блин, ну возьми и скачай! Да зачем?! Я сам сделаю! Своё! День-два посидел, потыркался, сделал, пользуюсь довольный. У меня всегда так. Люблю я изобретать велосипеды, в хорошем смысле этого слова.
Ну так вот, сидели мы с друзьями в Телемосте и обсуждали, как быть дальше. А я, как всегда, в свойственной мне манере:
— ДОКОЛЕ! Сделаем свой, и дело с концом!
Друзья поржали, а я в тот день не смог уснуть.
В целом для меня, как для разработчика, не составляет особого труда продумать архитектуру, развернуть сервачок, накатить Docker, собрать образы и что-нибудь наклепать на коленке.
Пошёл к друзьям-айтишникам за помощью. Посоветовали решения, я вроде бы врубился и за пару дней накатал превью личной комнаты.
Прошу прощения за шакальные скрины, добывал из переписок с друзьями.
Тогда это была просто залепуха без лишнего функционала - чисто собранное на коленке решение. И в целом мы ушли с Телемоста на моё решение.
Уже в тот момент я понял, что мне, блин, супер интересно! Идея не отпускала меня ни на день. Множество мыслей, задумок, вариантов реализации. Прошли праздничные дни, и друзья меня потеряли, потому что я нашёл себе вторую работу.
Раньше вторая работа - это гринд мобов в MMO или PoE, а теперь - гринд строчек в IDE (редакторе для написания кода). Понятное дело, сам я айтишник, тусовка соответствующая, поэтому постепенно подтянулись ещё ребята. В целом двигалось отлично! И все мои друзья постепенно перешли на наш сайт.
Правда, меня постоянно кидало из крайности в крайность. А как у других? А что нужно, чтобы решить проблему шумоподавления?
Ой, про шумоподавление есть отдельная история.
Решил я прикрутить шумоподавление на основе обученной нейросети. Да, работает она круто! Пхахахаха. Но как я её тестировал - это нужно было видеть.
Я прикрутил два аккаунта, расшарил доступ на два компа в локальном девелоп-окружении (в режиме разработчика), потыркал параметры, покрутил пресеты. И вот стою я с беспроводными наушниками на кухне, включаю кран с водой и ору жене:
- Зай! Ну что? Слышно воду?
- Нееее! - доносится в наушниках.
- Шикарно!
Стою дальше, мою посуду и рассказываю ей всякую чушь в ноут ))) Она смеётся, я смеюсь, воду не слышно )) Вот так и настроил шумоподавление )))
Это сейчас, после множества итераций, я понимаю, насколько всё это было смешно и нелепо. Но на тот момент это было единственное решение, прежде чем выкатить функцию в прод.
Потом мы ещё долго сидели с друзьями и тестировали. Кто на воде, кто на пылесосе, кто во время похода в туалет )) В итоге вышло приемлемо.
Особенно мне понравилось, когда ребятки потом хвалили, что в альтернативных решениях были шумы и наводки, а у нас нет.
Пхаха, это было очень приятно!
В итоге из простой гаражной поделки начало вырастать что-то более взрослое, со своими проблемами и обходными путями.
А ещё была забавная история, как мы тестировали трансляции.
Это было ужасно )))
Сидят три тридцатилетних дебила и орут в микрофоны, чтобы понять, не приглушается ли трансляция в браузере.
- АААААА!
- УУУУУ!
- ДАААА!
- МЕЕЕЕ! БЕЕЕЕ!
- АЛЛО! АЛЛО! АЛЛО!
- ДАДАДАДАДАДАДАД!
Пхахахаха!
Блин, эти моменты возникают как флешбэки в моей памяти, пока пишу этот длиннопост.
Самое интересное, что чем больше я погружался в технологии разработки подобных систем, тем больше мне хотелось попробовать что-то новое.
В итоге простой залипушный сайтец для общения небольшой группой людей начал обрастать функционалом. Полезным и не очень.
Проект был некоммерческий, всё за свой счёт, без всякой денежной дичи и клянчания бабок.
Хотя и с инвесторами были разговоры )) Но об этом ниже.
К середине 2025 года портал был хоть и стремный, но рабочий.
Уже можно было создать свой канал, добавить внутри него комнаты, как-то минимально настроить ролевую модель из заранее заготовленных пресетов.
Долгие месяцы поиска красивого дизайна, отбрасывания идей и переделок.
Отдельное удовольствие было в периоды затишья, когда мне было не до проекта и что будет дальше. Я был полностью погружён в работу.
А друзья постоянно писали:
- Проблема со входом!
- Меня выкидывает из комнаты!
- У тебя на портале пользователи-невидимки появились!
В целом приколов было предостаточно. От качества трансляций и большого количества ошибок до совершенно забавных моментов.
В какой-то момент у нас даже родился локальный мем — Мишаня-невидимка.
Этот гений воспроизводил баг, становился невидимым, залетал в комнату и начинал пукать, срекать вполголоса.
А все остальные приседали на очко, пытаясь понять, что это такое, у кого там шумит и кто кряхтит )))
В итоге я пофиксил эту проблему.
И в один прекрасный день залил фикс и говорю:
- Пацаны, Мишаня сейчас зайдёт. Не подаём виду, что он с нами.
Сидим, общаемся.
Заходит Мишаня и в свойственной ему манере начинает пукать и срекать.
А мы минут через десять ему:
- Прекращай, дебил, тебя все видят!
Пхахахаха!
В моменте это было очень прикольно и весело.
Ой, а как я боролся с зависающими трансляциями - это просто пипец.
Я, наверное, недели три потратил только на изучение вопроса с трансляциями в веб-версии.
Это сейчас я могу с уверенностью сказать, что многое осталось в прошлом, и на все эти моменты я смотрю с улыбкой.
И даже с какой-то ностальгией.
Да, тогда стандартная форма, заполненная от балды, приносила какое-то внутреннее блаженство.
Ну прикиньте, на твоём горе-сайте кто-то взял и заполнил профиль о себе!
Понятное дело, что всё это необязательная дичь и нафиг для общения не нужно.
Но оно было. И грело душу )))
Было множество спорных решений, которые приходили в голову и потом отбрасывались.


Страница с друзьями и личными сообщениями, настройки приложения
И в какой-то момент я поймал себя на мысли, что мы с ребятами создаём уже не просто локальный сервис, а продукт, который реально может пригодиться пользователям.
Без необходимости использовать обходные пути, без лагов по связи, с нормальным сервером на территории РФ и гигабитным каналом.
Ой, что я только что вспомнил! Это ужас!
Связала меня жизнь с одним хостером. Это кринж. Имён называть не буду.
Суть в том, что в какой-то момент мы поняли: трансляции лагают. Уже и так, и сяк пробовали. Ничего не помогает. В итоге пишу хостеру. А он мне на полном серьёзе:
- У вас тут это... То самое... Трафик летит бешеный! Вы там чё, обалдели? Мы вам лимиты впаяли!
В итоге возможности быстро уйти не было. И это было одновременно смешно и неприятно. Мы сидели и не могли стримить сразу несколько трансляций. А ведь по вечерам мы любили залипать на чемпионатах по CS. Как только пинг поднимался, все сразу тушили трансляции, смотрели по отдельности и просто сидели в голосовой комнате. Пинг поднялся?
- Оооо, лимиты ввели! Туши трансляцию, пока вообще всё не отвалилось!
В какой-то момент я понял, что одного портала уже недостаточно. Нужно пилить полноценную десктопную версию.
Как вспоминаю - меня в дрожь кидает!
Я начинал её делать раз пять!
И каждый раз начинал, а потом дропал, потому что мне не нравилось, как получилось архитектурно, визуально, как это работало и вообще как всё это жило.
В итоге оно заработало. И в целом результат был!
А какие просторы для творчества открыло настольное приложение?
Да множество!
Например, режим рации, который в браузере нормально не реализовать, потому что браузер не позволяет глобально обрабатывать комбинации клавиш, когда окно не в фокусе.
Оверлей, чтобы видеть друзей прямо в игре. Без всяких обходных штук, за которые могут забанить, - всё исключительно в рамках разрешённых операционной системой возможностей.
Ну и самая главная мечта - шикарные трансляции в FHD (Full HD).
Ноооо...
C++-разработчик из меня такой себе. А именно этот путь я и выбрал.
Ой, какой же я был дурак!
Тут я впервые понял, что не везде можно сделать всё своими силами. Даже если ты упорный как носорог.
Но в итоге я написал!
Да, коряво.
Да, работало через раз.
Но работало!
И грело душу.
Помню, когда я впервые завёз трансляции в десктопную версию, все просто обалдели! Мы перешли от говяного браузерного решения к шикарнейшим трансляциям в FHD и 60 FPS! Потом последовали месяцы усердной стабилизации функционала и исправления багов. Даже сейчас нет-нет да и находятся какие-нибудь ошибки, которые приходится править. Но это уже рутина. Я к ней привык. Помню, как я радовался первому баг-репорту от пользователей!
Их было много!
И каждый я досконально разбирал: смотрел код, делал фиксы, разбирался в разросшейся логике. А иногда просто заходил в голосовые комнаты к пользователям со словами:
- Будьте добры, не соизволите ли вы этим чудным томным вечером показать мне, что у вас не работает?
Да, это было весело.
Особенно когда ты заваливаешься в комнату к совершенно незнакомому человеку и понимаешь, что уже не с друзьями общаешься, а пытаешься решить проблему пользователя на своей собственной платформе.
- Какая у вас ОС? Установлены ли сторонние программные средства? А вот это пробовали?
- Да, да, нет, нет.
Ой, отдельная проблема была вообще...
Суть в том, что Windows 10 у некоторых пользователей гасила звук микрофона при включённом приложении.
Грёбаные виндовые приоритеты...
Пришлось заводить для отдельных пользователей специальный переключатель в настройках.
И так практически со всем.
Казалось бы, починил одну проблему - появляется другая. Потом третья. Потом выясняется, что в каком-нибудь совершенно неожиданном окружении всё работает вообще не так, как ты рассчитывал. Но постепенно я всё-таки вышел на некое плато стабильности. И понял: а было бы круто попробовать как-то двинуть продукт дальше.
Но условия у меня были конкретные.
Я не хочу продавать рекламу. Это дичь!
Я не хочу делать платными внутренние функции портала: количество комнат, количество пользователей в канале, внутренние фишки каналов и так далее.
Я не хочу урезать качество трансляций. Ведь это функция, которая нужна большинству пользователей.
Кто-то вместе смотрит фильмы, кто-то наблюдает, как друзья играют, кто-то проходит квизы, а кто-то даже преподаёт уроки.
Я максимально убежден как в играх так и в продуктах, что система Pay to Win (купи и побеждай) - это полная дичь. Для меня концепция Габена самая крутая. Хочешь зарабатывать? Зарабатывай на тех вещах которые не влияют на геймплей. Как в КС или Доте. Хочешь выделиться, купи скин. А функционал и механика у всех должна быть идентичная.
Да, и такие есть! Пхахаха.
В итоге друг нашёл инвесторов.
Ой, ребят, что это за дичь!
DAU, MAU, FAU, SHAU, FAU!
Я чуть с ума не сошёл, пока готовил презентацию. В итоге диалог сложился примерно такой:
- Ой, ребят, вы крутые! (Да-да, крутые, подумал я про себя). Но в целом чего вы хотите?
- Да чего хочу... Просто хочу заниматься своим любимым делом 24/7!
И вот тут я понял, что сам себе толком не могу ответить на вопрос:
А чего я вообще хочу?
Вроде бы того, чего хотел, я уже добился.
Я создал альтернативу тому, что существует на зарубежном рынке.
И не просто слизал, а написал с нуля!
Своими знаниями, своим опытом.
Как разработчик, как архитектор, как обычный пользователь.
И вот вроде бы можно успокоиться.
Но нет )))
В итоге я сам пользуюсь Emotify не только для общения с друзьями но и для игры со своими детьми. И даже отдельные фишки для них прикрутил. Например, игрового ассистента



Ассистент Моти
Но мне показалось, что неудобно постоянно писать ему руками. Ну а зачем, если можно прикрутить распознавание речи?
Включаешь функцию, задаёшь вопрос голосом, и ассистент сам выводит нужную информацию на экран, при этом, если у тебя включена трансляция он постарается распознать и ответить на вопрос по факту просмотра экрана.
Пример работы ассистента с распознаванием речи (иногда выдает дичь, но ИИ понимает что я срёкнул в микрофон и выдает инфу которую я ищу)
И этим пользуемся мы с детьми )) Но и этого мне показалось мало.
Потом я замутил полезную штуку уже для работы — саммарайзер.
Это функция, которая позволяет после разговора составить краткое изложение того, что обсуждалось.
И вот сижу я сейчас, пишу этот длиннопост и вспоминаю, с чего всё начиналось.
С обычного вечера в Телемосте.
С друзей, которые поржали над моей идеей.
С первой кривой комнаты, собранной на коленке.
С жены, которая слушала, как я мою посуду и тестирую шумоподавление.
С Мишани-невидимки, который пугал народ в голосовых комнатах.
С десятков переделок, багов, трансляций, которые зависали в самый неподходящий момент.
И понимаю, что банальная идея:
«Ребят, да я сделаю место, где нам общаться!»
Превратилась в проект длиной почти в два года.
Спасибо всем, кто дочитал до конца!
Мне действительно стало легче, когда я поделился с вами этой историей.
Это важно для меня!













