Обмен данными через звук - как работает wave-share
Репозиторий давно не обновлялся
Последнее обновление было 5 лет назад.
Представьте ситуацию: вам нужно быстро передать файл с ноутбука на телефон коллеги, но под рукой нет ни флешки, ни стабильного интернета, а Bluetooth почему-то не работает. Знакомо? Именно такие проблемы решает проект wave-share — необычная технология обмена данными через обычные динамики и микрофоны устройств.
Что такое wave-share?
Wave-share — это экспериментальный проект, который использует звуковые волны для установки P2P-соединения между устройствами. По сути, это реализация WebRTC-сигналинга через звук, где устройства «договариваются» о соединении, обмениваясь данными в виде аудиосигналов.
Ключевые преимущества:
- Не требует серверов — полностью peer-to-peer решение
- Работает в браузере — не нужно устанавливать приложения
- Использует только микрофон и динамики — никакого специального оборудования
Как это работает?
Технология использует модифицированную версию частотной модуляции (FSK) для кодирования данных в звуковые сигналы. Процесс соединения выглядит так:
- Устройство A кодирует свои сетевые данные (IP, порты, идентификаторы) в последовательность звуковых тонов
- Устройство B «слышит» эти тоны через микрофон и декодирует их обратно в данные
- Устройство B отвечает своим набором тонов с собственными сетевыми параметрами
- После успешного обмена данными устанавливается прямое P2P-соединение по LAN

Где это можно использовать?
Хотя проект позиционируется как proof-of-concept, у него есть несколько интересных практических применений:
- Быстрый обмен файлами в условиях плохого интернета
- Офлайн-связь между устройствами в одном помещении
- Образовательные проекты по изучению передачи данных
- IoT-устройства для простой настройки без интерфейсов
Технические особенности
Проект использует несколько интересных технических решений:
- Оптимизированный SDP — передаются только минимально необходимые данные для установки соединения
- Многоканальная FSK-модуляция — одновременная передача нескольких битов в разных частотных диапазонах
- Коррекция ошибок — встроенные ECC-байты для защиты от помех
Пример структуры передаваемого аудиопакета:
| Размер | Описание |
|--------|---------------------------|
| 1 байт | Тип SDP (Offer/Answer) |
| 1 байт | Размер пакета |
| 4 байта| IP-адрес |
| 2 байта| Порт |
| 32 байта| SHA-256 отпечаток сессии |
| 40 байт| ICE-учетные данные |
| 32 байта| ECC для коррекции ошибок |
Ограничения и перспективы
Как и у любой экспериментальной технологии, у wave-share есть свои ограничения:
- Работает только между близко расположенными устройствами
- Зависит от качества микрофонов и динамиков
- Не поддерживается всеми браузерами (особенно Safari)
Однако автор проекта уже развивает идею в отдельной библиотеке ggwave, что открывает новые возможности для интеграции этой технологии в другие проекты.
Стоит ли попробовать?
Если вы:
- Любите экспериментировать с необычными технологиями
- Разрабатываете решения для офлайн-сценариев
- Интересуетесь альтернативными способами передачи данных
...то wave-share определённо заслуживает вашего внимания. Проект доступен для тестирования прямо в браузере: ggerganov.github.io/wave-share
Как показывает практика, иногда самые интересные решения рождаются на стыке технологий — и wave-share прекрасный тому пример, сочетающий WebRTC, обработку звука и P2P-коммуникацию в одном изящном решении.
