TGViewer
Channel Public Channel
m-danya's blog

m-danya's blog

@m_danya_blog

🚀 Блог Python-разработчика с тягой к pet-проектам и разным хобби. Закончил ВМК МГУ

See also: @cheese_sauce_dj

Лс: @m_danya_jpg
Subscribers
405
Photos
38
Videos
7
Links
43
Recent Posts 17 shown
Post #80 274

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 🔥 16
  • 👏 3
  • ❤‍🔥 1
  • ❤ 1
  • 😍 1
Post #79 459
Едем в Лондон. С помощью ИИ сделали себе гайд по посещению достопримечательностей на каждый день.

Ушло где-то 15 часов, чтобы с ChatGPT создать продуманный гайд с учётом всех наших вводных, реально посмотреть всё, что он накидал и оценить, как оно вообще будет в реальности. Промпт очень важен: чем больше деталей ему дашь и чем больше попросишь конкретных штук учесть, тем больше получишь полезной информации. Сложил все отредактированные куски по дням в один markdown-файл.

Дальше с кодексом накидал скрипт, который конвертирует этот текстовый markdown-файл в пдфку для двусторонней печати на А4, которая сшивается в А5-буклет, причем страницы разложены в правильном порядке (называется брошюрный спуск). Красота!

P.S. Скамейка на углу Beckton и Barkin в финальную программу не вошла
  • 🔥 17
  • ❤ 5
  • 😁 3
  • 👍 2
  • 👏 1
Post #78 686
Книги теперь всегда в моём кармане! (обзор XTEINK X4)

Пробую новый минималистичный формат: снял двухминутный обзор на крохотную электронную книгу

▶️ Смотреть тут: https://youtu.be/AUNQnF7clZY
  • 🔥 4
  • 😎 3
  • ❤‍🔥 2
  • 👍 2
Post #77 773
Ощущение удволетворения от возни с локальными ИИ-моделями

У меня есть подписка на Codex. Рабочие задачи я выполняю именно с ним. SOTA-модель огромного размера может сделать почти что угодно в программировании, только успевай придумывать запросы и ревьюить (если это, конечно, не вайбкодинг 🤪).

Но т.к. у меня есть неплохая видеокарта, я время от времени гоняю локально открытые модельки вроде квантованного Qwen-3.6-27B (вообще-то я и на работе занимаюсь проектами, которые основаны на использовании локальных LLMок, но щас не про это).

Так вот, меня прям тянет придумать какое-то полезное применение локальных LLMок для решения своих повседневных задач. Одна из таких задумок превратилась в почти готовый совместный проект с @evpetrovich_tech, но мы в итоге забили. Для любой загруженной пользователем книги сервис бы для каждой главы подсвечивал интересные моменты, над которыми можно поразмышлять, + добавлял чуточку своей slop-рефлексии на эту тему (без спойлеров к другим главам). В итоге мы с Женей забили, потому что показалось, что никому это особо не интересно как продукт, но сам я точно буду продолжать пользоваться такой штукой для нонфикшн-книг.

Ещё я пробую свежие модельки в кодинге. Я даю моделькам игрушечные задания и смотрю, как у них идут дела. Естественно, по сравнению с GPT 5.5, дела обычно идут средненько и не очень быстро, потому что хорошие модели полностью не влезают мне в видеопамять, и часть весов / kv cache загружаются в оперативку. Можно взять модельку поменьше, тогда будет быстро, но дела будут идти ещё хуже! 😁

А делаю я это всё, потому что я получаю какое-то интересное гиковское удволетворение от того, что я буквально перед собой вижу устройство, которое само пишет код и имитирует бурную деятельность, чета там рассуждает, пробует запускать, смотрит на ошибки, правит код, и т.д. Это всё работает ЛОКАЛЬНО!!! Жужжит вентилятор, потому что видеокарточка трудится!! Та самая, которую придумали для рендеринга графики в играх! И реально можно получить какую-то пользу от этого уже сейчас!

