|
120| 9
|
[K10教程] 【花雕动手做】行空板 K10 之TT马达双驱五角轮语音小车 |
![]() 行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。 主要特点 集成摄像头&内置算法,可进行离线图像检测 集成麦克风&内置算法,可进行离线语音识别 集成扬声器&内置算法,可进行离线语音合成 2.8寸彩色屏幕,数据展示更清晰 集成度高,利于教学 接口丰富,兼容软件多,扩展性好 ![]() |
|
知识点:语音识别(ASR) 一、什么是语音识别(ASR) 语音识别英文缩写是 ASR(Automatic Speech Recognition),简单来说:让单片机、电脑听懂人说话,把麦克风采集到的声音信号,转换成文字或者指令。 分为两大类: 在线语音识别:需要联网,把声音上传到云端服务器解析,识别词汇量巨大; 离线语音识别:不需要 WiFi、不需要网络,语音模型预先存放在芯片内部,本地直接处理声音,适合单片机、行空板、Arduino 这类硬件。 你代码里使用的就是离线本地 ASR 语音模块。 二、离线语音模块核心功能(对应你 K10 代码) 1. 两种工作模式 (1)持续拾音模式 CONTINUOUS 麦克风一直处于收音状态,不间断监听声音,专门用来做语音唤醒。 对应代码:asr.asrInit(CONTINUOUS, CN_MODE, 12000); (2)按键触发模式 按下按键才开始录音识别,省电,一般用于命令词识别。 2. 语言模式 CN_MODE CN_MODE:中文模式,只识别汉语; EN_MODE:英文模式,识别英语。 本程序开启中文识别,用来识别唤醒词:你好小新。 3. 灵敏度阈值(第三个参数 12000) 数值代表声音检测灵敏度: 数值越大:越不容易被环境杂音误触发,抗干扰强; 数值越小:轻声说话就能识别,但是容易被噪音误唤醒。 12000 属于中等灵敏度,适合室内环境使用。 三、语音唤醒技术(本项目核心) 1. 唤醒词机制 唤醒词就是开门密码。模块平时处于低功耗监听状态,只监听这一句话,其他普通对话会直接忽略。 只有说出预设唤醒词(你好小新),模块才会被 “唤醒”,进入待命状态,之后才可以识别后续控制指令。 2. 代码里的唤醒检测函数 检测到唤醒词,函数返回 true; 没有检测到唤醒词,返回 false。 3. 模块状态标志 值 = 0:语音模块正在启动、模型加载中,暂时无法工作; 值 ≠ 0:初始化完成,可以正常收音识别。 程序中用 while 循环等待模块就绪,避免硬件未启动造成程序崩溃。 四、硬件运行完整工作流程 上电初始化行空板主板与显示屏; 启动 ASR 语音芯片,加载离线语音模型; 等待语音模块就绪; 屏幕打印实验标题; 模块持续收音,安静待机,只监听唤醒词; 使用者说出:你好小新; 程序捕捉到唤醒信号,屏幕切换文字提示 “已唤醒行空板”; 没有听到唤醒词,则一直显示唤醒词提示语句; 每秒刷新一次屏幕,并清除文字,防止画面重叠。 五、离线语音识别优缺点 优点 完全离线,不用网络、不用流量; 响应速度极快,话音刚落立刻识别; 单片机就能驱动,成本低,非常适合机器人、智能音箱、门禁、实验教具; 不受网络波动影响,设备在野外也能正常使用。 缺点 词汇数量有限,一般只能预先录入几十条唤醒词 + 控制指令; 对嘈杂环境比较敏感,噪音大会出现识别失败; 无法自由识别任意一句话,只能识别预先烧录好的词语。 六、拓展功能(可以在现有代码上升级) 多级指令识别 唤醒之后,再识别 “开灯”“关灯”“前进”“后退”,控制电机与 LED 灯; 自定义唤醒词 修改库文件,把 “你好小新” 改成 “你好行空板”; 多句话语音交互 唤醒后连续识别多条语音命令; 调节收音灵敏度,解决误唤醒或者识别不到声音的问题。 七、容易遇到的常见问题 识别不到唤醒词 调低阈值数值,靠近麦克风,降低环境噪音。 无缘无故自动唤醒(误触发) 把灵敏度数值调高,提高抗干扰能力。 程序卡死在初始化循环 语音模块接线异常,串口通信断开,导致模块始终处于未就绪状态。 ![]() |
|
【花雕动手做】行空板 K10 系列实验之TT马达差速双驱五角轮语音识别智能小车 实验开源代码 |
|
# 行空板 K10 离线语音控制两轮差速小车 代码解读 一、头文件 1. `asr.h`:行空板离线语音识别库,支持唤醒词 + 自定义语音指令识别,**不需要联网**; 2. `unihiker_k10.h`:行空板 K10 底层硬件库,驱动屏幕、画布; 3. `Microbit_Motor.h`:microbit 电机拓展板驱动库,控制直流电机 M1/M2/M3/M4。 二、全局对象 - `k10`:行空板主控硬件对象; - `asr`:离线语音识别实例; - `screen_dir=2`:屏幕正向竖屏; - `motorbit`:四路电机驱动对象。 三、setup () 上电初始化(仅执行一次) 逐行解析: 1. `k10.begin()`:初始化行空板所有硬件; 2. `asr.asrInit(CONTINUOUS, CN_MODE, 10000)` - `CONTINUOUS`:持续监听模式 - `CN_MODE`:中文识别模式 - `10000`:语音会话超时时间(毫秒) 3. `while(asr._asrState == 0)` 阻塞等待语音模块初始化完成,初始化不成功不往下执行; 4. 初始化屏幕方向、创建绘图画布; 5. `asr.addASRCommand(指令ID,拼音)` 注册语音指令,**识别关键词必须填写拼音,不能写汉字**; ![]() > 默认唤醒词:**你好小新** > 规则:必须先说唤醒词,再下达运动指令,语音模块才会识别命令。 四、loop () 无限主循环 - `asr.isWakeUp()`:判断是否识别到唤醒词【你好小新】 - 唤醒成功:屏幕第 7 行红色文字提示; - 未唤醒:显示待机提示,告知用户唤醒词。 识别到【前进】:M1 正转,M4 反转,小车向前直行。 > 文字语法:canvasText (x 坐标,y 坐标,颜色,字体,透明度,抗锯齿),自由位置文字,不按行排布。 识别【停车】:停止全部电机。 识别【后退】:电机反向运转,速度 120(比前进慢)。 识别【右转】:原地转向,持续 1 秒后自动停机。 识别【左转】:原地转向,持续 1 秒自动停机。 识别【原地转圈】:电机持续旋转,**不会自动停止**。 循环末尾清空屏幕第 7 行文字,避免唤醒提示文字长期残留叠加。 # 功能总览 **离线语音两轮差速小车控制系统** 工作流程: 上电 → 语音模块初始化完成 → 持续监听唤醒词 1. 说出:**你好小新** → 系统唤醒; 2. 紧接着说出语音指令,小车执行动作。 指令清单 ![]() # 核心要点与代码缺陷【实操重点】 ## 1、硬件底盘 仅使用 M1、M4 两路电机,**适配两轮差速小车** 不能直接用于三轮全向轮 / 四轮麦克纳姆轮。 ## 2、阻塞问题 左转、右转内部使用 `delay(1000)` delay 运行期间整个程序暂停,**语音识别暂时失效**,这段时间无法接收新指令。 ## 3、运动模式区分 - 左转 / 右转:点动,1 秒自动停 - 前进 / 后退 / 转圈:持续运行,必须语音下达【停车】才能停机 ## 4、语音识别关键规则 指令只能用拼音注册;必须先唤醒,否则所有指令无效;离线识别,不需要 WiFi、互联网。 ## 5、两种屏幕文字接口区别 1. `canvasText(文字,行数,颜色)`:按固定行排版; 2. `canvasText(x,y,颜色,字体,...)`:自由坐标绘制,适合状态标题。 # 运行必备条件 1. Mind + 扩展库:unihiker\_k10、Microbit\_Motor、asr 离线语音库 2. 开发板:行空板 K10(esp32s3bit) 3. 硬件接线:左右两轮电机分别接 M1、M4。 |
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed