声波传输是利用声音实现文件的快速传输的一套技术解决方案:采用跨平台的技术,实现任何能够发送声波与接收声波的智能设备之间的数据传输。该技术方案需要在联网环境下使用。目前已经提供支持以下平台的应用Demo:iOS、Android、HTML5。
声波传输技术由两部分组成:音频协议与网络协议。音频协议将待传数据编码为一系列选定频率的音调;网络协议则将数据以键值形式存入服务器,其中键为与数据唯一对应的10个字符。
音频协议的原理很简单,易于实现。建立一个含有32个字符([0-9,a-v])的表,并将每个字符映射到频率表。频率表是根据乐理,通过伴音的计算生成。
0 = 1760hz
1 = 1864hz
…
v = 10.5khz
一个完整的声波包包含20个音(即20个字符),每87.2毫秒发一个音 。前两位为信息头,采用“hj”,用以通知接收端开始接收。中间10位为有效的信息位,是有效的传输信息,即Key值经过映射后的频率信息。最后8位为RS(Reed-Solomon)校验位,通过RS校验算法,对中间10位进行计算,生成8位的校验信息。。如下图:
校验主要用来处理由于噪声干扰造成的信息接收错误。通过RS校验,可以纠正25%的错误信息。
发送端设备只需能够发送1.7khz到10.5khz的正弦声波即可。为了将发送出的声波变得更好听,可以对声音进行一些美化处理,比如在我们的例子中,采用了椭圆形窗对声波进行了音量上的优化。
接收端需要记录声音,并将其进行解码以及容错处理。其对算法的要求相对较高,降噪及容错处理对能否得到正确的解码信息是至关重要的。所以接收端需要一定的数字运算能力,对设备的硬件配置有一定的要求。对于算法的细节,我们会逐步的公开并开源。
音频协议的最大局限性,在于其较低的传输效率。
为了解决大量数据的传输问题,我们提供RESTful open Api,这样发送设备可以将照片上传到云端,并获取云端返回的Key,将Key通过声波发送出去。接收端通过收到的Key从云端获取数据。
传输机制如下图所示:
传输的内容通常为数据内容的Key(Hash值),传输实现步骤如下:
1. 在声音传递之前,将待传数据上传到云端;
2. 云端生成一个与文件唯一对应的Key(Hash值)返回给发送端;
3. 发送端用声音将Key发出;
4. 接收端接收到这个Key之后,再从云端把这个数据下载下来。
通过这样的机制,就能够实现音频传输各种文件和信息。
原文出处:声波传输技术简介