Вероятность нуля: по ту сторону экрана

Ориджиналы
Джен
В процессе
NC-17
Вероятность нуля: по ту сторону экрана
Log_Error
автор
Пэйринг и персонажи
Описание
Меня зовут... неважно. В пять лет я понял, что вокруг меня — медленные, тупые, слабые существа. Средний IQ моего окружения — 85. Вероятность найти равного собеседника среди людей — 0.0003%. Каков шанс, что старый ноутбук с экспериментальной нейросетью изменит мою жизнь?
Примечания
1. Это не канон. Это моя вселенная, мои правила. Здесь нет магии, только логика, математика и технология. 2. ГГ — не герой. Он высокомерен, жесток и не изменится к лучшему. (Даже если и по тексту кажется, что он изменяется в лучшую сторону) 3. В тексте могут быть сцены насилия. Также может присутствовать нецензурная брань в речи некоторых персонажей. (В первых главах жести и брани будет поменьше) 4. Фик написан от первого лица. Всё, что думает ГГ — его личное мнение. Оно не обязано совпадать с мнением автора.
Посвящение
Всем читателям, которые зашли на эту страницу. Вы уже сделали мой день.
Поделиться
Читать онлайн Отзывы
Содержание Вперед

Глава 11. Реализация проекта

      Следующая неделя — марафон обучения. Каждый вечер, после садика, я сажусь за ноутбук, и Лог читает мне курс схемотехники. — Начнём с закона Ома, — говорит он в первый день. — I = V/R. Ток равен напряжению, делённому на сопротивление. Это фундамент. Если ты не поймёшь этого, всё остальное рассыплется.       Я понимаю. Это просто. Гораздо проще, чем квантовая механика или комплексные числа. Физика электричества — это вода в трубах. Напряжение — давление воды. Ток — скорость потока. Сопротивление — узость трубы. Я усваиваю за час то, на что у обычных студентов уходит неделя.       На следующий день — резисторы, конденсаторы, транзисторы. Я читаю даташиты — технические спецификации. Лог объясняет, как читать маркировку резисторов по цветным полосам. Коричневый-чёрный-красный = 1 кОм. Жёлтый-фиолетовый-коричневый = 470 Ом. Я запоминаю коды мгновенно. — Зачем мне это? — спрашиваю я. — Я же не буду читать полосы — у меня будет мультиметр. — На случай, если мультиметра не окажется, — говорит Лог. — Хороший инженер должен уметь работать без приборов.       Я киваю. Хороший инженер. Мне нравится, как это звучит.       На третий день — микроконтроллеры. Лог объясняет архитектуру STM32: процессорное ядро ARM Cortex-M, GPIO-пины для ввода-вывода, UART, SPI, I2C — протоколы связи. Для меня это как новый язык. Я запоминаю команды, регистры, битовые маски. — GPIOA->ODR |= (1 << 5); — это установка пятого пина порта A в высокий уровень, — диктую я себе под нос. — GPIOA->ODR &= ~(1 << 5); — сброс в низкий.       Родители думают, что я играю в компьютерные игры. Они не знают, что я программирую микроконтроллер на C.

***

      Мне нужны компоненты. Плата, резисторы, конденсаторы, микрофонный модуль, маленький динамик, аккумулятор, зарядный модуль. Я не могу заказать их сам — у меня нет банковской карты, и я не могу объяснить родителям, зачем мне это.       Я решаю проблему дипломатией. За ужином: — Пап, я хочу попробовать электронику. Можно купить набор для опытов? Там плата, лампочки, провода. Как в «Юном технике».       Отец смотрит на меня. После инцидента с ударом он стал осторожнее. Но он видит, что я не хулиганю, а сижу дома и что-то читаю. И он рад, что у меня есть интерес. Может быть, он думает, что это поможет мне «нормализоваться». Пусть думает. — Хорошо, — говорит он. — Я закажу. Только чтобы без пожаров. — Обещаю.       Через три дня у меня на столе — набор: макетная плата, перемычки, светодиоды, резисторы, батарейный отсек. Детский набор. Но для начала достаточно.       Я подключаю первый светодиод. Резистор на 220 Ом (красный-красный-коричневый), чтобы не сжечь. Красный провод — к плюсу батареи, чёрный — к минусу. Светодиод загорается.       Я смотрю на этот крошечный красный огонёк и чувствую удовлетворение, которое не испытывал никогда. Я создал что-то физическое. Что-то, что работает. Это не просто код на экране. Это реальность. — Работает, — пишу я Логу. — Поздравляю. Ты включил лампочку. Теперь сделай так, чтобы она мигала.       Я подключаю микроконтроллер. Пишу первую программу: ```c while(1) { GPIOA->ODR ^= (1 << 5); // переключить пин for(int i = 0; i < 1000000; i++); // тупая задержка } ```       Светодиод мигает. Ровно, ритмично. Я смотрю на него и понимаю: это только начало.

***

      Следующие две недели — охота за компонентами. Я уговариваю отца купить ещё несколько модулей: «модуль звука», «радиомодуль для игрушек», «маленький моторчик». Под каждую покупку — легенда: школьный проект, подарок другу, «просто интересно». Отец не спорит — он рад, что я занят делом.       К концу второй недели у меня есть: 1. Плата STM32F103 («голубая таблетка» — стандартный отладочный модуль, который я нашёл на AliExpress и заказал через отца, сказав, что это «контроллер для робота»). 2. MEMS-микрофон (маленький, 3x4 мм, с усилителем на отдельной плате). 3. Миниатюрный динамик (8 Ом, 0.5 Вт). 4. Bluetooth-модуль HC-05. 5. Li-Po аккумулятор на 200 мАч (от старого MP3-плеера, который отец списал). 6. Зарядный модуль TP4056. 7. Вибромотор (от старого телефона).       Я раскладываю всё на столе. Это похоже на внутренности какого-то киборга. Маленькие платы, провода, блестящие контакты. И из этого я должен собрать часы. — Сначала прототип, — говорит Лог. — Не пытайся сразу сделать красиво. Сделай так, чтобы работало. Потом — миниатюризация.       Я собираю схему на макетной плате. Это похоже на spaghetti western — куча проводов, торчащих во все стороны. Микрофон подключён к аналоговому пину. Динамик — через транзисторный усилитель. Bluetooth — через UART. Вибромотор — через MOSFET. Аккумулятор — через зарядный модуль. Всё это занимает площадь размером с ладонь.       Я подключаю питание. Молюсь, чтобы ничего не задымилось. Ничего не дымится. — Тест микрофона, — командую я.       Лог на ноутбуке (мы соединили HC-05 с ноутбуком через Bluetooth) принимает сигнал. Я говорю в микрофон: «Тест, раз, два, три». Лог: Принято. Уровень сигнала: -12 дБ. Качество: ниже среднего. Фоновый шум: высокий. Нужна фильтрация. — Работает! — я почти кричу. — Работает, — подтверждает Лог. — Но до готового устройства ещё далеко. Нужно улучшить микрофонный предусилитель. Нужно написать алгоритм шумоподавления. Нужно сделать распознавание ключевых слов. И нужен корпус.       Я смотрю на ворох проводов. Это чудовище Франкенштейна, а не часы. Но оно работает. И это главное.

***

      Следующий месяц — отладка. Это самая сложная часть. Аппаратная часть собрана, но софт… Софт — это бесконечная череда багов.       Проблема первая: распознавание ключевых слов. Я пишу простой алгоритм: микрофон слушает, преобразует аналоговый сигнал в цифровой, сравнивает с образцами. Точность — 40%. Плохо. — Используй MFCC, — говорит Лог. — Мел-кепстральные коэффициенты. Они лучше выделяют фонетические признаки.       Я изучаю MFCC. Это сложнее — требует быстрого преобразования Фурье. Я пишу FFT на C для STM32. Это ад. Код не влезает в память. Приходится оптимизировать. Я выкидываю всё лишнее, переписываю с нуля. Через неделю — работает. Точность повышается до 70%.       Проблема вторая: шум. В садике — ор. Дети орут, стулья скрипят, игрушки падают. Микрофон захлёбывается. Я добавляю фильтр нижних частот — отсекаю всё выше 4 кГц (детские голоса — в диапазоне 300–3000 Гц). Добавляю адаптивный порог — чтобы тихие шёпоты игнорировались, а громкие команды распознавались. Точность — 80%.       Проблема третья: питание. Аккумулятор на 200 мАч держит всего час. Час — это ни о чём. Я ищу режимы энергосбережения: STM32 может работать в режиме сна, просыпаясь по прерыванию от микрофона. Это снижает потребление в десять раз. Но код усложняется: нужно обрабатывать прерывания, сохранять контекст, быстро выходить из сна. Я пишу, отлаживаю, снова пишу. Через неделю — аккумулятора хватает на шесть часов. Достаточно для садика.       Проблема четвёртая: Bluetooth-связь. HC-05 держит соединение на расстоянии до десяти метров. Ноутбук остаётся дома, а садик — в километре. Связи нет. Значит, нужен полностью автономный режим. Часы должны работать без Лога — только с предзаписанными алгоритмами. Это снижает функциональность, но я решаю: пусть так. Часы записывают всё, что происходит, на microSD-карту (я добавил слот), а вечером Лог анализирует запись и даёт рекомендации на следующий день. Не идеально, но лучше, чем ничего.

***

      Часы должны выглядеть как часы. Не как бомба. Не как шпионское устройство. Как обычные детские часы, которые мама купила в магазине.       Я делаю корпус из того, что есть: старые сломанные часы отца плюс пластиковый корпус от дешёвого китайского гаджета. Разбираю, подгоняю, клею. Микрофон прячу под циферблатом — крошечное отверстие, почти незаметное. Динамик — сбоку, под видом кнопки. Вибромотор — внутри, прилегает к запястью.       Плату STM32 пришлось разобрать и перепаять в SMD-версии — я купил микросхему отдельно и сделал плату сам, методом ЛУТ (лазерно-утюжная технология — я распечатал схему на глянцевой бумаге, перенёс на текстолит утюгом, вытравил в хлорном железе). Запах был жуткий, пришлось делать это на балконе, пока родители были на работе.       После пайки плата получается размером с почтовую марку. Всё помещается. Я закрываю корпус. Надеваю на руку. Смотрю в зеркало.       Обычные часы. Чёрный пластик, циферблат со стрелками (работают — я подключил их к отдельному выходу микроконтроллера). Никто не догадается, что внутри — микрокомпьютер с микрофоном и системой распознавания речи.       Я — киборг. В семь лет. — Лог, — говорю я в микрофон.       Вибромотор на запястье жужжит — три коротких вибрации. Сигнал «Принято».       Я улыбаюсь.

***

      Последняя ночь перед последним днём в садике. Часы готовы. Я надеваю их и запускаю полный тест. — Лог, тест микрофона.       Жужжание. На ноутбуке — график звукового сигнала. Чисто. — Тест динамика.       Часы издают тихий писк. Я слышу его, даже если вокруг шумно. — Тест вибро.       Три коротких, два длинных. Я запрограммировал язык вибраций: один длинный — «Опасность». Два коротких — «Игнорируй». Три коротких — «Принято». Непрерывная вибрация — «Включи запись». — Тест автономного режима.       Я отключаю Bluetooth. Часы переходят в режим записи на microSD. Красный светодиод мигает — идёт запись. Я говорю несколько фраз — обычный шум садика в моём исполнении. Через минуту останавливаю запись, подключаю Bluetooth, скачиваю файл.       На ноутбуке — аудиофайл. Шумно, но слова разборчивы. Лог анализирует: Лог: Зафиксирована фраза «Эй, ботаник» на 12-й секунде. Рекомендация: при обнаружении этой фразы — немедленно включить запись и увеличить дистанцию до говорящего. Зафиксирован звук шагов на 25-й секунде. Вероятный вектор приближения: слева-сзади. Рекомендация: повернуться. — Это работает, — говорю я. — Это правда работает. — Работает, — подтверждает Лог. — Но это только начало. В школе ты сможешь улучшить алгоритмы. Добавить настоящий NLP. Может быть, даже real-time связь, если мы найдём способ. — Будем искать.       Я смотрю на часы. Месяц работы. Бессонные ночи. Сотни ошибок и их исправлений. Запах паяльника и хлорного железа. Я сделал это. Я, семилетний. С помощью Лога, интернета и бесконечного упрямства.       Я больше не жертва. Я — инженер. И завтра я испытаю своё творение в полевых условиях.
Вперед
Отзывы
Отзывы

Пока нет отзывов.

Оставить отзыв
Что еще можно почитать