В общем, локальные модельки иногда смешно себя ведут по сравнению с монструозной GPT 5.5, но я радуюсь каждому их успеху, просто потому что это приятное гиковое ощущение 😌

Ещё я недавно делал пак для SIGame для проведения в кругу друзей (набор вопросов для викторины "Своей Игры"), и с помощью ACE-Step-1.5 генерировал смешно переведённые "русские версии" известных англоязычных треков, вышло весело. На моей видеокарте модель генерировала трехминутные треки за 20 секунд, я опять же получал какой-то лютое удовлетворение от этого жужжания вентиляторов и осознания того, насколько быстро развиваются техологии. Для такого формата "just for fun" локальная модель подошла отлично, для музыкальных экспериментов лучше брать Suno, конечно, но её я пока что не пробовал.

Ну а про использование нескольких разных локальных моделей для создания полноценного ИИ-караоке я недавно писал тут, пока что это самое удачное применение локальных моделек.

Если вы используете локальные модельки, то для чего? 🧐
  • ❤ 8
  • 🔥 6
  • ⚡ 5
  • ❤‍🔥 1
Post #73 855
Сделали с женой дополнение для настольной игры с помощью ChatGPT и Codex ☺️

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

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

Результат можно посмотреть на видосе 👆
Делалось это всё итеративно, Но для удобства изложения я опишу всё по порядку. Поехали! 🍿

1) Генерация идей для карточек

С помощью ChatGPT Pro мы сгенерировали около 500 идей для карточек. Это существенное упрощение работы, потому что самим придумать много креативных идей типа "гранат-глобус" и "цапля-циркуль" достаточно тяжело, проще выбирать из сгенерированных.

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

Ещё объекты не должны повторяться, иначе играть особо не получится (это следует из правил игры), поэтому мы за один запрос генерили сразу все идеи пачкой + потом фильтровали вручную.

2) Генерация самих картинок

ChatGPT умеет генерировать сразу по 10 картинок за раз, что вполне удобно. Даём ему промпт с подробным описанием стиля картинок и закидываем идеи пачками по 10 описаний (как же мне тут пригодилось знание vim с его командами типа "d10d" для вырезания 10 строчек сразу в буфер обмена). Можно параллельно в нескольких вкладках это делать, кстати.

3) Ручной фильтр


Из ~500 картинок мы оставили 112 хороших идей. Из них половину пришлось перегенерировать, чтобы убрать нейро-странности, см первую картинку 👆. Сколько же нейрослопа мы отфильтровали на этом шаге.. 😱

4) Формирование pdf для распечатки

На этом шаге у нас уже есть 112 png-шек с изображениями на белом фоне, и из них надо сделать pdf, в котором на А4 они будут разложены как карточки нужного размера с нужными отступами.

Как же приятно, что сейчас это решается за один промпт. Я попросил Codex написать скрипт, который возьмет папку с картинками, добавит 5% белого фона по краям, сделает скругленную прямоугольную рамку везде одинаковую, расположит оптимальное количество карточек на A4-листе. Я указал ему, что карточки должны быть 7 на 7 сантиметров, а поля принтера около 0.5 см.

Никак не могу привыкнуть к этому ощущению суперсилы, которая появляется при использовании ИИ для вещей, которые раньше делал бы вручную 🏄

5) Коробка для карточек

Вообще, это "дополнение" мы делали как совместный подарок на день рождения, поэтому мы заодно решили сделать и красивую коробку. Тут было много возни.

Если просто попросить ChatGPT сгенерировать раскройку, он выдаст слоп как на картинке 2 😁 (достаточно очевидно, но мы проверили)

Финальное решение выглядит так: я сделал пустую раскройку в онлайн-генераторе, перевёл её в ЧБ, чтобы не было розовых линий на коробке, и попросил ChatGPT поверх наложить одну из картинок-карточек. Ооочень долго я в разных чатах пытался убедить его правильно расположить элементы картинки, чтобы при этом он не испортил пропорции оригинальной раскройки. Но в большинстве чатов он настойчиво менял раскройку так, как ему было удобнее :)

