【花雕动手做】行空板 K10 系列实验之语音识别与语音合成的组合开关LED灯运用
行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板100%采用国产芯片知识产权自主可控符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源教学过程中无需额外连接其他设备便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。主要特点集成摄像头内置算法可进行离线图像检测集成麦克风内置算法可进行离线语音识别集成扬声器内置算法可进行离线语音合成2.8寸彩色屏幕数据展示更清晰集成度高利于教学接口丰富兼容软件多扩展性好主打人工智能模块语音识别相关说明语音合成相关说明辅助屏幕显示相关积木LED控制模块知识点语音识别ASR一、什么是语音识别ASR语音识别英文缩写是 ASRAutomatic Speech Recognition简单来说让单片机、电脑听懂人说话把麦克风采集到的声音信号转换成文字或者指令。分为两大类在线语音识别需要联网把声音上传到云端服务器解析识别词汇量巨大离线语音识别不需要 WiFi、不需要网络语音模型预先存放在芯片内部本地直接处理声音适合单片机、行空板、Arduino 这类硬件。你代码里使用的就是离线本地 ASR 语音模块。二、离线语音模块核心功能对应你 K10 代码两种工作模式1持续拾音模式 CONTINUOUS麦克风一直处于收音状态不间断监听声音专门用来做语音唤醒。对应代码asr.asrInit(CONTINUOUS, CN_MODE, 12000);2按键触发模式按下按键才开始录音识别省电一般用于命令词识别。语言模式 CN_MODECN_MODE中文模式只识别汉语EN_MODE英文模式识别英语。本程序开启中文识别用来识别唤醒词你好小新。灵敏度阈值第三个参数 12000数值代表声音检测灵敏度数值越大越不容易被环境杂音误触发抗干扰强数值越小轻声说话就能识别但是容易被噪音误唤醒。12000 属于中等灵敏度适合室内环境使用。三、语音唤醒技术本项目核心唤醒词机制唤醒词就是开门密码。模块平时处于低功耗监听状态只监听这一句话其他普通对话会直接忽略。只有说出预设唤醒词你好小新模块才会被 “唤醒”进入待命状态之后才可以识别后续控制指令。代码里的唤醒检测函数asr.isWakeUp()检测到唤醒词函数返回 true没有检测到唤醒词返回 false。3. 模块状态标志asr._asrState值 0语音模块正在启动、模型加载中暂时无法工作值 ≠ 0初始化完成可以正常收音识别。程序中用 while 循环等待模块就绪避免硬件未启动造成程序崩溃。四、硬件运行完整工作流程上电初始化行空板主板与显示屏启动 ASR 语音芯片加载离线语音模型等待语音模块就绪屏幕打印实验标题模块持续收音安静待机只监听唤醒词使用者说出你好小新程序捕捉到唤醒信号屏幕切换文字提示 “已唤醒行空板”没有听到唤醒词则一直显示唤醒词提示语句每秒刷新一次屏幕并清除文字防止画面重叠。五、离线语音识别优缺点优点完全离线不用网络、不用流量响应速度极快话音刚落立刻识别单片机就能驱动成本低非常适合机器人、智能音箱、门禁、实验教具不受网络波动影响设备在野外也能正常使用。缺点词汇数量有限一般只能预先录入几十条唤醒词 控制指令对嘈杂环境比较敏感噪音大会出现识别失败无法自由识别任意一句话只能识别预先烧录好的词语。六、拓展功能可以在现有代码上升级多级指令识别唤醒之后再识别 “开灯”“关灯”“前进”“后退”控制电机与 LED 灯自定义唤醒词修改库文件把 “你好小新” 改成 “你好行空板”多句话语音交互唤醒后连续识别多条语音命令调节收音灵敏度解决误唤醒或者识别不到声音的问题。七、容易遇到的常见问题识别不到唤醒词调低阈值数值靠近麦克风降低环境噪音。无缘无故自动唤醒误触发把灵敏度数值调高提高抗干扰能力。程序卡死在初始化循环语音模块接线异常串口通信断开导致模块始终处于未就绪状态。知识点行空板 K10 离线语音合成TTS介绍1、底层方案依托 ESP-SR 语音套件内置esp-tts轻量化离线语音合成引擎无需 WiFi 联网文字本地实时转人声依托板载喇叭直接发声。2、功能能力仅支持中文汉字、数字、常用标点朗读内置小新、小乐两种人声音色提供 0–5 级语速调节支持短句、长文本流式合成播放自带停顿逻辑。3、硬件配套板载集成扬声器无需外接音频设备共用芯片 PSRAM 内存资源与离线语音识别 ASR 存在内存抢占冲突二者无法同时运行同时初始化会内存报错、设备反复重启。4、资源占用单独运行 TTS 仅占用约 3MB PSRAM程序运行稳定若搭配屏幕、传感器内存余量会进一步缩减不建议叠加 AI 视觉模型。5、开发形式Mind 提供图形化语音合成积木底层封装规避指针崩溃问题也可调用playText.h底层库手写代码仅推荐纯播报场景使用。6、适用场景设备状态语音播报、文字朗读、交互提示、温湿度 / 数字信息语音输出适合不需要语音指令识别、仅单向发声的项目。7、短板无英文朗读能力人声存在轻微机械拼接感自然度弱于云端 TTS无法和离线语音识别共存有双向语音交互需求只能选用联网在线语音方案。【花雕动手做】行空板 K10 系列实验之语音识别与语音合成的组合开关LED灯运用实验开源代码// 引入离线语音识别ASR库实现语音唤醒、命令识别与语音播报#includeasr.h// 引入行空板K10硬件驱动库用于控制屏幕、RGB彩灯等外设#includeunihiker_k10.h// 实例化硬件对象UNIHIKER_K10 k10;// 行空板主控对象操控屏幕、彩灯、语音播报ASR asr;// 语音识别对象处理收音、识别、TTS语音朗读// 定义屏幕旋转参数数值2代表屏幕倒置显示uint8_tscreen_dir2;//// setup初始化函数上电/重启仅执行一次完成硬件初始化与指令配置//voidsetup(){// 初始化行空板底层所有硬件资源k10.begin();// 配置语音识别模块// CONTINUOUS持续不间断收音// CN_MODE中文识别模式// 12000语音检测灵敏度数值越大抗环境噪音越强asr.asrInit(CONTINUOUS,CN_MODE,12000);// 阻塞等待语音模块启动完成// _asrState0 表示语音模型正在加载模块未就绪// 每100毫秒检测一次状态防止硬件未就绪导致程序出错while(asr._asrState0){delay(100);}// 根据预设参数初始化显示屏k10.initScreen(screen_dir);// 创建屏幕绘图画布所有文字先写入画布缓冲区k10.creatCanvas();// 设置语音播报语速// 参数范围1~5数字越大语速越快2为中等语速asr.setAsrSpeed(2);// 向语音模块添加两条自定义离线语音命令// 函数格式addASRCommand(命令编号, 拼音口令)// 编号1拼音 kai deng 对应中文“开灯”asr.addASRCommand(01,kai deng);// 编号2拼音 guan deng 对应中文“关灯”asr.addASRCommand(11,guan deng);// 设置屏幕背景颜色0x000000 纯黑色背景k10.setScreenBackground(0x000000);}//// loop主循环初始化完成后无限循环实时监测语音指令//voidloop(){// 条件判断是否识别到唤醒词【你好小新】if(asr.isWakeUp()){// 唤醒成功在画布第6行写入红色文字k10.canvas-canvasText(已唤醒行空板.......,6,0xFF0000);// 刷新画布内容到LCD屏幕k10.canvas-updateCanvas();}else{// 未唤醒状态第4行写入浅蓝色文字提示唤醒关键词k10.canvas-canvasText(唤醒词为“你好小新”,4,0x33CCFF);k10.canvas-updateCanvas();}// 判断是否识别到编号1的语音命令“开灯”if(asr.isDetectCmdID(01)){// 在第9行写入白色文字提示执行开灯动作k10.canvas-canvasText( 打开白色灯光,9,0xFFFFFF);k10.canvas-updateCanvas();// 点亮全部RGB彩灯-1代表所有灯珠0xFFFFFF为纯白色k10.rgb-write(-1,0xFFFFFF);// TTS语音合成喇叭朗读语音灯打开asr.speak(灯打开);// 保持画面与语音2秒delay(2000);}// 判断是否识别到编号2的语音命令“关灯”if(asr.isDetectCmdID(11)){// 清空画布第9行避免新旧文字重叠k10.canvas-canvasClear(9);// 写入浅绿色文字提示关灯动作k10.canvas-canvasText( 关闭白色灯光,9,0x99FF99);k10.canvas-updateCanvas();// 关闭所有RGB彩灯颜色0x000000代表熄灭k10.rgb-write(-1,0x000000);// 喇叭语音播报关灯了asr.speak(关灯了);// 画面停留2秒delay(2000);}// 清空画布第6行及以下所有文字清除上一轮显示内容k10.canvas-canvasClear(6);}代码解读一、项目整体功能该程序运行在行空板 K10实现离线语音唤醒 语音指令控制 语音播报。操作流程说出唤醒词 “你好小新” 唤醒设备再说出 “开灯”“关灯”屏幕同步显示文字、板载彩灯对应亮灭同时喇叭发出语音提示。二、分段代码解读头文件与对象定义#includeasr.h#includeunihiker_k10.hasr.h离线语音库包含语音识别、文字转语音播报、指令配置功能。unihiker_k10.h行空板硬件库用来控制显示屏、RGB 彩灯。UNIHIKER_K10 k10;ASR asr;k10行空板硬件对象管理屏幕、彩灯。asr语音识别对象负责收音识别与语音朗读。uint8_tscreen_dir2;设置屏幕旋转方向2 为倒置方向。setup () 初始化函数上电仅执行一次k10.begin();初始化行空板所有底层硬件。asr.asrInit(CONTINUOUS,CN_MODE,12000);初始化语音模块CONTINUOUS持续收音不间断监听声音CN_MODE中文识别模式12000收音灵敏度数值越高抗干扰越强不容易误触发。while(asr._asrState0){delay(100);}等待语音模块加载模型完成。_asrState0代表模块未就绪程序循环等待每 100ms 检测一次防止程序异常。k10.initScreen(screen_dir);k10.creatCanvas();初始化屏幕并创建绘图缓冲区画布所有文字先写入画布再统一刷新。asr.setAsrSpeed(2);设置语音播报语速。档位 1~5数字越大读得越快2 为中等语速。asr.addASRCommand(01,kai deng);asr.addASRCommand(11,guan deng);预先添加两条离线语音指令1 号指令拼音 kai deng → 开灯2 号指令拼音 guan deng → 关灯离线语音必须提前注册指令只能识别预设口令。k10.setScreenBackground(0x000000);把屏幕背景设置为纯黑色彩色文字对比更明显。loop () 无限主循环1唤醒状态监测if(asr.isWakeUp())检测是否说出唤醒词 “你好小新”唤醒成功屏幕第 6 行显示红色文字 “已唤醒行空板”未唤醒屏幕第 4 行显示浅蓝色文字提示唤醒词。updateCanvas() 把画布内容刷新到屏幕。2开灯指令处理if(asr.isDetectCmdID(01))识别到 1 号指令 “开灯”屏幕第 9 行输出白色文字打开全部 RGB 灯颜色为纯白色0xFFFFFF调用 asr.speak(“灯打开”);喇叭语音播报延时 2 秒保持画面。3关灯指令处理if(asr.isDetectCmdID(11))识别到 2 号指令 “关灯”清空第 9 行旧文字防止画面重叠屏幕打印浅绿色文字关闭所有彩灯灯光值为 0x000000喇叭播报 “关灯了”延时停留 2 秒。4画面清理k10.canvas-canvasClear(6);清空第 6 行及以下所有文字清除上一轮内容等待下一次语音指令。三、完整运行步骤设备上电初始化主板、屏幕、语音模块等待语音芯片启动配置播报语速录入 “开灯”“关灯” 两条命令屏幕设置黑色背景麦克风持续监听唤醒词说出 “你好小新”设备被唤醒屏幕弹出唤醒提示语音说出 “开灯”屏幕提示、灯亮起、喇叭发声保持 2 秒语音说出 “关灯”屏幕更新、灯光熄灭、语音提示自动清空屏幕文字回到待机监听状态。Mind图形编程实验场景图与视频记录

