7浏览
查看: 7|回复: 7

[K10教程] 【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

[复制链接]
【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图1

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

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


【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图2

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

主打:人工智能模块

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图1


语音合成相关说明

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图2


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

辅助:屏幕显示相关积木

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图1

LED控制模块
【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图2



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图1

知识点:行空板 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)...图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

【花雕动手做】行空板 K10 系列实验之人工智能调用语音合成(TTS)模块
实验开源代码

  1. // 引入离线语音识别&语音合成头文件,封装了ASR语音相关所有接口
  2. #include "asr.h"
  3. // 引入行空板K10整机驱动库,包含屏幕、RGB、喇叭、总线等硬件操作
  4. #include "unihiker_k10.h"
  5. // 实例化行空板硬件总控对象,所有板载外设操作都依赖该对象
  6. UNIHIKER_K10 k10;
  7. // 实例化语音处理对象,封装语音识别、离线语音合成播报接口
  8. ASR          asr;
  9. // 屏幕方向参数:2代表默认正向显示,可修改1/2/3/4切换屏幕旋转角度
  10. uint8_t      screen_dir=2;
  11. // 上电初始化函数,仅上电执行一次
  12. void setup() {
  13.         // 初始化行空板底层硬件总线、电源、外设基础驱动
  14.         k10.begin();
  15.         // 初始化语音模块
  16.         // 参数1:CONTINUOUS 持续收音模式;参数2:CN_MODE 中文语音模式;参数3:6000 音频缓存时长6000ms
  17.         asr.asrInit(CONTINUOUS, CN_MODE, 6000);
  18.         // 阻塞等待语音模块初始化完成
  19.         // _asrState=0代表未就绪,循环每100ms检测一次状态,就绪后跳出循环
  20.         while(asr._asrState == 0){delay(100);}
  21.         // 设置语音合成播报语速,数值范围0~5,数字越大朗读速度越快,2为中等语速
  22.         asr.setAsrSpeed(2);
  23.         // 根据指定方向初始化LCD屏幕驱动
  24.         k10.initScreen(screen_dir);
  25.         // 创建画布对象,所有文字、图形绘制都需要画布承载
  26.         k10.creatCanvas();
  27.         // 设置画布全局背景色,0xFFFFFF为纯白色
  28.         k10.setScreenBackground(0xFFFFFF);
  29.         // 在画布第4行绘制红色文字:行空板K10系列实验
  30.         // 参数说明:文字内容、行号、RGB颜色值0xFF0000=红色
  31.         k10.canvas->canvasText("行空板K10系列实验", 4, 0xFF0000);
  32.         // 在画布第6行绘制蓝色文字:语音合成
  33.         k10.canvas->canvasText("         语音合成", 6, 0x0000FF);
  34.         // 将画布缓存内容刷新到物理屏幕,不调用则画面不会更新显示
  35.         k10.canvas->updateCanvas();
  36. }
  37. // 主循环函数,初始化完成后无限循环执行
  38. void loop() {
  39.         // 调用离线语音合成,喇叭朗读中文文本:行空板K10系列实验
  40.         asr.speak("行空板K10系列实验");
  41.         // 第8行绘制黑色文字,覆盖/更新提示文本
  42.         k10.canvas->canvasText("行空板K10系列实验", 8, 0x000000);
  43.         // 刷新屏幕显示最新文字
  44.         k10.canvas->updateCanvas();
  45.         // 阻塞延时5000毫秒(5秒),暂停程序运行
  46.         delay(5000);
  47.         // 语音合成朗读数字字符串123456789
  48.         asr.speak("123456789");
  49.         // 第10行绘制深绿色提示文字
  50.         k10.canvas->canvasText("朗读:123456789", 10, 0x003300);
  51.         // 刷新屏幕
  52.         k10.canvas->updateCanvas();
  53.         // 阻塞延时4000毫秒(4秒)
  54.         delay(4000);
  55. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

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

  1. #include "asr.h"
  2. #include "unihiker_k10.h"
  3. // 创建对象
  4. UNIHIKER_K10 k10;
  5. ASR          asr;
  6. uint8_t      screen_dir=2;
  7. #include "asr.h"
复制代码

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

行空板 K10 整机硬件驱动库,统一管理屏幕、喇叭、RGB、总线等全部外设。
  1. UNIHIKER_K10 k10;
复制代码

硬件总控实例,所有屏幕、灯光操作都依靠这个对象。
  1. ASR asr;
复制代码

语音功能实例,负责初始化语音模块、调节语速、文字朗读。
  1. screen_dir=2
复制代码

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

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

  1. void setup() {
  2.         k10.begin();
  3.         asr.asrInit(CONTINUOUS, CN_MODE, 6000);
  4.         while(asr._asrState == 0){delay(100);}
  5.         asr.setAsrSpeed(2);
  6.         k10.initScreen(screen_dir);
  7.         k10.creatCanvas();
  8.         k10.setScreenBackground(0xFFFFFF);
  9.         k10.canvas->canvasText("行空板K10系列实验", 4, 0xFF0000);
  10.         k10.canvas->canvasText("         语音合成", 6, 0x0000FF);
  11.         k10.canvas->updateCanvas();
  12. }
复制代码

逐行逻辑:
  1. k10.begin();
复制代码

初始化主板底层硬件,打开 I2S 音频、SPI 屏幕总线、供电电路。
  1. asr.asrInit(CONTINUOUS, CN_MODE, 6000);
复制代码

启动语音底层引擎:
CONTINUOUS:持续收音模式(语音识别功能开启);
CN_MODE:中文模式;
6000:音频缓存 6000 毫秒。
  1. while(asr._asrState == 0){delay(100);}
复制代码

阻塞等待语音模块加载完成:_asrState=0代表未就绪,每 100ms 循环检测,语音模型加载完毕才跳出循环。
  1. asr.setAsrSpeed(2);
复制代码

设置语音合成播报语速,范围 0~5,数字越大读得越快,2 为标准中等速度。
  1. k10.initScreen(screen_dir);
复制代码

按照设定方向初始化 LCD 屏幕驱动。
  1. k10.creatCanvas();
复制代码

创建绘图缓冲区(画布),所有文字、图形先画在缓存里,再统一刷新到屏幕。
  1. k10.setScreenBackground(0xFFFFFF);
复制代码

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

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

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

  1. void loop() {
  2.         asr.speak("行空板K10系列实验");
  3.         k10.canvas->canvasText("行空板K10系列实验", 8, 0x000000);
  4.         k10.canvas->updateCanvas();
  5.         delay(5000);
  6.         asr.speak("123456789");
  7.         k10.canvas->canvasText("朗读:123456789", 10, 0x003300);
  8.         k10.canvas->updateCanvas();
  9.         delay(4000);
  10. }
复制代码

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

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

Mind+图形编程

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...

实验场景图与视频记录

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图2

【花雕动手做】K10实验之人工智能调用语音合成(TTS)...图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail