Читать книгу ИИ отключили навсегда. Техническое руководство по миру без нейросетей (Андрей Недобыльский) онлайн бесплатно на Bookz (2-ая страница книги)
ИИ отключили навсегда. Техническое руководство по миру без нейросетей
ИИ отключили навсегда. Техническое руководство по миру без нейросетей
Оценить:

5

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

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

Конкретные 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

Вы ознакомились с фрагментом книги.

Для бесплатного чтения открыта только часть текста.

Приобретайте полный текст книги у нашего партнера:


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

Всего 10 форматов

bannerbanner