ESP32的ADF詳解:5. Streams的API

一、算法流 (algorithm stream)

1. 初始化與配置

API功能描述關鍵參數說明
algo_stream_init()初始化算法流(AEC/AGC/NS/VAD)config->algo_mask 選擇算法組合
config->sample_rate 設置采樣率(默認16kHz)
config->partition_label 指定模型分區
ALGORITHM_STREAM_CFG_DEFAULT()獲取默認配置宏包含默認任務棧大小(4KB)、環形緩沖區大小(8KB)等

2. 算法控制

API功能描述關鍵參數說明
algo_stream_set_delay()設置播放/錄音信號延遲(Type2模式專用)delay_ms 推薦0-10ms
ringbuf 需關聯參考信號緩沖區
algorithm_mono_fix()修復ESP32 I2S單聲道噪聲問題需傳入16bit PCM數據緩沖區

3. 音頻處理配置

| 配置結構體 algorithm_stream_cfg_t 關鍵字段:

字段功能描述推薦值
input_type輸入類型:
TYPE1:單I2S雙聲道輸入(左=參考,右=麥克風)
TYPE2:獨立信號輸入
根據硬件連接選擇
rec_linear_factor錄音信號線性放大系數1-10(原始信號較弱時增大)
agc_modeAGC模式:
AFE_AGC_OFF/AFE_AGC_FIXED/AFE_AGC_ADAPTIVE
語音識別建議ADAPTIVE
debug_input啟用調試輸出(生成左右聲道原始數據)true/false

4. 算法掩碼選項

通過 algo_mask 組合啟用算法:

// 示例:同時啟用AEC和NS
config.algo_mask = ALGORITHM_STREAM_USE_AEC | ALGORITHM_STREAM_USE_NS;
掩碼值對應算法適用場景
ALGORITHM_STREAM_USE_AEC聲學回聲消除語音通話、免提設備
ALGORITHM_STREAM_USE_AGC自動增益控制動態麥克風輸入
ALGORITHM_STREAM_USE_NS噪聲抑制高噪聲環境
ALGORITHM_STREAM_USE_VAD語音活動檢測關鍵詞喚醒

5. 典型調用流程

  1. 初始化算法流

    algorithm_stream_cfg_t algo_cfg = ALGORITHM_STREAM_CFG_DEFAULT();
    algo_cfg.algo_mask = ALGORITHM_STREAM_USE_AEC | ALGORITHM_STREAM_USE_NS;
    algo_cfg.sample_rate = 16000;
    audio_element_handle_t algo_stream = algo_stream_init(&algo_cfg);
    
  2. 集成到流水線

    audio_pipeline_register(pipeline, algo_stream, "algo");
    audio_pipeline_link(pipeline, (const char*[]){"i2s_reader", "algo", "vad"}, 3);
    
  3. 調試延遲(Type2模式)

    ringbuf_handle_t ref_rb = rb_create(2048);
    algo_stream_set_delay(algo_stream, ref_rb, 5); // 設置5ms延遲
    

6. 注意事項

  1. 內存占用

    • 啟用AEC約消耗50KB RAM,建議使用ESP32-S3/WROVER等大內存芯片
    • 外部PSRAM可設置stack_in_ext=true
  2. 性能調優

    • 采樣率推薦16kHz,更高采樣率會增加計算負擔
    • AGC目標電平(target_level_dbfs)通常設為-3dBFS
  3. 硬件連接

    • Type1模式:需硬件支持I2S雙聲道(左聲道接揚聲器參考信號)
    • Type2模式:需用戶自行同步參考信號與麥克風信號

二、FatFS流

1. 初始化與配置

API功能描述關鍵參數
fatfs_stream_init()初始化FatFS流(讀/寫文件)type: AUDIO_STREAM_READER/WRITER
write_header: 是否寫入AMR頭

2. 結構體

