From 659c470eba542383987aad227b7f918100f131fa Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期五, 11 九月 2026 15:09:05 +0800
Subject: [PATCH] 小智终端 5种 场景模式 OK
---
xiaozhi-esp32-2.2.6/main/boards/sening-xiaozhi-s3/system.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 48 insertions(+), 6 deletions(-)
diff --git a/xiaozhi-esp32-2.2.6/main/boards/sening-xiaozhi-s3/system.h b/xiaozhi-esp32-2.2.6/main/boards/sening-xiaozhi-s3/system.h
index cced675..5500bc2 100644
--- a/xiaozhi-esp32-2.2.6/main/boards/sening-xiaozhi-s3/system.h
+++ b/xiaozhi-esp32-2.2.6/main/boards/sening-xiaozhi-s3/system.h
@@ -36,6 +36,14 @@
#define MOUNT_POINT "/sdcard"
#define SDCARD_PATH_MAX_LEN 256
+#define SDCARD_MP3_PLAYLIST_MAX 16
+
+typedef struct {
+ char path[SDCARD_PATH_MAX_LEN];
+ float speed;
+ int repeat;
+ bool power_off_after;
+} sdcard_mp3_playlist_item_t;
#define SCREEN_MIRROR_X false
#define SCREEN_MIRROR_Y false
@@ -75,14 +83,32 @@
#define BOARD_CUSTOM_WAKE_WORD_THRESHOLD_PERCENT 20
/**
- * @brief 鏉跨骇 MultiNet 绂荤嚎鍛戒护璇嶉厤缃��
- *
+ * @brief 鏉跨骇 MultiNet 绂荤嚎鍛戒护璇嶃�傚彧鐣欐病缃戜篃蹇呴』鑳界敤鐨勫叆鍙o細
+ * 銆屽垏鎹㈡ā寮忋�嶃�屾ā寮忓垏鎹€�嶃�屽璇绘満銆嶃�屽紑濮嬪璇汇�嶃�岄��鍑哄璇汇�嶃�岄��鍑鸿窡璇汇�嶃�屾垜浠亰澶╁惂銆嶃�屾垜浠潵鑱婂ぉ鍚с�嶃��
+ * 澶嶈/璺熻鎾煶棰戞椂涓嶄笂琛� ASR锛岄��鍑哄彛浠ゅ繀椤昏兘绂荤嚎璇嗗埆銆傚叾瀹� App 鐨勮繘鍏ヨ瘝浠嶅彧鍦� Server apps.json銆�
*/
#define OFFLINE_COMMAND_WORD "鍒囨崲妯″紡"
#define OFFLINE_COMMAND_WORD_PINYIN "qie huan mo shi"
+#define OFFLINE_COMMAND_WORD_ALT "妯″紡鍒囨崲"
+#define OFFLINE_COMMAND_WORD_ALT_PINYIN "mo shi qie huan"
+#define OFFLINE_REPEATER_WORD "澶嶈鏈�"
+#define OFFLINE_REPEATER_WORD_PINYIN "fu du ji"
+#define OFFLINE_START_REPEATER_WORD "寮�濮嬪璇�"
+#define OFFLINE_START_REPEATER_WORD_PINYIN "kai shi fu du"
+#define OFFLINE_EXIT_REPEATER_WORD "閫�鍑哄璇�"
+#define OFFLINE_EXIT_REPEATER_WORD_PINYIN "tui chu fu du"
+#define OFFLINE_EXIT_SHADOWING_WORD "閫�鍑鸿窡璇�"
+#define OFFLINE_EXIT_SHADOWING_WORD_PINYIN "tui chu gen du"
+#define OFFLINE_CHAT_WORD "鎴戜滑鑱婂ぉ鍚�"
+#define OFFLINE_CHAT_WORD_PINYIN "wo men liao tian ba"
+#define OFFLINE_CHAT_WORD_FULL "鎴戜滑鏉ヨ亰澶╁惂"
+#define OFFLINE_CHAT_WORD_FULL_PINYIN "wo men lai liao tian ba"
void Board_Offline_Command_Callback(void);
bool Board_Handle_Offline_Command(const char *command);
+bool Board_Is_Mode_Switch_Command(const char *command);
+bool Board_Is_Chat_Return_Command(const char *command);
+bool Board_Is_App_Launch_Command(const char *command);
/**
* @brief 浣跨敤 SNTP 缃戠粶鏃堕棿鍚屾 DS3231 RTC銆�
@@ -192,14 +218,26 @@
*/
esp_err_t SDCard_Play_MP3(char *mp3_name);
+#define SDCARD_MP3_SPEED_MIN 0.5f
+#define SDCARD_MP3_SPEED_MAX 2.0f
+#define SDCARD_MP3_SPEED_DEFAULT 1.0f
+
+/**
+ * @brief 灏嗘挱鏀惧�嶇巼澶圭揣鍒� [0.5, 2.0]锛汵aN/闈炴硶鍒欏洖閫� 1.0銆�
+ *
+ * 瀹炵幇鏄厛鎸� speed 鍋氱嚎鎬ф椂鍩熸媺浼革紝鍐嶇敤鏂囦欢鍘熷閲囨牱鐜囪浆鍒板枃鍙噰鏍风巼銆�
+ * 0.5锝�2.0 鍐呬换鎰忔诞鐐瑰潎鍙紱闈� 1.0 浼氭敼鍙橀煶璋冦�備笉瑕佹妸 sample_rate*speed 浜ょ粰 AE 鍙橀噰鏍枫��
+ */
+float SDCard_Clamp_MP3_Speed(float speed);
+
/**
* @brief 鎸夋枃浠跺悕鍜岄�熷害鍚姩 SD 鍗� MP3 鎾斁銆�
*
- * speed 浠呮敮鎸� 0.5銆�0.75銆�1.0銆�1.25銆�1.5銆�2.0銆傞潪 1.0 閫熷害閫氳繃閲嶉噰鏍峰疄鐜帮紝浼氭敼鍙橀煶璋冦��
+ * speed 鍙栧�� [0.5, 2.0]锛岀己鐪� 1.0锛涜秴鍑鸿寖鍥翠細琚す绱с�傞潪 1.0 閫氳繃閲嶉噰鏍峰疄鐜帮紝浼氭敼鍙橀煶璋冦��
*
* @param mp3_name MP3 鏂囦欢鍚嶆垨鍖归厤鍏抽敭瀛楋紝涓嶈兘涓虹┖銆�
* @param speed 鎾斁閫熷害鍊嶇巼銆�
- * @return ESP_OK 琛ㄧず鎾斁浠诲姟宸叉垚鍔熷惎鍔紱ESP_ERR_INVALID_ARG 琛ㄧず閫熷害鎴栨枃浠跺悕闈炴硶銆�
+ * @return ESP_OK 琛ㄧず鎾斁浠诲姟宸叉垚鍔熷惎鍔紱ESP_ERR_INVALID_ARG 琛ㄧず鏂囦欢鍚嶉潪娉曘��
*/
esp_err_t SDCard_Play_MP3_With_Speed(char *mp3_name, float speed);
esp_err_t SDCard_Play_MP3_With_Speed_Repeat(char *mp3_name, float speed, int repeat, bool power_off_after);
@@ -266,16 +304,19 @@
/**
* @brief 鎸夊畬鏁磋矾寰勫拰閫熷害鍚姩 MP3 鏂囦欢鎾斁銆�
*
- * speed 浠呮敮鎸� 0.5銆�0.75銆�1.0銆�1.25銆�1.5銆�2.0銆傞潪 1.0 閫熷害閫氳繃閲嶉噰鏍峰疄鐜帮紝浼氭敼鍙橀煶璋冦��
+ * speed 鍙栧�� [0.5, 2.0]锛岀己鐪� 1.0锛涜秴鍑鸿寖鍥翠細琚す绱с�傞潪 1.0 閫氳繃閲嶉噰鏍峰疄鐜帮紝浼氭敼鍙橀煶璋冦��
*
* @param path MP3 鏂囦欢瀹屾暣璺緞锛屼笉鑳戒负绌恒��
* @param speed 鎾斁閫熷害鍊嶇巼銆�
- * @return ESP_OK 琛ㄧず鎾斁浠诲姟宸叉垚鍔熷惎鍔紱ESP_ERR_INVALID_ARG 琛ㄧず璺緞鎴栭�熷害闈炴硶銆�
+ * @return ESP_OK 琛ㄧず鎾斁浠诲姟宸叉垚鍔熷惎鍔紱ESP_ERR_INVALID_ARG 琛ㄧず璺緞闈炴硶銆�
*/
esp_err_t SDCard_Play_MP3_File_With_Speed(const char *path, float speed);
esp_err_t SDCard_Play_MP3_File_With_Speed_Repeat(const char *path, float speed, int repeat, bool power_off_after);
+bool SDCard_Resolve_MP3_Path(const char *mp3_name, char *path, size_t path_size);
+esp_err_t SDCard_Play_MP3_File_Playlist(const sdcard_mp3_playlist_item_t *items, int count);
int SDCard_Get_Repeat_Left(void);
esp_err_t SDCard_Map_Business_Path(const char *business_path, char *sd_path, size_t sd_path_size);
+esp_err_t SDCard_Ensure_Business_Dir(const char *business_path);
esp_err_t SDCard_Prepare_Business_File(const char *business_path,
char *final_path,
size_t final_path_size,
@@ -394,6 +435,7 @@
void Board_Acquire_Sleep_Inhibit(void);
void Board_Release_Sleep_Inhibit(void);
bool Board_Is_Voice_Session_Active(void);
+bool Board_Is_Audio_Busy(void);
void Board_Show_JPG(const char *jpg_name);
void Board_Show_Black_Screen(void);
void Board_Show_Alert(const char *status, const char *message, const char *emotion);
--
Gitblit v1.9.1