K10系列实验之语音控制照片上下切换

2026-07-04328
AI 快速预览详细 收起
本文介绍了如何使用行空板K10进行语音控制照片上下切换的实验。行空板K10集成了摄像头、麦克风和扬声器,支持离线语音识别和图像展示。通过简单的C++代码,用户可以实现语音控制照片切换,非常适合STEM教育场景中的编程启蒙和AI项目实践。
行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好


K10系列实验之语音控制照片上下切换图1K10系列实验之语音控制照片上下切换图2K10系列实验之语音控制照片上下切换图3
c++代码:
/*!
* MindPlus
* esp32s3bit
*
*/
#include "asr.h"
#include "unihiker_k10.h"
#include "Arduino_image_cache.h"

// 动态变量
volatile float mind_n_cnt;
// 创建对象
UNIHIKER_K10 k10;
ASR          asr;
uint8_t      screen_dir=2;


// 主程序开始
void setup() {
        k10.begin();
        asr.asrInit(CONTINUOUS, CN_MODE, 12000);
        while(asr._asrState == 0){delay(100);}
        asr.setAsrSpeed(2);
        k10.initScreen(screen_dir);
        k10.creatCanvas();
        asr.addASRCommand(0+1, "shang hua");
        asr.addASRCommand(1+1, "xia hua");
        mind_n_cnt = 0;
}
void loop() {
        if (((mind_n_cnt<0) || (mind_n_cnt>5))) {
                mind_n_cnt = 5;
        }
        if (asr.isWakeUp()) {
                if (asr.isDetectCmdID(0+1)) {
                        mind_n_cnt += 1;
                        if ((mind_n_cnt==0)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data1);
                                k10.canvas->updateCanvas();
                                asr.speak("这个是雕爷");
                        }
                        if ((mind_n_cnt==1)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data2);
                                k10.canvas->updateCanvas();
                                asr.speak("这个是我");
                        }
                        if ((mind_n_cnt==2)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data3);
                                k10.canvas->updateCanvas();
                                asr.speak("这个是好奇");
                        }
                        if ((mind_n_cnt==3)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data4);
                                k10.canvas->updateCanvas();
                                asr.speak("氛围");
                        }
                        if ((mind_n_cnt==4)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data5);
                                k10.canvas->updateCanvas();
                                asr.speak("这个人说他叫你猜");
                        }
                        if ((mind_n_cnt==5)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data6);
                                k10.canvas->updateCanvas();
                                asr.speak("这个叫啥不知道");
                        }
                }
                if (asr.isDetectCmdID(1+1)) {
                        mind_n_cnt -= 1;
                        if ((mind_n_cnt==0)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data7);
                                k10.canvas->updateCanvas();
                                asr.speak("这个是雕爷");
                        }
                        if ((mind_n_cnt==1)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data8);
                                k10.canvas->updateCanvas();
                                asr.speak("这个是我");
                        }
                        if ((mind_n_cnt==2)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data9);
                                k10.canvas->updateCanvas();
                                asr.speak("这个是好奇");
                        }
                        if ((mind_n_cnt==3)) {
                                k10.canvas->canvasDrawBitmap(0,0,100,100,image_data10);
                                k10.canvas->updateCanvas();
                                asr.speak("氛围");
                        }
                        if ((mind_n_cnt==4)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data11);
                                k10.canvas->updateCanvas();
                                asr.speak("这个人说他叫你猜");
                        }
                        if ((mind_n_cnt==5)) {
                                k10.canvas->canvasDrawBitmap(0,0,240,320,image_data12);
                                k10.canvas->updateCanvas();
                                asr.speak("这个叫啥不知道");
                        }
                }
        }
        else {
                k10.canvas->canvasText("唤醒词为你好小新", 1, 0x0000FF);
                k10.canvas->updateCanvas();
        }
}

cnt : 计数,为照片编号

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
驴友花雕
驴友花雕
代码要放到框子了
- 没有更多了 -