声波通信

该项目来源于开源项目SinVoice改编而来,先说下项目列表文件


声波通信_第1张图片

先简单的描述下,如果需要仔细看的请看文章下面的链接。buffer是处理缓存数据,支持并发读写。Encoder用于解码,PcmPlayer用于播放,控制Android的AudioTrack类,只需要送给他byte数组即可。Recoder是一个录取音频线程,SinGenerator是生成音频byte数组的方法。SInVoicePlayer才是播放的真正入口。SinVoiceRecognitioon才是真正录取音频获取解析结果。VoiceRecognition是解析音频数据。

相当于:


声波通信_第2张图片

整个源码逻辑就是这样,但是会发现无法实现更多功能,比如说无限制数量字符识别。

基于对整个代码的研究我进一步优化了代码逻辑,实现以下功能:

无限制数量字符识别。声音识别率蛮高,但未经大量测试支持连续字符传输。可以自己添加CRC校验。声音频率可以自己定制。


声波通信_第3张图片
声波通信_第4张图片

这是源码出需要改动的地方。这样可以迟滞0-9 a-z A-Z 的字符传播。思路是4进制编码,相同字符之间插入区分字符4 。然后每个字符用3位表示 那么就是支持64个字符类型传播,如果需要支持更多,可以用5进制编码 插入区分字符5,那么就可以表示125个字符,那可以支持·~!@#$%^&*()_+}{":>?<等字符。通过简单的处理就可满足项目上的声波识别需求。目前经过测试,发现有数据不准的时候,所以适当性的获得数据的时候进行校验。支付宝也是一段音频不断的播放,另一端获取成功之后再进行处理。所以有误差不重要,重要的是知道如何避免误差和校验。

如果您觉得有疑问的地方请联系我。

如果您觉得该文章对您有所帮助,请打赏,谢谢:


声波通信_第5张图片

开源项目链接:

项目的Github地址:https://github.com/JesseGu/SinVoice

原文地址:http://blog.csdn.net/zhaokaiqiang1992

你可能感兴趣的:(声波通信)