doubao_chat/lib/net/tencent/tvs_common/tvs_common_def.h

282 lines
9.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file tvs_common_def.h
* @brief TVS SDK结构体和参数、返回值、错误码等定义
* @date 2019-5-10
*/
#ifndef __TVS_COMMON_DEF_H__
#define __TVS_COMMON_DEF_H__
#include "generic/typedef.h"
//---------------------------------------------------------------------------
// 错误码
//---------------------------------------------------------------------------
/**
* @brief 成功
*/
#define TVS_API_ERROR_NONE 0
/**
* @brief 一般错误
*/
#define TVS_API_ERROR_OTHERS -1
/**
* @brief 当前正处于智能语音对话或者播放控制中,无法启动
*/
#define TVS_API_ERROR_BUSY -2
/**
* @brief 当前播放器正忙,无法启动
*/
#define TVS_API_ERROR_MEDIAPLAYER_INVALID -3
/**
* @brief 当前终端未鉴权
*/
#define TVS_API_ERROR_NOT_ATHORIZED -4
/**
* @brief 当前终端网络连接异常
*/
#define TVS_API_ERROR_NETWORK_INVALID -5
/**
* @brief 由于终端无client id,导致授权失败
*/
#define TVS_API_ERROR_CLIENT_ID_INVALID -6
/**
* @brief 由于终端SDK处于STOP状态
*/
#define TVS_API_ERROR_NOT_RUNNING -7
/**
* @brief 由于网络异常导致后台无响应
*/
#define TVS_API_ERROR_NETWORK_ERROR -8
/**
* @brief 执行播控切换后,后台未下发媒体,一般是因为歌单播放完毕导致
*/
#define TVS_API_ERROR_NO_MORE_MEDIA -10
#define TVS_API_ERROR_INVALID_PARAMS -11
/**
* @brief SDK状态
*/
typedef enum {
TVS_STATE_IDLE, /*!< 空闲状态 */
TVS_STATE_PREPARING, /*!< 准备状态 */
TVS_STATE_RECOGNIZNG, /*!< "语音识别中"状态 */
TVS_STATE_BUSY, /*!< 忙状态 */
TVS_STATE_SPEECH_PLAYING, /*!< TTS播报状态 */
} tvs_recognize_state;
#define TVS_STATE_COMPLETE TVS_STATE_IDLE
/**
* @brief SDK环境
*/
typedef enum {
TVS_API_ENV_TEST, /*!< 测试环境 */
TVS_API_ENV_NORMAL, /*!< 正式环境 */
TVS_API_ENV_EXP, /*!< 体验环境 */
TVS_API_ENV_DEV, /*!< 开发环境 */
} tvs_api_env;
/**
* @brief 人设/模式
*/
typedef enum {
TVS_MODE_NORMAL, /*!< 普通模式 */
TVS_MODE_BAOLA, /*!< 宝拉模式 */
TVS_MODE_CHILD, /*!< 儿童模式 */
TVS_MODE_COUNT,
} tvs_mode;
/**
* @brief SDK配置参数
*/
typedef struct {
tvs_api_env def_env; /*!< SDK默认环境 */
bool def_sandbox_open; /*!< SDK默认是否开启沙箱,true代表默认开启 */
int recorder_bitrate; /*!< 录音参数,取值为8000/16000, 默认为8000 */
int recorder_channels; /*!< 录音参数,声道数, 默认为1 */
int reserve[10];
} tvs_default_config;
/**
* @brief 产品QUA
*/
typedef struct {
char *version; /*!< 终端版本号,必须为4段,每一段为一个数字,各个数字之间用"."分开,例如:1.0.1.1000;
新的版本号必须比旧版本号大,例如
2.0.1.101 > 2.0.1.100 > 1.0.1.1011 > 1.0.1.1000 */
char *package_name; /*!< 终端软件包名,用于区分不同产品,格式一般为com.companyname.product */
char *reserve; /*!< 扩展字段,一般填NULL,仅用于有特殊需求时候,对QUA字段进行扩展,例如:&VIN=1001&DE=SPEAKER */
} tvs_product_qua;
/**
* @brief AUDIO_PROVIDER返回码
*/
typedef enum {
TVS_API_AUDIO_PROVIDER_ERROR_NONE = 0, /*!< 正常结束 */
TVS_API_AUDIO_PROVIDER_ERROR_OTHERS = -1, /*!< 其他原因 */
TVS_API_AUDIO_PROVIDER_ERROR_STOP_CAPTURE = -2, /*!< 收到云端VAD的结束标识 */
TVS_API_AUDIO_PROVIDER_ERROR_TIME_OUT = -3, /*!< 流式语音上传超时,一般是请求超时或者服务器未及时响应 */
TVS_API_AUDIO_PROVIDER_ERROR_NETWORK = -10, /*!< 流式语音上传失败,由于网络原因导致 */
} tvs_api_audio_provider_error;
/**
* @brief 设备端启动智能语音的方式,包括按下说话/抬起停止模式、单击按钮录音模式以及唤醒词唤醒模式
*/
typedef enum {
TVS_RECOGNIZER_PRESS_AND_HOLD, /*!< push to talk 模式 */
TVS_RECOGNIZER_TAP, /*!< 点击按钮录音模式 */
TVS_RECOGNIZER_WAKEWORD, /*!< 唤醒词模式 */
TVS_RECOGNIZER_TYPE_MAX,
} tvs_api_recognizer_type;
/**
* @brief 设备端当前正在执行的指令类型
*/
typedef enum {
TVS_CONTROL_SPEECH = 100, /*!< 语音对话 */
TVS_CONTROL_PLAY_NEXT, /*!< 播控切换,下一首 */
TVS_CONTROL_PLAY_PREV, /*!< 播控切换,上一首 */
TVS_CONTROL_PLAY_FINISH, /*!< 通知后台,播放完毕 */
TVS_CONTROL_SEMANTIC, /*!< 发送明确语义 */
} tvs_api_control_type;
/**
* @brief 设备端状态变化时的参数
*/
typedef struct {
tvs_api_control_type control_type; /*!< 当前执行的指令类型,见enum tvs_api_control_type */
int error; /*!< 错误码,值见TVS_API_ERROR_ */
int reserve[5]; /*!< 预留*/
} tvs_api_state_param;
#define TVS_TIMBRE_ZHOULONGFEI "ZHOULONGFEI"
#define TVS_TIMBRE_CHENANQI "CHENANQI"
#define TVS_TIMBRE_YEZI "YEZI"
#define TVS_TIMBRE_YEWAN "YEWAN"
#define TVS_TIMBRE_DAJI "DAJI"
#define TVS_TIMBRE_LIBAI "LIBAI"
#define TVS_TIMBRE_NAZHA "NAZHA"
#define TVS_TIMBRE_MUZHA "MUZHA"
#define TVS_TIMBRE_WY "WY"
/**
* @brief 语音合成参数
*/
typedef struct {
char *tts_text; /*!< 语音合成的内容 */
char *timbre; /*!< 音色(取值见TVS_TIMBRE_*, 如果设置为NULL,后台进行语音合成时,将采用默认音色) */
int volume; /*!< 音量(取值0~100, 如果设置为-1,后台进行语音合成时,将采用默认值100) */
int speed; /*!< 语速(取值0~100, 如果设置为-1,后台进行语音合成时,将采用默认值50) */
int pitch; /*!< 声调(取值0~100, 如果设置为-1,后台进行语音合成时,将采用默认值50) */
} tvs_api_tts_param;
/**
* @brief 监听SDK状态变化
*
* @param last_state 上一个状态。
* @param new_state 下一个状态。
* @param state_param 状态变化参数,见tvs_api_state_param的定义,需要进行一次转换:
* tvs_api_state_param* param = (tvs_api_state_param*)state_param
*
* @return 无
*/
typedef void (*tvs_callback_on_state_changed)(tvs_recognize_state last_state, tvs_recognize_state new_state, void *state_param);
/**
* @brief 监听多端互动推送信息,一般是来自手机APP端的自定义消息。
* 实现此接口,可以接受这些自定义消息的推送,并跟进消息内容进行处理。
*
* @param text 推送信息,一般是转义后的Json字符串,要与消息推送方约定格式。
* @param token 消息的唯一标识。
* @return 无
*/
typedef void (*tvs_callback_on_terminal_sync)(const char *text, const char *token);
/**
* @brief 监听模式切换,用户使用语音或者从手机APP端切换模式后,设备端会收到模式切换指令。
* 实现此接口,可以在模式切换的时候得到通知
*
* @param src 当前模式。
* @param dst 切换的目标模式。
* @return 无
*/
typedef void (*tvs_callback_on_mode_changed)(tvs_mode src, tvs_mode dst);
/**
* @brief 监听多轮会话事件,用户使用语音触发多轮会话的场景,设备端会收到多轮会话指令。
* 实现此接口,可以在触发多轮对话的时候得到通知,需要触发一轮新的智能语音对话流程。
*
* @param 无
* @return 无
*/
typedef void (*tvs_callback_on_expect_speech)();
/**
* @brief 监听后台下发的自定义技能数据
*
* @param json_payload 自定义技能数据,为一个Json字符串
* @return 无
*/
typedef void (*tvs_callback_on_recv_tvs_control)(const char *json_payload);
/**
* @brief 监听后台下发的语音转文本结果
*
* @param asr_text 语音转文本结果
* @param is_end 取值true代表asr_text为语音识别最终结果,false代表asr_text为语音识别的中间结果
* @return 无
*/
typedef void (*tvs_callback_on_asr_result)(const char *asr_text, bool is_end);
/**
* @brief 监听后台下发的厂商账号解绑消息
*
* @param unbind_time 解绑的时间
* @return 无
*/
typedef void (*tvs_callback_on_unbind)(long long unbind_time);
/**
* @brief 向SDK注册的回调函数
*/
typedef struct {
tvs_callback_on_state_changed on_state_changed; /*!< 监听SDK状态变化 */
tvs_callback_on_terminal_sync on_terminal_sync; /*!< 监听多端互动推送信息 */
tvs_callback_on_mode_changed on_mode_changed; /*!< 监听模式切换 */
tvs_callback_on_expect_speech on_expect_speech; /*!< 多轮会话 */
tvs_callback_on_recv_tvs_control on_recv_tvs_control; /*!< 自定义技能 */
tvs_callback_on_unbind on_unbind; /*!< 解绑消息 */
int reserve[10];
} tvs_api_callback;
/**
* @brief 监听authorize的结果,需要持久化此结果,作为下一次authorize的依据
*
* @param ok 为true代表操作成功,为false代表操作失败。
* @param auth_info authorize结果。
* @param auth_info_len authorize结果的长度。
* @param error 失败原因
* @return 无
*/
typedef void (*tvs_authorize_callback)(bool ok, char *auth_info, int auth_info_len, const char *client_id, int error);
/**
* @brief 当SDK内部的流式语音上传操作停止时,将回调此接口
*
* @param session_id 会话ID
* @param error 停止原因,见tvs_api_audio_provider_error枚举
* @return 0代表成功,其他值代表失败
*/
typedef void (*tvs_api_callback_on_provider_reader_stop)(int session_id, int error);
#endif