Технологии

«Hey Jack»: в блоге OpenAI для разработчиков показали голосового ассистента на Raspberry Pi с GPT-Live-1 и Codex

23 сентября 2026 года в официальном блоге OpenAI для разработчиков вышел разбор личного проекта: из LED-табло, которое автор подарил соседу по квартире, вырос голосовой ассистент Jack на Raspberry Pi с панелью HUB75 128 × 64. Разговор ведёт GPT-Live-1, полнодуплексная голосовая модель из API, поиск, календарь и картинки берёт на себя GPT-5.6 Luna через Responses API, а кадры уходят на контроллер WLED-MM по DDP.

«Hey Jack»: в блоге OpenAI для разработчиков показали голосового ассистента на Raspberry Pi с GPT-Live-1 и Codex

Как подарок стал проектом

23 сентября 2026 года в блоге OpenAI для разработчиков вышел рассказ о личном проекте: LED-табло показывало пролетающие рядом самолёты, а вопрос «а что если оно умеет больше» превратил подарок в голосового ассистента.

Из железа в проекте Raspberry Pi, панель HUB75 128 × 64, контроллер на ESP32 и ассистент, которого автор со временем стал называть Jack.

Разговор идёт на GPT-Live-1 — полнодуплексной голосовой модели, недавно выпущенной в API; ещё одна модель помогает с исследованием, а рендерер отвечает за пиксели.

Автор отмечает, что не имел опыта ни с панелями HUB75, ни с контроллерами ESP32, ни с Raspberry Pi, ни с голосовыми моделями, и собирал всё вместе с Codex.

Первая версия жила на ноутбуке

На старте Codex помог разобраться с железом: по фотографиям определить важные подключения, понять роль контроллера на ESP32 и то, как панель HUB75 получает данные для отображения.

Затем контроллер заработал на WLED-MM с подтверждённым разрешением 128 × 64, после чего появились рендерер и кастомный skill: автор через Voice в десктопном приложении ChatGPT говорил, что показать на стене.

Табло умело выводить погоду, календарь, прибытие поездов метро, финансовые графики, сообщения, обратные отсчёты, фотографии, иллюстрации и собственную анимацию.

Кадры рендерер складывал в 128 × 64 RGB и отправлял по локальной сети через DDP, а контроллер на ESP32 под управлением WLED-MM выводил их на панель.

Ноутбук убрали из схемы

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

Codex перенёс нужные части на Raspberry Pi: код лёг в приватный репозиторий, появились резервная копия и возможность отката, если что-то сломается.

Теперь на плате работают два небольших сервиса: голосовой отвечает за микрофон, аудио на PipeWire, эхоподавление через WebRTC, поведение при пробуждении и сне, прерывания, соединение с GPT-Live-1 и client-side delegation.

Рендерер держит анимированный экран ожидания, обновляет погоду и прибытие поездов MTA, работает с очищенными данными календаря, проверяет описания сцен и отправляет кадры на стену.

Кто что делает: GPT-Live-1, GPT-5.6 Luna и рендерер

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

В этом случае Raspberry Pi получает delegation и запускает client-side запрос к Responses API с моделью GPT-5.6 Luna при низком уровне reasoning effort.

Инструменты у Luna такие: поиск в открытом вебе, подключение к календарю только для чтения, подбор переиспользуемых изображений в Wikimedia Commons и обновление стены.

Официальная документация описывает два режима: при Responses delegation запрос к бэкенд-модели готовит сам GPT-Live, а при client delegation контекст, запуск агента и возврат результата берёт на себя приложение.

Документация также уточняет, что GPT-Live слушает и говорит одновременно — это и есть полный дуплекс — и что передача работы бэкенду называется delegation.

Дальше рендерер проверяет JSON сцены и превращает его ровно в 128 × 64 RGB-пикселя, после чего кадры уходят по DDP на контроллер WLED-MM, который управляет панелью HUB75.

Что пришлось чинить

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

Codex подключил Wikimedia Commons с проверкой лицензии и атрибуции, а изображения научились вписываться в 128 × 64 пикселей с сохранением пропорций, чтобы не растягиваться по дисплею.

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

Почему это принципиально, объясняет документация: событие delegation содержит метаданные, а не текст задачи, поэтому контекст разговора должно вести само приложение.

Что здесь полезного

Автор описывает проект как простой сайд-проект и признаёт, что в другой раз, скорее всего, остановился бы сразу после вскрытия табло, а с Codex разбирался по ходу и предлагает спрашивать Codex, если непонятно, с чего начать.

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

Первоисточники

  1. OpenAI Developers — Bringing my LED display to life with GPT-Live-1 and Codex (23 сентября 2026)
  2. OpenAI — Delegation and tools in GPT-Live, документация API
  3. OpenAI — Getting started with GPT-Live, документация API