手把手教你实现基于RT-Thread的百度语音识别(一)

时间:2024-04-06 11:58:19

RT-Thread简介

RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过2亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、Javascript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的MCU和Wi-Fi芯片。

得益于RT-thread丰富的组件以及一系列好用的软件包,作为应用开发者,我们不必过度关心底层的实现,而可以将更多的精力放在应用实现上,我将分享的百度语音识别便是如此。

百度AI简介

语音识别服务是百度AI众多服务中的一项,应用该服务,你可以将语音识别为文字,适用于手机应用语音交互、语音内容分析、智能硬件、呼叫中心智能客服等多种场景。我分享的百度语音识别就是将该服务应用于STM32上的一个案例。

项目介绍

硬件:STM32 + 音频编解码芯片 + LCD + 常用外设(为了方便我直接使用正点原子的潘多拉开发板)

平台:RT-Thread + 百度AI

1.使用RT-Thread的 ‘stm32l475-atk-pandora’ BSP(若你使用的硬件跟我不一样,可以使用RT-Thread对应的BSP,或根据官方教程自行制作);

2.挂载elm FatFS文件系统,用于存放待识别音频;

3.初始化板载WIFI模块 AP6181 或 使用AT组件+ESP8266,使开发板具备网络功能;

4.使用Audio组件,实现录音功能,并将音频存入文件系统;

5.使用webclient软件包,将文件系统中的音频上传到百度AI服务端,识别后返回Json数据;

6.使用CJson软件包解析数据,根据解析出的数据作出响应动作(控制RGB灯);

7.将中文字库烧写进外挂的spi flash,使用SUFD+FAL软件包读写flash,实现LCD的中文显示。

因为项目的重点以及难点在于百度语音识别,所以接下来的系列文章,我将着重讲解上述的4-7点,而其他部分大家自行前往RT-Thread的文档中心学习。

百度语音识别服务使用流程

在项目开始之前,我觉得有必要带大家走一遍百度语音服务的调用流程,不然直接写代码,肯定懵逼一大片。其实这部分我之前在我的个人博客也有简单写过,顺手打波广告(lxzzzzzxl.github.io)我的个人博客,不过太久没去看发现很多图挂了,应该是之前使用的图床有问题。废话不多说:

百度语音识别简单来说就是百度AI通过API的方式给开发者提供一个通用的HTTP接口,开发者通过这个接口上传音频文件,返回识别结果;

首先我们要注册一个百度开发者账号,然后创建一个语音识别的应用:

1.搜索“百度AI”,进入如下页面,点击右上方控制台(未注册的需注册):
手把手教你实现基于RT-Thread的百度语音识别(一)

2.点击“语音技术”,进入如下页面,点击“创建应用”:
手把手教你实现基于RT-Thread的百度语音识别(一)

3.填写相关信息后点击创建,创建成功后可以在应用列表看到你新创建的应用:
手把手教你实现基于RT-Thread的百度语音识别(一)

语音识别过程

4.获取 Access Token:

(这里推荐一个软件:Postman,使用这个软件你可以在自己的PC上完整的体验整个百度语音识别过程)

向授权服务地址 https://aip.baidubce.com/oauth/2.0/token 发送请求(推荐使用POST),并在URL中带上以下参数:

grant_type: 必须参数,固定为client_credentials;

client_id: 必须参数,应用的API Key;

client_secret: 必须参数,应用的Secret Key;

使用浏览器,例:

https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlLT0vuXV4&client_secret= 0rDSjzQ20XUj5iPQSzr5pVw2&

下图为使用Postman:
手把手教你实现基于RT-Thread的百度语音识别(一)

5.使用Access Token进行语音识别(Content-Type必填 / body里放的是你自己的音频文件,需与Content-Type对应,可以下载官方样例)
手把手教你实现基于RT-Thread的百度语音识别(一)手把手教你实现基于RT-Thread的百度语音识别(一)手把手教你实现基于RT-Thread的百度语音识别(一)

更多详细内容,大家参考百度AI文档中心的相关部分https://ai.baidu.com/docs#/ASR-API/77e2b22e ,相信各位看完文档再来看这部分会豁然开朗~

本次的介绍就到这里了,说实在的写博客写推文比敲代码难多了,本人水平有限,表达或许有些难以明白,望多见谅~~