最近开发的一个工程中需要用到云上传功能,我是用来上传音频到云端进行识别的,目前开放的语音识别平台有很多家,科大讯飞、百度语音、阿里云等,但是这些商家对于安卓应用端和linux嵌入式开发的支持都是不错的,我的工程暂时用不到linux系统,所以先尝试用裸板进行音频上传识别,百度语音和阿里云都是支持restful的http请求进行识别的,那么裸板能够完成POST请求的就只能加ESP8266了,所以这里采用这个模块。平台我这里用的是百度语音,因为百度的技术文档支持写的还是比较详细的,所以研究一段时间也就差不多能够勉强使用了,但是受限于ESP8266这个模块的传输速度,这个识别过程不是很稳定,一旦网络不好很容易失败,而且这个识别过程很慢很慢。下面记录一下这个开发过程。
首先ESP8266这个模块基本上就相当于一个无线网卡,既可以作为热点,也可以通过路由器连接互联网,用的比较多的是用这个模块与手机进行无线连接然后用手机对程序做一些控制或者进行信息交互。这次拓展一下,直接用这个模块的STA模式连接互联网,然后与互联网进行数据交互。模块与单片机使用串口进行通信,模块集成了一些命令可以很方便的对其进行控制。其中用到的一些命令会在程序中进行介绍。
稍微介绍一下百度语音识别的过程,首先必须要有百度账号,然后到语音识别平台去注册一个应用,注册好之后会提供一个秘钥,之后会在程序中通过秘钥去获取一个token,只有在发送音频时加上这个token才能被识别。也就是说我们的识别过程分为两步,第一步是获取token,第二步是打包音频数据上传,当然其实还有第三步就是将返回的结果(json格式)进行解析,其实返回的token也是需要解析出来的。具体的细节性的内容请参看以下网址http://a