ИИ отключили навсегда. Техническое руководство по миру без нейросетей
ИИ отключили навсегда. Техническое руководство по миру без нейросетей

Полная версия

ИИ отключили навсегда. Техническое руководство по миру без нейросетей

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
2 из 2

Конкретные GPIO, способ прошивки и вообще возможность заменить заводскую прошивку зависят от устройства. Поэтому не пытайтесь бездумно заливать первый попавшийся конфиг в дорогой выключатель: наша задача — пережить исчезновение ИИ, а не добавить к нему небольшой домашний пожар.

Zigbee

С Zigbee всё ещё приятнее. Устройства этой сети изначально не обязаны разговаривать с облаком производителя. Обычно им нужен хаб — небольшое устройство, связывающее Zigbee-сеть с компьютером.

Подключаем совместимый Zigbee USB-хаб — добро пожаловать на AliExpress — и ставим два небольших компонента: MQTT-брокер Mosquitto и Zigbee2MQTT.

Mosquitto будет нашей локальной почтой для устройств. Одна программа публикует сообщение вроде «температура 23 градуса», другая его получает. Никакого облака и тем более, упаси, нейросети для этого не требуется.

Сам брокер в Debian/Ubuntu ставится так:

sudo apt install -y mosquitto mosquitto-clients

Теперь поставим сам Zigbee2MQTT. Он написан на Node.js и будет мостом между нашим USB-хабом и MQTT. Установим актуальный Node.js вместе с необходимыми зависимостями, а затем заберём Zigbee2MQTT из репозитория:

sudo apt install -y curl && curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt install -y nodejs git make g++ gcc libsystemd-dev && sudo corepack enable

sudo mkdir -p /opt/zigbee2mqtt && sudo chown -R $USER: /opt/zigbee2mqtt && git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt && cd /opt/zigbee2mqtt && pnpm install --frozen-lockfile

Осталось узнать, как Linux назвал наш USB-хаб:

ls -l /dev/serial/by-id/

Скопируйте полученный путь и создайте файл /opt/zigbee2mqtt/data/configuration.yaml с минимальной конфигурацией:

version: 5

mqtt:

server: mqtt://localhost:1883

serial:

port: /dev/serial/by-id/ВАШ_USB_АДАПТЕР

frontend:

enabled: true

Во многих случаях Zigbee2MQTT сам определит тип адаптера. Если нет, придётся добавить в секцию serial строку adapter с типом вашего координатора, например zstack или ember.

Запускаем:

cd /opt/zigbee2mqtt && pnpm start

Если всё прошло удачно, веб-интерфейс появится на http://localhost:8080. Через него можно разрешить подключение новых устройств и начать сопряжение лампочек, датчиков, выключателей и прочего пережившего катастрофу железа.

Zigbee2MQTT подключается к хабу, находит устройства и представляет их в виде MQTT-сообщений. После сопряжения устройства разных производителей оказываются в одной локальной сети и могут управляться без родных приложений.

В результате вместо нескольких облаков у нас получается довольно скучная схема:

устройство → Zigbee → Zigbee2MQTT → MQTT → вы

И в данном случае скучная инфраструктура — именно то, что нам нужно.

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

mosquitto_sub -t '#' -v

Выключатель щёлкнули — сообщение появилось. Датчик движения заметил кота — ещё одно. Никакой магии.

А можно обратно получить приложение?

Конечно. Когда устройства снова доступны локально, поверх всего этого можно установить Home Assistant. Он умеет работать с ESPHome, MQTT, Zigbee и огромным количеством других систем и вернёт вам привычные кнопки, переключатели, автоматизации и красивую панель управления.

Но это уже вопрос удобства.

Главную задачу мы решили раньше: лампочке снова не нужен интернет, чтобы включить свет.

2. А поговорить?

Хорошо. Кнопки вернулись, лампочки включаются, а шторы снова умеют открываться. Но мы же не для того пережили конец ИИ, чтобы каждый раз тянуться к телефону и нажимать на экран.

Вернём дому голос.

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

Никакая огромная языковая модель для фразы «открой шторы» нам не нужна.

Раз уж в предыдущем разделе мы познакомились с Home Assistant, воспользуемся его локальным голосовым помощником Assist. Для распознавания команд возьмём Speech-to-Phrase, а для ответа голосом — Piper. Оба компонента могут работать локально: запись голоса не нужно отправлять куда-нибудь в чужое облако, а пропажа очередного провайдера больше не лишит нас возможности попросить дом выключить свет.

Получается довольно простая цепочка:

микрофон → Speech-to-Phrase → Assist → Home Assistant → устройство

А если хочется услышать ответ:

Home Assistant → Piper → динамик

Speech-to-Phrase здесь особенно удобен именно для нашей задачи. Он не пытается понимать бесконечное количество человеческих фраз и вести философские беседы о смысле жизни. Вместо этого он ориентирован на ограниченный набор команд умного дома. Благодаря этому распознавание можно выполнять локально даже на сравнительно слабом железе.

Самый простой микрофон у нас, скорее всего, уже лежит в кармане. Приложение Home Assistant на телефоне позволяет вызвать Assist, произнести команду и получить ответ. Поэтому для первого рабочего варианта отдельную умную колонку покупать, паять или искать среди обломков цивилизации вообще не требуется.

В Home Assistant устанавливаем локальные компоненты Speech-to-Phrase и Piper, после чего в настройках голосового помощника выбираем их соответственно как Speech-to-Text и Text-to-Speech. Сам Assist остаётся тем слоем, который превращает распознанную фразу в конкретное действие над уже подключёнными устройствами.

Теперь команда вроде «открой шторы» проходит полностью внутри нашей инфраструктуры: телефон передаёт голос локальному помощнику, Speech-to-Phrase распознаёт команду, Assist понимает, какие именно шторы имеются в виду, а Home Assistant отправляет действие через ESPHome, Zigbee или MQTT.

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

А где «Алиса»?

Пока её нет. Наш помощник работает по нажатию кнопки микрофона, а не постоянно прислушивается к комнате в ожидании кодового слова. Для режима «запусти здесь и сейчас» этого достаточно.

Но если вам категорически необходимо снова войти в комнату и властно произнести что-нибудь вроде «Эй, дом!», локальное распознавание ключевого слова тоже существует. К Home Assistant можно подключить отдельный голосовой спутник с микрофоном и динамиком и использовать локальный wake word. Тогда цепочка станет почти такой же, как у привычной умной колонки, только без обязательного путешествия вашей фразы через чужое облако.

Это уже дополнительный комфорт. Сейчас же мы вернули главное: дом снова нас слушает.

3. А музыка?

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

Что же, вернём музыку домой тоже.

Для этого возьмём Navidrome — небольшой сервер для собственной музыкальной библиотеки. В отличие от огромных стриминговых платформ ему не нужно знать вкусы половины планеты: достаточно указать папку с музыкой, после чего библиотека станет доступна через браузер и совместимые клиенты на других устройствах.

Для Debian/Ubuntu официальный пакет Navidrome ставится обычным .deb. Скачайте актуальный пакет со страницы релизов проекта и установите его:

sudo apt install ./navidrome_*_linux_amd64.deb

После установки достаточно указать папку с музыкой в /etc/navidrome/navidrome.toml:

MusicFolder = "/home/you/Music"

Убедитесь, что пользователь navidrome может читать эту папку, и запускайте сервер:

sudo systemctl enable --now navidrome

Теперь открываем в браузере http://localhost:4533, создаём первого пользователя-администратора — и наша музыкальная библиотека снова доступна. Если сервер стоит на отдельном компьютере в домашней сети, вместо localhost используйте его IP-адрес.

Navidrome совместим с Subsonic/OpenSubsonic-клиентами, поэтому веб-интерфейс — далеко не единственный способ слушать музыку. Телефон, ноутбук или другой компьютер могут подключаться к одному и тому же серверу и видеть общую библиотеку и плейлисты.

А рекомендации?

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

Navidrome умеет использовать Last.fm как внешний источник метаданных, похожих исполнителей и похожих композиций. Для этого понадобится бесплатный API key и shared secret Last.fm. После их получения добавьте в тот же /etc/navidrome/navidrome.toml:

LastFM.Enabled = true

LastFM.ApiKey = "ВАШ_API_KEY"

LastFM.Secret = "ВАШ_SHARED_SECRET"

Перезапускаем сервер:

sudo systemctl restart navidrome

После этого Navidrome сможет обращаться к Last.fm за информацией о похожих исполнителях и композициях, а при желании пользователь сможет включить scrobbling и снова накапливать историю своих прослушиваний. То есть рекомендации вернулись, но для их работы не пришлось запускать языковую модель размером с небольшой дата-центр.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

1

LSP (Language Server Protocol, протокол языкового сервера) — открытый протокол на основе JSON-RPC, используемый между редакторами исходного кода или IDE и серверами, предоставляющими инструменты анализа кода и языкового интеллекта.

2

GDPR (General Data Protection Regulation, Общий регламент по защите данных) — регламент Европейского союза о защите персональных данных и правилах их обработки. Применяется с 25 мая 2018 года.

3

Бывший Twitter

Конец ознакомительного фрагмента
Купить и скачать всю книгу
На страницу:
2 из 2