doubao_chat/lib/net/turing/turing.h

224 lines
7.7 KiB
C
Raw Permalink 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.

#ifndef _TURING_H_
#define _TURING_H_
#include "sock_api/sock_api.h"
#include "json_c/json_tokener.h"
// #define TURING_MEMORY_DEBUG
#define TURING_DEBUG
#ifdef TURING_DEBUG
#define TR_DEBUG_E(...) printf("[ERROR] in func:%s line:%d ", __func__, __LINE__), \
printf(__VA_ARGS__), \
printf("\r\n");
#define TR_DEBUG_I(...) printf(__VA_ARGS__)
#else
#define TR_DEBUG_E(...)
#define TR_DEBUG_I(...)
#endif
#define TURING_ENC_USE_OPUS 1
typedef enum {
ASR_PCM_16K_16BIT,
ASR_PCM_8K_16BIT,
ASR_AMR_8K_16BIT,
ASR_AMR_16K_16BIT,
ASR_OPUS,
ASR_SPEEX,
} ASR_TYPE;
typedef enum {
TTS_PCM_8K_16BIT,
TTS_MP3_64,
TTS_MP3_24,
TTS_MP3_16,
TTS_AMR_NB,
} TTS_TYPE;
typedef enum {
NOT_OUTPUT_TXT, //不输出文本(默认)
OUTPUT_ASR_TXT, //输出asr文本信息
OUTPUT_TTS_TXT, //输出tts文本信息
OUTPUT_ARS_TTS_TXT, //输出asr&tts文本信息
} OUT_TXT;
typedef enum {
NOT_STREAM_IDENTIFY, //非流式识别(默认)
STREAM_IDENTIFY, //流式识别
} STREAM_CTL;
typedef enum {
NORMAL_ENCODE, //通用编码
CUSTORM_ENCODE, //自定义编码
} ENCODE_MODE;
typedef enum {
SMARTCHAT, //智能聊天
ACTIVE_INTERACTION, //主动交互
MARKED_WORDS, //提示语
ORAL_EVALUATION, //口语评测
PICTURE_RECOG, //绘本识别
INPUT_TEXT, //文本输入
} MUTUAL_TYPE;
typedef enum {
PLAY_NEXT,
PLAY_PREV,
CONNECT_SUCC,
} CMD_DODE;
enum TURING_SDK_EVENT {
TURING_SPEAK_END = 0x01,
TURING_MEDIA_END = 0x02,
TURING_PLAY_PAUSE = 0x03,
TURING_PREVIOUS_SONG = 0x04,
TURING_NEXT_SONG = 0x05,
TURING_VOLUME_CHANGE = 0X06,
TURING_VOLUME_INCR = 0x07,
TURING_VOLUME_DECR = 0x08,
TURING_VOLUME_MUTE = 0x09,
TURING_RECORD_START = 0x0a,
TURING_RECORD_SEND = 0x0b,
TURING_RECORD_STOP = 0x0c,
TURING_VOICE_MODE = 0x0d,
TURING_MEDIA_STOP = 0x0e,
TURING_BIND_DEVICE = 0x0f,
TURING_RECORD_ERR = 0x10,
TURING_PICTURE_RECOG = 0x11,
TURING_COLLECT_RESOURCE = 0x12,
TURING_PICTURE_PLAY_END = 0x13,
TURING_QUIT = 0xff,
};
enum {
WECHAT_NEXT_SONG = 0,
WECHAT_PRE_SONG,
WECHAT_PAUSE_SONG,
WECHAT_CONTINUE_SONG,
WECHAT_VOLUME_CHANGE,
WECHAT_MEDIA_END,
WECHAT_PROGRESS_INFO,
WECHAT_MEDIA_STOP,
WECHAT_SEND_INIT_STATE,
WECHAT_COLLECT_RESOURCE,
WECHAT_KILL_SELF_TASK = 0xfe,
};
enum TURING_EVENT_FUN_CODE {
TURING_EVENT_NOT_FUNC,
/*功能事件返回*/
TURING_EVENT_FUN_CHAT = 20000, //聊天 普通聊天模式
TURING_EVENT_FUN_SLEEP_CTL = 20001, //休眠控制 口令控制设备休眠,口令:再见、拜拜等
TURING_EVENT_FUN_VOL_CTL = 20002, //音量控制 控制当前音量大小,具体可调幅度根据设备不存在差异
TURING_EVENT_FUN_WEATHER_INQUIRE = 20003, //天气查询 支持全国660个主要城市和地区的天气查询
TURING_EVENT_FUN_TIME_INQUIRE = 20005, //日期时间查询 查询目标地区当前日期时间
TURING_EVENT_FUN_CALCULATOR = 20006, //计算器 支持1000以内的四则混合运算
TURING_EVENT_FUN_PLAY_MUSIC = 20007, //播音乐 支持服务器本地歌曲库随机播放与点播歌曲
TURING_EVENT_FUN_PLAY_STORY = 20008, //讲故事 支持工程师爸爸随机播放与点播故事
TURING_EVENT_FUN_POETRY = 20009, //古诗词 支持5000余首古诗朗诵
TURING_EVENT_FUN_ANIMAL_SOUND = 20011, //动物叫声 支持38种常见物叫声
TURING_EVENT_FUN_KNOWLEDGE = 20012, //百科知识 支持107万个百科知识
TURING_EVENT_FUN_PHONE_CALL = 20013, //打电话 支持打电话功能
TURING_EVENT_FUN_GUESS_SOUND = 20014, //猜叫声 猜动物叫声游戏
TURING_EVENT_FUN_TRANSLATION = 20015, //中英互译 中文翻译英文,英文翻译中文
TURING_EVENT_FUN_DANCE = 20016, //跳舞 命令机器人跳舞
TURING_EVENT_FUN_ENGLISHSPEAK = 20018, //英文对话 返回的为英文
TURING_EVENT_FUN_INSTRUMENT = 20019, //乐器声音 播放乐器的声音
TURING_EVENT_FUN_NATURE_SOUND = 20020, //大自然的声音 播放打雷等大自然的声音
TURING_EVENT_FUN_SCREEN_LIGHT = 20021, //屏幕亮度 调整屏幕亮度
TURING_EVENT_FUN_BATTERY_CHECK = 20022, //电量查询 暂不支持
TURING_EVENT_FUN_SPORT_CTL = 20023, //运动控制 控制机器人运动
TURING_EVENT_FUN_PHOTO_CTL = 20024, //拍照 发出拍照指令
TURING_EVENT_FUN_ALARM_CTL = 20025, //闹钟 设置闹钟或提醒
TURING_EVENT_FUN_OPEN_APP = 20026, //打开应用 打开应用,需要上传应用列表
TURING_EVENT_FUN_KNOWLEDGE_REPOSITORY = 20027, //知识库 智能FAQ,需设置知识库
TURING_EVENT_FUN_PICTURE_RECOGNITION = 20039, //绘本识别 绘本识别返回结果
TURING_EVENT_FUN_ACTIVE_INTERACTION = 29998, //主动交互 机器人长时间无交互由机器人主动交互
TURING_EVENT_FUN_PROMPT_TONE = 29999, //提示语 开机等场景下的提示语
};
enum {
TURING_FUN_PLAY_OPR_NOR = 1000,
TURING_FUN_PLAY_OPR_PREV = 2005,
TURING_FUN_PLAY_OPR_NEXT = 2006,
TURING_FUN_PLAY_OPR_STOP = 2002,
TURING_FUN_PLAY_OPR_CYCLE = 3002,
TURING_FUN_PLAY_OPR_PAUSE = 1200,
TURING_FUN_PLAY_OPR_CONTINUE = 1300,
};
typedef enum {
TURING_ERR_NON,
TURING_ERR_MALLOC,
TURING_ERR_ENC_INIT,
TURING_ERR_ENC_OPEN,
TURING_ERR_ENC_START,
TURING_ERR_ENC_PAUSE,
TURING_ERR_ENC_STOP,
TURING_ERR_ENC_WRITE,
TURING_ERR_POINT_NULL,
TURING_ERR_THREAD_FORK,
TURING_ERR_SOCKET_FD,
TURING_ERR_BIND,
TURING_ERR_HOST_IP,
TURING_ERR_CONNECT,
TURING_ERR_SEND_DATA,
TURING_ERR_RECV_DATA,
TURING_ERR_HTTP_CODE,
} TURING_ERR;
struct turing_para {
ASR_TYPE asr;
TTS_TYPE tts;
OUT_TXT flag;
STREAM_CTL real_time;
int index;
int book_id;
int camera_id;
int page_num;
int piece_index;
CMD_DODE cmd_code;
ENCODE_MODE encode;
MUTUAL_TYPE type;
u8 speed; //1-9
u8 pitch; //1-9
u8 tone; //0-15 20-22
u8 volume; //1-9
u8 asr_lan; //0-zh 1-en
u8 tts_lan; //0-zh 1-en
u8 voice_mode;
u8 recv_rsp_cnt;
u8 ocr_flag;
u8 finger_flag;
u8 oral_flag;
char identify[20];
char token[65];
char user_id[17];
char aes_key[17];
char api_key[33];
const char *oral_string;
};
int turing_app_init(void);
void turing_app_uninit(void);
int turing_recorder_start(u16 sample_rate, u8 voice_mode);
int turing_recorder_stop(u8 voice_mode);
void JL_turing_media_speak_play(const char *url);
void JL_turing_media_audio_play(const char *url);
void JL_turing_picture_audio_play(const char *url);
void JL_turing_volume_change_notify(int volume);
void JL_turing_rec_err_notify(void *arg);
u8 get_turing_msg_notify(void);
u8 get_turing_rec_is_stopping(void);
u8 turing_app_get_connect_status(void);
#endif //_TURING_H_