#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