开源啦!基于RT-Thread的百度语音识别——录音功能的实现(三)

本文介绍了如何在RT-Thread操作系统上实现基于百度语音识别的录音功能,通过Audio设备框架,详细讲解了录音的开启、实现和IPC通信的使用,涉及按键触发录音、语音识别及数据解析等关键步骤。项目源码已开源在GitHub。
摘要由CSDN通过智能技术生成

本期分享来自RT-Thread的社区小伙伴霹雳大乌龙,如果你也有文章愿意分享/希望获得官方的写作指导,可以发送文章/联系方式邮件至邮箱:xuqianqian@rt-thread.com  

回顾往期:

软件包应用分享|基于RT-Thread的百度语音识别(一)

软件包应用分享|基于RT-Thread的百度语音识别(二)

一、前言


项目地址:https://github.com/lxzzzzzxl/Baidu_Speech_base_on_RT-Thread

(请复制至外部浏览器打开)

在前面的2篇连载中我们已经讲解了百度语音识别的流程,如何使用webclient软件包进行语音识别,如何使用CJson软件包进行数据解析,如何在LCD上显示识别结果,如何通过语音识别控制外设。这一切的一切的首要前提,就是语音,那我们前面使用的是事先录制好的音频,而本次连载,我们终于要来实现录音功能了,有了录音,你想怎么识别就可以怎么识别,是不是很棒。

我将采用RT-Thread的Audio设备框架,下面我会简单介绍该框架。但在那之前,我建议你先去看看正点原子教程的 “音乐播放器” 及 “录音机” 两个例程,确保你对WAVE文件,音频编解码芯片,SAI等知识点有一定的了解。

二、 Audio设备框架


Audio(音频)设备是嵌入式系统中非常重要的一个组成部分,负责音频数据的采样和输出。如下图所示:

RT-Thread的Audio设备驱动框架为我们提供了标准 device 接口(open/close/read/control),只要我们对接好设备框架,就可以在我们的应用代码里直接使用这些标准接口,对设备进行操作。(RT-Thread其他设备框架实现原理都是如此)详细介绍见RT-Thread文档中心:https://www.rt-thread.org/document/site/

本篇我们不具体讲解Audio设备框架的对接,因为我使用的潘多拉开发板是官方支持的板子,所以底层驱动,框架对接这部分已经有相应的支持了。这里只简单提一下设备框架的对接方法,RT-Thread所有的设备框架的对接,基本上都是两大步骤:

  1. 准备好相应的设备驱动,实现对应框架的ops函数

  2. 进行设备注册

想要弄懂这两步,RT-Thread的文档中心需要多看,还有就是去看框架源码。

三、动手实践

1.打开Audio设备(使能录音功能)

2.录音功能实现
  1/* wav_record.c */
  2
  3#include <rtthread.h>
  4#include <rtdevice.h>
  5#include <dfs_posix.h>
  6
  7#define RECORD_TIME_MS      5000
  8#define RECORD_SAMPLERATE   8000
  9#define RECORD_CHANNEL      2
 10#define RECORD_CHUNK_SZ     ((RECORD_SAMPLERATE * RECORD_CHANNEL * 2) * 20 / 1000)
 11
 12#define SOUND_DEVICE_NAME    "mic0"      /* Audio 设备名称 */
 13static rt_device_t mic_dev;              /* Audio 设备句柄 */
 14
 15struct wav_header
 16{
 17    char  riff_id[4];              /* "RIFF" */
 18    int   riff_datasize;           /* RIFF chunk da
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值