doubao_chat/apps/wifi_daobao/asr/inc/websocket_asr.h

92 lines
2.4 KiB
C

#ifndef __WEBSOCKET_ASR_H__
#define __WEBSOCKET_ASR_H__
#include "web_socket/websocket_api.h"
#include "wifi/wifi_connect.h"
#include "system/includes.h"
#include "fs/fs.h"
#include "asm/sfc_norflash_api.h"
#include "cJSON.h"
#include "aduio_record.h"
#ifdef WEBSOCKET_MEMHEAP_DEBUG
#include "mem_leak_test.h"
#endif
#include "app_config.h"
// 定义消息类型常量
#define SERVER_FULL_RESPONSE 0b1001
#define SERVER_ACK 0b1011
#define SERVER_ERROR_RESPONSE 0b1111
// 定义压缩和序列化方法常量
#define GZIP 1
#define JSON 1
#define NO_SERIALIZATION 0
// 定义响应结构体,用于存储原始响应数据
typedef struct {
uint8_t protocol_version;
uint8_t header_size;
uint8_t message_type;
uint8_t message_type_specific_flags;
uint8_t serialization_method;
uint8_t message_compression;
uint8_t reserved;
uint8_t* header_extensions;
uint8_t* payload;
size_t payload_size;
} Response;
// 定义解析后的响应结构体,用于存储处理后的数据
typedef struct {
unsigned char* payload_msg;
size_t payload_size;
} ParsedResponse;
//JSON打包结构体
typedef struct {
char* appid;
char* cluster;
char* token;
char* uid;
int nbest;
char* workflow;
int show_language;
int show_utterances;
char* result_type;
char* format;
int rate;
char* language;
int bits;
int channel;
char* codec;
} AsrWsClient;
//头部信息
#define STT_DEFAULT_VERSION 0b0001
#define STT_DEFAULT_MESSAGE_TYPE 0b0001
#define STT_DEFAULT_MESSAGE_TYPE_SPECIFIC_FLAGS 0b0000
#define STT_DEFAULT_SERIAL_METHOD 0b0001
#define STT_DEFAULT_COMPRESSION_TYPE 0b0000
#define STT_DEFAULT_RESERVED_DATA 0
#define STT_DEFAULT_EXTENSION_HEADER NULL
#define STT_DEFAULT_EXTENSION_HEADER_LENGTH 0
#define DEFAULT_HEADR STT_DEFAULT_VERSION,STT_DEFAULT_MESSAGE_TYPE,STT_DEFAULT_MESSAGE_TYPE_SPECIFIC_FLAGS,\
STT_DEFAULT_SERIAL_METHOD,STT_DEFAULT_COMPRESSION_TYPE,STT_DEFAULT_RESERVED_DATA,\
STT_DEFAULT_EXTENSION_HEADER,STT_DEFAULT_EXTENSION_HEADER_LENGTH
//asr地址
#define OBJ_URL "wss://openspeech.bytedance.com/api/v2/asr"
extern OS_SEM voice_start_sem;//录音开始信号量
//extern u8 sock_run_flag;//asr->chat->tts正在运行的标志位
void asr_websocket_client_thread_create(void);//创建asr主线程以及一些信号量
void websockets_asr_client_request_handle_create(void);//创建回复处理任务
#endif