在这里插入图片描述
在这里插入图片描述

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。

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

在这里插入图片描述
主打:人工智能模块

在这里插入图片描述

语音合成相关说明

在这里插入图片描述

辅助:屏幕显示相关积木

在这里插入图片描述
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 系列实验之人工智能调用语音合成(TTS)模块
实验开源代码

// 引入离线语音识别&语音合成头文件,封装了ASR语音相关所有接口
#include "asr.h"
// 引入行空板K10整机驱动库,包含屏幕、RGB、喇叭、总线等硬件操作
#include "unihiker_k10.h"

// 实例化行空板硬件总控对象,所有板载外设操作都依赖该对象
UNIHIKER_K10 k10;
// 实例化语音处理对象,封装语音识别、离线语音合成播报接口
ASR          asr;
// 屏幕方向参数:2代表默认正向显示,可修改1/2/3/4切换屏幕旋转角度
uint8_t      screen_dir=2;

// 上电初始化函数,仅上电执行一次
void setup() {
	// 初始化行空板底层硬件总线、电源、外设基础驱动
	k10.begin();

	// 初始化语音模块
	// 参数1:CONTINUOUS 持续收音模式;参数2:CN_MODE 中文语音模式;参数3:6000 音频缓存时长6000ms
	asr.asrInit(CONTINUOUS, CN_MODE, 6000);

	// 阻塞等待语音模块初始化完成
	// _asrState=0代表未就绪,循环每100ms检测一次状态,就绪后跳出循环
	while(asr._asrState == 0){delay(100);}

	// 设置语音合成播报语速,数值范围0~5,数字越大朗读速度越快,2为中等语速
	asr.setAsrSpeed(2);

	// 根据指定方向初始化LCD屏幕驱动
	k10.initScreen(screen_dir);
	// 创建画布对象,所有文字、图形绘制都需要画布承载
	k10.creatCanvas();
	// 设置画布全局背景色,0xFFFFFF为纯白色
	k10.setScreenBackground(0xFFFFFF);

	// 在画布第4行绘制红色文字:行空板K10系列实验
	// 参数说明:文字内容、行号、RGB颜色值0xFF0000=红色
	k10.canvas->canvasText("行空板K10系列实验", 4, 0xFF0000);
	// 在画布第6行绘制蓝色文字:语音合成
	k10.canvas->canvasText("         语音合成", 6, 0x0000FF);
	// 将画布缓存内容刷新到物理屏幕,不调用则画面不会更新显示
	k10.canvas->updateCanvas();
}

// 主循环函数,初始化完成后无限循环执行
void loop() {
	// 调用离线语音合成,喇叭朗读中文文本:行空板K10系列实验
	asr.speak("行空板K10系列实验");
	// 第8行绘制黑色文字,覆盖/更新提示文本
	k10.canvas->canvasText("行空板K10系列实验", 8, 0x000000);
	// 刷新屏幕显示最新文字
	k10.canvas->updateCanvas();
	// 阻塞延时5000毫秒(5秒),暂停程序运行
	delay(5000);

	// 语音合成朗读数字字符串123456789
	asr.speak("123456789");
	// 第10行绘制深绿色提示文字
	k10.canvas->canvasText("朗读:123456789", 10, 0x003300);
	// 刷新屏幕
	k10.canvas->updateCanvas();
	// 阻塞延时4000毫秒(4秒)
	delay(4000);
}

代码解读
一、头文件与全局对象区

#include "asr.h"
#include "unihiker_k10.h"
// 创建对象
UNIHIKER_K10 k10;
ASR          asr;
uint8_t      screen_dir=2;
#include "asr.h"

行空板内置语音库,同时包含离线语音识别 ASR + 离线语音合成 TTS两套功能,asr对象既能收音识别指令,也能调用speak()文字播报。

#include "unihiker_k10.h"

行空板 K10 整机硬件驱动库,统一管理屏幕、喇叭、RGB、总线等全部外设。

UNIHIKER_K10 k10;

硬件总控实例,所有屏幕、灯光操作都依靠这个对象。

ASR asr;

语音功能实例,负责初始化语音模块、调节语速、文字朗读。

screen_dir=2

屏幕旋转参数,2 是默认正向显示,可修改 1/2/3/4 切换横竖屏、翻转画面。

二、setup () 上电初始化函数(仅上电运行 1 次)

void setup() {
	k10.begin();
	asr.asrInit(CONTINUOUS, CN_MODE, 6000);
	while(asr._asrState == 0){delay(100);}
	asr.setAsrSpeed(2);
	k10.initScreen(screen_dir);
	k10.creatCanvas();
	k10.setScreenBackground(0xFFFFFF);
	k10.canvas->canvasText("行空板K10系列实验", 4, 0xFF0000);
	k10.canvas->canvasText("         语音合成", 6, 0x0000FF);
	k10.canvas->updateCanvas();
}

逐行逻辑:

k10.begin();

初始化主板底层硬件,打开 I2S 音频、SPI 屏幕总线、供电电路。

asr.asrInit(CONTINUOUS, CN_MODE, 6000);

启动语音底层引擎:
CONTINUOUS:持续收音模式(语音识别功能开启);
CN_MODE:中文模式;
6000:音频缓存 6000 毫秒。
while(asr._asrState == 0){delay(100);}
阻塞等待语音模块加载完成:_asrState=0代表未就绪,每 100ms 循环检测,语音模型加载完毕才跳出循环。

asr.setAsrSpeed(2);

设置语音合成播报语速,范围 0~5,数字越大读得越快,2 为标准中等速度。

k10.initScreen(screen_dir);

按照设定方向初始化 LCD 屏幕驱动。

k10.creatCanvas();

创建绘图缓冲区(画布),所有文字、图形先画在缓存里,再统一刷新到屏幕。

k10.setScreenBackground(0xFFFFFF);

设置画布背景纯白色。
canvasText(文字, 行号, 颜色)
在指定行数绘制文字:
第 4 行红色:行空板 K10 系列实验;
第 6 行蓝色:语音合成。

updateCanvas();

把画布缓存内容刷新到实体屏幕,不执行该函数,文字不会显示。

三、loop () 无限循环主逻辑(上电初始化后持续循环)

void loop() {
	asr.speak("行空板K10系列实验");
	k10.canvas->canvasText("行空板K10系列实验", 8, 0x000000);
	k10.canvas->updateCanvas();
	delay(5000);
	asr.speak("123456789");
	k10.canvas->canvasText("朗读:123456789", 10, 0x003300);
	k10.canvas->updateCanvas();
	delay(4000);
}

四、单次循环完整流程:
asr.speak(“行空板K10系列实验”);
调用离线 TTS 语音合成,喇叭读出括号内中文,阻塞执行,朗读完成才会执行下一行代码。
在屏幕第 8 行输出黑色文字,标记当前朗读内容。
刷新屏幕显示文字。
delay(5000) 阻塞等待 5 秒。
语音播报数字123456789。
屏幕第 10 行深绿色文字提示当前朗读数字。
刷新屏幕,阻塞等待 4 秒,随后进入下一轮循环。

Mind+图形编程

在这里插入图片描述
实验场景图与视频记录

在这里插入图片描述
在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