ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ggwave 声波传输完整指南:5 步让隔空设备用声音传数据

2026/9/20 4:05:07 拓冰建站 浏览量
ggwave 声波传输完整指南:5 步让隔空设备用声音传数据 ggwave 声波传输完整指南5 步让隔空设备用声音传数据【免费下载链接】ggwaveTiny>项目地址: https://gitcode.com/GitHub_Trending/gg/ggwaveggwave 是一个用 C/C 写的微型声波传数据库把一段文本或二进制编码成 FSK 声音播出去再由另一台设备的麦克风收回来解码让完全没有网络的设备隔空交换小数据。它只负责生成和解析原始波形采样采集交给 ALSA、PulseAudio 或 Web Audio 等任意音频后端你只需实现两个进/出样点的回调。传统做法要么自己拼调制、编解码和纠错要么依赖蓝牙、Wi-Fi 这类需要配对、驱动和联网的方案。ggwave 省掉这些一台能发声、一台能收声就能跑代码量小很多速率在 8–16 字节/秒之间。痛点场景没有网的设备怎么传数据 想象两个场景一台出厂的物联网设备要配置 Wi-Fi 凭据可它还没联网或两台被物理隔离的机器想交换一把密钥、一个小文件。手动敲密码繁琐蓝牙要配对Wi-Fi 此刻根本没网。ggwave 的思路是用空气当总线——一台把数据变成声音播出来另一台收声还原全程不联网。原理速览用不同频道播不同字节 ️底层是多频移频键控FSK数据先切成 4-bit 小块每个时刻用 6 个音调同时传 3 字节4.5kHz 频带被均分成 96 个等距频率可听声起始频率 1875Hz、超声波 15000Hz。发送前用 Reed-Solomon 纠错码包裹接收端用 FFT 还原频谱再解回字节。可以类比广播电台不同频率对应不同节目接收端听的是哪个频率就知道发了哪个字节出错还能靠纠错码补回。安装与首次运行3 行代码跑通 最快的路径是 Python 绑定装完即可编码C 则走 CMake 构建 CLI 工具。pip install ggwave # C/Cclone 后构建命令行工具 git clone https://gitcode.com/GitHub_Trending/gg/ggwave cd ggwave mkdir build cd build cmake .. make最简调用只需一句ggwave.encode(hello, protocolId1, volume25)返回一段可直接播放的波形另一端循环喂麦克风采样即可收文本。核心能力速览按需求选协议 能力说明适用场景可听声协议起始 1875Hz人耳可闻距离适中近距演示、设备配对超声波协议起始 15000Hz人耳不闻安静传输、自动配对双工协议DT支持双向实时交互远程控制、交互式应用一对多广播MT单发多收、无服务器广播通知、批量配置内置 Reed-Solomon 纠错依数据长度自动加 ECC嘈杂环境下的稳定解码典型用法从脚本到硬件 ️Python 收发import ggwave w ggwave.encode(hello, protocolId1, volume25) # 生成波形 # 播放 w另一端循环 ggwave.decode(instance, mic) 收文本两行就能跑发送端生成并播放波形接收端把麦克风采样逐帧喂给decode返回非空即收到数据。C/C 核心三步ggwave_Instance i ggwave_init(params); // 默认 48kHz int n ggwave_encode(i, data, sz, GGWAVE_PROTOCOL_AUDIBLE_FAST, 25, buf, 1); ggwave_encode(i, data, sz, GGWAVE_PROTOCOL_AUDIBLE_FAST, 25, buf, 0); int len ggwave_decode(i, mic, micSz, out); // 0 表示解码成功先用query1查询波形大小分配缓冲区再以query0真正生成完整接口定义见 include/ggwave/ggwave.h。命令行与硬件ggwave-cli可在终端里直接收发文本把 ggwave 移植到 ESP32、Arduino、RP2040 的完整工程在 examples/esp32-rx/麦克风接模拟或 I2S 麦即可实时收。调优与边界参数怎么选、失败怎么办 ⚙️速率受协议影响约 8–16 字节/秒Fast 系列更快但抗噪略弱。音量volume建议 25别超 50过大反而失真。采样率默认 48000Hz、samplesPerFrame1024设备不一致时会自动重采样。数据上限单次解码缓冲上限 256 字节变长载荷建议 ≤140、固定载荷 ≤64超了请分片。抗噪嘈杂环境换超声波协议已知收发协议时用txToggleProtocol/rxToggleProtocol只开对应协议可减少误报并省内存。失败ggwave_decode返回 -1 多为背景噪声过大应在应用层做重传与校验。常见问题 Q传输距离大概多少安静环境下可听声约 3–5 米超声波约 1–2 米。Q一次能传多少数据解码缓冲上限 256 字节大文件按分片循环发送。Q传输失败怎么处理decode返回 -1 表示噪声过大建议加应用层重传。Q必须联网吗不需要纯声音通道全程离线。Q支持哪些设备Arduino、ESP32、RP2040、PC、手机和浏览器示例见 examples/ggwave-py/。延伸资源 想跑通收发直接看 examples/ggwave-py/send.py 与 examples/ggwave-py/receive.py 两个脚本。要直观体验多设备声波通信可用 GUI 应用 examples/waver/它支持可听声与超声波两种模式、可同时广播给附近多台设备。ggwave 的价值在于把用声音传数据压缩成几个可复用的函数选对协议、控制音量、做好重传隔空设备之间的数据交换就能稳定跑起来。【免费下载链接】ggwaveTiny>项目地址: https://gitcode.com/GitHub_Trending/gg/ggwave创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考