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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如