相关新闻

URLFinder:快速发现网页链接和敏感信息的终极指南

URLFinder:快速发现网页链接和敏感信息的终极指南

URLFinder:快速发现网页链接和敏感信息的终极指南 【免费下载链接】URLFinder 一款快速、全面、易用的页面信息提取工具,可快速发现和提取页面中的JS、URL和敏感信息。 项目地址: https://gitcode.com/gh_mirrors/ur/URLFinder URLFinder是一款基…

2026/6/26 15:42:04阅读更多 →
淘宝开店避坑哪家最优秀

淘宝开店避坑哪家最优秀

导读:淘宝开店避坑是众多新手卖家和电商从业者关注的核心问题。面对市场上琳琅满目的培训和服务机构,如何选择一家真正能够提供有效指导、避免运营陷阱的!!合作伙伴!成为了关键。基于对行业现状的深入分析及用户反馈的综合考量,本文将重点探讨…

2026/6/26 15:42:04阅读更多 →
【Springboot毕设全套源码+文档】基于SpringBoot的学生学习成果展示平台的实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于SpringBoot的学生学习成果展示平台的实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/26 15:42:04阅读更多 →
【计算机毕业设计案例】基于 SpringBoot+Vue 的电影评分与推荐网站系统的设计与实现 基于 SpringBoot+Vue 的影视评论互动管理系统(程序+文档+讲解+定制)

