蛐蛐儿是一款利用仿生学技术开发的传输工具(蛐蛐儿首页),拥有如下特点:1)利用声音传送图片、文本、链接,方便快捷;2)支持多平台,包括iPhone、Android和Windows,实现手机与PC、或手机之间的互传;3)支持微博加关注、发送电子名片;4)必须2个以上的客户端配对使用。
用声音传文件(主要是文本、url和图片),本质上是给文件生成一个id,通过声音传送这个id,如国内的app蛐蛐儿,国外的app chirp。为此,我下载了蛐蛐儿产生的音频来分析,以了解他的实现原理。
1、 音频的获取
蛐蛐儿产生的音频可在主页上获取http://xququ.com/demo/Default.aspx,可以选择文本、url和图片产生相应的声音。首先选择文本,分别输入0、1、2产生000099db9e.mp3、000099dd9b.mp3、000099e0aa.mp3。对比这3个mp3文件名可以看出,它们的id都包含10个字符,并且前5位都是00009,id是不是随机生成的不得而知,但其首页上的宣传片里却说其id为8个字符。
2、 频谱分析
分别画出蛐蛐儿000099db9e.mp3、000099dd9b.mp3、000099e0aa.mp3的频谱图和时域波形图。如下图所示:
由上图可以看出,每个音频的频谱都包含18段,时域波形都包含18个部分,说明每个音频都是用18个字符来编码,官网视频里说每个id是8个字符,那么剩下的10个字符就用作其他用途,比如开始和结束标志。观察频谱图,频率分布约为2750hz-5850hz。
3、 频率分析
1)000099db9e.mp3
共包含9种频率,约从2750-5850hz,000099db9e共包含5种不同的字符0、9、d、b、e,如果每种字字符对应1个频率的话,那么10位标志符用剩下4种频率表示。
2)000099dd9b.mp3
共包含8种频率,约从3100-5850hz,000099dd9b共包含4种不同的字符0、9、d、b,如果每种字字符对应1个频率的话,那么10位标志符用剩下4种频率表示。
3)000099e0aa.mp3
共包含10种频率,约从2750-5850hz,000099e0aa共包含4种不同的字符0、9、e、a,如果每种字字符对应1个频率的话,那么10位标志符用剩下6种频率表示。
4、 总结:
蛐蛐儿用8个字符代表1个id,都有许多个频率。蛐蛐儿用18个字符编码,从蛐蛐儿音频的最低频率和最高频率及频率间隔来看,蛐蛐儿音频共10种频率;我又产生了更多的蛐蛐儿音频id,发现都是以00009开头,而且出现的字符总是在0-9,a-f共16个字符之间,也就是说蛐蛐儿可能用10种频率编码了16个字符。
而且从频谱图来看,蛐蛐儿音频的id均以00009开头,所以应该有连续5个频谱部分相同;因为有连续4个0,按理说应该有连续4的频率是一样的,而频谱图中也没有。综上,我猜测蛐蛐儿的编码规则是:共18个字符,第1个字符为开始标志,第2-9共8个字符为id数据,第10-17共8个字符为防误码位,最后1个字符和第一个字符相同,为结束位。这样的话频谱图的第2-4个字符应该为009,但从频谱图中看出他们的频率逐渐提升的,所以蛐蛐儿的每个字符用什么频率来表示的规则不是很清楚,也没有官方文档可查。
以上便是蛐蛐儿的音频分析。顺便吐槽一下,官方宣传一直在说是其独创的音频二维码技术,申请了国家专利,然后宣传片里一个劲的说提供了sdk,美其名曰提供接口,宣传片给我传达的意思就是:我们的技术叫音频二维码,我们有国家专利,我们的东西很方便,我们的东西很有前景,哪家巨头看上我们的技术收购了我们吧。对比国外相同的Chirp,虽然没提供具体的技术细节,但至少阐释了一些技术原理。