На глаз этого не видно, я проверял в фотошопе наложением получившейся картинки с полупрозрачностью на оригинальный контур (см. последнюю картинку 👆). После 20-30 итераций у меня получился ПОЧТИ правильный вариант! Я психанул и доделал чуть-чуть в фотошопе уже..

6) Печать и сборка

На Авито набор таких карточек предлагают напечатать где-то за ~2500 рублей. Мне повезло, что у меня есть друг Егор, который на своём цветном принтере на уплотнённой бумаге уже печатал карточки для своей DnD-кампании, и здесь он нас выручил. Получились "картоновые" карточки, как я сказал в видео!

UPD: проверили карточки в игре, все круто 😎
  • 🔥 25
  • 👏 4
  • 🤯 4
  • ❤ 3
  • 👍 2
  • ❤‍🔥 1
Post #72 945
Сделал AI-караоке, которое работает с ЛЮБОЙ песней!

Давние подписчики могут помнить, что 2 года назад я уже пробовал сделать свою караоке-систему, которая будет с помощью нейросетей будет делать из mp3 настоящий караоке-режим. Но в ней не хватало одного компонента, который делает систему полноценной и удобной — хромало сопоставление слов по времени. Там была только ручная разметка, то есть надо было кликать мышкой после конца каждой строчки. Это жутко неудобно, поэтому я забросил проект. Автоматизировать не удавалось — работало плохо.

В этом году я со свежими силами решил попробовать ещё раз. Поискал и нашёл пару удачных готовых решений. Во-первых, модели для расщепления mp3 на вокальные и инструментальные дорожки стали лучше на порядок (!!!). Во-вторых, я нашёл решение для автоматического сопоставления слов по времени! Работает почти всегда правильно!

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

▶️ Смотреть тут: https://youtu.be/-nD3SonIOUs

Ролик идёт 5 минут, советую досмотреть до конца, последние полторы минуты — самые драйвовые, спойлерить не буду 🫥 🤟

👩‍💻 Репозиторий: https://github.com/m-danya/ai-karaoke (если кто попробует — пишите, интересно!)
  • 🔥 15
  • ❤‍🔥 6
  • 👍 1
  • 😎 1
Post #71 849
Могут ли корпорации делать удобный софт?

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

Зацените разницу, аккаунты одни и те же привязаны

🌚 Одна из этих программ:

- опенсорсная и полностью бесплатная

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

- позволяет менять порядок приложений перетаскиванием (ну очевидная же фича!)

🌝 Другая же программа:

- разрабатывается самой классной и технологичной компанией с самыми отлаженными процессами

- имеет больше миллиона пользователей

- не имеет НИЧЕГО из того что написано выше, то есть буквально ничего нельзя настроить, даже поменять порядок приложений! Вот в каком порядке добавлял, в таком и ищи потом!

- и, наконец, то, что меня повергло в шок просто после очередного обновления:

🥁🥁🥁 показывает список приложений в окошке в размером 200 пикселей (см картинку). Он не увеличивается и не открывается на полный экран. Сиди и мотай до нужного приложения.. 🌚

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

💬 Расскажите непонятливому мне в комментариях:

1) Как так получилось, что в такой зрелой и технологичной компании могли выкатить такую неудачную версию продукта? (это подтверждают многочисленные негативные отзывы в Google Play). Неужели в этом не были задействованы UI/UX дизайнеры, тестировщики, продакт менеджеры? Dogfooding, в конце концов.. Может, масштабируемые и прозрачные процессы как-то не так устроены? Или в чём прикол, я реально не выкупаю..

2) Почему в принципе большие компании в своих приложениях никогда не делают много вариантов кастомизации поведения приложения? Ведь часто некоторые варианты кастомизации можно сделать за один день и стоимость поддержки околонулевая 🤔

летсгоууу ⬇️
  • 🔥 7
  • 👍 5
  • 😁 3
  • 🙏 3
Post #70 943
"У нас есть Netflix дома!" Опыт двух лет использования Emby

За эти два года использования Emby я много кому успел рассказать про мой сетап. Но всё это время я мечтал снять полноценный ролик, где будет иллюстрированный рассказ про всё это, и вот он готов! 🎉

Попробовал сделать видео достаточно развлекательным, добавив кучу дополнительных видео и схем. Даже эффектов всяких добавил :)

Как и ожидал, съемка и монтаж 7-минутного ролика заняли несколько дней. Но это того стоило, я доволен 😌

Смотреть тут: ▶️ https://youtu.be/06EbX_8GSno или 🌐 в комментариях файлом
  • ⚡ 7
  • 🔥 4
  • ❤ 2
  • 🤩 1
Post #69 769
  • 🤯 9
  • 🔥 3
  • 🌭 1
  • 🍌 1
  • 🤝 1
Post #68 965
m-danya's blog Почему каждому человеку нужен менеджер паролей, и как его настроить Правильно ли вы обращаетесь с паролями? Спойлер — скорее всего нет, но это легко исправить. https://m-danya.ru/password-manager/
Почему каждому нужен менеджер паролей: видео-версия

Экспериментирую с форматом 👀

Вдохновился каналом johenews, из видео которого я почерпнул много интересного.

Смотреть тут: ▶️ https://youtu.be/yhRkrAM9NA8 или 🌐 в комментариях файл лежит

Кто посмотрит, напишите, пожалуйста, в комментариях, как вам такой формат по сравнению с текстом. Делать его сильно дольше, но вроде прикольно выглядит
  • 🔥 13
  • ❤ 4
  • ❤‍🔥 3
  • 🤩 2
  • 👍 1
Post #67 922
m-danya's blog Внеочередная реклама skolkoskinut.ru :)
СколькоСкинуть скоро исполнится 5 лет: статистика

Наш с другом сайт skolkoskinut.ru за последний год собрал 2500+ уникальных посетителей и почти 6000 за всё время! ВАУ! 🥺

Спустя 5 лет наш сайт наконец-то можно найти через поиск Яндекса!!!! Причём не только по запросу "сколько скинуть", чего мы, кстати, очень долго ждали, а теперь и по всяким рандомным запросам:

- калькулятор кто сколько должен скинуть денег

- программа для подсчета денег среди друзей

- по сколько скидываемся и кому

- 353₽ на 29 человек если скинуться сколько будет

- два друга хотят скинуться до 2000 тысяч1-даёт 1500. а второй отлаёт 1000 потом,сколько должнв быть сдача.

- 198 детей скинули 250 р сколько денег?

- калькулятор общака 😳

За последний год поисковые системы дали нам 28% трафика. Остальной трафик — это сарафанное радио. Когда один человек создаёт проект и кидает его друзьям, они, естественно, заходят на сайт. А потом и сами начинают использовать его в других компаниях. Прикольно. Посмотрим, сколько будет пользователей ещё через 5 лет — будет ли экспоненциальный рост 🦊

Обновил главную страницу и добавил донаты по СБП: https://skolkoskinut.ru

Спасибо всем, кто пользуется! 😳
  • 🔥 17
  • ❤‍🔥 4
  • 🍾 4
  • 🎉 2
  • 😍 1
  • 🤝 1
Post #66 749
m-danya's blog GTD: Идеальная система таск-менеджмента Я живу по этой системе планирования уже два года. Она очень сильно изменила мою жизнь: сделала её (в меру!) организованной и помогла добиться некоторых целей. GTD – это способ перенести все свои желания, идеи, дела…
Я много раз упоминал GTD этом блоге. Это система управления делами, которая много раз помогала мне организовать свою жизнь и правильно распоряжаться временем, осознанно выделять его на сто́ящие вещи.

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

Я несколько раз пересобирал систему. Первый раз она прожила у меня 2+ года (без перерывов), потом было несколько отрезков по несколько месяцев. На данный момент у меня из всей системы рабочим остался только календарь и заметки, то есть самые полезные части системы развалились из-за того, что не уделяю системе времени (буквально можно найти задачи, неактуальные с 2023 года). В общем, самые полезные части системы работают только при ведении системы в долгосрок.

Решил сделать публичное завещание обещание (public commitment):

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


По идее, это не так сложно и будет занимать 10-30 минут в день. Посмотрим, удастся ли мне обратно встать на рельсы продуктивности😏

Если интересно, в этом посте есть всё, чтобы начать. Присоединяйтесь 💪🏻☃️
  • ✍ 12
  • 🔥 4
  • ⚡ 1
  • ❤‍🔥 1
Post #65 707
m-danya's blog Хроники вайб-кодинга: скрипт для 3D моделей Я тут пробую в качестве хобби делать игрушки на Godot, и, естественно, я хочу использовать готовые 3д-модельки. Оказалось, что чтобы импортировать в игровой движок готовую бесплатную модельку с анимациями, приходится…
Первая игра на Godot: итоги

https://youtu.be/Zxv-F_1KTTI

Записал видео, где рассказываю про свою первую игру на Godot, а также немного размышляю про этот эксперимент в целом (геймдев как хобби)
  • 🔥 7
  • 🎉 5
  • 👏 3
  • 🤪 3
  • 👍 2
Post #64 774
Я научился пользоваться зарядками

Я всегда боялся заряжать наушники, читалку и прочую мелочь с помощью мощной 66W Ultra-Mega Fast Speed Giga-Charging зарядки от телефона. Я думал: раз у зарядки куча ватт, а наушникам надо совсем чуть-чуть мощности, то их аккумулятор от перенагрузки будет деградировать. Поэтому всякую мелочь я всегда заряжал от USB-порта компьютера, а телефон никогда не рисковал заряжать зарядкой от ноутбука, чтобы не угробить аккумулятор телефона.

Все эти опасения были напрасны: современные зарядки работают со стандартом USB Power Delivery, который позволяет устройству и зарядке договориться о нужном напряжении и токе. И поэтому от хорошей зарядки можно заряжать всё что угодно! (вопрос только с какой скоростью)

Я собираюсь в путешествие и решил разобраться в этом, чтобы взять с собой только нужные провода. В итоге для того, чтобы заряжать телефон, ноутбук, Steam Deck, Kindle Scribe и наушники мне хватит одной зарядки от моего телефона. Если бы я не разобрался с этим, то по старой привычке захватил бы с собой ещё зарядку от стимдека и зарядку от ноута. Круто же!

Разберём подробнее на примере моей зарядки от телефона. Но сначала... внимание, ФОРМУЛА!

W = V * A
(ватты = вольты * амперы)
(мощность = напряжение * сила тока)

На моей зарядке написаны возможные режимы работы:

🩵5.0V ⎓ 3.0A (15W)
🩵9.0V ⎓ 3.0A (27W)
🩵15.0V ⎓ 3.0A (45W)
🩵20.0V ⎓ 3.25A (65W max)

Первый режим даёт напряжение в 5V и силу тока до (!) трёх ампер. Это подходит абсолютно для любой мелочёвки. Например, я загуглил, что для моих наушников параметры зарядки кейса — "5V/2A". Именно в 5V/2A зарядка и будет работать, потому что сила тока определятся потребностью девайса и 3A зарядка насильно давать не будет.

Третий режим (15.0V ⎓ 3.0A, 45W) идеально подходит для моего Steam Deck. На оригинальной зарядке как раз и написано "15V/3A". Ноль сомнений!

В общем, поеду налегке с одной зарядкой для всего сразу! Да, ноутбук будет заряжаться медленней, чем от оригинальной зарядки (т.к. он получит 45W вместо 100W), но т.к. я не планирую его использовать во время зарядки, в этом ничего страшного нет.