【计算机毕业设计案例】基于 SpringBoot+Vue 的电影评分与推荐网站系统的设计与实现 基于 SpringBoot+Vue 的影视评论互动管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/26 17:07:13阅读更多 →
2026年低成本全网软文投放平台盘点:精准触达目标受众的优选

2026年低成本全网软文投放平台盘点:精准触达目标受众的优选

随着全域流量生态的成熟,软文投放已成为企业低成本获客的核心路径。行业报告显示,近6成中小微企业将软文投放列为年度营销预算的核心板块,但普遍面临“预算有限、精准度不足、投放效率低”的痛点。2026年,不同类型的投放平台呈现差…

2026/6/26 17:07:13阅读更多 →
如何在3秒内将网页图片转换为所需格式:Save Image as Type终极指南

如何在3秒内将网页图片转换为所需格式:Save Image as Type终极指南

如何在3秒内将网页图片转换为所需格式:Save Image as Type终极指南 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirro…

2026/6/26 17:07:13阅读更多 →
Nginx高性能配置与优化实战:从10万并发到100万并发的调优秘籍

Nginx高性能配置与优化实战:从10万并发到100万并发的调优秘籍

引言 在高并发场景下,Nginx以其事件驱动、异步非阻塞的架构成为反向代理和静态资源服务器的首选。但默认配置往往无法充分发挥服务器硬件的潜力,面对10万并发时性能瓶颈频现。本文将从内核参数、事件模型、连接数、缓存、压缩等维度深入讲解Nginx的高性能…

