# TuyaAIBadge **Repository Path**: qinweiping/TuyaAIBadge ## Basic Information - **Project Name**: TuyaAIBadge - **Description**: 基于Tuya WukongSDK的智能徽章项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-10-18 - **Last Updated**: 2025-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
## 概述 支持四种语音交互模式、能够语音对话、能够感知情绪、通过摄像头感知周边环境,并且表达自己情绪的示例。开发者可以可以通过 `make app_menuconfig APP_NAME=tuyaos_demo_ai_toy` 来配置示例,以满足自己的不同需求。 ## 配置 ### 配置工程: ```shell make app_menuconfig APP_NAME=tuyaos_demo_ai_toy ``` * 示例同时支持音频+摄像头+屏幕功能,其中默认支持语音 + `UI`,摄像头需要配置打开;也可以配置关闭 `UI`:  注意,打开摄像头即开启多模态模式。需要使用不同的`PID`。 > 默认 `PID` 使用:`e3jrgtmuqsljru1t` > > 多模态 `PID` 使用:`zbwbmdyemfa4ipkw` * 示例支持三种硬件形态,可以按需选择开发板类型,默认使用 `T5AI_BOARD`:  三种开发板类型分别为: | 形态 | 功能 | | :----------------------------------------------------------- | :----------------------------------------------------- | | [`T5AI BOARD`](https://developer.tuya.com/cn/docs/iot-device-dev/T5-E1-IPEX-development-board?id=Ke9xehig1cabj) | `T5AI BOARD`开发底板+`3.5`寸屏幕盖板,微信聊天界面。 | | [`T5AI BOARD EYES`](https://developer.tuya.com/cn/docs/iot-device-dev/T5-E1-IPEX-development-board?id=Ke9xehig1cabj) | `T5AI BOARD`开发底板+`SPI`双眼屏幕盖板,眼睛表情界面。 | | [`T5AI_BOARD EVB`](https://developer.tuya.com/cn/docs/iot/T5AI-EVB-DATA-SHEET?id=Keghpxqt6wcal) | `T5AI BOARD EVB` 开发盒子,类 `xiaozhi` 聊天界面。 | ### 生成文件 配置完成之后,必须运行 `make app_config APP_NAME=tuyaos_demo_ai_toy` 生成新的 `tuya_app_config.h` 文件。 ```c #define T5AI_BOARD 1 // CONFIG_T5AI_BOARD_EYES is not set // CONFIG_T5AI_BOARD_EVB is not set // CONFIG_ENABLE_TUYA_CAMERA is not set #define ENABLE_TUYA_UI 1 ``` ## 软件 示例程序的产品创建、编译、烧录、调试过程请参考[`Wukong` `AI` 硬件开发框架-快速开始](https://developer.tuya.com/cn/docs/iot-device-dev/quick-start?id=Kectxdshpvsqr)。 ### 头文件说明 | 文件 | 功能 | | :-----------------: | :--------------------------------: | | `tuya_device_cfg.h` | 示例程序默认配置,可以按需修改。 | | `tuya_ai_toy.h` | 示例程序的各种类型定义和默认配置。 | | `tuya_ai_display.h` | 示例程序显示状态定义和交互接口。 | ### 源文件说明 | 文件 | 功能 | | :-----------------------------: | :----------------------------------------------------------: | | `src/tuya_app_main.c` | 入口文件 | | `src/tuya_ai_toy.c` | 玩具功能文件,实现了玩具的状态、交互逻辑 | | `src/tuya_ai_debug.c` | 音频调试功能文件,可以将aec、vad之后的音频上传到本地tcp服务,服务端: ./scripts/ai_audio_proc.py | | `src/reset_netcfg.c` | 重置功能文件,3次重启之后进入配网状态功能实现 | | `src/media/media_src_zh.c` | 中文提示音资源文件 | | `src/media/media_src_en.c` | 英文提示音资源文件 | | `src/display/ui/*.c` | ui 文件目录,保存了各种表情图片转换得到的c array文件,包括emo表情、眼睛表情、字库等。 | | `src/display/tuya_ai_display.c` | 显示功能文件,实现了屏幕驱动加载功能 | | `src/display/wechat_app.c` | 微信交互界面功能文件,实现了微信对话的界面功能 | | `src/display/eyes_app.c` | 双眼表情交互界面功能文件,实现了眼睛表情的界面功能 | | `src/display/xiaozhi_app.c` | 小智交互界面功能文件,实现了小智对话的界面功能 | | 其他文件 | 参考[tuyaos_demo_quickstart/README.md](./tuyaos_demo_quickstart/README.md) | ### 接口说明 功能接口说明请查看涂鸦开发者 [文档中心-能力地图](https://developer.tuya.com/cn/docs/iot-device-dev/wukong-abi-map?id=Keedxu1netj62) 板块。 ## 自定义功能修改 ### 基本参数调整 默认参数位于 `.include\tuya_device_config.h`,可以按需修改。 * #### 🚀 引脚参数配置 ```c // 开机默认音量 #ifndef TY_SPK_DEFAULT_VOL #define TY_SPK_DEFAULT_VOL 70 #endif // 本地提示音默认语言 0: chinese, 1: english #define TY_AI_DEFAULT_LANG 0 ``` * 其中音量调整在 `APP` 面板上支持,如果需要本地按键调整音量,请参考`tuya_ai_toy.c`文件中的 `key_process` 函数。 * 如果想修改本地默认提示音的语言类型,参考语音提示词修改部分。 * #### 🚀 默认参数配置 可按需修改对应的开发板类型下的默认引脚配置: ```c // 按需修改 #define TY_AI_TOY_CFG_DEFAULT { \ .audio_trigger_pin = TUYA_GPIO_NUM_12, \ // 按键唤醒建:双击切换模式;长按仅在长按模式下拾音;单击在按键模式下唤醒,其他模式打断对话。 .spk_en_pin = TUYA_GPIO_NUM_28, \ // mute 控制引脚 .led_pin = TUYA_GPIO_NUM_1, \ // led 控制引脚 .trigger_mode = TY_AI_TRIGGER_MODE_HOLD, \ // 对话模式,共4种,具体参考对话模式切换部分 .audio_cfg = TY_AI_AUDIO_CFG_DEF \ // 音频参数配置,具体参考语音参数修改部分 } ``` * **对话模式切换** 连续按键`audio_trigger_pin`,可以触发对话模式切换。目前支持4种对话模式,分别为: ```c typedef enum { TY_AI_TRIGGER_MODE_HOLD, // 长按触发模式 TY_AI_TRIGGER_MODE_ONE_SHOT, // 单次按键,回合制对话模式 TY_AI_TRIGGER_MODE_WAKEUP, // 关键词唤醒模式 TY_AI_TRIGGER_MODE_FREE, // 关键词唤醒和自由对话模式 } TY_AI_TRIGGER_MODE_E; ``` * **语音参数修改** 可按需修改对应的开发板类型下的默认语音参数配置: ```c // 按需修改 #define TY_AI_AUDIO_CFG_DEF { \ .sample_rate = TKL_AUDIO_SAMPLE_16K, \ .sample_bits = TKL_AUDIO_DATABITS_16, \ .channel = TKL_AUDIO_CHANNEL_MONO, \ .upload_slice_duration = 100, \ // 单次上传的语音数据长度,默认100ms .record_duration = 10000, \ // 单词聊天的最大时长,默认10s,超时会退出拾音,需要按需修改 .vad_pre_active_duration = 500, \ // vad触发前,触发前的语音缓存合并上传到云端的语音数据时长,以保障语音的完整性,默认500ms .vad_active_duration = 300, \ // vad触发检测时长,默认300ms,当检测到vad之后,会上传500ms + 300ms的数据 .vad_inactive_duration = 500, \ // vad结束检测时长,默认500ms,当500ms内没有有效声音即结束上传,以保障语音的完整性,默认500ms .vad_frame_duration = 10, \ // 一个语音帧时长,默认10ms .vad_silence_timeout = 30000, \ // vad静默超时时间,在唤醒之后,静默时间超时之后即停止拾音,进入等待重新唤醒的状态 } ``` ### 语音提示词修改 示例默认的语音提示词保存在 `.\src\media_src_zh.h` 和 `.\src\media_src_en.h` 中,如果需要修改或者是新增,可以参考[本地提示音修改](https://developer.tuya.com/cn/docs/developer/local-voice-prompt?id=Kehkq7n11rgas)。 > 提示词语音文件体积较大,需要注意不要超出固件最大支持的体积,否则会编译失败。如果需要较大的内置语音,需要外挂flash,将这些语音存储在外部flash上的文件系统中。 ### 眼睛表情修改 示例默认的眼睛表情保存在 `.\src\display\ui\eyes128\` 目录下,如果需要修改或者是新增,可以编辑好`GIF`图片之后,使用[LVGL官方转换工具](https://lvgl.io/tools/imageconverter)将图片转换成`c array`。 > 眼睛表情文件体积较大,需要注意不要超出固件最大支持的体积,否则会编译失败。如果需要较大的眼睛表情图片,需要外挂flash,将这些图片存储在外部flash上的文件系统中。 ### 语音唤醒词修改 语音唤醒模式和随意对话模式可以支持语音唤醒功能,目前支持“你好涂鸦”、“小智同学”、“hey, tuya” 三种唤醒词。唤醒词不需要额外修改代码,直接使用即可。如果需要自定义唤醒词,可以参考[语音唤醒](https://developer.tuya.com/cn/docs/developer/wukong-capability-wakeup-internal?id=Keiuxitde0yee)。 ### 音频质量调试 音频数据的质量,是保障产品功能、体验的基础,也是保证语音识别正确率,大模型理解、应答准确度的前提条件。因此,每个 AI 硬件产品都需要进行音频质量调试。涂鸦提供了基础的音频数据调试方法,以协助您在开发过程中获取音频数据,并结合数据对产品结构、硬件、软件进行调整,保障音频数据质量,提高唤醒率、语音识别率,优化大模型交互体验。可以参考[音频质量调试](https://developer.tuya.com/cn/docs/iot-device-dev/tuyaos-wukong-audio-debug?id=Kej2ddypw52iw)。 ### 电池电量管理 示例默认的电池电量管理位于基于`.\src\tuya_ai_battery.c`文件。目前仅支持`18650` `2000ma` 锂电池,如果是其他型号的,则自行根据电池能力曲线修改。 ## others 如果开发过程遇到问题,可以到 TuyaOS 开发者论坛 [联网单品开发版块](https://www.tuyaos.com/viewforum.php?f=11) 发帖咨询。