/*** @brief FATFS 流配置結構體,用于配置 FATFS 流的參數。* 如果任何條目為零,則配置將設置為默認值。*/
struct fatfs_stream_cfg_t {audio_stream_type_t type;  ///< 流類型int buf_sz;                ///< 音頻元素緩沖區大小int out_rb_size;           ///< 輸出環形緩沖區大小int task_stack;            ///< 任務棧大小int task_core;             ///< 任務運行的核心(0 或 1)int task_prio;             ///< 任務優先級(基于 FreeRTOS 優先級)bool ext_stack;            ///< 是否在外部 RAM 中分配棧bool write_header;         ///< 是否在 FATFS 中寫入 AMRNB/AMRWB 頭(true 或 false,true 表示選擇寫入 AMRNB 頭)
};

三、HTTP流

1. 初始化與基礎控制

API功能描述關鍵參數返回值
http_stream_init()初始化HTTP流實例config->type: 指定讀/寫模式
config->enable_playlist_parser: 啟用HLS播放列表解析
返回元素句柄
http_stream_restart()重啟HTTP流連接el: HTTP流句柄ESP_OK/ESP_FAIL
http_stream_fetch_again()重新獲取播放列表(直播流場景)el: HTTP流句柄ESP_OK/ESP_ERR_NOT_SUPPORTED

2. 播放列表控制

API功能描述觸發條件使用場景
http_stream_next_track()切換到下一曲目需在HTTP_STREAM_FINISH_TRACK事件回調中調用播放列表/HLS直播流
http_stream_event_msg_t播放事件結構體包含event_idhttp_client指針事件回調參數

3. 安全認證

API功能描述參數說明注意事項
http_stream_set_server_cert()設置SSL服務器證書cert: PEM格式證書字符串僅HTTPS需要
crt_bundle_attach (配置項)啟用證書包驗證需在menuconfig中啟用ESP_CERT_BUNDLE減少內存占用

4. 事件回調類型

事件ID觸發時機典型處理邏輯
HTTP_STREAM_PRE_REQUESTHTTP請求發起前修改請求頭/URL
HTTP_STREAM_FINISH_TRACK單曲目播放完成調用next_track()切換
HTTP_STREAM_ON_RESPONSE接收數據時實時數據校驗/分析

5. 關鍵配置參數

結構體

/*** @brief HTTP 流事件消息結構體,用于傳遞 HTTP 流相關的事件信息。*/
struct http_stream_event_msg_t {http_stream_event_id_t event_id; ///< 事件 ID,標識具體的事件類型void *http_client; ///< 指向使用此 HTTP 流的 HTTP 客戶端的引用void *buffer; ///< 指向音頻元素使用的緩沖區的引用int buffer_len; ///< 緩沖區的長度void *user_data; ///< 用戶數據上下文,來自 http_stream_cfg_taudio_element_handle_t el; ///< 音頻元素上下文
};/*** @brief HTTP 流配置結構體,用于配置 HTTP 流的各種參數。* 如果任何條目為零,則使用默認值。*/
struct http_stream_cfg_t {audio_stream_type_t type; ///< 流類型int out_rb_size; ///< 輸出環形緩沖區的大小int task_stack; ///< 任務棧大小int task_core; ///< 任務運行的核心(0 或 1)int task_prio; ///< 任務優先級(基于 FreeRTOS 優先級)bool stack_in_ext; ///< 嘗試在外部內存中分配棧http_stream_event_handle_t event_handle; ///< HTTP 流事件的鉤子函數void *user_data; ///< 用戶數據上下文bool auto_connect_next_track; ///< 是否自動連接下一首曲目,無需打開/關閉bool enable_playlist_parser; ///< 是否啟用播放列表解析器int multi_out_num; ///< 多輸出數量const char *cert_pem; ///< SSL 服務器證書,PEM 格式的字符串,如果客戶端需要驗證服務器esp_err_t (*crt_bundle_attach)(void *conf); ///< 指向 esp_crt_bundle_attach 的函數指針,啟用證書捆綁以進行服務器驗證,必須在 menuconfig 中啟用int request_size; ///< 每次從 HTTP 客戶端請求的數據大小,默認使用 DEFAULT_ELEMENT_BUFFER_LENGTH 如果設置為 0,如果音頻幀大小較小且需要低延遲播放,需要小心此設置int request_range_size; ///< 頭部范圍大小設置,范圍:字節=起始-結束,如果設置為 0,請求資源的完整范圍,建議范圍大小大于請求大小const char *user_agent; ///< 發送 HTTP 請求時使用的 User Agent 字符串
};

