Android 声波联网

概述:

本人在人工智能公司负责物联网开发以及有关语音处理的优化,真心难,因为我也是第一次接触语音这块,人工智能也是刚开始热,所以这块肉,还是比较难啃;

  • 支持所有字符和中文字符,只有你想不到;
  • 声波传输30cm内%100识别率,暂时还没有加入降噪;

什么是声波配网?

  • 声波配网
    当前很火的一些智能硬件机器人,如:聊天机器人,智能音响等,在使用的过程中都是需要联网的,由于公司的主旨是:语音智能专家,所以我们研发的软件,基本都是语音来控制,就算有屏幕,也要声波联网,哈哈哈。鉴于目前的智能机器人,大部分都是结合手机App绑定,所以这些公司就成了互联网公司,违背初衷,如xx公司本来是研发语音智能机器人,最后机器人却成了辅助APP的产品,这就有点失败了;所以通过手机播放声波把WIFI的初始化连接信息传递给智能设备,让设备识别完成WIFI初始化流程建立网络连接是值得考虑的一种方式,并且是可以实现的。

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

  • 关于声波传输最根本的原理其实是时域频域的相互转换,所以我们绕不开傅里叶变换的相关知识;

  • 纠错算法:我是根据需求以及使用的场景和观察数据,推到出来的纠错算法,目前纠错算法还没有覆盖所有的可能出错的数据,只是针对个别场景做了纠错;

  • 网上关于声波传输的资料不多,零星几篇分析原理的文章详细写了声波的编码,解码(最难搞)却是一笔带过。Github上面能找到的开源项目,识别成功率高的没有核心代码,有完整源码的识别成功率又达不到投入实际中使用的要求。所以我花了一些时间,在了解原理之后尝试了好几种解码的方案,踩过一些坑才最终把这个功能实现,在没有很强噪音下成功率可达%100,有噪音下成功率有点差,有待优化,我没有加降噪,后期将更新。

  • 由于公司产品需求,已支持所有字符和中文的传输;
    不过说真的Java这边做语音处理真麻烦,Python就很好分分钟就可以实现,目前在研究Python,哈哈,业余爱好,此篇文章结束,后续将持续讲解解码端,编码简单我就不讲了;

你可能感兴趣的:(Android 声波联网)