题目
如下函数是否存在问题?如果存在问题如何修改?同时简要阐述涉及的相关概念。
本次我们还是先不实现录音功能,因为音频编解码这一块是比较有难度的,再加上RT-Thread的Audio设备也比较复杂,难以理解,我暂时没考虑好怎么讲解该部分(我自己也没理解透~),所以就放到后面再分享吧。那么这次我们就讲讲项目的第7点:
将中文字库烧写进外挂的spi flash,使用SUFD+FAL软件包读写flash,实现LCD的中文显示,用来显示语音识别结果。
原本我做项目时,是没有打算要在LCD上显示识别结果的,但是因为我使用的潘多拉开发板板载了一块1.3寸的240*240高分辨率TFTLCD显示屏,不把它用上岂不是浪费?再加上后面想到如果不用语音识别来控制外设,识别一些其他语音的时候,有个可以显示识别结果的屏幕,岂不美哉。于是乎我便开始整LCD显示了,不整不知道,一整头皮发麻,RT-Thread官方对于潘多拉开发板在驱动各方面的支持都已经做的非常好了,包括LCD驱动,但是却没有中文字库的支持,也没有相关的资料,所以我就只能自己想办法实现了。
下面我分享的内容,跟百度语音识别没有太大的关系,主要是如何在LCD上显示中文的内容,但百度语音确确实实给我在实现的路上埋下了许多坑,所以我觉得这部分还是很有必要分享的,究竟是怎么一回事,听我细细道来。
在本次实践开始之前,你必须确保你已经做了以下两件事:
如果上面说的准备事项没有问题,那么请继续往下看:
这次我们将先跳过录音功能,而使用事先准备好的音频文件进行语音识别并控制板载RGB灯(上一篇的5,6点),所以你还需要准备一些音频文件,比如“红灯开”,“蓝灯关”。。。我是用手机录的音频,然后使用ffmpeg工具将音频转为百度语音官方认为最适合的16k采样率pcm文件,最后将这些音频文件放进sd卡中,我们的文件系统也是挂载在sd卡上的。
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丰富的组件以及一系列好用的软件包,作为应用开发者,我们不必过度关心底层的实现,而可以将更多的精力放在应用实现上,我将分享的百度语音识别便是如此。
1 | rt_thread_t rt_thread_create(const char* name, //线程名称 |
1 | rt_err_t rt_thread_delete( |