宏定義

#define HTTP_STREAM_CFG_DEFAULT()  // 默認配置(8KB環形緩沖區)
#define HTTP_STREAM_RINGBUFFER_SIZE  // 可覆蓋默認緩沖區大小

6. 典型調用流程

HLS直播流播放

// 1. 初始化配置
http_stream_cfg_t cfg = HTTP_STREAM_CFG_DEFAULT();
cfg.type = AUDIO_STREAM_READER;
cfg.enable_playlist_parser = true;
cfg.event_handle = _hls_event_handler;// 2. 創建實例
audio_element_handle_t http_stream = http_stream_init(&cfg);// 3. 事件處理回調
static int _hls_event_handler(http_stream_event_msg_t *msg) {if (msg->event_id == HTTP_STREAM_FINISH_TRACK) {http_stream_next_track(msg->el);  // 自動切換分片}return 0;
}

HTTPS音頻流播放

// 設置SSL證書
http_stream_set_server_cert(http_stream, "-----BEGIN CERTIFICATE-----\n""MIIDx...\n"  // 證書內容"-----END CERTIFICATE-----");

注意事項

  1. 內存管理
    • 每個HTTP流實例默認占用~6KB任務棧,建議啟用stack_in_ext使用外部RAM
  2. 直播流優化
    • 設置request_range_size > request_size避免頻繁請求
  3. 錯誤處理
    • 監聽HTTP_STREAM_FINISH_PLAYLIST事件處理播放列表結束
  4. 多輸出支持
    • 通過multi_out_num配置多路輸出環形緩沖區

四、I2S流

1. 初始化與配置

函數/宏定義描述參數返回值
i2s_stream_init()創建I2S流音頻元素句柄config: 配置結構體音頻元素句柄
i2s_stream_set_channel_type()設置I2S流通道格式類型config: 配置結構體
type: 通道格式類型
ESP_OKESP_ERR_INVALID_ARG
I2S_STREAM_CFG_DEFAULT()默認I2S流配置宏默認配置結構體
I2S_STREAM_CFG_DEFAULT_WITH_PARA()帶參數的默認配置宏port: I2S端口
rate: 采樣率
bits: 位寬
stream_type: 流類型
配置結構體
I2S_STREAM_CFG_DEFAULT_WITH_TYLE_AND_CH()帶類型和通道的默認配置宏port: I2S端口
rate: 采樣率
bits: 位寬
stream_type: 流類型
channel: 通道類型
配置結構體

2. 時鐘控制

函數描述參數返回值
i2s_stream_set_clk()設置I2S流時鐘i2s_stream: 元素句柄
rate: 采樣率(Hz)
bits: 位寬(8/16/24/32)
ch: 通道數
ESP_OKESP_FAIL

3. 音量控制(ALC)

函數描述參數返回值
i2s_alc_volume_set()設置ALC音量i2s_stream: 元素句柄
volume: 音量值(-64~63dB)
ESP_OKESP_FAIL
i2s_alc_volume_get()獲取當前音量i2s_stream: 元素句柄
volume: 存儲音量值的指針
ESP_OKESP_FAIL

4. 同步控制

函數描述參數返回值
i2s_stream_sync_delay()設置流同步延遲i2s_stream: 元素句柄
delay_ms: 延遲時間(ms)
ESP_OKESP_FAIL

5. 結構體

i2s_stream_cfg_t

/*** @brief I2S 流配置結構體,用于配置 I2S 流的各種參數。* 如果任何條目為零,則使用默認值。*/
struct i2s_stream_cfg_t {audio_stream_type_t type; ///< 流類型i2s_comm_mode_t transmit_mode; ///< I2S 傳輸模式i2s_chan_config_t chan_cfg; ///< I2S 控制器通道配置i2s_std_config_t std_cfg; ///< I2S 標準模式主要配置,包括時鐘/槽位/GPIO 配置bool use_alc; ///< ALC 標志。如果使用 ALC,值為 true,否則為 falseint volume; ///< 音頻輸入數據的音量設置int out_rb_size; ///< 輸出環形緩沖區大小int task_stack; ///< 任務棧大小int task_core; ///< 任務運行的核心(0 或 1)int task_prio; ///< 任務優先級(基于 FreeRTOS 優先級)bool stack_in_ext; ///< 嘗試在外部內存中分配棧int multi_out_num; ///< 多輸出數量bool uninstall_drv; ///< 是否在流銷毀時卸載 I2S 驅動bool need_expand; ///< 是否擴展 I2S 數據i2s_data_bit_width_t expand_src_bits; ///< 擴展時的源每樣本位數int buffer_len; ///< 用于元素的緩沖區長度。注意:當 'bits_per_sample' 為 24 位時,緩沖區長度必須是 3 的倍數。推薦值為 3600
};

6. 枚舉類型

i2s_channel_type_t

枚舉值描述
I2S_CHANNEL_TYPE_RIGHT_LEFT分離的左右聲道
I2S_CHANNEL_TYPE_ALL_RIGHT兩個聲道都加載右聲道數據
I2S_CHANNEL_TYPE_ALL_LEFT兩個聲道都加載左聲道數據
I2S_CHANNEL_TYPE_ONLY_RIGHT僅在右聲道加載數據(單聲道模式)
I2S_CHANNEL_TYPE_ONLY_LEFT僅在左聲道加載數據(單聲道模式)

五、RAW流

1. 初始化與配置

函數/宏定義描述參數返回值
raw_stream_init()初始化RAW流cfg: 配置結構體音頻元素句柄
RAW_STREAM_CFG_DEFAULT()默認RAW流配置宏默認配置結構體

2. 數據讀寫操作

函數描述參數返回值
raw_stream_read()從流中讀取數據pipeline: 管道句柄
buffer: 數據緩沖區
buf_size: 最大讀取字節數
實際讀取的字節數
raw_stream_write()向流中寫入數據pipeline: 管道句柄
buffer: 數據緩沖區
buf_size: 要寫入的字節數
實際寫入的字節數

3. 結構體

raw_stream_cfg_t

成員類型描述
typeaudio_stream_type_t流類型(讀/寫)
out_rb_sizeint輸出環形緩沖區大小

4. 宏定義

描述
RAW_STREAM_RINGBUFFER_SIZE默認環形緩沖區大小

5. 應用模式說明

模式數據流向示例
讀模式(AUDIO_STREAM_READER)從前級元素獲取數據[i2s] → [filter] → [raw]
[i2s] → [codec-amr] → [raw]
寫模式(AUDIO_STREAM_WRITER)向后級元素提供數據[raw] → [codec-mp3] → [i2s]

六、TCP流

1. 初始化與配置

函數/宏定義描述參數返回值
tcp_stream_init()初始化 TCP 客戶端流config: 配置結構體 (tcp_stream_cfg_t)音頻元素句柄
TCP_STREAM_CFG_DEFAULT()默認 TCP 流配置宏默認配置結構體

2. 結構體

/*** @brief TCP 流事件消息結構體,用于傳遞 TCP 流相關的事件信息。*/
struct tcp_stream_event_msg {void *source;                  ///< 元素句柄void *data;                    ///< 輸入/輸出的數據int data_len;                  ///< 輸入/輸出的數據長度esp_transport_handle_t sock_fd; ///< 套接字句柄
};/*** @brief TCP 流配置結構體,用于配置 TCP 流的各種參數。* 如果任何條目為零,則使用默認值。*/
struct tcp_stream_cfg_t {audio_stream_type_t type;      ///< 流類型int timeout_ms;                ///< 讀寫超時時間(毫秒)int port;                      ///< TCP 端口號char *host;                    ///< TCP 主機地址int task_stack;                ///< 任務棧大小int task_core;                 ///< 任務運行的核心(0 或 1)int task_prio;                 ///< 任務優先級(基于 FreeRTOS 優先級)bool ext_stack;                ///< 是否在外部 RAM 中分配棧空間tcp_stream_event_handle_cb event_handler; ///< TCP 流事件回調函數void *event_ctx;               ///< 用戶上下文
};

3. 事件回調與狀態

類型/枚舉描述
回調函數 tcp_stream_event_handle_cb處理 TCP 流事件的回調函數,參數包括:
- msg: 事件消息 (tcp_stream_event_msg_t)
- state: 連接狀態 (tcp_stream_status_t)
- event_ctx: 用戶上下文
枚舉 tcp_stream_status_tTCP 流狀態:
- TCP_STREAM_STATE_NONE(未連接)
- TCP_STREAM_STATE_CONNECTED(已連接)

4. 宏定義

描述
TCP_STREAM_DEFAULT_PORT默認 TCP 端口號
TCP_STREAM_TASK_STACK默認任務堆棧大小
TCP_STREAM_BUF_SIZE默認緩沖區大小
TCP_STREAM_TASK_PRIO默認任務優先級
TCP_STREAM_TASK_CORE默認任務運行核心
TCP_SERVER_DEFAULT_RESPONSE_LENGTH默認服務器響應長度

5. 典型數據流向

模式數據方向示例
讀取模式 (AUDIO_STREAM_READER)從服務器接收數據[tcp_client] → [decoder] → [i2s]
寫入模式 (AUDIO_STREAM_WRITER)向服務器發送數據[i2s] → [encoder] → [tcp_client]

6. 注意事項

  1. 連接管理:需通過回調函數 event_handler 監控連接狀態(如斷開重連)。
  2. 超時設置timeout_ms 影響網絡操作的阻塞時間。
  3. 資源分配:若啟用 ext_stack,需確保外部 RAM 可用。

七、TONE流

1. 初始化與配置

函數/宏定義描述參數返回值
tone_stream_init()初始化提示音流(僅支持 AUDIO_STREAM_READER 類型,從 Flash 讀取音頻數據)config: 配置結構體 (tone_stream_cfg_t)音頻元素句柄
TONE_STREAM_CFG_DEFAULT()默認提示音流配置宏默認配置結構體

2. 結構體

tone_stream_cfg_t

/*** @brief TONE 流配置結構體,用于配置 TONE 流的各種參數。* 如果任何條目為零,則使用默認值。*/
struct tone_stream_cfg_t {audio_stream_type_t type; ///< 流類型int buf_sz; ///< 音頻元素緩沖區大小int out_rb_size; ///< 輸出環形緩沖區大小int task_stack; ///< 任務棧大小int task_core; ///< 任務運行的核心(0 或 1)int task_prio; ///< 任務優先級(基于 FreeRTOS 優先級)const char *label; ///< 存儲在閃存中的音調標簽。默認值為 flash_tonebool extern_stack; ///< 任務棧是否在外部 RAM 中分配bool use_delegate; ///< 是否使用 esp_delegate 讀取音調分區。如果任務棧在外部 RAM 中,則必須為 TRUE
};

3. 宏定義

描述
TONE_STREAM_BUF_SIZE默認緩沖區大小
TONE_STREAM_TASK_STACK默認任務堆棧大小
TONE_STREAM_TASK_CORE默認任務運行核心
TONE_STREAM_TASK_PRIO默認任務優先級
TONE_STREAM_RINGBUFFER_SIZE默認環形緩沖區大小
TONE_STREAM_EXT_STACK是否默認啟用外部堆棧分配
TONE_STREAM_USE_DELEGATE是否默認啟用 esp_delegate 讀取 Flash

4. 功能限制與說明

特性描述
僅支持讀取模式提示音流僅支持 AUDIO_STREAM_READER 類型,不可用于寫入。
數據來源需通過 tools/audio_tone/mk_audio_tone.py 生成二進制數據并燒錄至 Flash 的指定分區(標簽通過 label 指定)。
外部堆棧依賴若啟用 extern_stack,需確保外部 RAM 可用且 use_delegate=true

5. 典型數據流向

[Flash 提示音數據] → [tone_stream] → [下游音頻元素(如 I2S)]

6. 注意事項

  1. Flash 數據格式:提示音數據需通過 mk_audio_tone.py 工具生成,確保格式兼容。
  2. 資源分配:若使用外部堆棧(extern_stack=true),必須同時啟用 use_delegate
  3. 實時性:提示音流適用于短時音頻播放(如系統提示音),不適用于長時間流媒體。

八、TTS流

1. 初始化與配置

函數/宏定義描述參數返回值
tts_stream_init()初始化 TTS 流(僅支持 AUDIO_STREAM_READER 類型,從 esp_tts_voice 獲取數據)config: 配置結構體 (tts_stream_cfg_t)音頻元素句柄
TTS_STREAM_CFG_DEFAULT()默認 TTS 流配置宏默認配置結構體

2. 語音合成控制

函數描述參數返回值
tts_stream_set_strings()設置 TTS 合成的文本字符串el: 音頻元素句柄
strings: 待合成的文本字符串指針
ESP_OKESP_FAIL
tts_stream_set_speed()設置語音合成速度(0-5,0 最慢)el: 音頻元素句柄
speed: 速度值(tts_voice_speed_t 枚舉類型)
ESP_OKESP_FAIL
tts_stream_get_speed()獲取當前語音合成速度el: 音頻元素句柄
speed: 返回速度值的指針
ESP_OKESP_FAIL

3. 結構體

tts_stream_cfg_t

/*** @brief TTS 流配置結構體,用于配置 TTS 流的各種參數。* 如果任何條目為零,則使用默認值。*/
struct tts_stream_cfg_t {audio_stream_type_t type; ///< 流類型int buf_sz; ///< 音頻元素緩沖區大小int out_rb_size; ///< 輸出環形緩沖區大小int task_stack; ///< 任務棧大小int task_core; ///< 任務運行的核心(0 或 1)int task_prio; ///< 任務優先級(基于 FreeRTOS 優先級)bool ext_stack; ///< 是否在外部 RAM 中分配任務棧
};

4. 宏定義

描述
TTS_STREAM_BUF_SIZE默認緩沖區大小
TTS_STREAM_TASK_STACK默認任務堆棧大小
TTS_STREAM_TASK_CORE默認任務運行核心
TTS_STREAM_TASK_PRIO默認任務優先級
TTS_STREAM_RINGBUFFER_SIZE默認環形緩沖區大小

5. 枚舉類型 (tts_voice_speed_t)

枚舉值描述
TTS_VOICE_SPEED_0最慢語速(等級 0)
TTS_VOICE_SPEED_1語速等級 1
TTS_VOICE_SPEED_2語速等級 2
TTS_VOICE_SPEED_3默認語速(等級 3)
TTS_VOICE_SPEED_4語速等級 4
TTS_VOICE_SPEED_5最快語速(等級 5)
TTS_VOICE_SPEED_MAX最大語速(同等級 5)

6. 功能限制與說明

特性描述
僅支持讀取模式TTS 流僅支持 AUDIO_STREAM_READER 類型,不可用于寫入。
依賴 esp-sr需集成 esp-sr 組件以提供 esp_tts_voice 語音合成功能。
實時性要求適用于實時語音合成場景(如語音助手響應),需合理設置緩沖區大小以避免卡頓。

7. 典型數據流向

[esp_tts_voice 合成數據] → [tts_stream] → [下游音頻元素(如 I2S)]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90205.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90205.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript對象鍵序問題解析

問題的發現&#xff1a; 我有一個接口返回一個json數據瀏覽器network里的Response里是從大到小排。 但Preview就是反過來的 問題的描述&#xff1a; 上面那個讓我發現瀏覽器處理對象或者json是會對其鍵值對做排序&#xff01;&#xff01;&#xff01; 在JavaScript中&am…

pandas庫的數據導入導出,缺失值,重復值處理和數據篩選,matplotlib庫 簡單圖繪制

目錄 一.數據導入導出 1.CSV文件讀取與參數說明 2.Excel與TST文件讀取 3.數據導出操作 二.缺失值處理 1.填充缺失值 2.刪除缺失值【刪除整行數據】 三.重復值處理 四.數據篩選與條件查詢 1.邏輯判斷取數 2.字符匹配 3.邏輯運算&#xff1a; &&#xff08;和&…

FPGA?如何實現另一個?FPGA?

如果你對 FPGA 有些了解&#xff0c;大概知道它的意思是“可編程邏輯器件”&#xff0c;可以把寫好的邏輯電路&#xff08;通常是 Verilog/VHDL&#xff09;通過工具綜合、布局布線、燒寫進去&#xff0c;讓一塊芯片變成“你想要的電路”。但如果我告訴你&#xff0c;現在有個開…

文思助手、新華妙筆 AI材料星的公文寫作深度測評

公文寫作一直都是體制內工作人員的日常核心任務&#xff0c;寫公文的難點不僅來自于對政策表述嚴謹性的高要求&#xff0c;也在于格式規范、內容深度以及效率壓力的多重考驗。隨著AI技術的發展&#xff0c;越來越多的文字輔助工具出現&#xff0c;很大程度的緩解了寫作壓力&…

Flutter開發環境搭建與工具鏈

Flutter開發實戰第1章&#xff1a;Flutter開發環境搭建與工具鏈1.1 Flutter簡介與優勢Flutter是Google推出的開源UI工具包&#xff0c;用于從單一代碼庫構建編譯為原生性能的移動、Web和桌面應用程序。Flutter的核心優勢包括&#xff1a;跨平臺一致性&#xff1a;一套代碼運行在…

io_uring:Linux異步I/O的革命性突破

目錄 1. io_uring是什么&#xff1f; io_uring核心優勢&#xff1a; 2. io_uring核心原理 2.1 雙環形緩沖區設計 2.2 關鍵數據結構 1、完成隊列CQ 2、提交隊列SQ 3、Params 3. io_uring工作流程 3.1 初始化階段 3.2 I/O操作流程 4. C代碼示例&#xff08;原始系統調…

線段樹學習筆記 - 練習題(2)

文章目錄1. 前言2. P3870 [TJOI2009] 開關3. P2184 貪婪大陸4. P1438 無聊的數列5. P1471 方差1. 前言 線段樹系列文章&#xff1a; 線段樹學習筆記。線段樹學習筆記 - 練習題&#xff08;1&#xff09;。 前一篇做了幾道線段樹的題目&#xff0c;這篇文章就繼續看下線段樹的…

Vue狀態管理:Pinia 與 Vuex 的使用方法與對比【文章附有完整案例】

最近在接手vue項目的需求&#xff0c;因為之前一直在做react的需求&#xff0c;日常的vue練習也少了很多&#xff0c;導致現在接手vue項目&#xff0c;很多關于vue的知識點基本上忘得干干凈凈了。但是好在有基礎&#xff0c;重新學也會很快掌握。分享這個過程中的一些復習內容。…

OpenMed 項目深度分析:推動醫療 NLP 領域的開源革命

摘要 醫療人工智能(AI)領域因高質量數據和模型的獲取受限而發展緩慢。OpenMed 項目通過開源超過380個醫療命名實體識別(NER)模型,顯著降低了研究與應用門檻。本文從項目背景、技術優勢、應用場景、實施挑戰及未來展望五個方面,系統分析 OpenMed 的核心價值與潛力,揭示其…

大模型開發

什么是Ai&#xff1f;AI的全拼是(Artificial Intelligence)人工智能&#xff0c;使機器能夠像人類一樣思考、學習和解決問題的技術。在AI的應用情況下我們更多的是學習自然語言處理。在自然語言處理(Natural Language Processing&#xff0c;NLP)中&#xff0c;有一項關鍵技術叫…

【正常配置了beast擴展,phpinfo信息也顯示了,但是就是不運行】

正常配置了beast擴展&#xff0c;phpinfo信息也顯示了&#xff0c;但是就是不運行場景原因解決排查過程擴展場景 項目中使用到了beast進行源碼保護&#xff0c;指定類存在&#xff0c;但是報錯信息提示類找不到&#xff0c;beast擴展添加到了正在運行的php版本下的ext文件夾下…

CRMEB 單商戶PRO多商戶通用去版權教程

CRMEB去版權教程&#xff0c;此教程可根據具體版本進行調整&#xff0c;基本適用次方法。 后端版權修改 修改后端管理底部版權及門店后端管理底部版權。 文件位置 \view\admin\src\components\copyright\index.vue 文件位置 \view\admin\src\router\routes.js 文件位置 \vi…

舊物回收小程序系統開發:重塑舊物回收產業新生態

在傳統觀念中&#xff0c;舊物回收往往給人一種臟亂差、效率低下的印象&#xff0c;回收過程繁瑣&#xff0c;回收渠道有限&#xff0c;導致許多可回收物被浪費。然而&#xff0c;隨著信息技術的飛速發展&#xff0c;舊物回收小程序系統的開發正為這一古老行業帶來前所未有的變…

SSE和WebSocket區別到底是什么

文章目錄SSE 與 WebSocket&#xff1a;深入剖析兩者核心差異核心差異&#xff1a;單向 vs. 雙向通信技術細節對比協議與連接數據格式錯誤處理與可靠性適用場景&#xff1a;何時選擇 SSE&#xff0c;何時選擇 WebSocket&#xff1f;總結SSE 與 WebSocket&#xff1a;深入剖析兩者…

西安電子科技大學金融學431考研經歷分享

考研數學是區分度最大的科目之一&#xff0c;如何高效備考&#xff1f;本文為你推薦多位名師和經典書籍&#xff0c;助你在每個階段都能穩步提升&#xff0c;最終沖刺成功。一、考研數學備考策略教師推薦① 高等數學&#xff1a;② 線性代數&#xff1a;③ 概率論與數理統計&am…

laravel RedisException: Connection refused優雅草PMS項目管理系統報錯解決-以及Redis 詳細指南-優雅草卓伊凡

laravel RedisException: Connection refused優雅草PMS項目管理系統報錯解決-以及Redis 詳細指南-優雅草卓伊凡今天來開始更新pms系統&#xff0c;因為我們ppt上面要做&#xff0c;才發現原來打不開&#xff0c;此前主要是事情太多&#xff0c;我們一直有很多東西擱置解決 Lara…

拉力覆冰在線監測裝置:電力線路安全運行的數字化守衛者

在極端天氣頻發的背景下&#xff0c;輸電線路覆冰災害已成為威脅電網穩定運行的關鍵因素。拉力覆冰在線監測裝置通過數字化技術構建起全天候監測體系&#xff0c;為電力運維提供精準數據支撐。本文從技術實現與實際應用價值角度&#xff0c;解析該裝置的核心功能與行業意義。核…

AI面試如何提升物流行業招聘效率?實戰案例解析

每年秋招季&#xff0c;物流行業都會迎來海量應屆生簡歷涌入。面對業務快速擴張與人才篩選壓力&#xff0c;傳統線下面試流程長、標準模糊、成本高昂等問題愈發凸顯。本文通過兩大物流頭部企業的實戰案例&#xff0c;解析AI面試如何破解招聘困局&#xff0c;實現效率與質量的雙…

【機器學習】組合優化問題combination-optimization概述

博主簡介&#xff1a;努力學習的22級計算機科學與技術本科生一枚&#x1f338;博主主頁&#xff1a; Yaoyao2024往期回顧&#xff1a;【二分圖算法】手把手教你學會&#xff1a;染色法&#xff08;判斷二分圖&#xff09;、匈牙利算法&#xff08;二分圖的最大匹配&#xff09;…

Linux網絡編程-osi、udp

網絡&#xff1a;不同主機&#xff0c;進程間通信達到不同主機之間的困難&#xff1a;解決主機之間的硬件層面的互聯互通解決主機之間的軟件層面的互聯互通廣域網&#xff1a;進行大范圍網絡數據交換IP地址&#xff1a;區分不同主機 唯一的&#xff08;軟件地址&#xff09;MAC…