更新时间:2025-06-03 02:15:35下载pdf
Wukong AI 硬件开发框架在 T5 芯片/模组上,支持内置语音唤醒算法,用户可以通过特定的唤醒词来唤醒设备。目前默认支持三种唤醒词:“你好涂鸦”、“小智同学”、“Hey, Tuya”(英文)。
如果想定义个性化的唤醒词,目前需要通过涂鸦来定制。您可以联系您的涂鸦商务,提交需求,并沟通具体的项目细节和计划。
内置语音唤醒算法需要硬件的支持。设计音频回采电路,将喇叭播放的声音通过回采电路输入到回声消除算法(AEC),以保障唤醒词在喇叭播放声音的时候正常工作。
关于音频回采电路,您可以参考以下硬件方案:
内置语音唤醒算法目前工作在涂鸦语音子系统中,尚未对外开放。您只需要设置 TY_AI_TOY_CFG_DEFAULT
的 trigger_mode
为 TY_AI_TRIGGER_MODE_WAKEUP
或者 TY_AI_TRIGGER_MODE_FREE
即自动支持,无需关心其原理以及具体如何使用。
// 交互类型定义
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;
// 设置工作模式为关键词唤醒模式
#define TY_AI_TOY_CFG_DEFAULT { \
.audio_trigger_pin = TUYA_GPIO_NUM_12, \
.spk_en_pin = TUYA_GPIO_NUM_28, \
.led_pin = TUYA_GPIO_NUM_1, \
.trigger_mode = TY_AI_TRIGGER_MODE_WAKEUP, \
.audio_cfg = TY_AI_AUDIO_CFG_DEF \
}
唤醒算法目前在 CPU1
上运行,接收 VAD
算法判断有人声的数据之后进行唤醒词识别,并将识别成功的通过 IPC(核间通信)
发送给 CPU0
,用于唤醒设备进行交互。
如果您有语音处理的经验,想要使用自己的唤醒算法,可以重写 tuya_asr_init
函数,将自己的唤醒算法集成进来:
VOID_T tuya_asr_init(VOID_T)
{
// IPC between cpu0 and cpu1
tkl_asr_init(asr_cpu1_event, NULL);
// Queue for the ASR thread, the ASR should fetch data from asr_msg_queue
tkl_queue_create_init(&asr_msg_queue, sizeof(asr_msg_data_t), 50);
// New thread for ASR, below are two example threads
#if TUYA_ENABLE_ASR_WANSON
tkl_thread_create_in_psram(&sg_hrd_hdl, "tuya_asr_xxx", 1024*4, 4, xxx_asr_task, NULL);
#else
tkl_thread_create_in_psram(&sg_hrd_hdl, "tuya_asr_yyy", 1024*4, 4, yyy_asr_task, NULL);
#endif
}
如果您语音处理经验丰富,能够完全使用自己的语音前端处理的算法,可以自行进行 AEC、VAD 算法替换。
然后修改 tuya_asr_enable
函数,自行在语音处理流程中添加唤醒算法。
BOOL_T tuya_asr_enable(VOID_T)
{
return FALSE;
}
唤醒算法在工作的时候,需要对外输出唤醒事件,可以参考以下代码实现:
int rs = xxx_ASR_Recog((short*)(mic_data + i * RAW_READ_SIZE), 480, (const char **)&text, &score);
if (rs == 1) {
bk_printf("xxx_ASR_Recog -> %s \n", text);
if (os_strcmp(text, "你好涂鸦") == 0 || {
tuya_asr_event(1); // Send wakeup event to cpu0
} else {
// Nothing
}
}
在开发过程遇到问题,可以到 TuyaOS 开发者论坛 联网单品开发版块 发帖咨询。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