Содержание
Песня на QR-кодах теперь звучит не как шутка из кружка радиолюбителей, а как рабочий эксперимент. Мейкер Makestreme сжал двухминутный MP3-файл размером 2,9 МБ примерно до 21 КБ и уместил результат на восьми QR-кодах.
Проект получил название Paper Tunes. Автор опубликовал сборку и исходный код на Hackster.io. По форме это «бумажная кассета»: четыре QR-кода с одной стороны листа и четыре с другой. Отсылка понятная тем, кто ещё помнит, как переворачивали винил или кассету.
EnCodec сжал MP3 почти в тысячу раз
Meta EnCodec не хранит звук как обычный архиватор. Кодек переводит аудиоволну в дискретные токены, а потом совместимый декодер собирает из них звук обратно. Meta выпустила этот открытый нейросетевой аудиокодек в 2022 году.
Обычное сжатие тут почти не помогает. MP3 уже потерял часть данных при кодировании, поэтому архиватору нечего «снимать» без заметной потери. EnCodec работает иначе: он хранит компактное представление, которое потом расшифровывает нейросетевой декодер.
В проекте Makestreme использовал режим 3 кбит/с. По описанию автора, восстановленная песня звучит приемлемо для такого размера. При 1,5 кбит/с результат уже сильно разваливается: артефакты становятся главной частью трека.
- Исходный файл: MP3 размером 2,9 МБ
- После EnCodec: около 21 КБ токенов
- Длительность: две минуты
- Носитель: восемь QR-кодов на двух сторонах листа
- Декодер: EnCodec с частотой 24 кГц
Один QR-код в таком сценарии держит примерно 3 КБ бинарных данных. Makestreme упёрся в практический предел около 3,3 КБ. Если бы он печатал исходный MP3 без нейрокодека, понадобилось бы почти тысяча QR-кодов.
Бумага хранит токены, а не сам звук
Каждый из восьми QR-кодов несёт один байт идентификатора и фрагмент общего потока токенов. Генератор выбирает минимальный уровень коррекции ошибок, чтобы выжать максимум плотности. Это экономит место, но убирает запас прочности.
И вот тут начинается самая трезвая часть эксперимента. Повредили один QR-код — потеряли песню. У бумаги может быть длинная жизнь, но у такого носителя почти нет терпимости к царапинам, пятнам и кривому сканированию.
У проекта есть и радиоверсия. Тот же файл на 21 КБ Makestreme передал между двумя платами ESP32 через LoRa-модули REYAX RYLR998 на частоте 866 МГц. Передача идёт пакетами по 160 байт, с подтверждением получения и повторной отправкой при сбое.
В скетче передатчика прописана пауза 40 секунд после каждого подтверждённого пакета. Для 21 КБ выходит около 134 пакетов. Одни только паузы дают примерно 90 минут на одну песню.
Такой темп выбрали не от бедности железа. LoRa часто живёт в правилах по duty cycle, где нельзя непрерывно забивать эфир. Для сравнения: другой разработчик недавно добился 190 КБ/с, когда передавал данные QR-кодами между смартфонами при 60 FPS.
Идея бумажного софта уже всплывала в 1985 году
У Paper Tunes есть старый родственник — Cauzin Softstrip образца 1985 года. Это был двумерный штрихкод для журналов. Издания печатали программы на бумаге, а читатель сканировал полосы специальным устройством.
Один Softstrip вмещал до 5500 байт. Для своего времени это было красиво: купил журнал, получил код без набора руками. Но флоппи-диски подешевели, и бумажный способ быстро ушёл в музей.
Paper Tunes наследует ту же слабость. QR-коды могут пролежать дольше флешки, особенно если вспомнить идеи вроде керамических носителей Cerabyte с микроскопическими QR-кодами. Но музыкальный файл тут живёт не на бумаге целиком. Он живёт в связке «бумага плюс нейросетевой декодер».
В опубликованном проекте Paper Tunes воспроизведение завязано на точный декодер EnCodec 24 кГц; без него восемь QR-кодов остаются набором токенов, а повреждение одного кода ломает всю песню.