DuerOS实例开发

2024-01-05 09:49
文章标签 开发 实例 dueros

本文主要是介绍DuerOS实例开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 准备代码

将app/examples/dueros_example/里的app和board分别拷到对应的目录下;

air_e32/app

air_e32/hardware/esp-adf/board

拷贝前,将原来的app和board移走。

2 编译代码

cd app/esp-adf/

make clean

make

3 下载固件

注意:extflash.bin的下载地址为0x200000

4 代码分析

4.1 分区

由于代码占用空间大,调大代码的分区,打开app/esp-adf/esp32.ld,将ROM分区做调整:

  /* Flash mapped constant data */

  drom0_0_seg (R) :                  org = 0x3F400018, len = 0x200000-0x18

  drom0_1_seg (R) :                  org = 0x3F600018, len = 0x100000-0x18

drom0_0_seg 是代码分区,drom0_1_seg 是图片分区

相应的,extflash.bin的下载地址为0x200000

4.2 UI

UI设计为聆听和说话两个表情,每个表情由2张图片组成动画,app\src\assets\images\listen和app\src\assets\images\talk。

代码设计聆听和说话两个事件,当收到聆听事件,则打开聆听动画,当收到说话事件,则打开说话动画。

AnimatedImage amg_example;

void MainView::setupScreen()

{

// Setup background image

amg_example.setXY(0, 0);

amg_example.setBitmaps(BITMAP_LISTEN_01_ID, BITMAP_LISTEN_02_ID);

    amg_example.setUpdateTicksInterval(60);

add(amg_example);

amg_example.startAnimation(false, false, true);

}

void MainView::handleMsgData(GUI_Message_T *msg)

{

switch(msg->msgID)

{

case MSG_LISTENING:

amg_example.setBitmaps(BITMAP_LISTEN_01_ID, BITMAP_LISTEN_02_ID);

break;

case MSG_TALKING:

amg_example.setBitmaps(BITMAP_TALK_01_ID, BITMAP_TALK_02_ID);

break;

default:

break;

}

}

4.3 Board

查看音频板的选择:

cd app/esp-adf

make menuconfig

air_e32 board的代码位于:hardware\esp-adf\components\audio_board\air_e32_v2

4.4 DuerOS

设置Wifi连接帐号和密码:

hardware\esp-adf\board\dueros_app.c

#ifndef CONFIG_WIFI_PASSWORD

#define CONFIG_WIFI_SSID "xxx"

#define CONFIG_WIFI_PASSWORD "xxxxxxxx"

#endif

准备一张T卡,将hardware\esp-adf\air_e32_examples\dueros\tone\DingDing.wav文件拷到T卡里,将T卡插入开发板。

更换duer_profile,在hardware\esp-adf\components\dueros_service\目录下,有一个默认的duer_profile,用户可以创建自己的duer帐号:

注册、登陆:DuerOS开放平台

页面往下拉到最后,点击“开始体验”:

进入后,点击“+”配置新设备:

选择类型“音箱”:

选择系统“FreeRTOS”:

点击“申请ClientID”,然后点“轻量设备配置”:

进入后,点“设备端开发”,再点“profile”:

点击“profile”后会自动下载一个zip包,解压后,会有很多个profile文件,选择其中一个,将里面的内容复制到hardware\esp-adf\components\dueros_service\duer_profile,然后重新编译代码就可以了。

5 运行

烧录出固件后,运行效果如下,可以用唤醒词“你好,乐鑫”。

ESP-ADF LinkGUI TouchGFX 百度语音

6 开发板

https://item.taobao.com/item.htm?ft=t&id=656956861952

这篇关于DuerOS实例开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572470

相关文章

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc