【RealtekRTL8722DM物联网开发套件】+云语音识别
非常感谢 Realtek 与面包板平台提供的 RTL8722DM MINI 的测评机会。以下是我基于该套件实现的云语音识别开发流程以及最终效果。

项目源码:https://github.com/ha-zhuzhu/RTL8722DM-MINI-speech_recognizer

项目演示视频:

前言

Ameba RTL8722DM MINI 板载功能非常丰富,支持 Wifi,蓝牙,Codec,麦克风耳机孔,Micro SD卡接口等……并且还有丰富的外围接口可以连接各种传感器。因此我们能够通过这块套件实现绝大部分物联网场景下的应用,如云语音识别。

Realtek 官网上提供了 RTL8722DM MINI 详细资料,并给出了针对其不同功能的各种 ARDUINO 示例程序,数量多达七十多个,而且各种库写的非常简洁、源码注释清晰,因此开发起来非常舒适。

简单浏览,找到几个与本测评项目相关的库:

  • HttpClient:支持http协议一些比较基本的操作。
  • FatFs_SD:读写 Fat 文件格式的 SD 卡。
  • RecordWav:能直接录制 wav 格式音频到 SD 卡上,也可以播放。

因此,云语音识别的实现流程为:

  • 按键检测,利用 RecordWav 录制音频到 SD 卡。

  • 利用 FatFs_SD 读取刚录制的音频。

  • 利用 HttpClient 将音频 POST 到服务器,服务器调用语音识别 api 后将识别结果返回给 Ameba。最后返回流程1。

开发流程


Ameba


HttpClient

HttpClient 支持 HTTP 的各种请求,不过功能还不够完善。目前该库还不支持持久连接,如 post() 源码的主要调用流程为:

  • startRequest():


    • sendInitialHeaders():发送请求头信息,包括“Connection: close”
      /* HttpClient.cpp */
    • // We don't support persistent connections, so tell the server to
    • // close this connection after we're done
    • sendHeader(HTTP_HEADER_CONNECTION, "close");