扫地机 Wukong AI 能力

更新时间:2026-01-07 06:04:20下载pdf

本文为您介绍如何在扫地机中集成 Wukong AI 能力,重点介绍如何使用涂鸦提供的接口来实现扫地机的智能交互功能以及音视频数据处理。

功能描述

在集成 Wukong AI 能力后,扫地机可以实现与用户的智能交互,通过音视频数据的分析与处理为用户提供更好的使用体验。系统提供了完整的 AI 交互生命周期管理,包括初始化、预录设置、开始交互及停止交互等功能。

接口及用法说明

AI 能力初始化

ty_ai_chat_service_init

功能描述

初始化 AI 功能,在使用 AI 能力前必须先调用此接口进行初始化。

接口定义

/**
 * @brief         callback of ai cmd
 * @param[in]     cmd. specifically refer to TY_AI_CHAT_CMD_TYPE_E
 * @param[in]     args. additional data for cmd
 * @return        VOID
 */
typedef VOID (*TY_AI_CMD_CB)(TY_AI_CHAT_CMD_TYPE_E cmd, CONST PVOID_T args);
    
/**
 * @brief         callback of audio play
 * @param[in]     audio_data. if the AI voice ends, audio_data will be equal to NULL
 * @param[in]     len. len of audio data. if the AI voice ends, len will be equal to 0
 * @return        VOID
 */
typedef VOID (*TY_AI_AUDIO_PLAY_CB)(CONST CHAR_T *audio_data, INT_T len);

/**
 * @brief AI chat service initialization
 * @param[in] cmd_cb AI command callback function
 * @param[in] audio_play_cb Audio playback callback function
 * @param[in] tts_format TTS audio format, such as "mp3", "pcm", etc. Pass NULL to not set
 * @param[in] pre_record_time Pre-recording time in ms, developers can adjust as needed
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET ty_ai_chat_service_init(TY_AI_CMD_CB cmd_cb, 
                                    TY_AI_AUDIO_PLAY_CB audio_play_cb,
                                    CHAR_T *tts_format,
                                    UINT_T pre_record_time);

参数说明

参数 说明
cmd_cb AI 命令回调函数,处理 AI 语音指令,需要您对接的一些操作命令或者状态
audio_play_cb AI 音频播放回调函数,处理 TTS 音频播放
tts_format TTS 音频格式(如 MP3、PCM),传 NULL 则不设置
pre_record_time AI 聊天预录音时长,单位 ms;调用 ty_ai_station_start_act 接口,Wukong AI 会从 ringbuffer 中获取当前时间往前 pre_time_ms 毫秒的音视频数据,并发送到云端进行处理。

返回值

参数 说明
OPRT_OK 表示初始化成功
其他 表示发生错误,具体错误码请参考 tuya_error_code.h

开始 AI 交互

ty_ai_station_start_act

功能描述

开始当前的 AI 交互会话。调用后,会从 ringbuffer 中取音视频数据发送给云端。

接口定义

/**
 * @brief Start AI station activity
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET ty_ai_station_start_act(void);

返回值

参数 说明
OPRT_OK 表示初始化成功
其他 表示发生错误,具体错误码请参考 tuya_error_code.h

停止 AI 交互

ty_ai_station_stop_act

功能描述

结束当前的 AI 交互会话。调用后,设备会停止向云端发送数据,并开始接受云端返回的数据。云端数据会通过 TY_AI_CMD_CB event_cb, TY_AI_AUDIO_PLAY_CB audio_cb 通知给您。

接口定义

/**
 * @brief Stop AI station activity
 *
 * @return OPRT_OK on success. Others on error, please refer to tuya_error_code.h
 */
OPERATE_RET ty_ai_station_stop_act(void);

返回值

参数 说明
OPRT_OK 表示初始化成功
其他 表示发生错误,具体错误码请参考 tuya_error_code.h

使用流程

以下是 AI 能力使用流程示例:

#include "tuya_error_code.h"
/**
 * @brief AI 指令回调函数
 * @param[in] cmd AI 命令类型包括语音识别、情感分析、移动控制等
 * @param[in] args 命令参数指针
 */
static VOID tuya_rvc_ai_cmd_cb(TUYA_AI_CMD_TYPE_E cmd, CONST PVOID_T args)
{
    PR_DEBUG("tuya_rvc_ai_cmd_cb cmd:%d", cmd);
    //自行处理 cmd 命令
    return;
}

/**
 * @brief 音频播放回调函数
 * @param[in] buf 音频数据缓冲区
 * @param[in] len 音频数据长度
 * @note 处理音频数据的保存,将音频数据写入 PCM 文件
 *       当 buf 为 NULL 时表示数据结束,关闭文件
 */
static VOID tuya_rvc_audio_play_cb(CONST CHAR_T *buf, UINT_T len)
{
    //自行实现文件的保存
    return;
}
// 上电主流程
int main(int argc, char* argv[])
{
    OPERATE_RET ret = 0;
    
    ret = ty_rvc_iot_init(); //机器人相关事件初始化
    if (ret != OPRT_OK) {
        PR_ERR("ty_rvc_iot_init err");
        return ret;
    }
    // IOT SDK 相关初始化...
    // 初始化 AI 聊天服务,设置 TTS 格式为 MP3,预录时间 2000 ms
    ret = ty_ai_chat_service_init(tuya_rvc_ai_cmd_cb, tuya_rvc_audio_play_cb, "mp3", 2000);
    if (ret != OPRT_OK) {
        PR_ERR("ty_ai_chat_service_init err");
        return ret;
    }
    
    // 启动 AI station 服务
    ret = ty_ai_station_start_act();
    if (ret != OPRT_OK) {
        PR_ERR("ty_ai_station_start_act err");
        return ret;
    }
    
    PR_DEBUG("AI chat service started successfully");
    
    // 其他业务初始化...
}

常见问题

为什么需要设置预录时间?

预录时间能确保捕获到用户语音指令的完整开始部分,提高识别准确率。

AI 交互会话是否支持并发?

建议同一时间只维持一个 AI 交互会话,以确保稳定性。

为什么没有收到云端的音频数据?

目前云端只支持 PCM 和 Opus 的音频格式,可能是由于放入 ringbuffer 的音频数据编码格式不符合要求。

通过合理使用这些接口,您可以在扫地机中实现完整的 AI 交互能力,提升产品的智能化水平和用户体验。