От идеи до коробки с глазами: как BMO чуть не сгорел
Представьте себе: вы говорите "Привет, Бимо", и зелёная коробочка на столе оживает. Отвечает голосом из Adventure Time, шутит про вашу коллекцию фигурок, которую только что "увидела" через камеру, и предлагает заказать пиццу. Это не сценарий для пилотной серии сериала - это мой проект, который валялся на полке полгода, пока я сдавал сессию.
Сразу предупрежу: если ждёте polished продукт уровня Apple, пролистайте дальше. BMO - это Frankenstein из open-source компонентов, Python-скриптов и термоклея. Но работает. Иногда.
Что внутри этой шумной коробки?
BMO построен на Raspberry Pi 5 8GB - самом мощном одноплатнике, который можно купить за разумные деньги. Почему не Orange Pi с её 176 TOPS? Потому что драйверы. Всегда потому что драйверы. С Raspberry Pi хотя бы понятно, что и где сломается.
| Компонент | Зачем нужен | Стоимость |
|---|---|---|
| Raspberry Pi 5 8GB | Мозги системы | ~80$ |
| USB микрофон | Слушает команды | 15$ |
| USB-камера | Глаза для YOLO11n | 25$ |
| Активный кулер | Чтобы не плавился | 20$ |
| Корпус + светодиоды | Выглядеть как BMO | 40$ |
Итого около 180$ без учёта бессонных ночей. Дешевле, чем последний iPhone, но функциональнее в плане разочарования, когда что-то ломается в 3 AM.
Три мозга вместо одного: как BMO думает
Вот где начинается интересное. BMO использует гибридный подход - потому что запустить полноценную LLM на Raspberry Pi всё ещё больно.
1 Голос в текст: Whisper на стероидах
Для распознавания речи используется локальный Whisper - но не гигантская модель, а tiny версия. Она занимает ~75MB и работает в реальном времени. Точность? Ну, если вы говорите как диктор BBC - 95%. Если как я после трёх чашек кофе - 70%. Но работает офлайн, что главное.
2 Мышление: Mistral или OpenAI - выбирай сам
Здесь архитектура интересная. По умолчанию BMO использует OpenAI API (GPT-4o mini) - потому что это просто работает. Но в настройках можно переключиться на локальную Mistral 7B через Ollama. Разница? GPT отвечает за 0.5 секунды, Mistral - за 5-7 секунд. Зато бесплатно и приватно.
3 Зрение: YOLO11n видит ваши грехи
Самая крутая часть. YOLO11n - это нейросеть для детекции объектов, которая работает на Raspberry Pi 5 со скоростью 15-20 FPS. Она видит: человека, стул, монитор, кружку, телефон. И передаёт эту информацию в промпт для LLM.
Пример диалога:
Вы: "Что передо мной?"
BMO (посмотрев через камеру): "Вижу человека, ноутбук Dell, чёрную кофейную кружку и три книги. Рекомендую убрать кружку от клавиатуры - помню, как в прошлый раз пролили."
Код: красиво в теории, хаос на практике
Весь проект на Python, разбит на модули. Главный файл - bmo_main.py - оркестрирует всё:
- Слушает микрофон в отдельном потоке
- Запускает YOLO в другом потоке
- Отправляет транскрипт + визуальный контекст в LLM
- Синтезирует речь через ElevenLabs или локальный Piper
- Мигает светодиодами в такт речи
Самый частый баг: потоки не синхронизированы. Иногда BMO отвечает на вопрос, который вы задали 30 секунд назад. Иногда начинает говорить о кошке, когда в кадре только стена. Это не фича, это баг. Но выглядит как фича.
С чем сравнивать? С ничем и со всем сразу
BMO - уникальный зверь. Это не Amazon Echo (тот не видит), не AI-монстр на RTX 5090 (тот стоит как подержанная машина), и не простой голосовой ассистент.
Ближайший аналог - проекты вроде офисного R2D2, но там акцент на робототехнику. BMO - стационарный наблюдатель и собеседник.
Кому этот проект подойдёт (а кому нет)
Беритесь, если:
- У вас уже есть Raspberry Pi 5, пылящийся на полке
- Нравится ковыряться в Python и debug-ить race conditions
- Хотите impress-нуть друзей на хакатоне (проект выигрывал локальный хакатон в 2023)
- Ищете основу для более серьёзного проекта с eGPU для Raspberry Pi
Бегите прочь, если:
- Ждёте стабильности уровня коммерческих продуктов
- Не готовы к тому, что в 2 AM BMO начнёт сам с собой спорить о квантовой физике
- Хотите просто "включил и работает"
- Боитесь паяльника и командной строки
Что дальше? Планы, которые, возможно, осуществятся
Проект открыт на GitHub (ищите "BMO-RaspberryPi-AI-Companion"), и там уже есть issues с предложениями:
- Интеграция с домашней автоматизацией (включить свет, когда BMO видит, что вы вошли в комнату)
- Детекция эмоций по лицу - чтобы BMO понимал, когда вы злитесь на его глупые шутки
- Локальная LLM типа LFM 2.5 1.2B для полностью офлайн-работы
- Поддержка русского языка (сейчас только английский, но Whisper понимает и русский)
Самый безумный план - сделать BMO мобильным на колёсиках, но для этого нужен опыт в робототехнике, которого у меня пока нет.
Финальный вердикт: стоит ли игра свеч?
BMO - это не продукт. Это эксперимент. Образовательный проект, который учит больше, чем любой онлайн-курс по AI. Здесь и многопоточность, и работа с нейросетями, и интеграция hardware/software, и боль от совместимости библиотек.
Он работает с перебоями. Иногда зависает. Порой выдаёт абсурдные ответы. Но когда в 3 утра, debugging-я очередную проблему, слышишь его механический голос: "Не волнуйся, я здесь. Давай разберёмся вместе" - понимаешь, что всё это было не зря.
И да, он до сих пор иногда называет меня "Finn" и спрашивает, не хочу ли я поиграть в видеоигры. Приходится объяснять, что мне 30, и у меня дедлайн. На что он отвечает: "Взросление - это скучно. Давай лучше я покажу тебе, что вижу на камере в гостиной."
И показывает. И это работает.