识别成功率100%的声波配网,看完你也可以实现一个

好久没更新文章了,蠢作者刚好最近写了个有意思的小工具,所以就写它好啦~

1.什么是声波配网

2.声波传输的技术原理

3.声波传输编码

4.声波传输解码

1.什么是声波配网

现在很火的一些智能硬件,比如对话机器人,智能音响等,在使用的过程中都是需要联网的,比如联网抓取语料,获取服务器指令,或者与手机APP绑定。而由于成本限制,这些智能硬件很多又没有屏幕、键盘或者其它输入设备无法输入WIFI初始化信息(SSID+密码)。所以通过手机播放声波把WIFI的初始化连接信息传递给智能设备,让设备识别完成WIFI初始化流程建立网络连接是值得考虑的一种方式。

2.声波传输的技术原理

显然声波配网技术中的技术难点就是声波传输技术。而声波传输的应用其实已经很广啦:支付宝的声波支付,QQ音乐中的歌曲的声波分享,茄子快传,蛐蛐儿等等。

声波传输可以理解为类似NFC的一种近场通讯技术。听起来很高大上有没有~

其实原理很简单啦,可以近似理解为对称加密,加解密的过程大概如下所示~

仅传输ASCII可打印字符


传输UTF-8字符串

简单的说就是在发送端把你把要识别的字符映射成频率,然后把一个频率映射成一个音节信号(单频率的正弦波)编码成音频播放;在接收端接收到音频信号后,解析出频率,然后根据两边共同的码表找到频率对应的字符,从而解码出数据。具体来说就是我们可以将700HZ的正弦波对应成字符'a',800HZ的正弦波对应数字'b',900HZ的正弦波对应数字'c',以此类推。那么数字串"abc"就对应成频率串就是{700,800,900},然后把这个频率串变成3个音节的正弦波音频。如果规定每个音节持续100ms,则{700,800,900}对应300毫秒的音频段。接收方录制声音,对收到的声音进行解析,识别出700HZ,800HZ,900HZ三段正弦波频率,然后查找码表,解码出的字符串就是"abc"。

关于声波传输最根本的原理其实是时域频域的相互转换,所以我们绕不开傅里叶变换的相关知识, 贴两篇不错的科普,可以点进去看个热闹哈。

如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】

理解快速傅里叶变换(FFT)算法

看了吗~~~是不是怀疑自己大学上了假的高数课~~~~

不过其实,看不懂没关系啦hiahiahia,记住下面这张图就好啦,反正不影响我们写代码的~

网上关于声波传输的资料不多,零星几篇分析原理的文章详细写了声波的编码,解码却是一笔带过。Github上面能找到的开源项目,识别成功率高的没有核心代码(他们的so库按平台收费23333,好吧,知识变现,没毛病~),有完整源码的识别成功率又达不到投入实际中使用的要求。所以蠢作者花了一些时间,在了解原理之后尝试了好几种解码的方案,踩过一些坑才最终把这个小工具优化好。

最终的效果是在手机中等播放音量,距离接收端30cm内的时候可以做到识别成功率100%,不受环境噪音影响,没有传输长度的限制(网上有一个说法【一般来说传输总字符如果达到40个以上,解码正确率就会下降,数据量越大,出错率就会升高】,虽然看不到他们的核心代码,但踩过一些坑之后,大概知道造成这种现象的原因,在声波传输解码里我会说明)。当然随着距离的增加,受环境噪音的影响,成功率也就有所下降。不过用作配网,30cm够用啦,有处理音频底子的宝宝可以自己加降噪的算法,这样识别距离就可以变长啦~

关于声波传输的编码和解码我都会单独写一篇详细的文章(避坑指南)出来,有兴趣的宝宝可以关注一下奥~

(都看到这里了就点个赞吧!^^)

End~

推荐阅读更多精彩内容

  • 这篇文章是系列文章的第3篇。 第一篇在这里声波配网原理。 关于声波传输编码的部分在这里声波传输编码。 前面说过,声...
    作死少女88阅读 2,830评论 11 12
  • 这篇文章是系列文章的第2篇。第一篇在这里声波配网原理。 在声波传输的发送端,我们要做的事情用下面这张图就可以概括:...
    作死少女88阅读 3,090评论 20 19
  • 前言 说到视频,大家自己脑子里基本都会想起电影、电视剧、在线视频等等,也会想起一些视频格式 AVI、MP4、RMV...
    Future_sen阅读 9,996评论 10 171
  • 概述: 本人在人工智能公司负责物联网开发以及有关语音处理的优化,真心难,因为我也是第一次接触语音这块,人工智能也是...
    廉颇未老阅读 1,602评论 9 0
  • 第一章:AV Foundation入门: 1.1 AV Foundation的含义 AV Foundation是苹...
    武当霍元甲阅读 318评论 0 1