Другой пример: раньше я боялся заряжать телефон от зарядки для ноутбука, потому что она "слишком мощная" (на ней крупными буквами написано 100W). Оказывается, надо было просто прочитать и мелкий шрифт на другой стороне. Там тоже есть куча режимов, включая 5.0V ⎓ 3.0A (15W), так что и наушники ей можно тоже спокойно заряжать. Но возьму с собой я всё-таки зарядку от телефона, т.к. только от неё мой телефон сможет заряжаться с максимальной скоростью, а ноутбук мне скорее на всякий случай.

Слава тайп-си и стандартизации! 🎉
А ещё войс-моду ChatGPT, который помог мне во всём этом разобраться, и который теперь работает и из браузера, а не только из приложения. Вся информация выше является чистой галлюцинацией и я сжёг аккумуляторы всех своих устройств. Лан, я всё перепроверил в гугле
  • ⚡ 19
  • 🔥 11
  • 👍 6
  • ✍ 1
Post #63 742
Хроники вайб-кодинга: скрипт для 3D моделей

Я тут пробую в качестве хобби делать игрушки на Godot, и, естественно, я хочу использовать готовые 3д-модельки. Оказалось, что чтобы импортировать в игровой движок готовую бесплатную модельку с анимациями, приходится немного пострадать из-за форматов в 3д-графике и, наверное, небольшого mass adoption у Godot.

Есть такой полностью бесплатный сайт — Mixamo (его купил Adobe и сделал полностью бесплатным, ничего себе, как бывает, корпорации могут и хорошие вещи делать 😱). Там есть около 100 моделек персонажей и ~2к анимаций. Отдельно выбираешь персонажа и анимации, скачиваешь, они твои!

Но чтобы импортировать эту модель и правильно связать её с анимациями в Godot, мне пришлось нормально так попотеть. Я пробовал повторять за несколькими ютуб-роликами, где описывают, как это можно сделать с помощью программы для 3д-моделирования Blender. У меня не получилось сделать это ни по одному из гайдов, всё время на каком-то этапе что-то отваливалось и до Godot моделька с анимациями в итоге не доходила живой.

В процессе я наткнулся на веб-тулзу, которая делает почти то, что нужно: загружаешь файл моделки и файлы анимации — получаешь один комбинированный файл в формате движка. Проект написан на JavaScript (!!!) с использованием библиотеки для работы с 3д-объектами Three.js.

Почти заработало, проблема была только в том, что мой персонаж становился то ли черным, то ли древесным. Тулза опенсорсная, но она больше не поддерживается, поэтому для некоторых моделей она тупо не работает. Форков и pull request’ов с фиксом тоже не нашлось. Я посмотрел на код. Он не такой страшный, но я понял, что разбираться с 3D-объектами в джаваскрипте я вообще не хочу, и вряд ли я смогу что-то пофиксить там. Вообще-то я тут игру по фану собирался делать, а не баги искать!

Я отдал в ChatGPT ссылку на репозиторий и попросил переписать это в виде простого питон-скрипта.

Он выдал полностью рабочий скрипт! Спустя 3 вечера мучений моя задача по импорту анимированной модельки была решена!!!

Он использовал библиотеку bpy для работы с Blender и по сути кодом написал всё то, что показывают на ютубах.

Я так обрадовался, что выложил скрипт на гитхаб и записал пятиминутное видео на английском на ютуб. Мне кажется, это реально может кому-то помочь, так что я супердоволен. Ещё и могу продолжать делать игру! 🥳

P.S. Запись видео на английском — отличная практика против перфекционизма

P.P.S. Чувствую себя индусом, который только что записал на ютуб видео с решением суперспецифичной проблемы
  • 🔥 14
  • 😎 5
  • 🎉 3
  • ⚡ 1
  • ❤ 1
  • 🤯 1
Post #61 868
Приручаем Алису: голосовой ассистент без прослушки (2/2)

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

Небольшое лирическое отступление про то, как я дошел до решения. Я писал в блоге про ☘️Planty — мой самописный клон Todoist. Фронтенд там местами хромает, поэтому я так и не пересел на него полноценно. Но зато мы с женой используем его для общего списка "что надо купить в магазине" — очень удобно.

