更新时间:2023-12-25 07:16:52下载pdf
自定义语音具有丰富的应用场景,需要与 App 配合使用,设备端可获取并下载提前录制的语音。
下载云端录音列表中的语音资源,然后保存至设备中。涉及从云端获取语音文件信息列表和下载语音文件操作,需要与 App 和云端进行交互。
tuya_ipc_voice.h
该功能使用到以下数据结构:
typedef struct
{
BOOL_T valid;
BOOL_T isPreset;
CHAR_T name[VOICE_NAME_LEN+1];
CHAR_T filename[VOICE_FILENAME_LEN+1];
INT_T id;
UINT_T size;
UINT_T duration;
} VOICE_LIST_S;
/**
* \brief callback to process downloading voice data
* \param[in] data is voice data
* \param[in] len is voice data length
* \param[in] pri_data is pointer set in tuya_ipc_voice_download_start api
* \return OPERATE_RET
*/
typedef OPERATE_RET (*GET_VOICE_DATA_CB)(IN BYTE_T *data, IN UINT_T len, IN PVOID_T pri_data);
/**
* \brief callback when download finished
* \param[in] download_result > 0 : download succeeded
* download_result == 0 : download is stopped by tuya_ipc_voice_download_stop api
* dowaload_result < 0 : download failed
* \param[in] pri_data is pointer set in tuya_ipc_voice_download_start api
* \return VOID
*/
typedef VOID (*VOICE_NOTIFY_CB)(IN INT_T download_result, IN PVOID_T pri_data);
/**
* \fn OPERATE_RET tuya_ipc_voice_init
* \brief initialize voice
* \param[in] code is voice code
* \param[in] max_voice_num is max voice number in voice list
* \return OPERATE_RET
*/
OPERATE_RET tuya_ipc_voice_init(IN CHAR_T *code, IN UINT_T max_voice_num);
参数说明
参数 | 说明 |
---|---|
code | 下载后的音频文件的前缀命名,可参照云端参数或自定义设置。 |
max_voice_num | 音频文件的最大存储数量,与 VOICE_LIST_S 类型同时使用。 |
/**
* \fn VOID tuya_ipc_voice_uninit
* \brief uninitialize voice
* \return VOID
*/
VOID tuya_ipc_voice_uninit(VOID);
执行后停止下载任务,退出内部工作的线程。
/**
* \fn OPERATE_RET tuya_ipc_get_voice_list
* \brief get voice list
* \param[inout] voice_list is the voice list, voice list is array which has max_voice_num elements
* \param[in] upgrade, update the latest voice list immediately if upgrade is TRUE
* \return OPERATE_RET
*/
OPERATE_RET tuya_ipc_get_voice_list(INOUT VOICE_LIST_S *voice_list, BOOL_T upgrade);
参数说明
参数 | 说明 |
---|---|
voice_list | 传入传出参数,链表中将会填充从云端获取到的文件信息。每个文件对应链表中的每个元素,每个文件都会包含 ID 等信息,可用于下载时的传参。 |
upgrade | 强制从云端更新标记。 |
/**
* \fn OPERATE_RET tuya_ipc_voice_download_start
* \brief start downloading voice
* \param[in] code is voice code
* \param[in] id is voice id for each voice file
* \param[in] get_voice_cb is voice file downloading callback function
* \param[in] voice_notify_cb is voice file download finished callback function
* \param[in] priv_data is pointer passed to get_voice_cb and voice_notify_cb callback function
* \return OPERATE_RET
*/
OPERATE_RET tuya_ipc_voice_download_start(IN CHAR_T *code, IN INT_T id, IN GET_VOICE_DATA_CB get_voice_cb, IN VOICE_NOTIFY_CB voice_notify_cb, IN PVOID_T pri_data);
参数说明
参数 | 说明 |
---|---|
code | 参数和初始化时的 code 一致。 |
id | 参数对应从云端获取的语音文件信息中的 ID,即想要下载的文件 ID。 |
get_voice_cb | 下载回调函数,需要自行实现,回调中可直接对语音数据进行保存操作。 |
voice_notify_cb | 下载结束回调,需要自行实现,下载完成自动进入该回调中。 |
pri_data | 是上述回调中的传参句柄。 |
/**
* \fn VOID tuya_ipc_download_stop
* \brief stop downloading voice
* \return VOID
*/
VOID tuya_ipc_voice_download_stop(VOID);
调用后,将会主动终止正在下载的文件。
该功能涉及到网络、时间等基础业务。首先需要激活设备并绑定 App,其次需要等待 MQTT 上线以及同步到时间,然后才进行初始化启动。参考下图:
语音功能成功初始化后,可根据上层业务需要,执行获取列表和下载任务。
tuya_ipc_voice_download_start
执行下载任务。对应的 DP 和产品的后台配置相关。调试阶段,建议 Log 等级放开到 debug 级别 tuya_ipc_set_log_attr(4,NULL)
。
初始化成功输出
获取语音文件列表输出
下载获取文件时输出
检查传参是否异常。
voice_list
大小是否满足要求。code
参数是否有效。该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