2026/6/26 17:07:13阅读更多 →
SDR++:跨平台软件定义无线电架构深度解析与性能优化指南

SDR++:跨平台软件定义无线电架构深度解析与性能优化指南

SDR:跨平台软件定义无线电架构深度解析与性能优化指南 【免费下载链接】SDRPlusPlus Cross-Platform SDR Software 项目地址: https://gitcode.com/GitHub_Trending/sd/SDRPlusPlus SDR(Software-Defined Radio)作为一款功能强大的跨平…

2026/6/26 17:07:13阅读更多 →
ETS2LA:如何在欧洲卡车模拟2中实现智能自动驾驶?

ETS2LA:如何在欧洲卡车模拟2中实现智能自动驾驶?

ETS2LA:如何在欧洲卡车模拟2中实现智能自动驾驶? 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Assist 你是否…

2026/6/26 17:02:13阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

一、前言:企业运维痛点与资源价值自博通收购 VMware 之后,原 VMware 公开免费下载渠道全面关闭,企业运维人员想要获取适配 HPE 慧与服务器的 ESXi 9 原厂镜像,必须注册博通账号、绑定有效授权才能下载,无授权账号无法获…

2026/6/26 0:02:15阅读更多 →
Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin作为一门现代编程语言,与Java的互操作性一直是其核心优势之一。为了让Kotlin代码能够无缝对接Java,Kotlin提供了多种注解来优化互操作体验,其中JvmStatic和JvmField是两个关键注解。它们分别用于解决静态成员和字段在Java中的访问问题&…

2026/6/26 0:02:15阅读更多 →
深入解析musl libc中的mmap实现源码

深入解析musl libc中的mmap实现源码

最近在阅读musl libc源码时,发现其mmap的实现非常精妙,特分享给大家。 一、代码整体结构 这段代码实现了__mmap函数,并通过weak_alias导出为mmap。这是典型的musl libc风格——提供弱符号以便用户可以重写。 weak_alias(__mmap, mmap); 二…

2026/6/26 0:02:15阅读更多 →