Я подумал, что было бы круто голосом добавлять продукты в этот список, чтобы не лезть лишний раз в телефон. Я снова подумал про самодельного голосового ассистента. У меня уже есть устройство, где есть микрофон, динамик, Linux и немного оперативной памяти — это старый ноутбук, на котором у меня крутится медиасервер Emby (кстати, надо будет написать пост про него). Можно на питоне написать скрипт, который будет в бесконечном цикле слушать микрофон локальной моделькой для распознавания речи, понимать команды типа "добавь продукт такой-то" и выполнять их. Для добавления задачи в Planty я могу отправить соответствующий запрос на бэкенд.

Естественно, я отдал эту задачу ChatGPT 5. В целом, всё завелось с первого раза. Пришлось подебажить, чтобы всё заработало как надо. Для озвучки голоса он использовал pyttsx3+espeak-ng. Вроде работало, но с каким-то странным акцентом. Оказалось, что код, написанный ChatGPT, выбирал белорусский язык, потому что он циклом перебирал доступные языки и брал первый, где есть подстрока "russian" 😁

Качество синтеза речи меня всё равно не устроило: он просто разбивает слова на слоги и склеивает соответствующие аудиофайлы. Звучит не очень, в общем. Я поменял этот TTS-движок на современную модельку от silero, т.к. я видел их прикольный телеграм-бот для генерации кружков/голосовых голосами героев из Warcraft 3. В опенсорсе доступны несколько стандарьных голосов, звучит очень даже неплохо!

Для распознавания речи используется 50-мегабайтная моделька vosk-model-small-ru-0.22, она справляется средненько, часто путает слова, самый странный пример был такой: томатная паста ≈ бумажная база. Более крутая модель требует больше памяти и не влезла в 4 Гб ОЗУ ноута. В целом, и с маленькой моделью норм, если привыкнуть говорить разборчиво. Спойлер: при обращении к Алисе локальная модель вообще не используется, см кружок выше.

Итак, я реализовал голосовые команды "ассистент купить <название_продукта>" и "ассистент список". Задача с голосовым управлением Planty выполнена 😎

И тут я почувствовал, что способ прикрутить Алису где-то рядом.. Осталось совсем чуть-чуть...

API для голосового взаимодействия с Алисой не существует (кстати, у OpenAI недавно появился gpt-realtime, можно будет его тоже прикрутить потом). Колонки "Яндекс.Станция" у меня нет, а если бы была, то все равно сложно придумать что-то лучше костыля с fingerbot (см первую часть поста).

Итак, решение, которое наконец-то пришло мне в голову – по команде "ассистент алиса" открывать с помощью библиотеки Selenium сайт https://alice.yandex.ru и нажимать на фиолетовую кнопку для активации голосового режима 🎮

При правильных настройках работает с погасшим экраном и с закрытым ноутбуком.

После того как диалог с Алисой закончен, мой скрипт закрывает эту вкладку браузера. Это происходит по команде или по таймауту в 2 минуты. Алиса, кстати, очень болтливая. Это, с одной стороны, прикольно, а с другой – ее невозможно заткнуть и приходится ждать таймаута, который ее вырубит. Перекрикивать ее не получается. Можно сделать динамический таймаут или научиться распознавать хлопки. Но в целом и так пойдёт, особенно если просить ее отвечать кратко😏

Оставлю еще раз ссылку на кружок с демонстрацией примера того, как выглядит использование получившегося ассистента. На полу там лежит закрытый ноутбук с запущенным systemd-сервисом, представляющим собой описанный выше питон-скрипт. Кра-со-та 😐
  • 🔥 7
  • 🤯 5
  • ❤‍🔥 2
  • 👍 1
  • 👏 1
Older posts →

About this channel

How can I read @m_danya_blog without a Telegram account?
TGViewer shows the public web preview Telegram publishes for m-danya's blog: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does m-danya's blog have?
m-danya's blog (@m_danya_blog) has 405 subscribers on Telegram, refreshed roughly every 30 minutes.
Does m-danya's blog know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →