Repolode
ggerganov

ggerganov/ggwave

一个轻量的 C++ 库,通过声音在设备之间传输少量数据,可用于 Python、JavaScript 和单片机。

Star
7,906
Fork
479
未关闭 Issue
65
最近提交
6个月前

这是什么?

ggwave 让设备之间通过声音交换少量数据,适用于无法联网的场景。它采用多频率 FSK 调制,并使用 Reed-Solomon 纠错码,既可以发送可闻声音,也支持超声波。按协议参数不同,带宽约为每秒 8 到 16 字节。

库本身只负责生成和解析原始波形,播放与采集由你使用的音频后端完成,例如 PulseAudio、ALSA 或 Web Audio,通过回调函数对音频采样进行排队和出队。项目提供 Python、Node.js 和 Swift 的绑定或包,示例中包含 ESP32、Arduino 和 Raspberry Pi Pico 的代码。

此外,项目还提供 Waver 应用(支持 iOS、Android、Linux 和 macOS)以及浏览器演示,方便直接测试声音传输。

核心功能

  • 01通过可闻声音或超声波传输少量数据。
  • 02采用 FSK 调制并结合 Reed-Solomon 纠错。
  • 03通过采样队列回调兼容任意音频后端。
  • 04提供 Python、Node.js 和 Swift 的绑定。
  • 05包含 ESP32、Arduino 和 Raspberry Pi Pico 的示例。

适用场景

  • 在没有网络的情况下,在附近设备之间分享短消息或配对码。
  • 让手机或电脑通过声音向带麦克风或扬声器的单片机发送指令。
  • 实现离线设备配对或联系人交换功能。
  • 为物联网项目原型化基于声音的数据传输协议。

快速上手

  1. 1

    安装 Python 包

    pip install ggwave
  2. 2

    或使用 CMake 构建 C++ 库和命令行工具

    git clone https://github.com/ggerganov/ggwave --recursive && cd ggwave && mkdir build && cd build && cmake .. && make
  3. 3

    运行命令行工具

    ./bin/ggwave-cli

使用前须知

  • 数据传输速率很低,约为每秒 8-16 字节。
  • 构建基于 SDL 的示例需要另外安装 SDL2。

标签

常见问题

ggwave 是什么?
一个轻量的 C++ 库,通过声音在设备之间传输少量数据,可用于 Python、JavaScript 和单片机。 ggwave 让设备之间通过声音交换少量数据,适用于无法联网的场景。它采用多频率 FSK 调制,并使用 Reed-Solomon 纠错码,既可以发送可闻声音,也支持超声波。按协议参数不同,带宽约为每秒 8 到 16 字节。
ggwave 可以免费使用吗?用的什么许可证?
ggwave 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
ggwave 还在维护吗?
超过半年未提交。ggwave 最近一次提交是在 2026年4月16日。
ggwave 适合用来做什么?
在没有网络的情况下,在附近设备之间分享短消息或配对码。 让手机或电脑通过声音向带麦克风或扬声器的单片机发送指令。 实现离线设备配对或联系人交换功能。 为物联网项目原型化基于声音的数据传输协议。
ggwave 怎么安装和运行?
安装 Python 包: pip install ggwave 或使用 CMake 构建 C++ 库和命令行工具: git clone https://github.com/ggerganov/ggwave --recursive && cd ggwave && mkdir build && cd build && cmake .. && make 运行命令行工具: ./bin/ggwave-cli
在哪里获取 ggwave?
源代码和安装说明在 GitHub 上:https://github.com/ggerganov/ggwave

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目