From c3c9534222c864c7decb3ca1ffcba82501dd74b6 Mon Sep 17 00:00:00 2001 From: shangjinlong Date: Wed, 21 Oct 2026 15:37:54 +0800 Subject: [PATCH 1/3] chore: refresh SDK audio and board documentation --- .gitattributes | 13 - CHANGELOG.md | 7 +- README.md | 5 +- README.zh-CN.md | 5 +- THIRD_PARTY_NOTICES.md | 163 ++---------- VENDORED_SOURCES.md | 54 +--- .../assets/LICENSE.xiaozhi-esp32 | 22 -- components/mybot_platform/assets/README.md | 27 +- .../assets/locales/SOURCES.json | 231 ++++++++++++++++++ .../mybot_platform/assets/locales/en-US/0.ogg | Bin 2728 -> 3469 bytes .../mybot_platform/assets/locales/en-US/1.ogg | Bin 2160 -> 2771 bytes .../mybot_platform/assets/locales/en-US/2.ogg | Bin 2126 -> 2771 bytes .../mybot_platform/assets/locales/en-US/3.ogg | Bin 2038 -> 2771 bytes .../mybot_platform/assets/locales/en-US/4.ogg | Bin 2739 -> 2771 bytes .../mybot_platform/assets/locales/en-US/5.ogg | Bin 2201 -> 2771 bytes .../mybot_platform/assets/locales/en-US/6.ogg | Bin 2558 -> 2771 bytes .../mybot_platform/assets/locales/en-US/7.ogg | Bin 2936 -> 3469 bytes .../mybot_platform/assets/locales/en-US/8.ogg | Bin 2163 -> 2771 bytes .../mybot_platform/assets/locales/en-US/9.ogg | Bin 2253 -> 3530 bytes .../assets/locales/en-US/prompt.ogg | Bin 12959 -> 12578 bytes .../mybot_platform/assets/locales/zh-CN/0.ogg | Bin 2093 -> 2771 bytes .../mybot_platform/assets/locales/zh-CN/1.ogg | Bin 2078 -> 2771 bytes .../mybot_platform/assets/locales/zh-CN/2.ogg | Bin 1726 -> 2222 bytes .../mybot_platform/assets/locales/zh-CN/3.ogg | Bin 2153 -> 2222 bytes .../mybot_platform/assets/locales/zh-CN/4.ogg | Bin 2357 -> 2771 bytes .../mybot_platform/assets/locales/zh-CN/5.ogg | Bin 2123 -> 2771 bytes .../mybot_platform/assets/locales/zh-CN/6.ogg | Bin 2071 -> 2161 bytes .../mybot_platform/assets/locales/zh-CN/7.ogg | Bin 2335 -> 2222 bytes .../mybot_platform/assets/locales/zh-CN/8.ogg | Bin 2087 -> 2161 bytes .../mybot_platform/assets/locales/zh-CN/9.ogg | Bin 2039 -> 2771 bytes .../assets/locales/zh-CN/prompt.ogg | Bin 12329 -> 10172 bytes components/mybot_platform/boards/README.md | 87 ++++--- .../boards/atom-echos3r/README.md | 70 +++--- .../boards/bread-compact-wifi-lcd/README.md | 73 ++++-- .../mybot_platform/boards/esp-vocat/README.md | 119 ++++----- .../esp32-s3-touch-amoled-1.75/README.md | 73 +++++- .../esp32-s3-touch-amoled-1.75c/README.md | 75 +++++- .../esp32-s3-touch-amoled-2.16/README.md | 76 +++++- .../boards/m5stack-core-s3/README.md | 80 ++++-- .../boards/m5stack-stick-s3/README.md | 160 ++++-------- .../README.md | 65 +++-- .../boards/sensecap-watcher/README.md | 84 ++++--- .../boards/sensecap-watcher/README_en.md | 91 ++++--- .../xingzhi-cube-1.54tft-wifi/README.md | 77 ++++-- .../boards/zhengchen-1.54tft-ml307/README.md | 86 ++++--- .../boards/zhengchen-1.54tft-wifi/README.md | 106 +++++--- .../assets/licenses/LVGL_VIEW_LICENSE.txt | 25 -- .../display/renderers/lvgl/lvgl_view.cc | 2 - .../mybot_stack/mybot_sdk/mybot/CHANGELOG.md | 4 + .../mybot_sdk/mybot/THIRD_PARTY_NOTICES.md | 35 --- 50 files changed, 1133 insertions(+), 782 deletions(-) delete mode 100644 components/mybot_platform/assets/LICENSE.xiaozhi-esp32 create mode 100644 components/mybot_platform/assets/locales/SOURCES.json delete mode 100644 components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_LICENSE.txt diff --git a/.gitattributes b/.gitattributes index 75214d8..f7fef4e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,19 +11,6 @@ components/lvgl/** -whitespace components/esp-wifi-connect/** -whitespace third_party/** -whitespace -# Preserve board reference documents verbatim, including upstream whitespace and line endings. -components/mybot_platform/boards/atom-echos3r/README.md -text -whitespace -components/mybot_platform/boards/esp-vocat/README.md -text -whitespace -components/mybot_platform/boards/esp32-s3-touch-amoled-1.75/README.md -text -whitespace -components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c/README.md -text -whitespace -components/mybot_platform/boards/esp32-s3-touch-amoled-2.16/README.md -text -whitespace -components/mybot_platform/boards/m5stack-core-s3/README.md -text -whitespace -components/mybot_platform/boards/m5stack-stick-s3/README.md -text -whitespace -components/mybot_platform/boards/sensecap-watcher/README.md -text -whitespace -components/mybot_platform/boards/sensecap-watcher/README_en.md -text -whitespace -components/mybot_platform/boards/zhengchen-1.54tft-ml307/README.md -text -whitespace -components/mybot_platform/boards/zhengchen-1.54tft-wifi/README.md -text -whitespace - *.a binary *.bin binary *.jpg binary diff --git a/CHANGELOG.md b/CHANGELOG.md index 0be1a58..76a2715 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,8 @@ Versioning and Conventional Commits. ### Added -- Per-board README files for all thirteen profiles, including eleven verbatim reference documents - covering ten profiles, three local descriptions, and a linked board documentation index. +- Per-board hardware, input, configuration, build and flashing instructions for all thirteen + profiles, with a linked board documentation index. - CoreS3-only process-gray pixel-glasses UI, with 23 expressions, four 9 px terminal rows, a 10 px signature and fixed 32 px six-digit pairing codes on its 320x240 display. Automatic faces follow READY/conversation phases; four MCP emotions use bounded holds, @@ -75,6 +75,9 @@ Versioning and Conventional Commits. ### Changed +- Refresh the SDK snapshot to `7854c1d` (version 1.3.0) and update all 22 Chinese/English pairing + prompt and digit recordings from its PCM assets. Encode 20 ms mono Opus/Ogg for the existing + firmware decoder, record source/output hashes, and retain the existing Wi-Fi provisioning audio. - Sync the MyBot SDK snapshot to the v1.3.0 release (`58f0ef9`) and report version 1.3.0 from the ESP-IDF wrapper. Changes since the previous snapshot are release metadata and comments. - Sync the MyBot SDK snapshot to `39d5ed1` (1.2.0 plus post-release fixes), accepting cloud diff --git a/README.md b/README.md index a988a20..9d18b3d 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,8 @@ Circular-4 with XIAO ESP32S3, and SenseCAP Watcher. Other packet durations require a matching RTSA build supplied by the integrator. - Shared bounded PCM playback buffering and an independent I2S writer on all board profiles. - Agora RTSA full-duplex audio, Cloud AEC, AI QoS, RTM channel subscription, and voice-print status. -- Chinese and English local pairing-code and Wi-Fi provisioning prompts. +- Chinese and English local pairing-code and Wi-Fi provisioning prompts, with + [audio asset provenance](components/mybot_platform/assets/README.md#announcement-audio). - Compile-time board profiles with isolated Flash, PSRAM, partition, driver, and pin configuration. - Automatic LVGL UI selection by board: process-gray pixel glasses on CoreS3, the existing shared workflow view on other display boards. @@ -39,7 +40,7 @@ Circular-4 with XIAO ESP32S3, and SenseCAP Watcher. ## Supported Boards -Per-board descriptions and original reference documents are listed in the +Per-board hardware configuration, controls and build/flash instructions are listed in the [board documentation index](components/mybot_platform/boards/README.md). | Board profile | Audio | Display and input | Storage | diff --git a/README.zh-CN.md b/README.zh-CN.md index 449e560..ff769d4 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -30,12 +30,13 @@ StickS3、M5Stack AtomEchoS3R、搭配 XIAO ESP32S3 的 ReSpeaker Flex XVF3800 C - 所有 Board profile 共用有界 PCM 播放缓冲和独立 I2S 播放任务。 - 带屏板型自动选择LVGL界面:CoreS3使用工艺灰像素眼镜,其他板型保留共享流程视图。 - 配网页面显示实际设备热点名称,超宽文字按需滚动。 -- 中英文配对码与 Wi-Fi 配网本地提示音。 +- 中英文配对码与 Wi-Fi 配网本地提示音,来源及转换方法见 + [音频资源说明](components/mybot_platform/assets/README.md#announcement-audio)。 - 编译期 Board profile,隔离 Flash、PSRAM、分区、驱动和引脚配置。 ## 支持的板卡 -各板型目录中的说明和参考原文见[板卡说明索引](components/mybot_platform/boards/README.md)。 +各板型的硬件配置、输入操作与构建烧录步骤见[板卡说明索引](components/mybot_platform/boards/README.md)。 | Board profile | 音频 | 显示与输入 | 存储 | | --- | --- | --- | --- | diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 7b5b9e3..377d3bb 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -5,7 +5,7 @@ It does not replace third-party terms. This file is informational and is not leg | Component | Terms | Location | | --- | --- | --- | -| mybot SDK 1.3.0 (`58f0ef9`) | Apache-2.0; bundled JSON parser portions MIT | `components/mybot_stack/mybot_sdk/mybot` | +| mybot SDK 1.3.0 + post-release asset refresh (`7854c1d`) | Apache-2.0; bundled JSON parser portions MIT | `components/mybot_stack/mybot_sdk/mybot` | | AOSL (`84e0860`) | Bundled license: Apache-2.0 text plus additional deployment restrictions | `components/mybot_stack/aosl` | | Agora RTSA Lite for ESP32-S3 1.10.1 (build 1270872) | Separate Agora distribution terms | `components/mybot_stack/agora_rtc` | | esp-wifi-connect 3.2.2 | MIT | `components/esp-wifi-connect` | @@ -30,22 +30,12 @@ It does not replace third-party terms. This file is informational and is not leg | Espressif knob 1.1.0 | Apache-2.0 | `components/knob` | | Espressif CMake utilities 0.5.0 | Apache-2.0 | `components/cmake_utilities` | | M5Stack M5PM1 1.0.7 | MIT | `components/m5pm1` | -| Announcement assets and Ogg parser | MIT | `components/mybot_platform/assets/locales`, `components/mybot_platform/src/services/announcement/ogg_opus_decoder.c` | +| Pairing prompt and digit audio (`7854c1d` SDK reference) | Apache-2.0 | `prompt.ogg` and `0.ogg` through `9.ogg` in `components/mybot_platform/assets/locales/{en-US,zh-CN}` | | Source Han Sans UI glyph subset | SIL Open Font License 1.1 | `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_fonts.c`, `components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt` | | Noto Color Emoji rasterized glyphs | SIL Open Font License 1.1 | `components/mybot_platform/assets/ui/noto_emoji`, `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_assets.c` | -| Shared LVGL view (`1d5eeb2` reference) | MIT | `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_view.cc`, `components/mybot_platform/src/internal/display/lvgl_view.h` | | CoreS3 pixel-glasses renderer, geometry/mask generators (`dc4c854` BK reference) | MIT; expression helpers/policy retain their file-level Apache-2.0 notices | `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_glasses_view.cc`, pixel geometry/masks/generators and private expression support | | MyBot Terminal bitmap subsets derived from DejaVu Sans Mono Bold | Bitstream Vera font terms, with public-domain DejaVu changes | `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_fonts.c`, `TERMINAL_FONT_LICENSE.txt` | | Project-maintained shared LVGL panel adapters | Apache-2.0 unless file SPDX says otherwise | `components/mybot_platform/src/drivers/display/adapters/lvgl/st7789_lvgl_adapter.cc`, `components/mybot_platform/src/drivers/display/adapters/lvgl/shared_lvgl_adapter.cc` | -| Verbatim board README documents (`1d5eeb2` reference) | MIT | The eleven files listed under Board reference documents in `VENDORED_SOURCES.md` | -| M5Stack CoreS3-derived implementation | MIT | Paths listed under MIT Attributions | -| ReSpeaker Flex XVF3800-derived implementation (`b060243`) | MIT | Paths listed under MIT Attributions | -| SenseCAP Watcher-derived implementation (`2b9b4e3`) | MIT | Paths listed under MIT Attributions | -| M5Stack StickS3-derived implementation (`2b9b4e3`) | MIT | Paths listed under MIT Attributions | -| Waveshare AMOLED 1.75/1.75C-derived implementation (`2b9b4e3`) | MIT | Paths listed under MIT Attributions | -| Waveshare AMOLED 2.16 profile/panel (`1d5eeb2` hardware reference) | MIT | Paths listed under MIT Attributions | -| Bread Compact Wi-Fi LCD input (local AtomEchoS3R template) | MIT | `components/mybot_platform/boards/bread-compact-wifi-lcd/bread_input.c` | -| ESP-VoCat-derived implementation (`2b9b4e3`) | MIT | Paths listed under MIT Attributions | | ESP-IDF | Apache-2.0 plus component-specific terms | External development SDK | The built-in LVGL UI fonts retain their separate Montserrat OFL and Font Awesome terms at @@ -73,156 +63,31 @@ before publishing source archives, firmware images, mirrors, or releases contain If authorization is unavailable, exclude the library from public artifacts and require users to supply an authorized package locally. -## MIT Attributions - -The eleven board reference README files listed in `VENDORED_SOURCES.md` are copied verbatim from -`github.com/junlon2006/xiaozhi-esp32` at commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`. -The upstream MIT copyright and full permission notice are retained in -`components/mybot_platform/assets/LICENSE.xiaozhi-esp32`. External product images remain linked -to their original sites; no additional image files are vendored. The separate Bread Compact -Wi-Fi LCD, Xingzhi Cube and ReSpeaker Flex profile descriptions are project-maintained documents. +## Component Notices The pinned esp-wifi-connect manifest declares MIT but its 3.2.2 archive omitted the license file. `components/esp-wifi-connect/LICENSE` is the byte-identical MIT text later published by that upstream project in commit `347682fa013b52f863052ad4b1a793ca3cabff17`. -The announcement assets and Ogg parsing implementation retain the MIT copyright of Shenzhen Xinzhi -Future Technology Co., Ltd. and Project Contributors. The assets originate from xiaozhi-esp32 and -their license is retained at `components/mybot_platform/assets/LICENSE.xiaozhi-esp32`. - -The following M5Stack CoreS3 integration files contain substantial portions derived from -MIT-licensed xiaozhi-esp32 hardware and driver material. They use the MIT SPDX identifier and the -full permission text in `components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/m5stack-core-s3/` -- `components/mybot_platform/src/drivers/audio/cores3_codec_audio.c` -- `components/mybot_platform/src/drivers/display/panels/ili9342/ili9342_panel.c` -- `components/mybot_platform/src/internal/display/ili9342_panel.h` -- `components/mybot_platform/src/drivers/display/adapters/lvgl/ili9342_lvgl_adapter.cc` -- `components/mybot_platform/src/drivers/input/ft6336_touch.c` - -The shared LVGL view adapts the status/content/notification layout from the MIT-licensed -`github.com/junlon2006/xiaozhi-esp32` display implementation at commit -`1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`. The original copyright and complete permission notice -are retained in `components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_LICENSE.txt`. -Its generated Source Han Sans glyph subset retains Adobe's copyright and SIL OFL 1.1 text in -`components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt`; it is not MIT-licensed. - -CoreS3's pixel-glasses display implementation and generators are adapted from the BK7259 -Solution commit `dc4c85492bcf00f780c92d56c6cba2a362f54f68` in `github.com/junlon2006/bk_solution_ai`, -the Solution checkout within `mybot-bk7259`. -The MIT renderer/geometry/generator notices and existing display permission text in -`components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_LICENSE.txt` are retained; -expression helper and policy files retain their Apache-2.0 SPDX notices. The user-provided -threejs simulator supplies visual/geometry reference; no independent simulator license declaration -was found, and this notice does not assign the simulator an MIT license. - -The CoreS3 MyBot Terminal subsets are renamed derivatives of DejaVu Sans Mono Bold, preserving -the Bitstream copyright/trademark notice, font permission conditions and public-domain status of -DejaVu changes in `components/mybot_platform/src/drivers/display/renderers/lvgl/TERMINAL_FONT_LICENSE.txt`. -Font data is not covered by the renderer's MIT declaration. The existing Source Han Sans 20 px -subset is reused for Chinese guidance under its SIL OFL 1.1 license. Other board profiles retain -their existing font and emoji notices. - -The ReSpeaker Flex hardware mapping, AIC3104 initialization, XVF3800 control and button polling, -and I2S conversion are derived in part from the MIT-licensed -`github.com/qiuyanli1990/respeaker-flex-circle-Agora-mybot` reference at commit -`b06024382eb104c998aead4841e1df647193065b`. The following paths remain covered by its MIT terms; -the complete copyright and permission notice is retained in -`components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao/` -- `components/mybot_platform/src/drivers/audio/xvf3800_audio.c` -- `partitions/v2/8m.csv` - -The SenseCAP Watcher hardware mapping, codec integration, SPD2010 display integration, and partition -layout are derived in part from the MIT-licensed `github.com/junlon2006/xiaozhi-esp32` reference at -commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0`. The following paths remain covered by its MIT terms; -the complete copyright and permission notice is retained in -`components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/sensecap-watcher/` -- `components/mybot_platform/src/drivers/audio/sensecap_codec_audio.c` -- `components/mybot_platform/src/drivers/display/panels/spd2010/spd2010_panel.c` -- `partitions/v2/32m-sensecap.csv` - -The M5Stack StickS3 hardware mapping, M5PM1 sequencing, ES8311 integration, and ST7789P3 display -configuration are derived in part from the MIT-licensed `github.com/junlon2006/xiaozhi-esp32` -reference at commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0`. The following paths remain -covered by its MIT terms; the complete copyright and permission notice is retained in -`components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/m5stack-stick-s3/` -- `components/mybot_platform/src/drivers/audio/es8311_codec_audio.c` -- `components/mybot_platform/src/drivers/display/adapters/lvgl/st7789_lvgl_adapter.cc` -- `components/mybot_platform/src/drivers/display/panels/st7789/st7789_panel.c` - -The ST7789 panel lifecycle was extracted from the existing local adapter and retains its MIT -SPDX identifier, copyright, and permission notice. - The vendored M5PM1 production sources retain the upstream M5Stack MIT license in `components/m5pm1/LICENSE`. -The Waveshare ESP32-S3 Touch AMOLED 1.75 and 1.75C hardware mappings, AXP2101 sequence, CO5300 -initialization, CST9217 integration, and codec routing are derived in part from the MIT-licensed -`github.com/junlon2006/xiaozhi-esp32` reference at commit -`2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0`. The following paths remain covered by its MIT terms; -the complete copyright and permission notice is retained in -`components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/esp32-s3-touch-amoled-1.75-common/` -- `components/mybot_platform/boards/esp32-s3-touch-amoled-1.75/` -- `components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c/` -- `components/mybot_platform/src/drivers/audio/amoled175_codec_audio.c` -- `components/mybot_platform/src/drivers/display/panels/co5300/co5300_panel.c` - -The Waveshare AMOLED 2.16 profile owns independent Board and 480-pixel panel variants derived -from this MIT integration, reusing its audio/input drivers and the shared LVGL view. Its pin mapping -and 480x480 zero-gap panel geometry were checked against -`github.com/junlon2006/xiaozhi-esp32`, `main/boards/waveshare/esp32-s3-touch-amoled-2.16`, at -commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`. The new profile retains the MIT SPDX identifier -and the complete notice in `components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/esp32-s3-touch-amoled-2.16/` -- `components/mybot_platform/src/drivers/display/panels/co5300/co5300_480_panel.c` - -The ESP-VoCat PCB detection, hardware mapping, ST77916 initialization, CST816S input behavior, and -codec routing are derived in part from the MIT-licensed `github.com/junlon2006/xiaozhi-esp32` -reference at commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0`. The following paths remain -covered by its MIT terms; the complete copyright and permission notice is retained in -`components/mybot_platform/assets/LICENSE.xiaozhi-esp32`: - -- `components/mybot_platform/boards/esp-vocat/` -- `components/mybot_platform/src/drivers/audio/vocat_codec_audio.c` -- `components/mybot_platform/src/drivers/display/panels/st77916/st77916_panel.c` - -The Bread Compact Wi-Fi LCD Boot input is adapted from the existing local MIT AtomEchoS3R input -implementation at `components/mybot_platform/boards/atom-echos3r/atom_echos3r_input.c`. Its -copyright and MIT SPDX identifier are retained in -`components/mybot_platform/boards/bread-compact-wifi-lcd/bread_input.c`; the complete permission -notice is retained in `components/mybot_platform/assets/LICENSE.xiaozhi-esp32`. +The CoreS3 pixel-glasses renderer and geometry generators use the file-level terms in their +sources. The terminal font subsets retain the Bitstream Vera terms and public-domain DejaVu +changes in `components/mybot_platform/src/drivers/display/renderers/lvgl/TERMINAL_FONT_LICENSE.txt`. +Source Han Sans UI glyphs retain the SIL OFL 1.1 terms in +`components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt`. ## Vendored SDK Notice +The Chinese and English pairing prompt and digit recordings are derived from the SDK's +`assets/locales` PCM files at commit `7854c1d5798004485aa1947ff55116bdb7ab0237`, under Apache-2.0. +Their encoded Ogg files retain the SDK license through `components/mybot_stack/mybot_sdk/mybot/LICENSE`; +source/output checksums and encoding settings are recorded in +`components/mybot_platform/assets/locales/SOURCES.json`. + The original mybot SDK license and third-party notice are retained unchanged under `components/mybot_stack/mybot_sdk/mybot/`. That notice may describe packages used by other mybot targets; it is preserved as part of the immutable SDK snapshot and does not redefine this firmware's dependency set. Every component license file and file-level SPDX/copyright notice remains in force. - -## Hardware References - -The Xingzhi Cube pin mapping, ST7789 SPI mode, RTC GPIO21 power hold, and reference speaker rate -were checked against `github.com/junlon2006/xiaozhi-esp32`, -`main/boards/xingzhi-cube-1.54tft-wifi`, at commit -`1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`. The new Board lifecycle is project-maintained -Apache-2.0 code. The port adds no vendored component or upstream application service; reused -drivers retain their existing file-level SPDX and copyright notices. The reference's complete MIT -copyright and permission text is retained in `components/mybot_platform/assets/LICENSE.xiaozhi-esp32`. - -The Bread Compact Wi-Fi LCD fixed ST7789 240x320 and separate-I2S pin mapping and 24 kHz -reference speaker rate were checked against `github.com/junlon2006/xiaozhi-esp32`, -`main/boards/bread-compact-wifi-lcd`, at commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`. -The N16R8 memory profile is the selected firmware hardware contract and still requires real-device -confirmation. Its Board lifecycle, pin header, and build metadata are project-maintained Apache-2.0; -reused drivers and the adapted Boot input retain their existing MIT notices. diff --git a/VENDORED_SOURCES.md b/VENDORED_SOURCES.md index cdd5d28..39af3f7 100644 --- a/VENDORED_SOURCES.md +++ b/VENDORED_SOURCES.md @@ -1,11 +1,11 @@ # Vendored Dependency Baselines -This file records the revisions of firmware inputs and copied board documents. License and +This file records the revisions of firmware inputs. License and redistribution terms are documented separately in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). | Path | Source | Pinned revision | | --- | --- | --- | -| `components/mybot_stack/mybot_sdk/mybot` | `github.com/junlon2006/mybot` | v1.3.0, commit `58f0ef9c14be9f159b1dc167bf0f035983b25117` | +| `components/mybot_stack/mybot_sdk/mybot` | `github.com/junlon2006/mybot` | v1.3.0 + post-release asset refresh, commit `7854c1d5798004485aa1947ff55116bdb7ab0237` | | `components/mybot_stack/aosl` | `github.com/AgoraIO-Community/aosl` | v1.0.4 + post-release fixes, commit `84e086084ebcd0ae2455a0ce5721950c5fe2e656` | | `components/mybot_stack/agora_rtc` | Agora RTSA Lite package archive | v1.10.1, build 1270872 (`20260828_194128`) | | `components/esp-wifi-connect` | `github.com/78/esp-wifi-connect` | 3.2.2, commit `c24b97c194e6b4a1d7be0237b3c28980661cac1e` | @@ -30,35 +30,17 @@ redistribution terms are documented separately in [THIRD_PARTY_NOTICES.md](THIRD | `components/knob` | ESP Component Registry `espressif/knob` | 1.1.0, commit `5f9cb98ae4d0e8153c4b4d1accf471214e5b6fe8` | | `components/cmake_utilities` | ESP Component Registry `espressif/cmake_utilities` | 0.5.0 | | `components/m5pm1` | ESP Component Registry `m5stack/m5pm1` | 1.0.7, content hash `731f79d0629e245787440f5419aac5d7a82befeb25f97689d6a2d0331a24a72d` | -| `components/mybot_platform/assets/locales` | `github.com/junlon2006/mybot-bk7258` | commit `2577b5977a9f137855a7acf1fcdcd4040c5db2ea` | +| Pairing `prompt.ogg` and `0.ogg` through `9.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot`, `assets/locales` | commit `7854c1d5798004485aa1947ff55116bdb7ab0237`; 16 kHz mono s16 PCM converted to 20 ms Opus/Ogg; source/output SHA-256 and encoding command in `components/mybot_platform/assets/locales/SOURCES.json` | +| Wi-Fi `wificonfig.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot-bk7258` | commit `2577b5977a9f137855a7acf1fcdcd4040c5db2ea` | | `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_fonts.c`, `components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt` | `github.com/lvgl/lvgl`, `scripts/built_in_font/SourceHanSansSC-Normal.otf` | LVGL 9.5.0 source font SHA-256 `1ee89e1669362dee13851129c0a8a791a87521eb4148e5efbf5d26596738e25b`; generated 20 px, 4 bpp static UI subset | | `components/mybot_platform/assets/ui/noto_emoji`, `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_assets.c` | Noto Color Emoji font glyphs rasterized by `github.com/78/noto-fonts`, `png/noto-color-emoji_64` | 2.0.0, commit `d45dbc64052d57048f20ab1770074172ce9eb53b`; per-image SHA-256 values and glyph provenance in `assets/ui/noto_emoji/SOURCES.json` | -## Board reference documents +## Board profiles -The following files are copied verbatim from `github.com/junlon2006/xiaozhi-esp32` at commit -`1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`. Paths in the source column are relative to -`main/boards/`; destination paths are relative to `components/mybot_platform/boards/`. -The copies retain upstream text, whitespace and line endings under the upstream MIT license. - -| Destination | Source | -| --- | --- | -| `atom-echos3r/README.md` | `atom-echos3r/README.md` | -| `esp-vocat/README.md` | `esp-vocat/README.md` | -| `esp32-s3-touch-amoled-1.75/README.md` | `waveshare/esp32-s3-touch-amoled-1.75/README.md` | -| `esp32-s3-touch-amoled-1.75c/README.md` | `waveshare/esp32-s3-touch-amoled-1.75/README.md` | -| `esp32-s3-touch-amoled-2.16/README.md` | `waveshare/esp32-s3-touch-amoled-2.16/README.md` | -| `m5stack-core-s3/README.md` | `m5stack-core-s3/README.md` | -| `m5stack-stick-s3/README.md` | `m5stack-stick-s3/README.md` | -| `sensecap-watcher/README.md` | `sensecap-watcher/README.md` | -| `sensecap-watcher/README_en.md` | `sensecap-watcher/README_en.md` | -| `zhengchen-1.54tft-ml307/README.md` | `zhengchen-1.54tft-ml307/README.md` | -| `zhengchen-1.54tft-wifi/README.md` | `zhengchen-1.54tft-wifi/README.md` | - -Upstream selects the same 1.75 directory for the 1.75C variant, so both profiles share its README. -The Bread Compact Wi-Fi LCD, Xingzhi Cube and ReSpeaker Flex profile READMEs are project-maintained -descriptions based on the checked-in profiles; no corresponding upstream README was available. -These documentation additions do not change firmware behavior or validation status. +Board documentation describes the checked-in ESP32-S3 profiles. Build settings, pins and driver +selection are defined by `board.cmake`, `board_config.h` and `sdkconfig.defaults` in each profile. +See the [board documentation index](components/mybot_platform/boards/README.md) for all supported +boards and the project build/flash workflow. ## Implementation references @@ -68,21 +50,11 @@ are not vendored into this repository. | Paths | Source | Pinned revision | | --- | --- | --- | -| `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_view.cc`, `components/mybot_platform/src/internal/display/lvgl_view.h` | `github.com/junlon2006/xiaozhi-esp32`, `main/display/lcd_display.cc` and LVGL theme layout | commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d` | | CoreS3 `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_glasses_view.cc`, expression geometry/masks/generators, `pixel_expressions.c`, and private expression headers/policy | `github.com/junlon2006/bk_solution_ai`, Solution checkout in `mybot-bk7259` | commit `dc4c85492bcf00f780c92d56c6cba2a362f54f68`; adapted to the existing ESP32 display API and CoreS3 320x240 geometry | | CoreS3 terminal subsets in `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_fonts.c` and `TERMINAL_FONT_LICENSE.txt` | DejaVu Sans Mono Bold, renamed MyBot Terminal | Source TTF SHA-256 `3a3c502eeff669a231549e80df9f7c49de109bafe303170409e905d0b31a38fe`; 9 px terminal and 10 px signature subsets, with retained Bitstream Vera terms | | `components/mybot_platform/src/drivers/display/adapters/lvgl/shared_lvgl_adapter.cc`, `components/mybot_platform/src/internal/display/display_panel.h` | Project-maintained shared adapter for ST7789, CO5300, SPD2010, and ST77916 panels | Uses the board panel drivers; no new upstream source | | `components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao`, `components/mybot_platform/src/drivers/audio/xvf3800_audio.c`, `partitions/v2/8m.csv` | `github.com/qiuyanli1990/respeaker-flex-circle-Agora-mybot` | commit `b06024382eb104c998aead4841e1df647193065b` | -| `components/mybot_platform/boards/sensecap-watcher`, `components/mybot_platform/src/drivers/audio/sensecap_codec_audio.c`, `components/mybot_platform/src/drivers/display/panels/spd2010/spd2010_panel.c`, `partitions/v2/32m-sensecap.csv` | `github.com/junlon2006/xiaozhi-esp32` | commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0` | -| `components/mybot_platform/boards/m5stack-stick-s3`, `components/mybot_platform/src/drivers/audio/es8311_codec_audio.c`, `components/mybot_platform/src/drivers/display/adapters/lvgl/st7789_lvgl_adapter.cc`, `components/mybot_platform/src/drivers/display/panels/st7789/st7789_panel.c` (panel lifecycle extracted from the existing local adapter) | `github.com/junlon2006/xiaozhi-esp32` | commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0` | -| `components/mybot_platform/boards/zhengchen-1.54tft-wifi/board_config.h` (hardware mapping verification only) | `github.com/junlon2006/xiaozhi-esp32` | commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0` | -| `components/mybot_platform/boards/xingzhi-cube-1.54tft-wifi/board_config.h` (hardware mapping, SPI mode, RTC power hold, and reference speaker-rate verification only) | `github.com/junlon2006/xiaozhi-esp32`, `main/boards/xingzhi-cube-1.54tft-wifi` | commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d` | -| `components/mybot_platform/boards/bread-compact-wifi-lcd/board_config.h` (fixed 240x320 ST7789/simplex-I2S hardware mapping and reference speaker-rate verification only) | `github.com/junlon2006/xiaozhi-esp32`, `main/boards/bread-compact-wifi-lcd` | commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d` | -| `components/mybot_platform/boards/bread-compact-wifi-lcd/bread_input.c` | Existing local `components/mybot_platform/boards/atom-echos3r/atom_echos3r_input.c` MIT template | Project-local adaptation for Boot GPIO0; retains MIT copyright and permission notice | -| `components/mybot_platform/boards/atom-echos3r/board_config.h` (hardware mapping verification only) | `github.com/junlon2006/xiaozhi-esp32` | commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d` | -| `components/mybot_platform/boards/esp32-s3-touch-amoled-1.75-common`, `components/mybot_platform/boards/esp32-s3-touch-amoled-1.75`, `components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c`, `components/mybot_platform/src/drivers/audio/amoled175_codec_audio.c`, `components/mybot_platform/src/drivers/display/panels/co5300/co5300_panel.c` | `github.com/junlon2006/xiaozhi-esp32` | commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0` | -| `components/mybot_platform/boards/esp32-s3-touch-amoled-2.16`, `components/mybot_platform/src/drivers/display/panels/co5300/co5300_480_panel.c` (independent variants of the existing 1.75 integration; hardware facts checked against the 2.16 reference) | `github.com/junlon2006/xiaozhi-esp32`, `main/boards/waveshare/esp32-s3-touch-amoled-2.16` | hardware reference commit `1d5eeb2dd51cb315f98ef3c7d3f2b96bd2bbcf1d`; local implementation derived from the existing `2b9b4e3` integration above | -| `components/mybot_platform/boards/esp-vocat`, `components/mybot_platform/src/drivers/audio/vocat_codec_audio.c`, `components/mybot_platform/src/drivers/display/panels/st77916/st77916_panel.c` | `github.com/junlon2006/xiaozhi-esp32` | commit `2b9b4e3bf93c76fdfca1249ce0f7ed0bf546aaa0` | +| `components/mybot_platform/boards/bread-compact-wifi-lcd/bread_input.c` | Existing local `components/mybot_platform/boards/atom-echos3r/atom_echos3r_input.c` input implementation | Project-local adaptation for Boot GPIO0 | | `components/mybot_platform/boards/esp-vocat/board_config.h` (hardware mapping verification only) | `github.com/espressif/esp-brookesia` | commit `b22c488f50bafe53342c8e171081bd736396ef58` | Firmware integration differences are limited to the active ESP32-S3 build: @@ -99,14 +71,14 @@ Firmware integration differences are limited to the active ESP32-S3 build: No independent simulator license declaration was found; MIT/Apache-2.0 notices apply to the reused BK display sources/generators as stated in their files, not to an invented simulator license. - The Xingzhi Cube port reuses project audio/input/LVGL drivers and introduces no new vendored - dependency. Its Board lifecycle is project-maintained; the reference supplies hardware facts. + dependency. Its Board lifecycle and pin mapping are defined by the local profile. The 16 MB Flash and 80 MHz Octal PSRAM profile requires real-device capacity confirmation. - The Bread Compact Wi-Fi LCD port fixes the user-selected N16R8, 240x320 ST7789, and separate I2S wiring. It reuses raw audio, the existing ST7789 panel, and shared LVGL; its independent - Boot-only input is adapted from the local MIT AtomEchoS3R input template. Board lifecycle and + Boot-only input is adapted from the local AtomEchoS3R input implementation. Board lifecycle and build metadata are project-maintained Apache-2.0. Chinese and English build support has been validated; real-device validation remains pending. -- The AMOLED 2.16 profile owns independent MIT Board and CO5300 480-pixel panel variants derived +- The AMOLED 2.16 profile owns independent Board and CO5300 480-pixel panel variants derived from the existing integration. It reuses AXP2101 configuration, codecs, CST9217, and shared LVGL with independent identity and 480x480 zero-gap geometry. Its conservative 16 MB Flash/Octal PSRAM defaults require physical capacity confirmation; diff --git a/components/mybot_platform/assets/LICENSE.xiaozhi-esp32 b/components/mybot_platform/assets/LICENSE.xiaozhi-esp32 deleted file mode 100644 index e90b554..0000000 --- a/components/mybot_platform/assets/LICENSE.xiaozhi-esp32 +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2025 Shenzhen Xinzhi Future Technology Co., Ltd. -Copyright (c) 2025 Project Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/components/mybot_platform/assets/README.md b/components/mybot_platform/assets/README.md index 9367a81..4068420 100644 --- a/components/mybot_platform/assets/README.md +++ b/components/mybot_platform/assets/README.md @@ -8,12 +8,29 @@ pairing prompt, and spoken digits `0` through `9`. Only the locale selected by `CONFIG_MYBOT_LANGUAGE_*` is embedded in a firmware image. The audio is decoded to 16 kHz mono signed-16 PCM in PSRAM when the SDK opens an announcement sound. -The copied assets use 20 ms Opus packets. Replacements must retain that packet duration, a mono +The assets use 20 ms Opus packets. Replacements must retain that packet duration, a mono OpusHead stream, and a valid final granule position so playback can trim pre-skip and end padding. -The announcement audio is distributed under the accompanying -[MIT license](LICENSE.xiaozhi-esp32). Its attribution is retained there and in the repository -third-party notice. +The 22 pairing prompt and digit recordings are converted from the mybot SDK's 16 kHz mono signed-16 +little-endian PCM at commit `7854c1d5798004485aa1947ff55116bdb7ab0237`. They use the SDK's +[Apache-2.0 license](../../mybot_stack/mybot_sdk/mybot/LICENSE). +[locales/SOURCES.json](locales/SOURCES.json) records the source revision, source/output SHA-256, +sample counts, encoder version and full encoding command. + +To regenerate a pairing asset, obtain `assets/locales//.pcm` from the pinned SDK +commit and use FFmpeg 6.1.1 with libopus 1.4. Run the command below for each locale (`en-US`, `zh-CN`) +and sound (`prompt`, `0` through `9`), substituting the input and output paths: + +```sh +ffmpeg -nostdin -hide_banner -loglevel error \ + -f s16le -ar 16000 -ac 1 -i input.pcm -map_metadata -1 \ + -c:a libopus -b:a 24000 -vbr off -compression_level 10 \ + -application voip -frame_duration 20 -flags:a +bitexact -fflags +bitexact \ + -f ogg -y output.ogg +``` + +Firmware builds embed the checked-in Ogg files directly; FFmpeg and the PCM files are not build +dependencies. Host decoding checks do not establish real-device playback quality. ## CoreS3 UI images @@ -24,7 +41,7 @@ constant ARGB8888 arrays in `src/drivers/display/renderers/lvgl/lvgl_assets.c`. arrays only when an LVGL UI option is enabled; no runtime PNG decoder is needed. These rasterized Noto Color Emoji font glyphs retain the font's -[SIL Open Font License 1.1](ui/noto_emoji/LICENSE.txt), separately from the audio's MIT terms. +[SIL Open Font License 1.1](ui/noto_emoji/LICENSE.txt). [SOURCES.json](ui/noto_emoji/SOURCES.json) records the pinned source package, original font provenance, per-file SHA-256 values, and conversion details. Run the generator with `--check` to verify that the source hashes and generated arrays match. diff --git a/components/mybot_platform/assets/locales/SOURCES.json b/components/mybot_platform/assets/locales/SOURCES.json new file mode 100644 index 0000000..6491e31 --- /dev/null +++ b/components/mybot_platform/assets/locales/SOURCES.json @@ -0,0 +1,231 @@ +{ + "source": { + "repository": "https://github.com/junlon2006/mybot", + "commit": "7854c1d5798004485aa1947ff55116bdb7ab0237", + "format": "s16le", + "sample_rate_hz": 16000, + "channels": 1 + }, + "encoding": { + "tool": "ffmpeg 6.1.1-3ubuntu5", + "libopus_version": "libopus 1.4", + "codec": "libopus", + "bitrate_bps": 24000, + "frame_duration_ms": 20, + "command": [ + "ffmpeg", + "-nostdin", + "-hide_banner", + "-loglevel", + "error", + "-f", + "s16le", + "-ar", + "16000", + "-ac", + "1", + "-i", + "{input_pcm}", + "-map_metadata", + "-1", + "-c:a", + "libopus", + "-b:a", + "24000", + "-vbr", + "off", + "-compression_level", + "10", + "-application", + "voip", + "-frame_duration", + "20", + "-flags:a", + "+bitexact", + "-fflags", + "+bitexact", + "-f", + "ogg", + "-y", + "{output_ogg}" + ] + }, + "files": [ + { + "file": "en-US/0.ogg", + "source_file": "assets/locales/en-US/0.pcm", + "source_sha256": "44d60e13bd55cef9c1097cef3132e634f93daf102f118ec70af895712cd85a0c", + "sha256": "bc7be9ea8a91b53f66caabbe9641e82d0f0d63c8e9b14809a0f619b58b1bcdbb", + "source_frames": 16896, + "bytes": 3469 + }, + { + "file": "en-US/1.ogg", + "source_file": "assets/locales/en-US/1.pcm", + "source_sha256": "138f6cd261db445bacde50b93fa0483009942dea824b03bb1f49e69750f5a2eb", + "sha256": "22946bbf5ea0d29ee9bcc1305d8a59df343d2beda4e477c8c9312b8aa758dc2f", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/2.ogg", + "source_file": "assets/locales/en-US/2.pcm", + "source_sha256": "a956a33325f83544e923f8bb849a4b247aaddf086a15f27f8ebf0c2714911e18", + "sha256": "c7803e7e4935e3032b3985a223fc843ac43201dd48063f3ba66038c11ef532bc", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/3.ogg", + "source_file": "assets/locales/en-US/3.pcm", + "source_sha256": "90bfa809bcf1ec234e975cfd5ebcf481a48fb52f46db9c91a9e51b8e12298f3a", + "sha256": "339164925bca25516802ea2fc6870b83de938a3c081a2694f0663fd230fbe34a", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/4.ogg", + "source_file": "assets/locales/en-US/4.pcm", + "source_sha256": "eb9eb5e301d7dcf0662a08946652a18c429b75368c0194db452f4963950037dd", + "sha256": "7f0abb1c1b284bc47538d99151bdf948083bb5fa5ede92cb56431f6e220a3564", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/5.ogg", + "source_file": "assets/locales/en-US/5.pcm", + "source_sha256": "5be2d7944244ef4b4b7f34e2dc8b03f164a438c4ef0f7e94a41990b46c0e1d18", + "sha256": "11bb6c75d4f2700110034a273fbfd8d45209bdcf23b6e4d4bea7e313dc514d56", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/6.ogg", + "source_file": "assets/locales/en-US/6.pcm", + "source_sha256": "3ddf816e5b9176f5422b118a4fd4d9b4adfbdf1f081d770af289e1734172e57b", + "sha256": "c25cfa7805b692bdf73f32bc010812a688820bd583e13e17267f8f35d6506797", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/7.ogg", + "source_file": "assets/locales/en-US/7.pcm", + "source_sha256": "ccf40765c104796163f2e848e733792f181ff956d7f7ee54f17e502796bb495d", + "sha256": "8760cd80fe382b2270a6a5bb9bea515097ed12150eb98deff5b2f5962801e967", + "source_frames": 16896, + "bytes": 3469 + }, + { + "file": "en-US/8.ogg", + "source_file": "assets/locales/en-US/8.pcm", + "source_sha256": "950f69b022245a78551795279b15e0933353bb93aa3f401e1e438bd3afd0b9dd", + "sha256": "4a235330fdeb730ccfb9bcbda7fb5c708ec0108208a9a91c1834f2def9d19845", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "en-US/9.ogg", + "source_file": "assets/locales/en-US/9.pcm", + "source_sha256": "f9297fbb50d049324e872e2920441f9a79e3c108131b3ac404394262e19a8755", + "sha256": "a55e764e65167a1c9b2386a489912bac9aabce74bcf3d06db0dc25c590536b1c", + "source_frames": 17280, + "bytes": 3530 + }, + { + "file": "en-US/prompt.ogg", + "source_file": "assets/locales/en-US/prompt.pcm", + "source_sha256": "f35cd9c8db451be978ca82f8ce8120c5c90c27267d75ab261af09810a73882ef", + "sha256": "7aab5ae81e966a097d9ae7a873cccead856c0ff0ccd6c030d538c8ff4bf8deb3", + "source_frames": 64512, + "bytes": 12578 + }, + { + "file": "zh-CN/0.ogg", + "source_file": "assets/locales/zh-CN/0.pcm", + "source_sha256": "99c74257c316b48852b33abe55a334ba8d03c037c42048630dfb81e548a6b14c", + "sha256": "ecaf19e5830e13568f213045c3882d43d8fa5e62b00ad797b321e26b5e17e0fa", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "zh-CN/1.ogg", + "source_file": "assets/locales/zh-CN/1.pcm", + "source_sha256": "fb12c4ad9f62509908bd6b69fab1adac8f58e25818e535ce02d43d66b2f025cc", + "sha256": "a0e9b51b2adfdc6aa49865d7aa0c128cb810db7b33ef91e96ef93619545484b1", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "zh-CN/2.ogg", + "source_file": "assets/locales/zh-CN/2.pcm", + "source_sha256": "505267bdada3ec3ddb1c8a413d066572df992706dbfa70a20ec48d2c797d65f1", + "sha256": "cc0465811816db711acb600c9f4ea1abe1806cc884882c729a5707765f944b7e", + "source_frames": 10752, + "bytes": 2222 + }, + { + "file": "zh-CN/3.ogg", + "source_file": "assets/locales/zh-CN/3.pcm", + "source_sha256": "97283e859e3e40d4acef432c35c1847b747e367cbac5f52c118789fb03731cdd", + "sha256": "68ea2f9f4241e3eb98c37c12ccb3359208f8fa1a4e020a4b98b4c773f4395d90", + "source_frames": 10752, + "bytes": 2222 + }, + { + "file": "zh-CN/4.ogg", + "source_file": "assets/locales/zh-CN/4.pcm", + "source_sha256": "6b6ca932e1e228501b0f4679519888b2583f3b250a7c2160119a8d68f6902405", + "sha256": "e3414d3f5b7b3dab26eea2ac472865f02bdec6ae71fbce47696470f6435d6d4c", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "zh-CN/5.ogg", + "source_file": "assets/locales/zh-CN/5.pcm", + "source_sha256": "56a5faa640947362936bc6c00851fe86d50ddd1f9a450bb2420056abda81e556", + "sha256": "06901e54e7866ce5d644d3cbd6c65ae08db309209072bbec2b839f8780c81239", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "zh-CN/6.ogg", + "source_file": "assets/locales/zh-CN/6.pcm", + "source_sha256": "f465c3cace0bf268e5a7911ed36b5789c11aafc7da29fec73c151c2dce06b662", + "sha256": "010d08caaf308aaca6b4a5d09a57f0f7a79bc2aa7b06ae5e8f2b0fa1852b2087", + "source_frames": 10368, + "bytes": 2161 + }, + { + "file": "zh-CN/7.ogg", + "source_file": "assets/locales/zh-CN/7.pcm", + "source_sha256": "4ab534aea01f4eddca9d186cd97007904779336cd5c14db596b9b261b098a4a7", + "sha256": "c7c418ff779e7ae5e0110a111ffa6ce19b277aa54acda215fd3b155c8cd1e2e4", + "source_frames": 10752, + "bytes": 2222 + }, + { + "file": "zh-CN/8.ogg", + "source_file": "assets/locales/zh-CN/8.pcm", + "source_sha256": "bd7a09ffa811b9f9d5e9ee62597af386098506f3ede3f311734919985d8e77e1", + "sha256": "dd3699d6ce5188e4136ebda996828f1fa89f13836528cbe788977c341147cbb6", + "source_frames": 10368, + "bytes": 2161 + }, + { + "file": "zh-CN/9.ogg", + "source_file": "assets/locales/zh-CN/9.pcm", + "source_sha256": "291695f716f10fceb8200f8734263548b7eaa7737f0cb6f63fd64fae45b940fe", + "sha256": "2038ca65cefc83b601bbb54a5f70e2b1360a72c05823715c96102861a654fa2a", + "source_frames": 13440, + "bytes": 2771 + }, + { + "file": "zh-CN/prompt.ogg", + "source_file": "assets/locales/zh-CN/prompt.pcm", + "source_sha256": "82db526b69df7c62f382eb82ea1813b39498ff27e83e26a8b12c93c5f8f63be3", + "sha256": "d8267ea1c392e8a6214e6982cb8499570585365c3327d032f235f27d09de125e", + "source_frames": 51840, + "bytes": 10172 + } + ] +} diff --git a/components/mybot_platform/assets/locales/en-US/0.ogg b/components/mybot_platform/assets/locales/en-US/0.ogg index 29beac5ed8cc0776a5ac2566170bae3a82146c21..c1bbcae08e1ba840bda134f4c7622a5ec797db2e 100644 GIT binary patch literal 3469 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 F{{Y4q=G_1Q literal 2728 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 UW$xqv`N3=dOaFHN&Hp$1Hz`)!p#T5? diff --git a/components/mybot_platform/assets/locales/en-US/1.ogg b/components/mybot_platform/assets/locales/en-US/1.ogg index 72d93c64feb537561ff9aecbc375e985880ce57e..07f301d8966dc835fdbd4a52e278bb5b8895e6d1 100644 GIT binary patch literal 2771 zcma)8c{mhW8=pbOHj+z*WUFjh24!D{!f3`4l`Z=+6D@WLnMj0CmIhfuV;SR;B#be3 zvSh58BH2a=V=Mcey5Ifd`~LWz`+J^q&U4OrfA4$V_c_1w9CH-P3cv*TADGB)AY*2dM!Eu2_+@^@1?A7mSn>3{<>P_+wa3S39=F}@ zxO@2NAYFpo#BSbjy~D8l?TO`G4rBX2_;m{Y_7bK?*uM3r6t|!-o^-|}$?iZKcR|i7SejN30Am0MAm;e?a~P{q zB=c)hMV8lcZ}NcY$YKyAnsv&!(kCZY*+Rq_s*EhBUMOw7POlq~u&_lL{)~2*>Nv^B z7dvH@)G>Rb#v9o#A#fOX*>d*<8n48*cJmrkidInE;#6=uM*EXh8E=kF@_u^7V}pf9 zqfFnE8TkUSn+V=dE^g`VC%JrPb54r*p4cY1OGp%5=q z6ShCp`a!HAaw=UNM_E`_af0@)^u=YdCrx9?26}u>ncmU zrK}A}X<^`!?u_OEs~?`ZLznx%7Q$1f{YOzaZYmS%VtG`I_U< zs(2U+hl0rY%*Vtr6jG(Jn-W7bTvTUv3P4 z(Xj}68xdZEWY@T&WU>9+Jsc^5KIY`Jq1A6LEdVDc?!sdGALnsQ_}kQpA2*j1&+8FI z=mU!O%+j^)U=?-zyr~8RqF=B27`nUe$LU=na6{cE8)DCs7;xK9u&yq!=1J7P$2+#x%C!N?e#E7{q399)cepl zuG7SaJ)2bbpX9wKkDZ%Z+{sAAblAF$gZ*8#ac{#@f<7Lh>NdhoM+5ud6*3SjHGabf z>Qx#1G`v&53Ak9Jc?J-oX_rRCk*)-)QuPk#*QYkpr$Ty%(h9pjbAw^Da{JI`a2^6! zmOE%6tJz~8qI}T+&$WDCaXj592cl!*tZ%K!luDtmbX+!`Q2i2GIa=-ke$A1-Rc4^D zt#&BD6ovp6Vgr`^&KCue>CbfJSmI@qo~S#2-v}mj3Oe7T{j63}mGM+4+2aeEcDF_BDhAID>_}Lc2WLchggGGFZM6@-h*Yq|Yr>&!PK2QcHuDP2tqB zLJzqjI<;DL+{g6!hbAqar^HhvdSepmr)yOeFHw&&DqFyan_=`=^(bN*Chj*ifv^E^ z%JhHO;v4oiR-x}I6&6x+rnn}|AF4~pg3;_m1?jl!hx|iV_jqM181E#2xinW}HzBh{ zR}M!C;hxW49J@3}Kr%a#V%UAZCYxlPGq%0d-Il9QIm(VwaAekPNmb?^Y8qH3B7g!b z=xr(iGoQ1X`8ZQ+N4Z?a6U(^0s6sTLQ}_5V|v*;xf>T*eo$iU5rft`KEy;wukAUG< zQVRB(-gYYZ?U`Q8u^q$f(DuGe!X8lD@?sG{Ha_`JZqUUjP+L@u&FSQkAzh2&?&yBw z<_dDu0lMveT|=!0Nfy&+yBw9a(B~T|@F3&q@*(BBI0g=C2)eUUYQ|-==(8>Jqvq(r zPOPHusk>JF>-L1lpdLdGN8FoSk=FfgfGK5q@$w8s_qw9$dh=QDeufs<_>jk(ja-x5 zbU8Y?FGe{AevE*nNCy#~&u%b5-o>9b?TsIk7XD-GBWy*){%B_LQ`JNRwpDz($Ocn;DM+yoZ;9n#>6chFATg}iq+iK zwWRk<0^p!d--!=qf@@~ZBnpMO3%A^$yt*d9dZxOr5?Xp6uThg*b5%~Hc0LT0l|#>6 z+?P01{1O#!jk?>*&;lzXZmRe$;OM&6xUb?PjB5yi-~a1vp4vBGCWo8I;(`H^U`aE{ zL@jJlvXmtlRP+=*{r9f|p??HK^hmxGo@>axyLaN{Yt1?N6V))wrVPG(uM@LpQ+Fe&&UKhdF?=xp^vqZeALW?qV#LAW*URm)i5R5{5 zm9_-gr1=?ySY@Y*SL`1a32u=E?Inyh#oL!|W|q522h9J30e#kQJ*bECFyfwOU1?(q a675c;pFHRGL^KKtNm8GN{_Xky_kRJc&C9(2 literal 2160 zcmZ9Nc{mh$7spM68M!nVBsH=%xMNIVW-QtLvb>hDUdc9-VnTz7*2yxm-ja$j))2Cr zWGx{tm22!0C6RJ13EhnCj^6vc&-=XRd4A71=lA`b?{oe;cK-fEzCC>ZM2Mzi{cg$N z=SV;#>_Wmr0ojKHf#4u?!=H%VF8<%x#UZ>-rduZ)Vz`St`S^#5@_uZ5XlHaVXe}MI z76!A6$nzdK$S;^grW)`>Kc09@izi}{lyknpyvhGK)0=o4FLs@Gx03Ahz++_;FeptG z9bjW@dV-*Z)xv1vHSxxJI>&LxP#S2IvV<4{A&n3f+b=FI0TmV&5)uac1UoV4pofxy zEdqty{HEH%+5YMWRYO38I#%_EI2DZ=#$?jI*8dv%KEt^AluAyDEav+Blf&16gf)}J zRsY}~epasde6WyiPSj~P_LxTfOwoh^`Acs*VX42s#4iq#O}r*sukaPfgm;d4A|>3f zt+C6M&?6^gSWTj*;5B%o+(pi~`AVIDPM`;Kt`)}vH+5CkY1o6~1bhsYRoh9_&^;Yx z4hA4eA13x`$og5WAjp3Dbw|hM^kKOGQud;{?j>vJ<2mJX#6giWiU^grrR{`%?)ITt zS8{HYs&0V8Bw(aI@hH|Omdu^9uI1eORT6;D-vOBpqj z$eqLEu#qESjvgC!qf@WtK`_&ysUzChxdXAXv#g5>i}$u|?Y6(D2V-Moaqv4@F0X218{?Mpe%K(g8qEsc?`^Zpbg$U@ zp>xoZ5#;19=*b@=`rsTKf4?|XRi5XFj}El_3QEE--?VtC0eQ?{W2-B zP+#XbI_X`y4u&9PagZ8Y=SbSp3$?e6zieIDK(yQn%zo39bY9CGR8bNPUGIE5dbpdW zS}%8I`|{*$&T~omHqAy)kJgTA1QpJQ*-E%}1zYfkWAa=RtQ}N2*U<4?vcA(`KBQY98o zXHm|XOUY0NdDC&TQNJe|;Q~uznUs)8ZPULF(Lsf3JW}LB1MP?D-H6ETcxBN=EXbw+_bv6*M0 zT`1Wcqt6LHU0Zu`>epspR`*r3bS)??{&$EGW<=Dp9&<|DoAaV}+)R{yFzUgcp8C~| z@6nga4_ihv(028zSt$ZJ1yQ!;C6(4n{_6k~+%iBmg4G7A5SayCKUlZB{La&s**G$^ zxA-~szTn5L&%ZZG_rPxy?bYs>nsRQsHyT>UP_}zEQsIsBG%M)>tN>VBGu??g&ANGT z%fDsi9JXm4s?N+gnN}&N4t-p>Bl)V-so&wzPL|{=PjegJsY0KyXLSsLH73YRxytG< z8z?xenA(^hZNsk-YyZ2VQ|kN$h1+~Ag-3`k>buDl8-a93EpGeF+36a7Y3<2h05j2V zMtNUH9!Y9{fcMzMoe#2VS*~8&A86IMltVV$2g>CRo{^Z!X*R5=4?loaJsS`LTGC8h zI`}5zF3ovy%(a3IE5qF?k~{UT7l(a(JmO3snTstMELOC=v}9Do#1*#w$vwUn>F7xU zO06+@b-pD8DV>G~_Ux5$6v3C0)y|kh1mCrCnONp_>ZXU5xKi&jc^K-Uo_~O|Ne5DjgTdNFuLcXa^Ph95l|_-eA%-bp zOH1Zvk8@JxNCIIG@oUD#>1z+wWG{39$YM(xe0A^XuRX0{*H&?x_}hI_YnFrY|8n7b zk<$$Gs1cytMe4tD0uYe(^z)IMf)bnitfb7dlh2Gej9TT$FVqA!6Wr7zl0{f2#(>Cy zxq(Q8u(g1_=Ar$HjdX6i`fNnaM>~*M|E)kdb6QYT36AfUfgu! zzBT9s(6qg-75A?fe<@(kGsklQ^iG?){!D6rAq2{>CJ=b@$2z~>hJPXt^G`_TjUFnX z1L44>m*x0cIuPoP?CN%H{hv%#ew)B+|4Bd9pQl@Z+4l2t|2*CNymGeLH)xNr(EpA8 E4fZ$Ed;kCd diff --git a/components/mybot_platform/assets/locales/en-US/2.ogg b/components/mybot_platform/assets/locales/en-US/2.ogg index a7c640dc246942c1c39148ae6283cafd44533eb4..df291d2cddcfa46b304ec57fd52b94bd1fd2caf7 100644 GIT binary patch literal 2771 zcma)7XH-+$5>6-yReBMW-ir`WK&c7J3mlM8r345yB0-uI5g`x+gbRp()C(vbL_kp^ zQl+<0ly+%KZ-TT4Qhb5+?vM9=y!U3UGkcx0=bM=`GyB`dSgaX{3iKbMFGJ1)a~OO3 z`ypK&UBF;9Fkb7-#Q4If^w8mK87$X6o&ojWod94w=vZ4v{JwOG{fH#qqNO&UV|Q&cci<7>(5uuP^qI_Gyt3$|2g=c>b`@j=encM z;)WibSQ87!#Ktspk-Yu&e33^2HS0dAnKy{meq;OQJV%Vmhi@b`f=}y%Of==)9Vb)? z$Wt58Apvg}ZHW0h&$Wj75r<}3qif=s(~}8APJf&E&hsI7zHsYJj^7JH>8XG5__g2x zFyZ}3zk%rNj^*-5n+fBV@iM%6rf}PUdRNWaIV{gSbPZ z2J(J~z10{12PIkg?manq`Xmxv`q55RU>Hy1u?rgJ_U%n$MTBc-)%>=R-Xh+9a6fP| z`-z&+dme|Sf#t?BHbfNw2ba6{eH5J+=W6xJ$2LS{os{XAJM^J6aj5TFN-u-Os3IQe z@>^i?amnm~S9|?Uj#sa9hkv0FXaZ5Nuk_3H2KRm6eNfv;p>NvD1k|#jwg%(`8&nm=QUGvicKlz2 zRebbLHFE~@lp4%(HH%Tjn`QHp^aMqTo<;P6OZ@w~EKk+<71`VxeMv z{4L|^dPfKrvhsdbT6i6`vKw1K&$DIL7RY;cz$kN7d^1Y)t|QxLlvJ;fAF95eX2VNe zqzaSKjhFFGKam!3UVsyVK69Z^J=0|ZIYAX>W0{4_iF&Uv$kNbil|LU`|AV;7Ow5+( zjmooytFXyGWjH$Wq4siYBQ-J(PCulxG7>W5t4q7~$aw`>t={%nX&8A!4S>^B!WQ;} zSIEteK9jG~4gR`aj?hrDFLsJk!-NY5_=oL2XbRsyw5z$efcX$t|Bj<5t*m zT-ic@Q!61v{d-l!wcBoE^3@j+8B~c}0+A!Rc4oG5!EMxwOiq1Yyu!{Gtd!E0c{0WX z<`eUK!(+_>@JrkEQ0f8doM+6He#@v6K9hk>JKrm2Uvb{cbi5;L084OA=oL37J1v@_ z4>lExfLql~(@Cjw@Srhd$#E<&Nm^#BtDkNlZb}&CmoD2Uv?ppBJ$JnU6P?*qNP=#4 zT!`a+TfG`8WfN5%Z#?9l(tno;eV&yvSGjIYmimSw8>FU77-}n_+2DlT=UOyNq)*L0 z7ENv|&QZd5?d_PURb{6$dfLMtN@lM4J6o{o!eU?XYw zn&GN|HA0A7e_>|Ajlz>u&`Ut|kcYfhpL&fUNW@arsUtMO^h+U5wKRf!g-L9$TyT^X zhxx7K<3NZKmx8U&6Rw+TpCTNpv92iq^!;UY&=EiX3a%aLOmgf@ z4E8d1skyD;NkEphOX%iY+s+L&VjY-t{8OE#Po-C+yImzA zNLBHdN!nFxOvhU6ghN11*}56Jcmg)p(Ii-s)!E__Yj;{IN?c~TN>`WOP&Z=%c@=5Iyec4$`=5!zm5G-C4)lHA%m z1!6`UcLcX?!fGn18K#|vxV5xs--zNFdDD+#{PtUH+<-F;>Pl-zn?ewAMPasF9 zkFjPeKPHs8O=$B1KiebFx(9((N9a@pAI*mv(LRizjR;y~;oF6T9ogrc__LhB(1zq+ zjP@Q6M?ZHOQ?-p}t|-Z{`voB|f+z0DNfXWF%z|CW-qB2uN5K0m!AOCKEMK44&kCJ7 zl(=AMjMyZDSao*~XlR&q^G7iC9D70i;3w8j*dqxR^}kepFEJsvgVE=m(O>1()ex1O zncsH<6BT+WSSo0z_d#SadG2{~!NtU1prk=y13o3wdZ?whn`$`w#@~gvTYW+`O}vr8 z3wAtQmHJRFbIttqz-gVqkTI6J2E6n=a1?2va$F6IR+$!61vvRbL+)&wynsoFpyw;P z;-hb{;Lfccn$=1pw!%7wibC-eEG=}?v3c&#sFuw;3Y9?U5R_4K!6yFkXoz#RQ4Kz` zbJnEi>$7{DLww_~$#79XZ`LZ;F8{1e02tcoiBR5qTp)xNk0s!8P~72Z2Pq@`T?CSH zdM&5nTj`8BVFVqog=5b?4BU=1qC&XhAY%CPA0B6?BczgIA`M$%^Xju3=$; z29o(`9;w};Xi$fo)}HAP`K>v*%Kqf!V*Q-xpThm2%I#gF+RFf35;AHq)$ literal 2126 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 Vm=dYpr6>`O^)opCcP{^A{};vcrMUnA literal 2038 zcmb7FdpHwpA8w)1a;&lFz>>*vTXTq4iR582r!0EQahAe_G+xVMQOYsZ(;OPZ`n7UE?Qep zk@U(Tn+bvEf&t0H8v-$e(D(n85Z2`Xt2H@9c(R>qBSQAC$(=mN!IDD6#v{~6AFYGY z*TJCCYm)84CIxs=yh%YOLefh}?!^d6tg@f4Cq;PkKhE?9p-xz9&TGHw*pKYTZq?FM z(M2lj1I%8GCUy_n0J{&PtBcV$v(VE*qSev5NO`#YW^pJ~{8xi@rRNnDt~|0a#vthl z5&SS!J(X7&+3_48>3p1UHf&t8-alw~jMP@VfUeWPiF(ptOtVvoyRG`d_zHcQ2UQQ8 z6tM$xu3BFpL)0HHH{?DxF=&b^qA7l+{xLmo(=K2ryEjng9n-~K6Ed>mva5}!U>b9GFaua<%}4!D4Z6uYg1(x>Z8zW$t$WjUhi!^s?x}6&%SL8vzla+{nibZ zQa*gOFg)Tus?y5oR!mJH7ON%$Ao2>Pi){MmAm#TLMNXUKe_Zk)CZ#77J6W3adgO(g zDgyfAUkO7tKb}nG`<2Yzy^b@v>X(3W=q@ac*?KBauLm$h?A51WA44rr%<-Ma62s>QhpM~mjW}#v|h)4Cn!{($^x-UT>YOvAjf#1Qr6jm2|Y8I66 zztaNzD(l|N`#jwpuTFv&DiGi$iar2b+P9Z9~4|Zz36*gu6Ti4sN!e}%EFy$ zH+=DGaSVRkpH}P!*>`vOYB#$I|N8b7vx~|4vr#)-LXz5R`{gG=Me4J|MbyNqEiwd; zE(4{-rap0*3@Ax2{aV~Rmz0j+YNI=`6dXY*={icG5uGu~7AF<=*OctL(iTuR_#_e1)Lcd( zilF07n>1!#-9J`CQv`u{s!e0rH`wkO54)z zJKtoH%$NDaL=~GCP9rakwRc&uw@|b=pq%ZwBJb~C)O?BG=A^#NYdHdPU1WLSo40Ri zs?p528Nw3{&sM$t?d-^OXlUOgD8n`@G-u)ExGqNx%r!f?1JkVdyJC!2Wr><8_V*-< zt!<^iHuGn0-tS{$+FpW^XwUu&8eeaIHh_;%UmS6tx@5gd;ZR7o_G&eYcfR|+4PoXI za!%E?XsD}|yB^&CQj5m2vaCo*YsF;sga}-u`R^5~E2iG>6`Jz;i(S84a>9nkt^Cvu zY@aru!Ra7>IO-kZQnlyO#6owxwCbsyIsqqc#GXz6( z_AvKK=X3KEkkk32Ytw<&O?s0R8e%kFoJ4@QiG^fK^Fysv*^ZEhH$QZzh^I5BVFtAHhwbN+ zwnch!=yFa9EF10G|6O$!Mz}johaCOich2$x< zoirvV;_7K2Yq+c>>8QPY)~$Nwl}7oc9d6#Q>s=GcG%ID}adL~b|Eo;H3aTlPPCrg_ z8)CfX)H0|n#?v&*d5B`9$B{cf1cWCl5g9V!l11z-Eg|V>68`?+L>Yk72l8f^ve|(< zZtGG$?fLM#rM%VcsiM|)GA}_{-p#-5ui4HQTn_j&z;iHm2QuHp>Twfyw8sP4$gdhA zxkgKx&J0oHt)^#hU0MX!C5FI8%6d<`=OjJrsjYZFC;K9*Y(-&@5ETi=hs;Aq%EJ$U zd3j^C@JeMM@gS!l+?&Vgpyijv@-By_Eyc-*f{nW(`JbF26%j)-;d^S)O8D0R+8*|_ soyZZ+pxvW!{~y25U-MtHKLb=W>haI~{28Dk!c|JU_RM;5=s%wQ8)=ZGZ2$lO diff --git a/components/mybot_platform/assets/locales/en-US/4.ogg b/components/mybot_platform/assets/locales/en-US/4.ogg index d1d7c64d3ca55c09046f988da685669961c98b54..2bd2a16b8bf35de0f334bafc0d3a1badd252b00f 100644 GIT binary patch literal 2771 zcma)6c{mhW8=qm!AQ9QO6cTFeTe1vdGGy$sB*U1ogb3NXvc)vEsD$iG_B}(&G8ie_ z%{D|B+l)fCB-I_=@B8EXp8LoBJ9;G7URwd7N9tBCm;f;S#ohg;9~yHc$}U{|84b>hIYo$zJ;RK)^(gEt;h1Zx7eMtc?9~MmM%(J{~AW zyfD{m9`f+NKmYTIfC+*pb;J`p4ZS3>s&d-~q6$Zz+Qz78zP^#4fIO&|P+5l6&6aymb+#Y7 z2YWdZH_H#60-zlU5u_Zp?6R)-n_3%U4JY4RA7@vvSj=t42pe@Wi;E$E`4v{q3Fqgd zo*lS$+8XC&cWmYH@L3PBCv_$!?M3^K+oo@xXvlwnjlP*bTPtu)P|#HM^b2s8xA;B+ zShyN4Cf=f-G(&VLuOoH6o2h$nh3C)n>^;vS z&Y>JHhg%AYlgf)1WaSrSg4&Hm?AOLWG>TsQOHJvVr5~4H-)p z{)Ldw)Z&2+URLQ=-mAQTXzOJTiXOZSHAB?tA&&fDV{4z_OjwDbZC#>jXK1S+?>J7_ zxae`mtL~rN=!L3=^0L@KaH&(&Z-?@kls13C7YG=z!j!v}CL#qVc5#l+aY&HMbgg3X zoxnjmlwwTytGc9jmnvU;8=;LL`^Iid%|cH!oE^`84@;Pa6dpf)WlLhp;b3GoEADC)&nqgS`*NE+S)t(&B*Ph&|m=2FxY)(c70 z+cyZK+=17;4OT6CWL2{3cEU5_<;fr@t@@=9&Ix$CkDGhy{?CCzMU1`2(AasvUZ^ke;X-Df&>K*4Cch_&K*wC?k9fsyHV&q^7}9X3FN$26Fr zLDyY+P<}>485LP(vUKmg_eD}3oE`N1CcM5zZ6T6@UY|XE9F_s%T+Ach`l&Q|^_9KV zfVt4x3#WfteR#rX)2{qjzw9lq=(>{Ig9briOC-IXSv*v#mDN=!XwJYH)0p|k_(A#h z!S1)VN_tI6Woio_aT8-Vtj$#2p5rDBKwZbV5t5;zgnm-79X&?{US5#3)}W>)4_k&d z+@pfa)N_H;;&Y#e3LI&b-)lS+*)O;;PXiZz;hcr$4ht# zc(l>ZD`9x=)?SsCI@Q$a=7kr6SUWSiZ%rPu zB7j-=n`e3K(m87FwVx)EKAgNG!`8s-#5k>mS%s|E-!8Uh;oM6sLwTDehmn_^SZ?;Lk4x^qS=S5|e@v4AdNPG#ts9HQ~M=6})Ym?Rr~Y zEP;ubp(bX2uJFAJ-d=HKP4@FNC^}3}{*QE{=A)Wqo98>0mU=<_%d9IR_^SDh{$l^( zW^lUOxvjXW6gBL&hz=^E*YKAs!vb0pBO)*@G4Ob4yE(}KH>ggZ8?16>$*4)ingN_{ z-dJtrZr+`hhe zpl+fRMt(c&L$|DXoruo3S{B8tI8NIFo55()pxCqXDOl&VzTLqG|V_{2@w1 z4Bftwee>2_n~HChe(EA%Am%~>cRwI-!CxY>V+ElQ%Nd-oylBjK9CFtoJIu{EfYKG( zkFUX!Kcbv$4R%VB@-Qy@9rQ5M=Om=hhnq{SWypV_ZBEc}-Jy}E$4&bXi#xm#U(h?^ zv0j=UT+RfFiW(;GlEdeBAwao%rXF`?6L*>rFfgR=7Fybv0*d0-l5c;Znwn`96c}%7 z44`~Uf#g(K_5}5c#LRN?3}ysscAr4DSG+HpJo5Ut-*u_%^we=)y>dx4h=OQ&kI{{eqdCc(ozvmT zXKFqf(O}xthd7rvjQHuy%Pc9R!LRRHx55YgrQLb_a1;&5>xQ{1FS@Q88YbsP9&v^- zg2!u&u7 zIqtVDfO$X559%b*hD{l3T{_eJ`PDHIA0FGadh<(PJLjf0e3@)~F!w|8D53Wu$7YgK zhI|<>`d97MC`TS~F5GBQn1uMe%XY0;EnlzCd3BOmBC&)3f^e|Ln!K~#{8p_XvzFuc0%u>cBZBv z-?rBhCOmbk7FZJ?m_XEL3f=soh0VRKe}&|Y5CPHHh<1r%w%}@w5?^8Ikjz_YOPXTi zUTNV+lEZNHEN1rZJo%MeT}q^Jc8%a+GjP2^`?;Yzoh$gvW@B6XZfwGO$mE%2(ps{| zYOnZ+zvu(Y;l-E7>1P<&w4@eo##t1I4=W0qbPhW4S9qm)vE`GHi6)`Xi|-E#!fQ9< zZQtYj-8V>FN=xp>!8JsEe8kjaamCl%AoZ@W^>C}Ar;ek+mKx4F(I-{}+lN4#e3iH6 z9kk6na|0?A^xCeLr9s?!BsTlif{ob(Iq{G*#Xmxwvd{ntHmPz;hV}nr&8F? zBRkgbDU5wRPDl)hTC5L>ydr9LtVLA;YaXnY<@Q6baU3LX_#h}PVA%R&H7>C(J7$qb zG+RzUH=f>Uj_eWY7#4;PPEi!~&lP>A!C--bNNziBPmnx$$5ouNH@DZCe&y>LCD`Z& z#9K?P<4klWmi&3Sz@%4h&-w2t8gEC`s#|K}`uFfV?I6$lEnKnm5(Mwb|x3>vf}M`Q}!{WOvbHUn;xO$VMVTFn`JiC##=QF>6*N z5I2Lvt=2otA=IdahW27pZz!$&USH2+(F<-nLEiFOw%c_)XO9fomj9%ORx$8j);+dY zgxlzT7?8ly6L*uImzOQh&5E%oO2GZhw=pV90M(Hp=jr z&LSVN{%CxtO=h|qs78nFJ;QgHudJtP5;TXt##sj?gHk@pn`O__FX9GUuE~G6(x@@1 z(z?{N(7#L~BSYGmGf_5G-StH(D&p>RT!0&kkERq)lLzQR$lr-o*_rsr)_+J4RP8+N zbvBrBkjB_$MHsp`d-rZpok-@PuZ`4lC_~d&yF6i&L-%(y-%`qEK;^aCv{kI|8^Jkq_j_Jbq zMt5$G7#B54o!VRs$S=3z&z;J3x^+Fi>Y31>yB&VP*hTZo$R&>rHr}tzP$#PCfsq+N z{wY*1)KS6S>)IB=I2qIT_z|(y^#Gr4fC+yQL$P=kr3WgHZpGB6|6<8$$vP+TBA#{p z_u-!drtR|%TmfDWl@&xmWi=^dMn`Q?kD9T)MrRviJ)`a4t;lWNDBuHsL2IDY^)wt= zlQIZ6d(Y9?pds!$4w+6 zZ%U6UFMNJeeM+n+IR9*}zFaU7lzsPd>~SyrJC`f)mqhRDfN}c?)ya*-a>H(oMQU{T z`O^{0d&{90!#=J`d%R7ibb^wb9OBsY$8E@HDV|HGc|O2hom(GXH@q3RGQN0ud7EwY zrq>qJmOqu|n#r3w9xg!8PEXL~lq#;lIU*053tU`zkq1l%P^Jg;cJ zKV;3ybEmqQ%~{y#M-BvUubHSLqCTkx7gdF&bV1d7YBCQ!Ck;%k*^YxUvS(*QndF=9 z_Q*S(7Wl;<@8H|)6I`^9;f3h#M46ew&zFN(qTCN-UG`3#B%i&FY_Aaf#mjLYzAXz% zSRq}b2VRg{2Wo1T>|e$B$u2mBc)Vh77m2sduq?E0e(>S#wbpG;>e9{}>Cx!n`4i;q zhyKl`W1iiWec#MLQ2-t7+ol`bGH{guuL(O^w^aV)iDS_W>bUyuG;NC5;W*l{YuewJ0up zH;uPVx9BVF(umex%|Rze%-v8B7Pe-uL*8etymbnoNWOfQ&|>fTU&b4IdNFRU%4F zh=Gr9fSt}US;89Q!pJT3r(FOeZ%ee%PFz^^hH_v?W9FnUql)c=(zA^DLzb*nm$wfn zwcBR73LgZ_pH|xAAaX%UHa3-CrKE^4);+Bp=H(Z6@(BG?c-ch)d8uSJ|2=mTkOU)T zy9=C(g~*=mD^JP{AWFF`8f)SVhb0YDl)A`nf4GAwEWB*8Aa#gos+Ahm6pnq=#QC5# zNqsgr@<(F6LF)JCLcQ|^jqlQ^m~(Hw9r=WouxzNSAO zj)#}kh9Ol42>{Z>=gN&TP#2|mp&oACI2F}*b*&n^a29$xI9<~Wxex=E*9ZW3 zim%2fCsmMRCr*}zEobEc9!$RdOznvGwRY*cB(YijUy^^eDR!y#Kg-mgZHkSV##8Nk z`9;Kp1q1~61)*GA+}vCMS|a9zp*)?N#F?&7IGQ)=tO4ll=Iw{CxV~Bn%*>w zQNU~}P^H=)-9v?1y}R(?o7`ytz4flhwhw}PwGzOw&CLXq18JABW~gsfF=<2q&E)*y z^OwQZ*rMSMhhC;yy4?4)QR0O_+E71pwAJpYJAX5pPo-PNLKbibt}h~v9#sciy`hTl SlKy{1_VhY;GRyzo`|3aF0P2hY diff --git a/components/mybot_platform/assets/locales/en-US/5.ogg b/components/mybot_platform/assets/locales/en-US/5.ogg index db4570da0b59ad8de061b48bdf7db5e5ebe42be2..efbbd5841cb6aacd2a01e5039293d153e530b7be 100644 GIT binary patch literal 2771 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 literal 2201 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 literal 2558 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 literal 2936 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 literal 2163 zcmZ9Nc{J4f8^?`pW~^h$mMz=3){)_gn7M>6A(EXM%aE~-wTU#+{A4Q3wPY#R*i+e; zxVBpoO=U=952Z1Y8$vPYj()%M`6?hvUTIWw;+8u+y z&mBXS_(|hUu73@y^OG(DFo9y3WQgyL(_8|t5Fd4SmDtZ~nCKs7sQ2zY*w_}iF;;Fr ziO}ZuP!$jd2Wce~&bX3(UFqFnfq&p8@=A!7<~!>HfY`wpN-E}M=#(dE78&$h=x?^M zMTnS{Ux28}TTpBKdJ5X}R|vqh-iT@zK1TM}LgSH&4GGg{$vWS_d-nPID8*toAJMrI z-*kYeYV&cxe}&y&!wN{jn{nz5!?-{vi;4 z!%}BpxbFJ)0!aFptc#p`sh?=ltao+WWGZ-6a}QDRf~Ph@7xPAVHbPycq$=ON<0+A2 zWNSO}VrRq?{nI&3H@PljfL&kvi39+wzZgNCL zW zjs(|y`f^v)q-I3qA|KfoXj!+QqKPdk=<$NZ$4RnYp*E_wUtQ$8=OjsZ>sY|mfUp&P z;{GusebdUn5uT~O%Yy8)Ugh`)Nq@y z_cd}1hx(ZA)yAMuzMT=I$5i!wq|tpMgCcoD3=}_bg($N2Nbc0Zhdy!JSrxh=45%e8 zO3U>Rn^tKyLQ%YAfZn z{^h{F`1^h9eX5Fn=%TE1uHbT&t9``98Qh1vN2>_=sncmx6<30Kbjs3vE|9&nIWo~3 z*FU*x5=VLAnp?BEtRumoVan@ZoqepU?`kobTT_Mf6NWHxXRAVK`p2`;+Lby`%czX{ z;RPS&WC|LfB;u?8a96FYp}C&#{QWg-Jz(EQIN|t|edn1y?wGhdzUc7p3%(f=1IM3L z#9qF7a$`-fhKkWl?ybrRQ*}PH-=(|_aRhpmGZfEdZk;_Zg(wrw>$BC#sG)6W%G#A| zRO2joV^)+~GjKZ3LQ}3=KE4@&9?%>WN z;Do_oUVdo5GJq?6I!<=d?csN7<06nAc>+hENUUf{qyH{hrEqiZ+g61r9c%Z9;2dzY z(8xcb8=7Y+q)-xSaUyOV1Aq{!tUHjzp@6bg@V#YyOFd>Kkap~gGGFDpihT3LWNZ@1_8soA3I zt7}SFn4LlaoG{vwsm92(=HBwjCew;NTFaJ{S%BDL`F8iHwxPm73##P@3}s&~V`cOu zvN9~s#wG=vs3OlAG*@5&LUYD}4-MOSLfBc+PieQC6_PK!H(nZFiPR!x0|HT0MKN=H zut3>k{QPIpSweE*vRD`k5J-Q(yoDh*MCr4)Yk^+E*t0YMdSh1gNw0|kag0dCJH;JQ z2A~<5%)4&v`sF=jrRyd}k9eposgI^%@{Kh~Mud>Z4v_#f7ymuF)QN9S-4$P@fm1w$ z;30{(6wr5sB@7Fr4@<)9jk+XHmsZbfznQAJwQ(ks&3Fez7TVtPeRDGX1p`2@rSW`) zUs^*O`ZHX~$-z}P01~$Tazo=P03IR?4sm`2cqm4Fn*6`(r}}ey^UnYEb9w*V-aMSt OL;a0DHw65D)_(vku+QEA diff --git a/components/mybot_platform/assets/locales/en-US/9.ogg b/components/mybot_platform/assets/locales/en-US/9.ogg index fb7461766300678bd2d7f9f3cf5c05b1ae1ba122..f0accfd431afc492d2ba07636ce9758e4a42749e 100644 GIT binary patch literal 3530 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 AX8-^I delta 2225 zcmYjTc{J4B8z*_kI(EjEo$O<2WXhIsvlb}{g(NCwEMxZ_3R$vb&90azWEwPt2$>Nj zQBn4#WX+Pv`i|du|M)%U-19uo=lML(z4x4Z&gXWE_VS3>czW6~9Afy-%5)2{2Vwc< z0y<4Z=JY|%NY8_m_$nCnZ7_lU=UqMhIq8U{EABc9siuKa(?B8*DB|?x;p6Um&BITR zUUa7ywKV8O%`~habTH>&lVvw#fu?|r5<*f;+sGIg>8i-fsVOR}sT|W$(bUyEj#5IS zP|~t;(nk<{0$gJJd|bR-JbYY$Lntx>g5m8QPr%p514aU~iD#*KO-hTpzU?K?!)*&fW)r*9%a<&VB%w&Mq)A~S~u}+2d zd1*WQ?t#S>K|k~{y-cdUMpn32>#l;NrXjiWB6eFHvZI?PePiR~YXFG41RLxgM*9B> z&d;+;dORnU_(E&rmGm@j@g5$c{Yp`J-88*1r;oqAUpP``WYG3T?vVw1k!f+Y!$02B z?3F8^up^v%P1lW$IemeG}}GRu6I196d)vwXoW3j|gLE*z_OYJwwsstpUU=7b_ywfTa+(ii zJL0aoI$DXo6>h{VUN^(lvW4|P6J1d=Rq2+T*b3Q~j@j>mo$cj(J%heCKglv`%e36X zgZhlDFz&K*PV-O-5!x5&D=d_-6m#QE{wLVM|FXa|v@wf;~h*Hy2FgX$nkG=1R zDtXE{fI7Zb^|Wq6n}XOF6i2i;6H|*STefCnA=D0AQpRO|#}1x7bh3O9JmtZaf;t&E z_jS3jxm*1bm&QxN%@nu4c7tgl3#A!af_S&OY__%5`*uJwsLxw-TB;|^&V7q}A5v9~ zjX*i2U)#nsU(~=m7pI#`VRHeo-NDtMJm~c&kzkDEZ9;7*f)jeeu=P2Ye-hMUd0P-V z!e52MsxPmLjTsMSgBr}ze1Go^y}GMQ40^(6y4<&(&(B6hWML^3;mIo^VmiwKI9XgS z9#pp+edK1nAN1P%8R5^LfV-v2W&}h>l?pBNNMScIVdvc6Uw%C@u5#cksHPr?Ts$SP zWFnFHo76y^hvIpec$nSZ(M%g)QdW1-Q2iF7D72ZsTrNO8ucLTnY1YWQ|Q591UZG75t$V5##Zdv>O*3Cg` zfIf%WN7Q7-aSlzDuFIxo6m-eHpKI168;y+vaS=eoCgV7MmhjWXDZKAGRimey33pCq zn+koIVNfCbHqppNDR#;~aF?xKi}rG+v_~`h6^d$((60>9+TE548kW(f&>KS(wQ(<9 zTQb9UVBWuzTWKa_5hV?on{Z4dQf-PsCFX7#r$#7*?Fdj>t`@Y9ye5E}XB@U7_8C1K7{9l@>Muw} zcUaiH+N3s{4V_we=s$MC+{2r+c=(4=g|XsLIXA4tGm()QKiMH&81KjS#4RR z%79uo{FKXLEq1{FoEDQZU=CH*2f1ZyHhZJgm(r@kjW#yJzS)^WcqT5!>WU#`j&d}- z4=Da1?`{92;Qc0_Q>m12&4!I8$9N_CqL1K~-wi_pycL&0)XD*d0IwVqtEeg7;v%`@)Axc!`2Zs~4KQxBpt1wadWo?e0#%*znKE0_6A{<(0#lz;S4J`<2!$hQM*aDN$Cx z>KWjQ6HSUyjcWCxY{WYC`ZgL`FFBA8oBU-Md408&PD1d;JiNjv*Gl!LzE84<4}GT<#8$(;Njbs-N7q1iA~MP%pOrpZ^a&aQ^~I_6$A% diff --git a/components/mybot_platform/assets/locales/en-US/prompt.ogg b/components/mybot_platform/assets/locales/en-US/prompt.ogg index de322238387a9f3105ea362f5200ced62075ab55..8d633f2554e395c8321613893555fbc27503405e 100644 GIT binary patch literal 12578 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

y!C6l0;h zJEmn5O1=X2w|F-|5`f6Z?X)Q0nnwN0=})GUGgDZ;2B$c{E5Fcv)eS$UkSI1hso=O%sX zn$V(|35**F3K$JFn@+i#xIpni1*meOsx=y=acr6}ONob*SjQsgbHq<&a(JEG$B(8o z2T23J4l5DO%+AaQBY?q1?*2N?qKA5ndUpgp;-0q-!!40Yja~?=%$lC0E!7bZwR~cd z8lnoFAjMJI22;YvNkL@Yk&irTLok^hbg71qE{SsQ$-Vof7{)=!*xOuB$&4x0K$U73 zXC}6zj$BX~fs`o-X{+Fr<&xTO5yI3fsIBJ=CJ<%JBn`C8To+*;yI3#Kf$u5m_Ha~G z&72;$YSIWnTQUcp1QC!`>JRZUOf)IsN-|t9hhZG%!9@Y+;5aIu+MYCS2xN#gJnB7G zQ+d*o4&Xaq^o6TsG-qbzwd&HR$K9DDg*ML7$_MnIC19I}JKo{ztLJi?SY>2SV1@4d5gPtK zS+xZE#q&kt!?@prgHoS)+{r1UsZYH~H*Z>`JIqG2>!k5Gs$n|67I;|p|9EO_qHkTp zz%8mDvHchOmieK<98-P>ooz)M+v=mAF?DUfTXGQm%{(L^wca2XnC36csy8&2#T533 z2v~4Zu9>KCZpSZ#0G7YBT-#n7XG57%L~{tm;J&om!a#9-Xh3v5AxAwkpNg(YzUg?M zY!AsX^v1lIk9X{sf1J7N;IJ`+F%}T)-|>Oo&3`sVb|=C-_}%me4~>#9qHKYvI;}Fz za2q!IN3%dz01tO9%hFeA*USB}?$9;rjPDs>+z7g;k-gL?5a!2QS~usjo@^t26t3rE zwKt-;GUjrejeifwW@4@NUf1#V8A`UWDN|lgfh*|tHsrVi#sLX5aFS?1j!0eEUR_Y( znS?Pmq`n@p=!h#x-4FXvku7UCZ)}g-PMsG8tINqML1jc3e~{OUM$q2_ubW3y3bstm!Pu0P_`dnD;JpJ!!lEkc2A@VW25 zPXgHf=M(}O9GSWMjC}ta5&)>>P=BoR>PL2Vcf(M^KP_8rct6L;8e{{F6UQKILrd@~ z=E5R~Z~VMdttO8XxH*b1zCr7RO8zj&20Kg5z6zbrTvUM7o=+cJxV35YS9r%P5!|+C zX2xtckLfqY{SEZk)lzN8cPbeg1@Xg9>OfSt)8u+uFo4x%K=Fz{TBiZ#x%oA=16Fw1 zWlzO_o}8yQJA6@<%j)?Q>$Y$~KU`xeE7MsT3VR&5`2z%26b$yF5LIax)D6Dm910%+ z(~)XuyZ4Ym4c5cFEek{8U7ScFzJ%BdXyRn&p5(>p-(ND=Z3YoqGLZ?+jdy^hdsroR z7*eH6O)W|T>=tV^f(-s-Jx~`AaVrJR1NN+C+8>TQI5c@c#yqV*tHex;`#z3pQ-q-k zYasBvIrqoWbVKDP`r)S(AJoY5njGqu3S)i;GxM9sr9J01Ijf}p8Q)}xuq{wyxcWL+ zQU{El?}N}d4Z%*D738GgOAGumP>&S2E9SPzjSU;`FXC=Nc`NrTO<*}}JIG0mPN^Rm zGa!0~EsrU(W*uW4sv2V+tS=x_NV=oUSg|l=B(l)aUqHVN^Uf^)8v#-K4$thKW8NuY zMjaUkObOL|1J>w8lKhDx(L8yrBsn;#0zS*+2an@2kpX}Q-_8F*;>_yKhmA$_SCg*X zORHZ}wFp5`uCt`cy7u3!)F#tRIY&`L7s~IZHcMZE=S3nNJ;MGurB)p_xEED(5MN$m z;E;O$vByr;{LBg03r*s`C!dX5Wd1g6-{DqAK}SL^AG}^}Vh90*x00L6eKpPm0AJmn z!qI0f2#O|@C@aaIJ}xZJFjm>sT#C~3%w9s>a*0-%J;w>A*-KU``50uNd86b+;owVn zC1vh2i{waZE&Cr1n17z2wn5cnDA*;sOmGS=hjd*Y%i%Psm|Y$TdheJM_GfKLvT?^FqsP*|FQqttb_ac1-M5 zx}T?KkRQLtGd2V&`fIv{fA417>Zb%w$ncnLn|tQJ)bcljNo{Kkgk1$YPx$?-a|`f_ zPW*}j3O|3OVjTnHbSaUSk-duP?J4qVCgi1JR>#gBU#@K3 z=Z)E_Zt*a9k!wj>Vw`LAjSJptx%P~!hkN78n}ZR|j>fiI0a#zSQC&(oOrBW?(-GX` z&U8nL?euPy$X5&uOqC>LR%k6Mn%usH?{6>BwBNc*_sxGVPg0p0$E!T80O5*(=$*YI zFSUZGmcDF}lFVadrcM^oIexg1~6Gu}}v;?zmyKI0nJj&B@G0pJx$ z|#ij+liZdfSq6X9%`LU8w$fznVj2&EiNdQf85WQAD(0$u_q>V z>Ds71Z_dx4S=(4kHd4b1@#!j5PUFyvLQ0*%VDDFN!aDI?og+5B9yAraYM|KceG zkEl9+B3ym!xE4!k0(H|p~j@c#Km z7>-YS=i2}b?W2WYzU5yM(H27g+IwKkJVBE+SHO2ZVp+~90APGVl9DsT4sNf2A(r18IiSQ`QXdZ26jH_SwwlX7!CncpR zh}U8=O(1fZ_w0iJ=5taM<&y)sd14@2l)IQqa7;3I&{Yf@#oQGMvtX{>$Tw}4anB0g zb^quO_Z0SiCiwH&Pv|OhNXI4AO~n%_~cJ3&_aEe(TjGF~bo7)|D)>2uyt+>FY9bn1EHhX?EP_%gisW zqGfeJ6t2RnR2cf6%i7p0}R0`4^mP^~%^LsATRO zsI4JOTEWE}6zxj>jL8SAw_D~T^yN}9YK6M`%ERm$Jf)zl;Ajm zDJk*J#zG4S!0ID8mVc$z*Ajyx4o0#CQsQ;JkLjt(-6oR2pOveSFbzz6H9 z{xsi|C2x;@nGK~)5cMN->;MElt?}NaCSHjya6kl@4tI>T=8kb?u&NULY759q`}0ZQ zkoM0qr{+z_J-Gliea)w%A!Bs_E`%v)D2N4IG*x7O;Zo4h*fTpyJFC%Cq>HZ0{gtNZ zM>1tEPT1yPR}grpUHU`6d{*LDqhU{~KV9F}SL^%m>Fga~T(^zRks?+4%r0_uzF=z8 zVfo=F-#!8#e5C%H+sL`h7(H}kg~Hex8rUkCiS#qkco#C`9T!?p%7Gd=K;bS8yt+>o9BN{ z@{F@#1d{M2;2YVncbrz17Cg5bc_fi5lobu?yQT~Zm(9hHMD`6025lkI&f+Q)Z(0SI z3kL%?GQiD)$}FibnZHvSqC?Q?+Sh>4#vwoabLl2m8VnKsmJc4Q*5K>q(GAeo1Jil; zV*2zp7!ky|qsQODI4KHUnH0gay>ovl<}L6`B3$&Y6~f7{sXAHyi*VOm9q!QC-uSZF zG&UxT&-BXP_5yXbTU!zg%YR{P`T1de720cm#!Z2x7JoApIY(z0=u6nk`1G=P;aDT@ zOCgM!`>NER2zEovEjk3@AdAfxiHZ5IqC?==uVi_k9U;WQK3&8&8Y?gE*ZbZksAoBL zyfhI8V=|R~K@TOxDyU;i3SKjy*wIsFCL}Yklz<984VuHH z$q>g(sXqQ}1FD3^928_%_oHw`?`r#tjW?1VpJTB=LtE!iq@8LEI4_h4TCu>(Ic&*e zRgNsysV)M{Af@I$6x23ZIo>qQrT=Qq+|!jrzdV=JO;5UawdGE?uAzD%gi0APfuCBy zxuO}hcVTMl;X@MSUwV|MW~*O37pW=ga;l`%W9k z9mXGS-6pIwDO?7r;9As)o;;g+$<*HL?_$&>w`+&e*SSGq?Hz+yJv223#5cGcv*bcj z`B~t6sEr0$|F9T7Ra_X>c(lRJf1d>W`5zJh12$bYl8x2>h6IQL3fVS5{A#)~B;4w8 z_LzD`Tn>!8AC*~ZNLDdc&(bmyQcBN}TJ@$TiNQQ=A+lah0ZG~WEs&)kFkpw&yKw); z{wDtSsh@u)!(ej5bySe}mWQk+_OyUo?-hOmt_|xhYNe!D9DalDQ{bjJBolt{Z}OUg zK45oY)Fd7OvWUsRfo5>6s$WT8u$5GTdN_AM1OzO*mRj+Pr@Y{en}-LJ|G;$}NPnGv)BnIwb{i}Z>FM{Y*H z_A{2!S6EMZk>=wT4g-^_4=fvmqONd8gWHAd`pkBMm?C-eU2}GTm%txc&gQA~>qcW%A zSe+@6&Sg$|tBBnn&=(GuHSfM-F`@ryh@t}%-XE?HST;A<;Vj9UpuVky?o|0k-)T*E zYY%F@br!fzMf~`D^>=MQrEd_!@d{4SqFZ_N?N=q>uT~S&pc!fbuz2KEMNQ#azs$FwMEeit;2dH!VH5GFHXX$q&squ0FSl=?6 zBh5hf!@bT%v@&jV`|}EKwUwxb%d)Op4_2xgSfBXB_LSrIX2$5b^9myv7kg-~6Ls4! zy>Ag<*-|P#c(K|blN5kL5#n7JOw)r3it}@@`elcdOSuFvsvkeZH!^S}Oym;BTKCGZ z6QD-x=B<61zXA^EGR;5_fmk26pDz~C{mGw*RJ%{;&`g#0++u0o5!FVh{su(fs-r85 zQ?d(lNHB@Zvp z0=$NFZgyte_<7uoOV=oF&dIh;uHP+U6{@%9=Km94ZFYE2jg zN6D{MGLGRP#~oLABhN-^vN>WBln~cx8S&kwgmA1deHqY$^g=_A1}C>*^(VhJyJmK+ z_9iSHjzy}_q-Vx=>DDHfJU`(bLcI`lCNZgj)wZgJxweu|TK*vj=A+xNkBHifK#()^ z3y`8-(EuOz*HnI6I{RG=Cg91SFrq;OPZU4j=BtLA<;BY(Xr|V$_ADGKKW_lJg<+v5 zlo|&J))#~*hh@ePUeoz(;~%$G81@u--xiCdwS1Xev-y*=V8A?+@JhIqqF!rK-t(1e znXFzw?$oA^a^?sOoMH}j4|eU$Xc#U$2vfMq1!K;>HTttwbNsD)epKD+@_#tvsXF)& zmZtEGqO}ybP$h&Z_A`_Nc#naVWpiKH3OFSwQm~@K)bbdBZ`#(7uhD6RiRDXa_o9B1 zem(KB5Vu2Sl6y$RNq*nYZhREKZ50hB4>*EJPx;D0SRN+AekOr>*G|EJ4Yo8MHQlF7 z-!#;SrzUl*iteW~eaDKq;1wF*hQsUvhLGNh%=mvS;Gcb?v7{YM5OUTE*L;3r&y zzlZM&-3!biN|aS~&Dpdu)L?635=dW`lSuV+1yy@y=q|B)P&|wRD+nlK^A1z&@<8m- z3>U}udae|-0Wm>3*Oy&55*ICzKYATMl?|L`0N{MnnY2FZEiaTHwY|7T2Iu}u=9Na* zSNGq-_Hlg?FfA9Ej**@WaNjzc;%KV0>i#~~&@59SiYjN~eIE=jHyq*@)%#NrSQ{^p zh9UAV7R2BsM_Z!amcBBx0{R9~ZSN{uq@=>Yi;|WXT$&>rkk6d7 zv)nN0-jCN35mBue&<7^3Ac5_>h5TL`D2}@mFlF8&4F^5C`RaWtL~L>ObdXuA15bno z)#B#r{lH7|^IjOnY(n#M0}Cy&`KfixGqAWm;pD0<=tN|=+$&H$*EPI?z)oWA<@n9} z=r=q4gx~nRKc(R(_(F0(T(lHpUvMj>r~3Ed{P@Y$e?D2HOz~QfQnv0U(HwncBwGax zjL!eSa1eLY-<(i%TU!3xd_Tpq?q|jf9mrNQ2k=y!dBgWD(j1KdpI*RC?;_OpSR^u+ z>Id;!!{msiXl2K!~JMfbt{dP3z`BR92s>2+WXtH?1V0+MwaGyK4#(nG0PvdMB& zibWu}LrtkyYqrixo&g6&Gc z)Gcpamyndb^Kb{AHx42Mk~Rn3Q@*&pUQ1;2X`u#F7$ahecaLY41y|C^<3@z^+0>%{ z!3_6I;cpScxneH6(3b`YJ}^E5Vn~q-xsUQph=9kGLm%gaJBIWqHFz_M7p7-JqA@^W zSrO;Hh-;#JoJQ;S%~8-|IJH=*!StTn}2qfU=buMmEkzId{{^-AAi!TQo( zLpNlm+^ps*H2%!fPJ(V;(rC|FjjxSdbmO!f`hM^>59ueBg>7`qY^&HTINVIOyq;9! zmUai$7Z3)3s!B=Q_9Ytb7$|S)NIsMv4EHJ$<-wx(u5S6P3@u7g@%Dq6Kqk@$Yq!h4 z1oo#~yd;S#dObKVK*D45jydJE?oe6&c&}wA(yhYQHHyHPUzYjBv5U_bQ@l!il~x^@E_*D!56nUi)Clkv70qh0**?7rTT(z;DBiM8aaY)%#2A*ed8hjh4ktEz=2mJ!vUM zN>Vhn_8mWYq7T&L)jrIiG*60+gCh9IM6?B|LF^Wx2feckig1H6kIPz;9EvQZtSFYNjwWt^r$~= zW1-%7ea~9t?bayQj^+6A)Pr+Y-%T6xO&n6>pDbLL=78clB#9x#pQq)^nrwnY{5W)r z&UR{A;zp#kAeW4B!KMxiz0LH$EfvR?a>B34btDuCOr!tV=PuQ(rY?8-bZDnFL^@I2 zaIX)S#dg$ko4ee%tQfZsii+Wb;6S=rEXaO7{sjH=aeYyTkjTVsk^hhYXrBB3Ap!sX zOQ0fJum>q105(4Cor&h}@0^p-@YP(nUk=zQq!OG_26eXBF{5#{C=$dE?sT%Rdb8v7TaFEddK$QN2|G)Mh z9Q<>{DtU$rF7zK<-Necj`SXgriH9W@3ll3B6DteLe-OgY!@|ML(cHpC@H1%k8DwYu z46>2f+n73j-ub^XgStO)pZ4F(|2>s+J;XR09vT5D2{8pPKc@sQKPv+@EeE@ZAV04# zueb;sD;)!qurN0-Er$>@hnUc(@d`^x0Z1_OBV19z_+Q75K%+>MMPTg&XnYrg#sDI} zCt)kL+jJvr+o4F8bP<5yXb&4}KjX-ra+{ORaQJ;im^g6^BPtU53@${2(+w$I{{G5|u5O=BRznx&+SWm3-;yJUbe zh}knEXg_NZ@=WmCSDN#y0D|u>e+Un*@75A*vQR3QTMAsB%>bp@0+UREB*H!!p1lEc z#z)~aBR!ejB!JWI0%?l0EhB zXUS@K%$kGps;EXR8WuCmV=&BrqCHFgK|0GcZmxP&K7J4H@XBf=;`6~agK{bn_eoeUgTq@kPBpS-c`Wsy)(t^2s09$Qlg zNPy;LnO|zvfS`2i7Ze;nVbB%5Iy8O;{%%2-qylT9@*K|teu%xt&Y z&0lO#^$(H2!I|7n`Bp{lNp=#^0v$WAhC>*dv^eT%pz-7;7gaZO=!ZI!0fIl<{M8Le zU9n6X>|?rh(|B}q-W_5Ptv&mUAUQ zS3f%`EA^~~&xkr5r^A-#**4Uc(iZ%gV6@TKk$3fd#zlPW_mSZs))bO1oVaYz-+872 zAYLwq*(yvfx?cwV_nB@F?6w+01xfe5)%c%~m!L4eln6INs;EV;>dS_i57Kd=pFFFF zISVHK($%R^Un>iMlBynU-gc0>wbE5wClk@`Z~p4`FKZS`>u|T(TM#3Fhre>A&g=~p^Fva8d3EI1eo`;e6*WGz zQgjq6RooR6L#r99_}%uN+8CF-uyW>*SxCbFRrcXVfKpk*RK0)~>23h17S!|O!T8er zazdgPg?kL#Q^qqu)Zr)d+$3hdCy7UcP{J?8%W5Q}r(jL43Lm4e zit((GC-+oQ9uDqi>+>UvZ1EnTK|PNpN-sag^3QY#j0?^15f!t+@g(_hfPb1zKg3LX z72g?y3ohyy*SCfR5uo;g1bvZy#O?JCWY1{Ljjr+Y@3%%HyG}bC&rYx{#Cqo$jgLBF zx6&5u*^v6Et6)0>cBpEVq1H&2&Ig#UJr+Br^9>N(vv_Qc303}quZK19$s0YS( z_=&-YlyPYNjQP&OM66uo4977nG!C}F913!xzqW_LsB9PwIO#kW*k8MW1|-)E>6>Fc zu;l>#59OiY)lh`q%@jO`n(k*7U!8G%XQ;i>DxAsBgp$YRluxRvu|UyP&n)MKb-Ej| zUp`b29N}w{tE6Fqu57g>9N1-G`W0N0ssB3?M~pz+|Gdg|iak6*!kkj9z$LONc zVJfvmSZ_sXF}A~)A$4UP&pCA5g&P;rKx zpQiv2#TPQ7S?`FmN1Ya3=WJyk6#(eL~3rc+2Zta|sVAfTq$i-60u=xXpOd1Q`t z0rbP^Ar%Jsve{mQg(%}kEvpiT4m23K2Ntz0nwESa%blv;fE1m)FcMIbK)?}J9u0h< zhi?B+mOB-lAPtcB-n+{Lb%fav`0JZ>a&w<+$lI7SfJ!Qt0;G&|90;7=G`#*~7`5$ZjUm^7$~D zkl2KI=~=m@1vyy6L?r|TcqLdF*;p8vxHu?SXaNyHZfY7THbz=DN-iNrHVFZMiH({Q zsB@bq>dmy&-x+FSGPq?c@c+OC$Vqk}He6-(Q0pi#nB*QWoG!pW9ls!}ZLast8K(-Q zng+*Jp{6{%ojiETb@<{0P$R{X3+;x>7l_Bghe@uD#5JczA70&dPdYdHqo1S7>g4s> z!@GK2=zsuFUD0bIWHKbV_79@;YO^vi68f1bD_7^*B*PNM$zO58{ye|%(<*d1C@~dT z;kYh<;3Cu6Nf?H#jL0SQUDj~2bUbZbWJ(Ry+am5?EO>e0h0n{-3W0b1Mi?j%w3@G^ zDcDr=&=sGB>iT)>tD!vg>k6-Zz$(R>bZ{L3me3*PUHmLG<+VFNkBq>L> z$^hS-^v@Bp%W8bGOMxs9T1YtC2u%sGAt&%s-4M){LESRbM?~^(D&Y z$ie6q>NN;I#~e{yqk9TD(sz8zz7s|`q_9JKc#GS8+V96XhvD{|>yqapK;OJ<;2?2^ zz=wyxeD2JEdQ_H_5vBd(lqnzf^Vy#u$Flo5KDkgRdALk8<&y?~)VU(OOg+iFu?GA@ z{=WBX5RlB9fj(u<#LY?QbTdrnNzy7mr9%IQCHgyqq8@GjbUlQ;rhnec6oaWHujCxt zR#{L8MwbMWiNIsKMC8`-`kBcS8<1j!KD-dq9i5P&zVzf7?jqI#!#lhQmRtbWi~S;5z#egGuLws^7-yc14bD9<;y@Wrs|z#qrx z34g)pc`oJ967hJnQ#Xs&m`^{6%yz#nhh{%amp5 zh1@rw)pjFt(Uj5xb=E&Z^>^Ci9zl~Ar|5!ve_1}0y>jMn)@?Rrt^uI1-|O)m!4caj zd0EDkYf7aeCvl@bdRy1Ks_p$%i@_%rqhn5<4Bo^g`)-Tn`&+RHDcIsXha6jf zzU@3vmoanPW6%oGphF60Trd0nB{}q=2qkKYgV|m?JHh38J{k3O0Dc<6rylPXs3ZEG zT__XeBumY3B5|4Jk^a)==tuPrG{}83P%{wBCwMBwa)yH6EyR!TbQ{_|HULyz=ZbuI z`XTf)j>Bb5Z;b{VdNDSw2BtA<2DS%pN&e*!3OEIB?Lem*JE6LM%0T(_zYuF;zQL-9 zeCgl>PkIVHVN=GlV_`}!I1Y{R7keXHMYIYEUBeEwjborpt6&IpHnC?9UryV4g$V!T z0hyBC5@&PDI`dWVnoer_!!Y|K=BBAooIX-+e;&xX!$S`yThjX2OBW9+@;q;Ks$XQ( zs{NsSX<7X&~m;QI-{;XmtD;z`J;C3LoBNB0sL z)|rEvpIabs-ieU2p#YTph|n^piM(`FYKh}hAH(Hjgsi$6@@o=QwdjV-Z)pP|mQYJeb|roKVMg<+5BzmV~oJvr?5tBEX#wDkenVx4Nkd=#tQ5!sMOzD>L3= zLPYtO4`W8uH}L%LwfMg6LAOBgp-)^&$d8jD*Rjx~o+qq{0E2%=dh?Sj@bEv7Q}3Wo zo(roG`CiSz;0`zf2T@)1V{9z4JgJ5dZvs$rmVSskHZA&g zMkIPTRW=94Q}P?0a!CS(hE%$?F8j;rj03`hT>D(vr!R^|P}MBizc6CAQ#C%WI`^X5JSaFsvT7dIUDbiCax_#zT~d+`Zubb)oHoowR&%2iTH9H$Cx z6A_88=;YPL^PD*~MWXi9EqFpo*~8sv!fq1USv~-i{H7e8dv`^K{&La3R_n}+j_Lqa zDRPcgW~Zwv23D}ty@GZC6xS$y@nO>4r1RrR4`m3xa<7}-$`6)TQALF|O!)32Nmw3H zhl}TA*)yY4q<7kJN|eB0j06<4EgmlS$$wnf+F0lh^{y)LsS@5OX+Nk1`s()W!YuE- zLk-pRtwyDDrwH7tv65N`4%ye9Jq#LElmnk7-N<`;_hxENCc&!yHp;?bn#{Da;mfb` zK(=#Bm4t+&$2QWLw8(;Aec$X})lm>nST>orbej`=nlH;GSLPcR;vo7%BmCQg2Acln1Y4E``o zv)t_-c$?xg$|e^mEbT&768^i|I?` zbJ`|w*$it^ILDy`6?nC*e$WO>ad21l{)<7EYK0XCNj`h|?~LrWE#)kCZce}ZWSt(q zk3oYyqf3mXNl;CCMv@!9&&E99 z#{rEq5TxCs_Vc=%2Px~KTrtR$e*iJGtL&@mTk%kLv*k+bluUytJZ5>Nbi|_4>l%3% z=>Pz!)KmyYd>7y1Wv?j_fV}pIegxI#2BncKSqB65bedarPybi441m~WrAFY|lBz>x z4ey4dm=|D+e~MY1WTm@mz%%ItXx!@fHe+jljXnJws+1bTEcc>l@cBQvl%l3c zp2ynnJ+{Wagdip#Oz=^63}|q=iQ-&e_MDw}$Jd`sgy*==>7(J+WVP)rn$|4xqYLnl zHJfur_R)~FU!Ea(hs$r+1R9t-@xY`KacM4@Z_6Bw^~yKDtLK%^ePj#j{pcn787l9> zu=_#SncV!l!w0CN)?($_V#pvQFi7BXM92Qk^)*F!q>hgI$GKDcbr-FjN6o~3Q!+ob zm~IqM^Uw`bT-%ayO$pbs^Hn`0$Fj{62h$~aS1MdszB4IV?nP_{lNsk0;zt+`98k+S zbH(g|P(g{maeQSk9y1C@0K$;}Kske__j<_4J?^;KsMcjwShz|Win@2HgvD6Z`Q)wA zi-P2+a2OvI2z6EVI3}QKc{p*@@bhRjy8;Xc9sv`#U!?=W-)F1YFGxu(@XNAfDj3~4PTo4-QpDJkFd z0&dS(owV)T7J^I>OO%_X;=Oh0&LwhzJ z)W(#zEoACy5FE8$r?DYuF-puvyv4nE(&UwbQ1uN((-j01Bi||LX$LLLU2TbqMDtQ= zE)r`Q$T4g>|ARebd7+U1XXa&D@=$5Sj=t*u9`F%_BcJajtnv$_g&B;&*}uyFtye!< zq%c%)_6DfXUFXC;AW8ns7B8eh+pd#3p<}-79yi4VH>l7%dZPDo`;r&>tL`nhoj5+@ zr20((-P6TGf0LL5$Rj4FBF4c9bqyT&m&#~}T@blaLG!-p@}*wx$f4P@WJAjv2eawt z+M9nsAu2VkR3gSJ$5qgeDo?tVMiw9|Vn^8j#VH1{k9J)y;K^on8TGYA`w00UFoaNK zr2qUcmE!#a53&LKB;5|$Rs%kNo6c}>H~!zm2HRFDY7mfF><9b05PCB4YrdhX$+?$F z+`=uKze?P5>|3wHQ?9NUtgwk`v4j42V-nM^lHGGE2$CgLpneN24(9$KAm(7L%xkyo zTI!nb;YtNrdNp)+O(OhHW8NP)eD3|=U-FtfO>hd?^|&5PN3b4%1atWx6bLcYpM3vUbv;k6F6-6{nEVjagq62@|-k+ zbO-CKJrSVlb>?o{%we9=-aRAh4k|vvbz#jtZeu8W)HOa=lnz=gyS7$6%vyraPJ9>l2BN@8*WO;0I@Za1eH~{yp~7XYEllMej_zwjoC$e)S>lf^OaRia{b} z&9}j%+xJrq8cf4G{sHT$s8NwbB>qiMZZRHZ4-am0^=&kBt<-=`s#2Y*w(Ce{*Ozwn zTbWeR8VJa-4QFtmj$=V=U}Zlra>u}nD&^1ME)VYKfvc3PK6M&!_*6nfzSYP3VSU+M z9|Y@GxyIpjzZdQg0($%VJ@`)M`^!OWwZ~t7cnm7iZ8nXE%m7UcmaX1HDpk-61rB8 zHujeSXn;d#owud>8la&XKn~Y7$BKaLBS+0ojR21Nf-JZ2ZP^O`A71?SNam9ZP^|;j z!bLRa!l5bHVxuzBEDE9Cws_;Vwds+TVh6s%DK9-&094^FQw_JeRrN+E8OnLvSJ06( zA-JGEQ2)8=m=Q=KWt<;Y2O|S2$RK|EM0*NAOqYRsGmi=*Y=l_rXR@RnZ^1mP#J%c^zOR&`ix+Z-iyADoi3^4B2N(H-4nZ|zrwTSI!0vibn(GCU4e+(BSa}{y# zSmWN}cXnI(9+hb?tX{x%6YNW-x5y8r=`!zaKWMv{fEw#x)c#DhI8WOl9l>#MAAWX3 zb$rv&@2LZ-y9nsXLKufSgO>Xfp!#i^BaY8c&63TJ$F%V3cDKwEYt9QS7h61xLMfp17h@4By%M2+bZk&|zHV3J^&8f?kP!E5$yGr9NZemQ+1XSVw;E&PqnSHzLSAjX|H(p=naxcOPE zD>x+(5Er0gYY_x1Q*Q&#gA!GDjyPaDx)-X$8G%oxp!3mtXCfDpIl0Om!PJND;gewr zE(u$ktbN)nVuR{XFa4CZ4#Z{OEALgqYj%$(*&Q;(cu2>lFZ@2>)hP;s(CmSI=Mm$YAk1wo4{PWy#+f0Adr9g(-{~!JH2b8>$0YSy^&% zPr-wKhg0ds3Xp)2Mvg~3{H%nQ-yo=F;=TW3Xg<^v(x1+QZvy(fbMdcHkw8A>>&#Zu zfFXSAhpq;BsXY3&=4A}neh)apY$_21YAb|L1*+v`!{4}r)C|LaM`|E|*F{`F9x8qN zd`l*c74ze%e}yB9wWGn=XW_nhfYD^eE`%r%io~~ZAXMij!sc;O1fW@MI#3V9@tO{w ze`f>t{MMNrvhBmUZ%tp=T;fN4ZcHd%gS!@Rl0SxPiv#45|-q5qj?kEnIiGw<9BFAcxo3>;{K z9GR99ViD;df2qv2ak(ZG#Z>Md)ZLslcS(z5Ku}b(0A~qbB2L#SKc zA2m6A{D#;wh&obo8^X5&AwRz}oF@{h-*&odW*i-fz65ta=0dGh@3BlV=`M02pP!7_ zz#LiSo(cd-H>?lJA{8$^h9+XzqG9vqiu`(}Aw54jS)gb*(nvxt+PLiZXEW5owF2e#nGlZo;C z9RgwNO8ORHP5lO99t((mokpsdgHfdb`RQApmM8g4?p3Ww-z1!4RMclQ@%ataWQ&Xw zqpWb^@{R%$T$HQsk?GOSu!uONojIGO%P948+^7n&V+N z^ue@@6_0gt36dxHnLqJLnETf7?9bN!_=pu2b={}-)6(2v52W>~xdC2DrT4v$9xF3PTxJ=aoKt{qEt$6#!wE$MYMCxYHUT`Pa5BO&J< zW85&7! zynp>Ye;XUTGBdYd=A@$ZO}yYD!VQ2X!dp&Q?H~%C`}ykH*(T#@-BN#!+Q<56_zxAx ztq!IuWVGT%y)S3TFEv z8X`k;J|9G9}Gzsc1BUMJu3rM1O`^(G7kIGJaSFCy_isNJG3nQbe`E@958?C z>GiFPv8qmO%IaU(R;pSeD%}iV{0i#cE`Yk&+yotG{ud;~tJ{c$1qaMn(0ig4mbxE!IiHO~6 z=rv;5 zeMG>gkUy(WCG#=_w~$GRcu8J>b8i4@7C5RgsRnj9um@#(Y7d<)l9*>b+v{=dO`Ff# z5$%|8=;PEzdGIZhK|R;u28&;SijQgB-cE+7>C!hH^nXDe)!7P?9yT?}&)a%m-p|w8 zkBmaYY0 zp^(nsqHE7W#u!AzB~slZstFr&P>jo;ftafcmCm_iG1x7@GDX_-BO+Wk&dtLdel%H& zVmzlc+pS_I;W*1&=uXG5T+mS03TmKlOCbAmHy~Qr!C)fxFe{9b8dA)h((zfQpC*M( z3gL>3&?rxWR%%C8tK03G;Ws1Gk9OjqBIj(i$2`9tAnLXev3A19=WCb0EU*!?DjDtoT_Zy$zRDL5ln@?Z@rWYT!Fv`HwUny=}wq zw)2~T2Y4M9_RKN?oVm~Y7uxxosyTjZaO*I+A+|;in!YZ%TKS=@CsGc}+hWnIPC#9) zdwUJmj=lxgt>Ff4^L$~UH!SnndqL~8lsRd8QL#WvYy?y{f={N1}MnMap=3Qk1oWY%@jtSNt7)TZwW- z1C@hE42wJE2>^OR+;3>3I&#%jFXFy)2#mHDr<;H}*hVT1lV)PkwxGQXFfZ0g(8QlB zqQ~y6o~x$)>}evCVqdcg$Fiis66y!;l6!}qZ<`~3ayEszy9m-CCMjyzVqDKub_jM+ zSG)f7ZE;1m61lFUd)-M ze?*s%%^88^`BX(}yi`udE9HI|XLDDYhJD6BFfqd-GE&gqytH2de5PkKmYbM>u~I8$ zk-~7RVf%Im9;Lj_e%xb$0~V}g)H(ILhvIl@=1$Zj&|pM1{aR7J(O0zReYy@%s4tJA z34A+B^e^*6=JlyVwsOFRFS9D7dkP{?_&}rt zk5s$Tz!Z7dBKosfIWOpOppNQfX1i@Exf1QoXZ8bo4_g#=N5BI@bb{`|_=tE^pxw>f z>2n{yz(cLLMBq-&*??vna4_Beo&hHG@iP+3kdf%G1~97X>*&ELa&}E1`we@opSVEj za3tk(=dXehZ8(JPjfc1bVf{%S=+Ph690}zz;1#US)Hp7KLrIm)B5$XYX_4gW__yC4 zmMAu;Z$!V;@_l(eWh_byA9W8%f&m?U6Xu7>U#Uc~_`6fOmE$|f*lMUlxNW(_)opVE zC8(!3m6104vslFa6@nwOQp{|kB5*E%{f{6Vx&-uJ>bsB64v5U&hF@<}2imT*S^%oU zvjhb8R=0xvtSuy_*dD$5esoT*zoK&Bs{Q-LvJTqPj_&x2n!OIe{az5E9;*sv(|;4R zi`@L~^3^2Cr0~)C4eGS0meu4g|A<$w4t%GF{Wp?jJg%_<*FLlweiF{W-X6-J%)M8= zLJ248BwQD>a!LgxPAE5#?8Jt8+2^S?fQ3oTv*);x@|HAyyHFL*;@>wTVMM14YjRQ` z)X_3Rqs#fys^FHucY8g?xc=;L{|T#bJ1eqgu9@rfKvA<=H0u?IYqn)x zLM+UPd{&z%;T=F69Y@+?0(;F0!@`IH)YolTWFymgJ#++ti2x<(P`**WalSvVRT1*s zsEv^BuQR@UC7ypT6#c0o|LaQwBEnDVqa;@YH*8BzBR?Pq*GKKDAS~8&{D%*A@`(Jk zU%{WBarQKiE@Zj8Z98f`l<3iM|3sDJDwelw= z$Ah-YWux7R)44D?Ep(EUiFyR|+Qt8@+H_v!NTZ6lq6?j(FRS3r-WMaX@}3O=KqeZ~ zl$7oU@c=^RUY&_hI-a`izl#(C4Dy`@vZNHa$Vy8vVb~bb$Lyw3!Ab9uzJ4zKk{rLZ zl$qr?=@|Gy-O)y5x`5C2Kt%FW=C-lf1ex|G%h_?JO6mz7HRaxZXl=X5 z!<&7ZxM78TiiQm?<`%BO8&=efl_Kj*AfBM~0d1DwxKrVU`6=$~TXer5d;Hg{pH&q> ziG)eCl2B_GBrNk}sP>l_rttc;EcWK<&%U=#UiS+mKwRVgg>q}@`?Bc}TsCW4GmH<@ zcNF@?@t+G;Wpd2{TOZ*!PvlQz- zUnn*Jw{ks3uw~s)ntdKGs9@_KvtO?P1H(1+hK+OQ2r< zUK~xO-gUTBzoc|wRIGdrkhEsl6)OwoyE%#H(z){9$T*A+%fek9JHOGZ%j6hdIUMv@ zV?4qUw$gvfq#2V)SSSOHR%fzeHGH!blO6K+W38CS`Z5iyyO5!M)?sYBxaT*xqYI_% zlY+GA8`4VT9X2=?U7wAQJs9dmbutyjV`5)SI!20*1bWR@iRfRX7_*qx=frlr>Ch)? zt&1z(5ng@8=~dRpt3joMnk&x7NSMPAb(o{}?d!$kU zKli_AyeCPo9$LvEs5VzD05XnClsSFpd8f`r@t!$tj`J`p(oojHT-%j}ZzQ8G_cM}W zAq;>78Me!9EdMaP6uWXm&P%0PveHDYud)C^qbR7^#~?fpAn{+jor+>FvXra1*r)^? zr)MT8&$$IbN__S+AW2rtFnkw|%}&mIdUX+eG7p`C3To^eTr*_p{rpFu*#KVzp%BBb zDTPW8!fJ)Uqi8zldP&9!Koml4AZ6RtbL>>(>yw=tSR(&7y^lUNOQD+0E)V|VA?j2zw3j_ds@?9fq(JijlJKl#w z*6^nc2p_R!Wb|^c6(lXD-1gt_CxUg!DXt3KiXy+HU;+T2Diy`dPW%;4Si*55_CG-P zYZw0QQqIM@X;TYd2>>5Sh2HK+iRl<0;pOS^35cXlB$Fo+U7T*rCP7WIrPBrAzlY)^ w?b(9b1B$70cn7&Q0XVzsNz+1w({liJ!h3u|YvBLqT`0GrK8OG3{wMnX0H*J3y8r+H diff --git a/components/mybot_platform/assets/locales/zh-CN/0.ogg b/components/mybot_platform/assets/locales/zh-CN/0.ogg index e4f4a2bd32430fd5f139388c5f95fc9d7a8cea6b..60cae6eedb822b7d475376a64418506cfb982b16 100644 GIT binary patch literal 2771 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 O80UOOVxf}%@%=Yha=|SC diff --git a/components/mybot_platform/assets/locales/zh-CN/1.ogg b/components/mybot_platform/assets/locales/zh-CN/1.ogg index 7f067dd8f964b5574a6050bfc5472487acc0d254..52d52b082b22bedd2616325484a029339426c596 100644 GIT binary patch literal 2771 zcma)6c{r47AD&?vgKRU_vJ8hIi9|G+FoAZ@(J_` z^7aWnW9<>{1rPA^4B|%q%mk{<;cowp{Vu3(w-Sz`{yDH{Ex|d*(kgJAgM#vZ68*y! zi&g`(Y2vpdgIe_uG{g*BUFux=hg1L-4F(AM^aUXN z8;5ANKDlD3)|*xzC7cTh9G4);2A}wI`mgL*^no}qUcP;~e?gAnR9@{q3^#~ACaKP5 zY#|C=sP8i>9a?6sga&cuv#=k@F#+@PV%`1Kl%He_g(sBH*1i=#lyFAa4i#A!e-)bS zHhD>Zu}9LD7i3)a-M+Q{pa|hK&<@T-+}^>Aioj%@m+!8xzC>ct0LmGIuWp8GL}b?2 z0Sr2-63z?Kq|FYnEijYDPTfoErQ0^;q3-4QHCtA>+o^NWz;OUX5gBXUi$cfjd|*=|h9=r9!v8 zwX143@c5_4M87QG%!NAxFvUuTS*SCJK9WTtpnbLGQ0!{ssXw+tsMUc}wTXPfoV>91 zU|5(xIlHo@^Q89P!Pv1de1rb40YwAlm{PAUh2JUzk)ug>kuyW|M^6lP-zlPhJ7 zXu+3b$mByn-aZ#)WvY2!Yg;rT#aq?)sWv0Vwt%%1EU=`N=&RUR$8R2$rd4(BIH6Ge zPvMSCfr(5`#m04%<5=AjDmWI_FFn)DK3Qa~ux1;TDPst7&OPxKLpPjca(EY;pmz5o zDJU%c`U+!+H6OzH_L}6kzDo?-T8!TE`}I+QTw2`Q$R&a4PwuwKjsfWyy19%pSs>dXLilF?WARXxYqag)01rH>a@x7D ziC`JRxwBbz+il89{u}CgA^v4{NR9Qp*Lpl)PxdmVXd@~u5(gjwkzrIs+sy> z0_f7W_U5d`+&3O#f1~k;BB@QrV%4XCJTIDkcz5&6bdmKYkZHDZFgVWr=e$WPDA`LU zRi!EwFu+h0%*ykov_ga|SysaH&B6K#{P6b8o8a=%<%v3r<~;t;C5ZAp$q~#ai*ByJ z^vKpcDp<8gW3?)m24jv;ckoF9nagFjHP+@ZJ5piyab5c?j^ts8Ss@u8^A>g4=s`^DhbF9QlC z{UtR5JwQ4<>X5+Q#-as<%H@%@ zEye7w#tJH#2!z0jf~0}T13Jxwx!t8FKRb~ZPx+UkYRQy}sCi*Y#?MpzuNxK(0<#A# z2!iU>OyMLp|E5%baL++8E%6*IKN_h4g_3^F!}kmdfsF^V$z z%O|n8CXs~Iv$=`A#$25t(8pvSq?6WO^eO1@L%C(o6o`FwzihT;UlJ9yFz`-kCskk| zMzMvF)OAPGv!2hpu-d&~>Nf+fRv^eDC612@PreA$2t2E9!cLwu4eOwYic#D<_zJeQ z&RDJEQ#Lf3)hmOnKkKOy(pj9Sw0A$}MMEGQXXo}nU6Jrd-}!I3ig6l2%mG!z`@^}H z+C>qwKbpMQzPXD$JxRP*WcO$qKjJ3#dHcXXvMT&A7ru}-ME!K3aYB=_ou@0*cNrSP z)lKT!P~_gSV&@)I-woF&bw}BCY$IQv*Cg`(>X>Ggy(AXM_nMqs0P0RXq{SD}R8D_6 zc+R=v0=f7|We}|1M*Kl%WI(j&bGf~*(OzS?gsNnn2&JfaC@gB=UsGJI_||UG4BJmJ zro9qeaPM`_#=GNfj*GPZktN9(t{A_@Tr?o!efEy{U$svMe{UqD1dF`ExlPoY?fZLY z*Pr&n6}DZ+s}eJfr3%>`r<)5zl5CNFdb0|HMOB3!P-alY*XSaqGAo-QzYH%fX4P1O%~@6MmAVX$$jNPw7x#^!({= z1z0vhr{tI2i#qKAB6H^jNW^@k7p1~P-9YwRu?=Yseq+`<_YFOSm=-1L`3?fkgWr$7 z%S4zNWOyXDOJtfYlCIuh-EZ~eejCc*5kzBn@9`u4IyfV@rY9Z0=ras!|8DF5F8>Bn CS(0`D literal 2078 zcmYk6c{~*8AIHtCVO%lpOsK{&Si>-GX7r0ZQ7k!A$Ti57qs$B$WR}F_DiT6gj-oZD z9p|`>tQ={R7^zfPS|a7zv9I6teZ8L7_xXN4@9*dJ{Pj2xiD&qreE%+eM9{$gwM1QF z7b4{l85<1(F8D(r#t|a_Yk6Kto*&))0f$ z)!j!Fc_$#;FTy_{%7SP5@l1Uz&(u2{8tfav+x#b)e}~EAc(tFr|0=!mULPz<6N6UM zHn9aZmgYuUnp*1GN?N+QrpI+OF^0N&nz|@WX<3A%qy$1rTu=}W7Ze11PhU?*`=Xl5 zgIi=Ihl#STem3VP-cN^7>rlQE*2_#Cc>rn2S}k?c#p`Nv1zlZMgBF%}^JvUCck zv^LCXYOQB2MWQZLW3ua$#4QiMm2|CEPd?P}N0KyQnG5wA()b1yptL!>t%+$7$ z`td7wl-2=3_UxZrIw8lqSz;wLB<$#`Xf!Ai(^-y+msD0lymEU*YknM}sKh!5RRtV$TigVNxEJD_n_wZCu z*75sKwMi(&FN)f-w{?WLvQryxI-bJrs5(4vb00A4$wD2{aVp>9Hk^JnAE%9wUNI)} zi|?(o@@PoCf_?1`L2$>_WK*27N$q)jtjs9-Z*I z^v!KsXLScOp-f7@r+kmH=uD|4bSx?Kw=&$NBoBlYTkU+w>4u7mzZLe~d|5}i@&GjP zBNsM$KEA#iv>==|H72ob>_KZfP^&Yg{1IxK`+K41;;*Rpk$MYg(1^a}M|@tgL4xi0 z$(o1ZUC%l{Fg6)W&mWV)OtzK;jLbP{NzEB#th9pq(cqb%wz)H~&W=a#>5pv}J#yWZ zXX~w6iu&zldnce6=A95A3Lc8E8^|NQNg=4CkGsw|c@^0MW*Ja9`|uME-n~f3HrG%G z_Pd-P><7GOL0$Bt1pL?ZfCpFY%(23Rt@)m2t9gd&@^(^RMFXg5f$qhv|MlT3O3uBg z!tIDd&Bf524W$I(Aa$-I9p1()>~=VjIU;0?2Gt>XNVQ@7ordyB_dmJL0S2lHSw`T8 zoU|D}hg?_AHs7TN0qHAiH^LL-L|t?agDQ+X?gR8UfpM`clHEd1wUxex_{M?ClDVLj zWQ&UwB7dM)ERFK%&8!?E(o=~B?u}eGZI~2nV`QDDlV(dY7zpM0p=ZPpvkA2bk_1x! zRGNDYSFFy$_Pk8FQtq%_JAD|vi$4^_4~jmfr`z36wPg1Bmwym7Hcl0jYnSRGHrg7TJhQz4GP-G?PDTH@JGbt25v})b-hQB;eTMieOd|>9_ILzM6 zMA%#4@rB)S{oeP&HJYzhJs}(y;cHY>m`E#6l=Mi&vH>#H{;BDu0;g2==3{14069CO zf_6D@%<^*2Mzpx=Em8wJ;>DcTpypwq(3a8Se3Wq$88fg=WkCZCqDF)nW@EdYp=6CC zo1a!UN1uK>=q|F8m4JLm-T%O*1!iWBEmjaLJz}scV$Qg_v2&U^SoG;A*2YNQK)O)Y zjth&}_(n4=zCauSCD|_RZ;cPCwNid_&bw)OqIfQ}dyy*Rd4|&m>u=0n?0Rwx;V)l! z@-9}tx>u0>%he!&40}#iEWX!6&QP(R+)WCzddt0)(T*eN$M?-a>-zRQxbB0qq^^$*jLSx+ZgeMB1D`<2`nR=C#aJnqwY8xndV2<%2mztkhJO8uSGvfmG(RKmIRq;_g|UFq`b$O!-s k7N<8psp@_OhkdK51A?3=)v4?MYoq~=8=E)&r~jY(H?jM$2><{9 diff --git a/components/mybot_platform/assets/locales/zh-CN/2.ogg b/components/mybot_platform/assets/locales/zh-CN/2.ogg index 7da007ca6379f0c14442be8b4f7eeff66af2cdbd..979939d881034f5de5c13e4188bc9fc3856e0be5 100644 GIT binary patch literal 2222 zcma)62T&7e7ACX=umDRCjuMn2Rcs*AgAoFuwl+-3#&C3E?18>|CBz4P z&A<|M{fb*aH^=|CpbbBe)|8-6#+fY zKbM!S|El0OO4^%JhV|kcu;Xw03UCRbmyFdlbPqH$#k+0eK1ECPi@K_p4<^l`{nW(; zKDyb1y@VORjZP<36;?>Kz5OdP0zlw*KCAnCPMIeRogV~dWFsDk@rKn_k5FY3(&vWa zBYmubMqes4NteSOR}zTo*GbE%+O@;18ZZd~z;ZEPtTi)X_Q}pocl%clA+Km_$Q4H| zpPZnUYwgOX$+nB>Y{)S^j%VbEd`Gz8>6_cn()c_uU@RPWL=a&RNwM-zlDTIYtXlQp zYv%s!Bv)+zu;`en)J6|K38%F3ZVt3{I&)FkJV=A8plB#f4Zn4m1VKOnCGR(6Qh=Tr z@>nO5(q#Jb>{`K&FVea8;@PV^Ls|217#$lvI|dk$$jcp;XwKuQHluzomsiDdA)s8v zuXvh!`Pb=8?&oM-XSY#^nW&%Vex2=#SX?_v|E<2|dz<#08=Ad$-T~eW%iLB=jTxiM z=`7O**|iA;(TV%U(ZcKPJ)M?3<*3}*PInE zn;8VhlTE!t@7IZRSzFrrnG$$k?eYz73bbX_cfda&|O2}CzIeP+a~DDn|6S;-?`rfUTQ_3NdxgxR>2nPBJL$y_zMUxvLg>_clN9A1@hin;Eb zko9>6?9LkSFC2--<#k7Rx%T34oShZL>u57hg<7!mOIrkd2@9S&tZdzO}PhSn451)#%3T;wI6eLcBl_G%Br4e>k%MZ%K z!VgZfay~itJ{aZ0C|>)ZF**MN!h?mEc{3Jot>Ah*CPMYJJ`e4mrCxPfQTG+Lt{yje zqrK29L{7ceLW^|071^4()Oqg9Kcy&MMjAI%Te>)PF2PMnyb2gFGaOQVc-%t?qU5JC z?@7kHICvPifgSNl=`eMbL9pHKHQN?};DJ2`Mdxc-`*-P98Uo6Vn|D~`;a${ifGq6K z-K6Ik24G2E?mmj7iav!C$r1ZJ3Xr3EZf9HQQ%F=&K~Nj4a zx-wc1Gy>yhc)Lc8vv$@s>mxk1_HBoO$wEMkw)0;f&A)BfxWL}+fF513kVo|X+=*%G zL&u&e`8eW~^qJaWe_rzxiw^^9*tu`0HbLXunUCv)n=$52E0V?}HZB18oC?cXjP8tj zwpCRbpU~NNHyu!%TZ}Ff^)?}n3ys11q&5k6ONimDRei_Z!qL&EA(Qx`W`IHy0tx~Z z`iaE4HW{$qH&qvq^LI8=#GM+mK&AU(Ic_I z@rUz&QLc2*>X(j-u+A`!^H?T_%u2}#9^j2>aFbNIl`Rsu9G`q<+hG}(f(KLl2BEC< zH1b}G-x;8W7Xm5>stzHPJpo9@ZpSC63NHjA)45h9UZlEa!}f{+v5$zB@>WloViWbW za1yj;EBz;9PLKG2y{scsRkd5n9+JfQ=8JCQv3f4gc4;6_Bkyl7>6x>ZfUC3nDRaC)-^fQbuYV1$`)f zD-StVLn*uvgtKw(m97#F73`vb^dlQ(>F2QsC_kt=Y{pLQlXz3$wDyo}s%ZM^;|SCg zeu?prm>)vJp>(=;d8cb$h6ftuTwaM;ntM1~_-D>=VDj*VG>ui?rtHIq_KL-i?%{{e zn^b&?LhjY1R%Xie$UVMY{Y(F;h<25ZAq+XdORPOK!+JK~VpT&20hQsOL@>`6*_oYZ cNDg%Gq!ZLcEt_hNeG4ocJ#PFb!2g*402BSNGXMYp literal 1726 zcmYk02T&8(7KRBJdJk1v5HS=9gh=oSL|jO?x)cEgDN+(bQJS<>dU*mtA;=<4U_oIq z;1W7yzzwJv5kyun_y~reEIst1vOYI)cHX=*bLZUi|KIuNxP*kb3keJTQ-cvzmjqwt zy#5Oa%q2QL7LWpiAdr)gbnJJ;MS%aW1UQ60m9Sy15Uc>d5Ev3G!&e*w6M`{jNE8N% zGBXn(TKq?fBt`|1Vr=*(k#C|=eA65r9!7}bZ+=fcG(qKa{1PM!uKKeCnt;?bH8n*T z8d#c`85kQKH^HE+v2gRF$B!FXm}x61sL4tzC@RP+!sI2z#l^(L0pu{88y%O-%Po+_ z7u|*#a?YG{E#4GMG2q%`W*ia8K>1GSwZ2y|eH5PZfzP=H5sHgZYjhqq)St;V>Bg^| zog(;rL7gDSzrLHZE(Ql`U}BQkhYDZVNflWxloW!Ofw%@46Z$6hxi+ektRM@0mltSZPl~Hl~qco&y z+|Rz5R`;vepno*zl5{MDHKQ2Cy0n5#IJ>()Gi5r}F05z4a%9rNqvl}Z&U1AWZxX(| z+U?uim@Vi$7}iaW_HHZBNFRvP+2_C#mze zlZCS_Z2Yb{kvt^94rcDWJ++V=i?{S-B-S+eUuEFCNcZ^YLiBb|YoFC$o!9N`{;LiM z_4gAN`qZ=6ub0rReqy~14${M3XbOrl2AxV$zN0p3%GPVOF$!|?`Dfzhzg1VRZ!a}r zMpk~20+kUKTCpJ={i|PtLFXa)KL|8$sL`XOqCNb4MU0C&GztIEXp0Cqr+Mz5b=O_b z?IWvsl69&Zpq)jpxUoN%T82C2wJ?3`kstY4GyS4Y)7ew#5>Lw%Sx23mE_lr$AH7$j z_qRUKCY?!5q&3i9dFFgEnWrGPL$!Sm>GteydA7gynOGc}htCMRlBE61)8r_x#SYGc zj(^FgRs9$Zni1DLBI0U)OQaN$Uxmvodr+N7$Kd^gO7)mw+@x$aQPR+jN?gvN#2)*W zb8C@~+^Tu9mZ6pJw|pKvJW!Jojbq(XNU;4meCy?GOL4CAR--0;K+dNkUx#GPVg#fx z6@wuK%X8$y^EC#zTCa^U#F>XTT?03JK^9Kv2>U0U_@0T{m7(36#xc%foYUtMLtNj9 z-QJB6m?k9zBA7l!Y}U(XLsAz0Xt= zR_o=dS1cz3#qdxU#>=l0Z`&`=nf96(T2rTwW(uW?HfE_lzLl=z?+iOKrAVh2pg%a3 zKR?kh`Fg7D1yCLzjnsXylXCH>9}a4-Z;wj+PqK`wMnfI+_1(X)%C+$gDcj}_pk6yL z0qXhK5I`0urq@+qsy{6EKe$)Qif_z#u=mNY5}o$!c40b@jO;~d+J2#RW1~im&@(s5 z=D9$U#IYC2dTMN4dQ_U=E5(OMRYPf!8o+MP?%(&v8M7MHadeg`DTrdjhBg|#~& z7Pa9(BDYxRbxDt#lr5LHD=kRNiBTgNVb)sr;1rVybQYFq^~Q2^1)4m}eLpdG69` za@&U=qTzyEH+hOj-H!9(jMYp(5Wl+qu4tg4C=`ed-FPwN+5dk%MxUL>AOC6J-M;|_ C%nSnn diff --git a/components/mybot_platform/assets/locales/zh-CN/3.ogg b/components/mybot_platform/assets/locales/zh-CN/3.ogg index 75bb66720d6dde008f27a3078f6f4f34be00d843..9b91228dddfeae5aea1a34458951a4bc06068aa8 100644 GIT binary patch literal 2222 zcmai!XH*l&8io^45{Q7*wGgQaQq=$gOOLLB&@N3ddI3X#0D+)%K|(0fn_{l?1f;uk z2n3KKxPU^Wgd(U!njlhwktS@|bMKFPf82e~nKNf*zVp4`%sexe?(Q}KF2MiDM3G$p z6tTny+(%$sT!BC>AVL4H5X+LAkvwG1P9q(5Tsf*~klGM( zp_QBPpFDrlBaOI0mt%ls*J~ULa|XlV=B`5kbibBQMHKW@4y*(%*|}Ka5+00aFoX!1 z09|Z(jZW6Rs$DNnPF^IC02$yD^A;?CRe;~Xg<`-E%vZ_FvU`e2cD664em6)p%C?K@ z6Q)?V63eZFMXQ`##4n@R&2WtgZ!1DwmT73*1_lN1*;8QGIfL*#dqVwxHM)}8D=X^ej!dkA1yi3CQc zvcJ22?-Ntz)ji~r5nqV*PxiE~>7T(*FITy?Nb4Jv&IA@RW>C>ypRc4)kw#pRsvBc` z%zD%F;89q(Zw;NX5JTgg4Q#h~6Xw`{qdU1q>56bb-~l^>f|61GlpUxfuQpY;F~>P8 zBd!Gb^uCN&w%xq+x0)Y3ZJh2(HHyYCm53wOMcxctol^ACsSL z@#2B!IK&{xFXskDa9xInxrrceuZ>z2 zfnpr?1y)yJANt!pPI7$9ssJ?`VqX;UobLT=zVc2^Q#S&1QVAbQCn$wVa- za_2lI%Gxk=hW>N_a^NgkoSeI((KQBT7n~<>xT?_8FPt-GF*jl>6iIpVbCUr22>%NhTnX;PuQfrKi69%ds2nN6`~@hV!!U2fgHps_f$kIA71e) zJRo8L=W(V~EP{|HyIuNTa^o4^jE~S%uP(GNmZDyKDRoAt$yct(_w&u&@W z-TW1>oaTLdC{$5(r*aHszF}*(8tFP8=Wnh)-s~apGF^stvWnm6Q}0YEwY9lm7x#Fg zo3md)McBU*(A(~LLXVOR zwRxMA9*3nRH&wgofyJ(;`A1+?&Jv9NKqFU3s9any)R=SDz zeYK8@?H4RCRhlv=n#sF}=lGV4OE;UV?C2c;76lNnG(~3&}-%k`9II5&JUtlRbq&k7hD$;(ut@_XzM`mQO%Sv zI#KW{>yFx?%Ww1F%#ZhKzgQ4TA>}BKwxP#mtII~8T5GZk>sxr$WQktyUSE?;(M?ab zA$4pajgAp%0B;8$u*Hl6+#iA0K284`)KlocfpDMrfLyoD zp7rxE1D_AaC2Qhj61A)7e&0xm zkSA>o24Pb_KFEx{P?RkrW%$*HttY=(nqkm<89%EL;GCe2XS5!l;wBwJkn`SEMBFeW z?FTGJ71ZmEzQv%qn!xWxLail|^JXucUJUo~p%AxDq^fijIvH~A2-J?kj{0uQrg|4b zLf#4rVnLg6lYT|wY)h28!!K?MBd@0kOZIO(VoFONBliPN#16UkA{TDSaPAiX`oqsJ zc%3SD!fL$K_Ey)~W?KMCq!u?U0(9JkaK#TZQaDhr5?!#0aan9 ze{g)kqGkZEPL$=-!nc}^SGc=9pJakG)S4GllZgkGSqPe*oDxsS^77l|-;%cr9@)I^ zQxe@fERFvJK!DoeDi`O#z|*eL#}wc!<~dgOn5Ua*X3I@-bRTK0wQ_YGn{x70dvu%% zhz~h|lt)=FSfuc{J`gG3@C>Spri=);`9Ey9@m!%ZAmk$MkodvV%rT@MrnxRnU6YD& zr})PkYc~x8-T@CV6r>S{(FyH$JA&u` F=udnb=2rj! literal 2153 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 AzW@LL literal 2357 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 literal 2123 zcmYk6c{J4h7sn0CQe$6A6dEyMGL{)+eTeTUW+F<+I$6Vn!YE62l}I&>h{iTk*0Jw~ zu?|I3V^>KYq=b^v_{}`$`TfrCp7S}Md++;o@8{lsK4@QG2OeIYe{Dx9hL7vMe`1kJ_&XIvb_iDqAlkAqCO_&HDCFfb=`#`D@`gcb~rfWfu2 zxQGJhV1vCwe6UxIIifd5)PZwEZN(seuMke?Tb>IMXc;An#561`p)gx_U1xWK5}GSp;{Y|g)?gxGv0}K@YbNBOpLH2H zM*7X_iN{)V-~*8}R}1?IQx;G6RVydpHV$>M1D2fZod9UW{Zx9nO2*zFupR|XvzkWo z!5}o5Kk-v4blz>Xgst^eZ7R0gE8e5R8ykN5job8L$Ad-s+%l-5-A6a^GsSks$BoX8 zr6Bl=(BU=cm_Krr1kWD8tfhJni+NrlKEiFBuK9d64uD4Ll=HNs*PMBEvaz#rj*wR! znL9Ln6`yDY^=iuts;jO<74r#q@>VpBc!*rUeIiBSWmREE)4V+m6IhglA2mjw1e5$* zF1@0V1|2I=ED`CvC|IF)Ge%$Jo?EIY_!ST@PP$&x1l9#h3h0G*VGlf#i5`k>Kgw2+ z(FW<-z1`oTFtu4m?hL{%?*&R2YPP@YD6&z}r`~)ODHs=}=nkhg25a&#N3Cxl()VYb zW;PRk+h-q`HF*Tx7L`F4((uc$J^y+z* z{rH!nZXokED@IiXO_|)G;x_o*qgyIeaXlIFef`x=h!mPLDfaf#=xBj-RP&h8dUjIV z&JX5*t8(&&a$RZgG-qo|)TR`3Cy&u>g~HRz18O9+>b0ZNEa;hzBZN6v!EViAYD|Q` z&|ltrF7v#fZn0o3n*l}57W$y<#C_ZRRsR02J^?gU@!_ne$rz8PEgjE_DG70(C_PN^ z+4hiAF^4D(?GfjjfoJ}!1|b#J>EN12rb$X=9-P-{PYzDzB}kh8uMX51MxfO~>J3 z6KHeqp-8jM!6)=?JRFK+p7=Zd=7(pk0AFk9!k^EpE-f%NfxOiF_F;L#+C0FNGY<-{ z>`exAebc{@VRD-3l;Ccz9DCnVUC-s%m@u zS;B2$yXo`klPNXv;9w|@fTOQ60U11=pN{Rrq(YbaJaY_C-b-_hEkiK-I);tZvB$~gT z8v(CQrc6OHq)i#SVg^RkDdV-vqCwA<5;XKX0rfE{)LQ~sR^LYlv*DbtdtMprV44U} z@ZPkOI_?OE`}@;l4hn!ggCEQ^j`og5VD@sLZ18 z;8a6Nne1SQ^ODGmst( zDbgBNY;35uHZ7+Y5V}t`3fiwqRu1e}8KKWmIf+f{iw_FhQ19u+m~lWba5_dVk2E!D g^(hVz7`Uo3mCm`M`UlQ;{@?v?`oHR^ffz#mKg=53Q2+n{ diff --git a/components/mybot_platform/assets/locales/zh-CN/6.ogg b/components/mybot_platform/assets/locales/zh-CN/6.ogg index b6f8aaf1acd155df796fe9ad1dfcd2baa3c5b92a..74c9f23458e58ae9d48fce9ba6ea0ed67d021f5b 100644 GIT binary patch literal 2161 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 diff --git a/components/mybot_platform/assets/locales/zh-CN/7.ogg b/components/mybot_platform/assets/locales/zh-CN/7.ogg index 49b79c507723dfaa4ee0855b63be737939fffc2f..3cb664ef042b6346d4edd5c37472722855339270 100644 GIT binary patch literal 2222 zcmah}cTm&W7UmaPC{h#y(hOa?K`A0q1p-+_iWsF6x(T8|Ss;{11jM(9)Ci#nLg>AS zAVd@hQlv&g2a#gINC#PXVdw21Z)e`TZ|2UOd(U^uy{B0F_}H<4SpESErLA1xgmvIO zEZoc8699C8DE+@E)<^XJ0>C_3q_)}vYDaW?cONVV^Tyj76X@l0BoksTuK?6-Pp`X| zesjN%f};IAZZnyGSz^fBAED7o+2ie>o)A)TR zMOg6l`7e}+jh^K8DXi_^cK@*>fManjTINb}^$qor+rJFw^etO2x*1XiJ1l>Z3@l15 z4j2$pu<;79Zd;a;+7~>1{86C7``#2`#o%6e6sjlRin|kt^bkMBa_W1`;8HcOX4vS* zEZiHX&nqJ+r_CE;R}&XGpxk~L;g8SdY3c^FH^o2f-s@$+6M}}vu;H47&Ue!~WxWA6 z&z=RQmFYg-BX=RA1T`?_1WhoMvbnT3v0Ky`nQG=^kRI8#IW?Wfnv#n!VvRn}GBn^r zpQiK02&w$s4OD0X2lD}p!8=brN?8nQKM(%2h_q%@3{jKlQjFYURT72ZS;P;$d%YuoX*V%(IQ4k)`?R;{zAs zOZE5PT2-y&%eBg|AdEmM{1aDXY62METtVAfoFhWvS!NRk4N|QlmjoFzN?n8bsjbJd zi`EEWNDG$zc1`B!^ykPQ`ARHIT^7QVaj0m(&aSSLW#?MX8ah*JG0eq zYUE-)%U98!yCS}1{|WmB#f&$N@y?(%>FpqVVV;080;r^{Y<#Y{pDvM!b2=v_*YQ=+ zfLA;eLb)KiNI{P0V?-qICe+*XmoPG9Rb-t3R|;17lCaP_zc zxTe{6C9G52mz|E${^QwF4*;11sVT~R*s~5EeaoUpwgg)8p zH!5S8IU?_VYR*{Jh);_PGYD!Kz~K_cY?=}mMF%BIOyPE&?`o;Pj{ttMXg+}raQHb7 zqx0!yvYwK>J4gRqin=^>FtgQK8@w=E*KYk37spT!t$6j^F5z8hLs{WC8~JT)zgjfu z_eSp%w`y@tgf@32&qQ!x6ug{^yE?`H3R^MW>`mwMfBks0R`&sY5{utSzj|>byODd) zh?G3FQ4lQWBmB9fhmKZY8#SNEG))4}M!5kH_Anw^GW~O9NV3a5f3!?V9fes}6)guU3K_EH?-#VN)MmNp zd+lfit9xbOjsW!}g;8E?xCPxUE8`3ZGJVr~G~^7?U{w|Fv$4bMg^EInL0gjeW;VaW zSv@0I<^z?MGk(cv;T(J(_xUH0VcyQLMU^jH%|6aVh3TRlsi%yxraO|ot8XJ4Texr_# zo9$c@7?CelGeiJoJ+W%!mmgj)+x=mn&zRTNc-Z+kob$$>x~!dSSI}J552RtwNHgo& z(~>%^1g<6|UeaqE%}%)Ll86AR;P9c`CS<&)1exzocV8dccfIvKYKhCrHD$a_0&Lac zK-7etpI-`&*Nv%VT@)Ww5iBPP&geQYb5!sDR#w~KQ+C|t$3&HHw}f8uD*`{}&3$Gr z4C&K+MNYK{fjG?SlCu4~u6y@gpEx}w%+FjXc>n>ht;cED zz}!N=9quAgU$!l<152ydhj*~2`D+FE`#|?mExoE1!X{t8wG~qbNCTFKfCNWqZ}mEO z9RUc8Mqga^f^cED8jQC`T_z#(dmwu$A^((KTP}BoT-pIq^?3o6wAOhoPfkxxNEEGv z%=tAH4I0v6&S!AGD5lRK`P`g1+zyn72iKSot#skC`Qp3%$dNEPL1prYAw%w;m z4GyB$6ww3F{v0jL`ONHJaDL;McXDqY)KwxuCC+MJaWa4L6?nLnb~t%D#=mJ8sj^c; ztrR)$-Y;&VkL#UTIm}8?Kf8_I(2W+wtr_fyMUcK1TUHt^PZ9jqI{|P z@`_w3cQNZvH0bQM$xQ+dZ%m%ajk$n3nj0)8fm_J0u`nyUm`2zT7Fyyup=2j5 zCTy%Z%PUhT-F8h(zB{ocM=51%XvfOYJ~k~UN#Xt*H9KbiigM7pmO1j`QXM}f)-BE1 Z9Bi=_IgMF5?}hZ^3rJ18%;5e9{te8A^H=}? literal 2335 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 literal 2087 zcmX|+2{;t$8pmg>V+&atOB$7ZjG199*`<8kX)v}(Wg9Bn7){J@>xP^F8nP|NnpQ`+T3RpPvJS3-V9>;n1|RcYO!)HK7u= z1dLFI0r%;616nx@Z(e7llEi_mG2} zLkjW^_90P>IiWWv)W&c^EF$2dS1@Pt@69|{J2@Pu_BQXmimK9i0js2;rLL}_ZmN&N zqVzSjQCK7vWngZGQ&B=;)O3-0sKW}S~s z2P!}8)0RWSEJ@a)6?c+i+#TP5q=qg0ZvB;>+Iw}g25Mz5Gzo&-zdBU7T~5ohdWL2d z5sp6vUMpP0ifkN9Z2O@fJ)@8oU*neiB=%bmIb$5O3xYc3yr~%mMS#Bjbota!_rpw) zr|d%faqHLRKg#PFF*y*Lhec-DJ7x{_w(k^giUKN8Ie;@q=nao-7!UKevZ~k5M|^J- zTOWI29tT5^t0a(=+rvzqB$_B&Ql&-RxT%?br9t&cDQH_$uGZ>YnnDWBUq`0TN2y*B z&VQeNQ6TO!kHkIMo}nGQlci}T&55<(;Uq?uF{Oca#0RUQs0zo3np6~$Y>y$B&Q4~^ zR`1_5Tm4no5uhS$OZ7Z>{AYf!hXyeQwBNP2?=LKfzR$aaz zznmT&CO1d*b4{8lSW!wuv~oEQeFEH$rB)$GV)_}^ zE_RXO$M)1@;3f%LhAlo(ovfY4yw=4OKGQM#jB*xv6N5$;YvP4W#(9KvuK^30ty!6e zkEFV?jN8@Ug61?Xk+Cvo2b_{>J*9<$pS+7sf)Jt>!w&I7h$hVK}l z=@m}oK*n4a;>d|VAJzR{5Dp?jxst?l4f0Om5{X+{rSZRFFsbLRp*k+ZCpHyB>;T=N z#v%h=c?@P<{QRZO@3g9nAUvL4RaFq&(K$5s_`Y;UA%QeHt*EPAnz07zYrpW2*lGiJ z9NEvTHRszGODjBB{tndnyph4{`|kLxSP=bg%I7w?>15m>iyv@D=6Em+J(*^p>aATo z|M#x#&ft90WRpcrB8xi?>&r9q!i9wB`%q*7)hP}tL6($gM9wG_@95dx*sVo7oLWsb zK-uz1xt~t}Ndo*iIl4PtLA~6H2<5ZCA7`8MM5(5eyY3m`M=~W_@ny#PL(ZCZufF{B zChy8MBUd0@XQcYEAMBJh6A)$qP0Nx!H2RAi$js>2au_4IG9DnabmL?P!|?wK_)9Qj z(cu>1{1FNqhxE{t55w3#V^ zuX^s7kp2KrmXi5;Pj|@S@(yR>2g1AZ^V$|U#wMbq_q~RHX*3FBB>3il)RC8uM5!?5 z{bSuVSHq$8m15(J3>wRwXZT>Eks@$bw|wF8*2xH(@2JO%2GWj2YSYo{h1Fq~x>Kg> zjj;9}FLm8NtyEJ^-W9jA?(d4FZ#+#PE9yC?FlAdO-U2w740?*OUK@U?vn$BR9K#{_ zPOysEIYOuHibX%dCd}>^{ZzH>vR{oW==%e=<0 z-vl5qR8?WcnqIB2pI(+eHus?E@qFMw@-JhSZf4Fm2y-I&WHG($eS6!+}%171#C z5!T7e@sbi;{V8uKjSK+amUjwjbz#n+wwu+3mUziEVP6*b-kftqAFV<;rud&z^EcKw zE&N<-ldV4`U;o}P{@(>&SwL?802dx<=x_8;YYQcNd#&(n4^br6aEN!J_fPslqRaLJ z$uzbcv?_EwSnw+lH_$GicDP+qCZvSMMBt8*^-%D~$Ct0`H%dx`n{N_eKxEQH7t6@y zXO9>7Mg`h^UaGy@QVU-v;BH`w5`aMZiBCjY(^VMeqJ62mZ&d62h&#u z=?`u9Io9{^4Q7R+3P)Z!Yi92j`PiB1%6xNiKlXpy*cO diff --git a/components/mybot_platform/assets/locales/zh-CN/9.ogg b/components/mybot_platform/assets/locales/zh-CN/9.ogg index 5e3c40ed4aeca7e292819ca83886962bdc16a87c..b77ea0648f1e0cdcd41a928d30b84eb437d1a2b2 100644 GIT binary patch literal 2771 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 literal 12329 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 diff --git a/components/mybot_platform/boards/README.md b/components/mybot_platform/boards/README.md index c314d44..4c55428 100644 --- a/components/mybot_platform/boards/README.md +++ b/components/mybot_platform/boards/README.md @@ -1,31 +1,60 @@ # Board documentation / 板卡说明 -All 13 supported board profiles have a README in their own directory. Reference documents are -copied verbatim, including their original build instructions and feature descriptions. For this -firmware, use the [English build guide](../../../README.md#build) or -[中文构建说明](../../../README.zh-CN.md#构建); the active profile is defined by each `board.cmake` -and `board_config.h`. - -已有的板卡说明原样复制自参考工程,保留原文内容、行尾和格式,其中的菜单、脚本、固件名称 -及功能描述属于原工程。本工程使用 `MYBOT_BOARD` 和 `scripts/build_all.py` 构建,实际引脚与 -支持能力以各目录的 `board_config.h`、`board.cmake` 及本工程文档为准。 - -| Board profile | 说明 | 来源 | -| --- | --- | --- | -| `atom-echos3r` | [README](atom-echos3r/README.md) | 参考原文 | -| `bread-compact-wifi-lcd` | [README](bread-compact-wifi-lcd/README.md) | 参考工程无对应 README,按当前 profile 补充 | -| `esp-vocat` | [README](esp-vocat/README.md) | 参考原文 | -| `esp32-s3-touch-amoled-1.75` | [README](esp32-s3-touch-amoled-1.75/README.md) | 参考原文 | -| `esp32-s3-touch-amoled-1.75c` | [README](esp32-s3-touch-amoled-1.75c/README.md) | 与 1.75 共用参考原文,与上游板型映射一致 | -| `esp32-s3-touch-amoled-2.16` | [README](esp32-s3-touch-amoled-2.16/README.md) | 参考原文 | -| `m5stack-core-s3` | [README](m5stack-core-s3/README.md) | 参考原文 | -| `m5stack-stick-s3` | [README](m5stack-stick-s3/README.md) | 参考原文 | -| `respeaker-flex-xvf3800-circular4-xiao` | [README](respeaker-flex-xvf3800-circular4-xiao/README.md) | 参考工程无对应 README,按当前 profile 补充 | -| `sensecap-watcher` | [中文](sensecap-watcher/README.md) / [English](sensecap-watcher/README_en.md) | 参考原文 | -| `xingzhi-cube-1.54tft-wifi` | [README](xingzhi-cube-1.54tft-wifi/README.md) | 参考工程无对应 README,按当前 profile 补充 | -| `zhengchen-1.54tft-ml307` | [README](zhengchen-1.54tft-ml307/README.md) | 参考原文 | -| `zhengchen-1.54tft-wifi` | [README](zhengchen-1.54tft-wifi/README.md) | 参考原文 | - -Source mappings and the pinned revision are recorded in -[VENDORED_SOURCES.md](../../../VENDORED_SOURCES.md#board-reference-documents), with license terms in -[THIRD_PARTY_NOTICES.md](../../../THIRD_PARTY_NOTICES.md). +These documents describe the board profiles implemented by `mybot-esp32`. Pins, power sequencing, +drivers and build constraints are defined by the checked-in `board.cmake`, `board_config.h` and +`sdkconfig.defaults` files. Use ESP-IDF v5.5.2 and select a board with `MYBOT_BOARD`. + +以下说明对应本工程已实现的 13 个板型。硬件配置、输入行为、构建约束和验证状态以当前 +板级代码及本工程文档为准。不同尺寸、芯片或硬件版本的板卡不能仅凭外观共用固件。 + +| Board profile | 板卡说明 | 显示 | 视频 | +| --- | --- | --- | --- | +| `atom-echos3r` | [README](atom-echos3r/README.md) | 无屏幕 | 无 | +| `bread-compact-wifi-lcd` | [README](bread-compact-wifi-lcd/README.md) | 240×320 ST7789 | 无 | +| `esp-vocat` | [README](esp-vocat/README.md) | ST77916 触摸屏 | 无 | +| `esp32-s3-touch-amoled-1.75` | [README](esp32-s3-touch-amoled-1.75/README.md) | CO5300 AMOLED 触摸屏 | 无 | +| `esp32-s3-touch-amoled-1.75c` | [README](esp32-s3-touch-amoled-1.75c/README.md) | CO5300 AMOLED 触摸屏 | 无 | +| `esp32-s3-touch-amoled-2.16` | [README](esp32-s3-touch-amoled-2.16/README.md) | 480×480 CO5300 AMOLED 触摸屏 | 无 | +| `m5stack-core-s3` | [README](m5stack-core-s3/README.md) | ILI9342 触摸屏 | GC0308,上传 1 fps | +| `m5stack-stick-s3` | [README](m5stack-stick-s3/README.md) | 135×240 ST7789P3 | 无 | +| `respeaker-flex-xvf3800-circular4-xiao` | [README](respeaker-flex-xvf3800-circular4-xiao/README.md) | 无屏幕 | 无 | +| `sensecap-watcher` | [中文](sensecap-watcher/README.md) / [English](sensecap-watcher/README_en.md) | SPD2010 | 无 | +| `xingzhi-cube-1.54tft-wifi` | [README](xingzhi-cube-1.54tft-wifi/README.md) | 240×240 ST7789 | 无 | +| `zhengchen-1.54tft-ml307` | [README](zhengchen-1.54tft-ml307/README.md) | ST7789 | 无 | +| `zhengchen-1.54tft-wifi` | [README](zhengchen-1.54tft-wifi/README.md) | ST7789 | 无 | + +## 构建 + +在工程根目录激活 ESP-IDF v5.5.2,并指定板型: + +```sh +. /path/to/esp-idf/export.sh +test "$(idf.py --version)" = "ESP-IDF v5.5.2" +python3 scripts/build_all.py --board m5stack-core-s3 --language both +``` + +脚本默认编译中英文版本,构建目录在 `build/`,合并固件在 `releases/`;常规构建会先清理 +脚本管理的生成目录,增量构建使用 `--no-clean`。仅英文使用 `--language en-US`,仅中文 +使用 `--language zh-CN`。有屏幕的板型自动使用 LVGL;只有 CoreS3 具备视频能力,脚本默认 +开启,音频对照固件可使用 `--video off`。 + +手动构建时,为每块板指定独立目录和 sdkconfig: + +```sh +idf.py -B build/m5stack-core-s3 \ + -DMYBOT_BOARD=m5stack-core-s3 \ + -DSDKCONFIG=build/m5stack-core-s3/sdkconfig build +idf.py -B build/m5stack-core-s3 -p PORT flash monitor +``` + +手动构建使用当前 sdkconfig 的视频选项;上面的命令不自动开启视频。SenseCAP Watcher 的 +工厂分区保留与烧录步骤见其专用说明。 + +## 输入、配网与验证 + +设备首次启动无 Wi-Fi 凭据时自动配网;长按配网输入会先停止 mybot,再进入配网流程, +联网后重新启动 mybot。各板的配网输入、短按/触摸和音量输入见对应 README。 + +文档依据代码描述已实现能力,不代表每块硬件均已实机验证。已有验证记录和限制见 +[平台移植说明](../../../docs/BOARD_PORTING.zh-CN.md),构建/烧录完整说明见 +[中文项目文档](../../../README.zh-CN.md#构建)或 [English guide](../../../README.md#build)。 diff --git a/components/mybot_platform/boards/atom-echos3r/README.md b/components/mybot_platform/boards/atom-echos3r/README.md index ccb452f..67163c7 100644 --- a/components/mybot_platform/boards/atom-echos3r/README.md +++ b/components/mybot_platform/boards/atom-echos3r/README.md @@ -1,45 +1,53 @@ -# AtomEchoS3R -## 简介 +# M5Stack AtomEchoS3R -AtomEchoS3R 是 M5Stack 推出的基于 ESP32-S3-PICO-1-N8R8 的物联网可编程控制器,采用了 ES8311 单声道音频解码器、MEMS 麦克风和 NS4150B 功率放大器的集成方案。 +本工程的板型 ID 为 `atom-echos3r`,使用无屏音频 profile。 -开发版**不带屏幕、不带额外按键**,需要使用语音唤醒。必要时,需要使用 `idf.py monitor` 查看 log 以确定运行状态。 +## 当前配置 -## 配置、编译命令 +| 项目 | 本工程实现 | +| --- | --- | +| SoC | ESP32-S3 | +| Flash | 8 MB,QIO | +| PSRAM | 8 MB,Octal,80 MHz | +| 分区 | [partitions/v2/8m.csv](../../../../partitions/v2/8m.csv),双 OTA 分区 | +| 控制台 | ESP-IDF 默认 UART0,板级配置未覆盖控制台类型 | +| 音频 | ES8311 采集/播放,GPIO18 控制功放;SDK 使用 16 kHz 单声道 signed-16 PCM | +| 输入 | 当前代码映射 GPIO41 为低电平有效用户按键,映射与极性仍需真机确认 | +| 显示 | 无屏幕,不编译 LVGL | +| 摄像头 | 当前 profile 未提供视频接口,不支持开启视频 | -**配置编译目标为 ESP32S3** +I2C0 使用 SDA GPIO45、SCL GPIO0,ES8311 的 7-bit 地址为 `0x18`。 +I2S0 为 MCLK GPIO11、BCLK GPIO17、WS GPIO3、DIN GPIO4、DOUT GPIO48。 +GPIO0 已用于 I2C 时钟,不作为配网按键。 -```bash -idf.py set-target esp32s3 -``` - -**打开 menuconfig 并配置** - -```bash -idf.py menuconfig -``` +当前代码以 GPIO41 短按开始/结束对话、长按 3 秒进入配网;该板不依赖语音唤醒启动对话。 +无已保存的 Wi-Fi 信息时自动创建配置热点并播放对应语言的提示音,运行状态和配对码可通过 +串口日志查看。音量逻辑值保存到 NVS,初始默认值为 70;ES8311 硬件音量按逻辑值的 60% 映射。 -分别配置如下选项: +## 构建与烧录 -- `Xiaozhi Assistant` → `Board Type` → 选择 `AtomEchoS3R` -- `Partition Table` → `Custom partition CSV file` → 删除原有内容,输入 `partitions/v2/8m.csv` -- `Serial flasher config` → `Flash size` → 选择 `8 MB` -- `Component config` → `ESP PSRAM` → `Support for external, SPI-connected RAM` → `SPI RAM config` → 选择 `Octal Mode PSRAM` +在仓库根目录使用 ESP-IDF v5.5.2: -按 `S` 保存,按 `Q` 退出。 - -**编译** - -```bash -idf.py build +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board atom-echos3r --language both ``` -**烧录** +输出 `releases/atom-echos3r-zh-CN.bin` 和对应英文固件。 +构建脚本的清理行为见[板卡索引](../README.md)。 -将 AtomEchoS3R 连接到电脑,按住侧面 RESET 按键,直到 RESET 按键下方绿灯闪烁。 +直接构建中文固件并烧录时,使用独立目录;将串口替换为本机设备: -```bash -idf.py flash +```sh +idf.py -B build/atom-echos3r \ + -DMYBOT_BOARD=atom-echos3r \ + -DSDKCONFIG=build/atom-echos3r/sdkconfig \ + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;ci/ptime60.defaults" build +idf.py -B build/atom-echos3r -p /dev/ttyUSB0 flash monitor ``` -烧录完毕后,按一下 RESET 按钮重启设备。 +## 验证范围 + +GPIO41 按键映射、极性、16 kHz 采集及播放质量尚未通过本工程真机验收。 +构建成功不能代替这些测试。详见[平台移植文档](../../../../docs/BOARD_PORTING.zh-CN.md) +及[项目说明](../../../../README.zh-CN.md)。 diff --git a/components/mybot_platform/boards/bread-compact-wifi-lcd/README.md b/components/mybot_platform/boards/bread-compact-wifi-lcd/README.md index de4f473..78617cf 100644 --- a/components/mybot_platform/boards/bread-compact-wifi-lcd/README.md +++ b/components/mybot_platform/boards/bread-compact-wifi-lcd/README.md @@ -1,31 +1,72 @@ # Bread Compact Wi-Fi LCD -本说明根据本工程的 [board.cmake](board.cmake)、[board_config.h](board_config.h) 和 -[sdkconfig.defaults](sdkconfig.defaults) 整理;参考工程没有该板型的独立 README。 +本工程的板型 ID 为 `bread-compact-wifi-lcd`,对应 ESP32-S3 N16R8 与 240×320 ST7789 的 +固定接线组合。接线和能力由本目录的 [board_config.h](board_config.h)、 +[board.cmake](board.cmake)、[board.c](board.c) 和 +[sdkconfig.defaults](sdkconfig.defaults) 定义。 -## 硬件配置 +## 硬件与已接入功能 -| 项目 | 当前 profile | +| 项目 | 当前实现 | | --- | --- | -| MCU | ESP32-S3,N16R8 配置 | +| 主控 | ESP32-S3 N16R8 profile | | Flash | 16 MB,QIO | | PSRAM | 8 MB,Octal,80 MHz | -| 显示 | ST7789,240×320,SPI;GPIO42 PWM 背光 | -| 音频 | 麦克风与扬声器使用独立 I2S,16 kHz 单声道 | -| 输入 | GPIO0 Boot 按键,无独立音量键、无触摸 | -| 网络 | Wi-Fi | -| 分区 | `partitions/v2/16m.csv` | +| 分区 | [16 MB 分区表](../../../../partitions/v2/16m.csv),双 OTA 应用分区及 8 MB assets 分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台配置,使用 UART0 | +| 音频 | 独立麦克风/扬声器 I2S,16 kHz 单声道;软件音量及 NVS 持久化 | +| 显示 | ST7789,240×320,SPI3 mode 0,40 MHz;共享 LVGL UI | +| 输入 | 单个 Boot 按键;无独立音量键、无触摸输入 | +| 网络 / 视频 | Wi-Fi;未接入摄像头,不支持开启 `CONFIG_MYBOT_ENABLE_VIDEO` | -麦克风 WS/BCLK/DIN 分别为 GPIO4/5/6,扬声器 DOUT/BCLK/WS 分别为 GPIO7/15/16。 -显示引脚及方向配置见 `board_config.h`。当前 profile 没有摄像头支持。 +## 引脚与上电行为 -## 构建 +| 功能 | 引脚 | +| --- | --- | +| 麦克风 I2S1 RX | WS GPIO4、BCLK GPIO5、DIN GPIO6 | +| 扬声器 I2S0 TX | DOUT GPIO7、BCLK GPIO15、WS GPIO16 | +| Boot | GPIO0,低电平有效 | +| LCD | MOSI GPIO47、SCLK GPIO21、CS GPIO41、DC GPIO40、RESET GPIO45 | +| 背光 | GPIO42,LEDC 5 kHz、13-bit PWM,默认 60% | + +板级初始化先设置 PWM 背光为关闭,再初始化面板、显示启动页并注册常驻按键。面板使用 +RGB 顺序、零偏移、不镜像并启用颜色反转。本 profile 没有 GPIO 电源保持,也不驱动 +GPIO48 LED 或 GPIO18 灯输出;其他尺寸、不同接线或共享 I2S 时钟的硬件需使用独立 profile。 + +SDK 音频边界为 16 kHz、单声道、signed-16 PCM;物理标准 I2S 使用 32-bit mono left slot, +由公共 raw I2S 驱动完成转换。播放通过公共 PCM 缓冲连续送入 I2S,初始软件音量默认 70, +后续从 NVS 恢复;本板没有实体音量加减键。 + +## 配网与操作 + +- 短按 Boot:就绪时开始对话,对话中结束对话。 +- 长按 Boot 3 秒:请求配网;应用先停止 mybot,再进入配网模式。按键在 mybot 停止期间 + 仍可触发配网请求。 + +没有 Wi-Fi 凭据时自动进入配网。LCD 显示实际热点名称 `mybot-xxxx`,长文字自动滚动; +连接该热点后访问 `http://192.168.4.1` 配置 Wi-Fi。进入配网时播放对应语言提示音,取得 +可用 IP 后才启动 mybot。 -在工程根目录激活 ESP-IDF v5.5.2 后执行: +## 构建与烧录 + +在工程根目录激活 ESP-IDF v5.5.2 后构建中英文固件: ```sh python3 scripts/build_all.py --board bread-compact-wifi-lcd --language both ``` -构建与烧录的完整说明见[项目文档](../../../../README.zh-CN.md#构建)。当前板型的 -实机验证状态见[平台移植文档](../../../../docs/BOARD_PORTING.zh-CN.md)。 +合并固件输出为 `releases/bread-compact-wifi-lcd-zh-CN.bin` 和对应的 `en-US.bin`。 +批量脚本默认清理其专用构建和输出目录,详见[构建说明](../../../../README.zh-CN.md#构建)。 + +使用独立构建目录和 sdkconfig 的手动构建、烧录示例,将 `PORT` 替换为本机串口设备: + +```sh +idf.py -B build/bread-compact-wifi-lcd \ + -DMYBOT_BOARD=bread-compact-wifi-lcd \ + -DSDKCONFIG=build/bread-compact-wifi-lcd/sdkconfig build +idf.py -B build/bread-compact-wifi-lcd -p PORT flash monitor +``` + +该固定 profile 的中英文构建支持已在 ESP-IDF v5.5.2 验证,真机验证尚未完成。目标设备仍需 +核对模组与检测容量、屏幕颜色/方向、PWM 背光、音频速度/音调、全双工交互及重复配网。 +验收范围见[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/esp-vocat/README.md b/components/mybot_platform/boards/esp-vocat/README.md index 614faf2..fb0d82d 100644 --- a/components/mybot_platform/boards/esp-vocat/README.md +++ b/components/mybot_platform/boards/esp-vocat/README.md @@ -1,85 +1,74 @@ -# ESP-VoCat 喵伴 +# ESP-VoCat -## 简介 +本目录提供 `mybot-esp32` 的 `esp-vocat` 板型配置,支持 PCB V1.0 和 V1.2。 +两个版本使用相同的固件,启动时先探测硬件版本,再初始化音频、显示和输入。 +硬件资料见 [ESP-VoCat 开源硬件项目](https://oshwhub.com/esp-college/echoear)。 -

+## 当前配置 -ESP-VoCat 喵伴是一款智能 AI 开发套件,搭载 ESP32-S3-WROOM-1 模组,1.85 寸 QSPI 圆形触摸屏,双麦阵列,支持离线语音唤醒与声源定位算法。硬件详情等可查看[立创开源项目](https://oshwhub.com/esp-college/echoear)。 +| 项目 | 本工程实现 | +| --- | --- | +| 芯片 | ESP32-S3 | +| 存储 | 16 MB QIO Flash;80 MHz Octal PSRAM,实际容量以启动日志为准 | +| 分区 | `partitions/v2/16m.csv`,双 OTA 应用分区与资源分区 | +| 控制台 | 原生 USB Serial/JTAG;关闭 UART0 控制台,避免与外设引脚冲突 | +| 音频 | ES7210 采集、ES8311 播放;SDK 接口为 16 kHz、单声道、16 位 PCM | +| 显示 | 360 × 360 ST77916 圆屏,40 MHz QSPI,共享 LVGL 界面 | +| 输入 | CST816S 触摸、GPIO0 Boot 按键 | +| 网络 | Wi-Fi,支持首次自动配网和长按重新配网 | +| 视频 | 未集成摄像头采集,不支持 `CONFIG_MYBOT_ENABLE_VIDEO` | -## 配置、编译命令 +公共 I2C0 使用 SDA GPIO2、SCL GPIO1。I2S 使用 MCLK GPIO42、BCLK GPIO40、 +WS GPIO39、DOUT GPIO41;DIN、功放使能和屏幕复位由 PCB 版本决定: -**配置编译目标为 ESP32S3** +| PCB 版本 | I2S DIN | 功放使能 | ST77916 reset | +| --- | --- | --- | --- | +| V1.0 | GPIO15 | GPIO4 | GPIO3,低有效 | +| V1.2 | GPIO3 | GPIO15 | GPIO47,高有效 | -```bash -idf.py set-target esp32s3 -``` - -**打开 menuconfig 并配置** - -```bash -idf.py menuconfig -``` - -分别配置如下选项: - -### 基本配置 -- `Xiaozhi Assistant` → `Board Type` → 选择 `Espressif ESP-VoCat` +GPIO9 以低电平启用外设电源。初始化时先将 GPIO48 拉低并探测 ES8311,失败后拉高重试; +两次均失败则终止硬件初始化,不使用默认版本继续启动。QSPI 使用 CLK GPIO18、CS GPIO14、 +D0-D3 GPIO46/GPIO13/GPIO11/GPIO12,背光为 GPIO44,触摸中断为 GPIO10。 -### UI风格选择 +采集和播放共享两槽 I2S 时钟,直接运行在 16 kHz:采集只提取主麦 slot,播放将 SDK +单声道复制到两个物理输出 slot。音量可持久化,未保存过时默认值为 70。 -ESP-VoCat 支持多种不同的 UI 显示风格,通过 menuconfig 配置选择: +## 操作与配网 -- `Xiaozhi Assistant` → `Select display style` → 选择显示风格 +就绪时轻触屏幕或短按 Boot 开始对话,对话中再次操作结束对话。长按屏幕或 Boot 约 3 秒 +请求重新配网;应用先停止 MyBot,再进入配网流程,联网成功后重新启动。 +未保存 Wi-Fi 信息时自动进入配网,屏幕显示热点名称并播放提示音;按屏幕提示连接热点 +完成配置。 -#### 可选风格 +CST816S 使用中断触发读取,仅在按住时定时检查长按,不持续轮询空闲触摸。当前配置关闭 +触摸 ID 寄存器读取,以兼容不响应该寄存器的固件批次。 -##### 表情动画风格 (Emote animation style) - 推荐 -- **配置选项**: `USE_EMOTE_MESSAGE_STYLE` -- **特点**: 使用自定义的 `EmoteDisplay` 表情显示系统 -- **功能**: 支持丰富的表情动画、眼睛动画、状态图标显示 -- **适用**: 智能助手场景,提供更生动的人机交互体验 -- **类**: `emote::EmoteDisplay` +## 编译与烧录 -**⚠️ 重要**: 选择此风格需要额外配置自定义资源文件: -1. `Xiaozhi Assistant` → `Flash Assets` → 选择 `Flash Custom Assets` -2. `Xiaozhi Assistant` → `Custom Assets File` → 填入资源文件地址: - ``` - https://dl.espressif.com/AE/wn9_nihaoxiaozhi_tts-font_puhui_common_20_4-echoear.bin - ``` +在工程根目录使用 ESP-IDF 5.5.2: - 这是保留表情动画和模型的历史资源包;新版固件会忽略其中没有 Noto 元数据的旧 Puhui - 字体,并使用内置 Noto basic 字体。待新的 Noto 资源包上传后可直接替换此 URL。 - -##### 默认消息风格 (Enable default message style) -- **配置选项**: `USE_DEFAULT_MESSAGE_STYLE` (默认) -- **特点**: 使用标准的消息显示界面 -- **功能**: 传统的文本和图标显示界面 -- **适用**: 标准的对话场景 -- **类**: `SpiLcdDisplay` - -##### 微信消息风格 (Enable WeChat Message Style) -- **配置选项**: `USE_WECHAT_MESSAGE_STYLE` -- **特点**: 仿微信聊天界面风格 -- **功能**: 类似微信的消息气泡显示 -- **适用**: 喜欢微信风格的用户 -- **类**: `SpiLcdDisplay` - -> **说明**: ESP-VoCat 喵伴使用16MB Flash,需要使用专门的分区表配置来合理分配存储空间给应用程序、OTA更新、资源文件等。 +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board esp-vocat --language both +``` -按 `S` 保存,按 `Q` 退出。 +脚本自动启用 LVGL,生成 `releases/esp-vocat-zh-CN.bin` 和 +`releases/esp-vocat-en-US.bin`,默认清理脚本管理的 `build/` 和 `releases/`。 -**编译** +需要独立构建、烧录并查看控制台时,可使用: -```bash -idf.py build +```sh +idf.py -B build/esp-vocat \ + -DMYBOT_BOARD=esp-vocat \ + -DSDKCONFIG=build/esp-vocat/sdkconfig build flash monitor ``` -**烧录** +使用原生 USB 数据接口并打开硬件电源;如需指定端口,在命令中增加 `-p` 参数。 +其他板型必须使用不同的构建目录和 sdkconfig。 -将 ESP-VoCat 喵伴连接至电脑,**注意打开电源**,并运行: +## 支持边界 -```bash -idf.py flash -``` +第二麦克风、播放参考通道、本地 AEC、电量计、IMU、电容控制、SD 卡、LED、关机和低功耗 +尚未集成。硬件能力不等同于本工程已实现的功能。 +两个 PCB 版本的电源、引脚映射、音频和触摸均需在对应实物上验证;构建通过不能替代真机测试。 +完整说明见[工程文档](../../../../README.zh-CN.md)和[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75/README.md b/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75/README.md index 5f99392..7456b54 100644 --- a/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75/README.md +++ b/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75/README.md @@ -1,15 +1,70 @@ -# Waveshare ESP32-S3-Touch-AMOLED-1.75 +# ESP32-S3-Touch-AMOLED-1.75 +本目录提供 `mybot-esp32` 的 `esp32-s3-touch-amoled-1.75` 板型配置。 +硬件资料见 [Waveshare 产品页](https://www.waveshare.com/esp32-s3-touch-amoled-1.75.htm)。 +本 profile 用于原始 1.75 版,不能与 1.75C 或 2.16 的固件交叉烧录。 -[ESP32-S3-Touch-AMOLED-1.75](https://www.waveshare.com/esp32-s3-touch-amoled-1.75.htm) ESP32-S3-Touch-AMOLED-1.75 is a high performance, highly integrated microcontroller development board designed by Waveshare.\ -In the smaller form, the 1.75-inch capacitive HD AMOLED screen, highly integrated power management chip, six-axis sensor (three-axis accelerometer and three-axis gyroscope), RTC, low-power audio codec chip and echo cancellation circuit are mounted on the board, which is convenient for development and embedding into the product. +## 当前配置 +| 项目 | 本工程实现 | +| --- | --- | +| 芯片 | ESP32-S3 | +| 存储 | 16 MB QIO Flash;8 MB Octal PSRAM,80 MHz | +| 分区 | `partitions/v2/16m.csv`,双 OTA 应用分区与资源分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台设置,默认 UART0 | +| 电源 | AXP2101 初始化;GPIO46 控制扬声器功放 | +| 音频 | ES7210 采集、ES8311 播放;SDK 接口为 16 kHz、单声道、16 位 PCM | +| 显示 | 466 × 466 CO5300 AMOLED,40 MHz QSPI,显示偏移 `(6, 0)`,共享 LVGL 界面 | +| 输入 | CST9217 触摸、GPIO0 Boot 按键 | +| 网络 | Wi-Fi,支持首次自动配网和长按重新配网 | +| 视频 | 未集成摄像头采集,不支持 `CONFIG_MYBOT_ENABLE_VIDEO` | -## images +公共 I2C0 使用 SDA GPIO15、SCL GPIO14,先完成 AXP2101 上电,再挂接屏幕、触摸和音频设备。 +本板可选探测地址 `0x20` 的 TCA9554,未发现该器件时可以继续初始化。 -| [ESP32-S3-Touch-AMOLED-1.75](https://www.waveshare.com/esp32-s3-touch-amoled-1.75.htm) | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| | -| | -| | +| 信号 | GPIO | +| --- | --- | +| I2S MCLK / BCLK / WS / DOUT / DIN | 42 / 9 / 45 / 8 / 10 | +| QSPI CLK / CS / D0-D3 | 38 / 12 / 4、5、6、7 | +| CO5300 reset | 39 | +| CST9217 reset / INT | 40 / 11 | +采集和播放共享两槽 16 kHz 标准 I2S;采集提取主麦 slot,播放将 SDK 单声道复制到两个物理 +输出 slot。音量可持久化,未保存过时默认值为 70。屏幕使用 RGB565 局部 DMA 刷新,传输 +起止边界保持偶数像素,不分配完整 framebuffer。 + +## 操作与配网 + +就绪时轻触屏幕或短按 Boot 开始对话,对话中再次操作结束对话。长按屏幕或 Boot 约 3 秒 +请求重新配网;应用先停止 MyBot,再进入配网流程,联网成功后重新启动。 +未保存 Wi-Fi 信息时自动进入配网,屏幕显示热点名称并播放提示音;按屏幕提示连接热点 +完成配置。触摸与 Boot 由板级常驻模块管理,MyBot 停止期间仍可请求配网。 + +## 编译与烧录 + +在工程根目录使用 ESP-IDF 5.5.2: + +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board esp32-s3-touch-amoled-1.75 --language both +``` + +脚本自动启用 LVGL,生成 `releases/esp32-s3-touch-amoled-1.75-zh-CN.bin` 和 +`releases/esp32-s3-touch-amoled-1.75-en-US.bin`,默认清理脚本管理的 `build/` 和 `releases/`。 + +需要独立构建、烧录并查看控制台时,可使用: + +```sh +idf.py -B build/esp32-s3-touch-amoled-1.75 \ + -DMYBOT_BOARD=esp32-s3-touch-amoled-1.75 \ + -DSDKCONFIG=build/esp32-s3-touch-amoled-1.75/sdkconfig build flash monitor +``` + +如需指定端口,在命令中增加 `-p` 参数。其他板型必须使用不同的构建目录和 sdkconfig。 + +## 支持边界 + +本板与 1.75C 共用生命周期、音频和输入实现,但 MCLK、屏幕复位、触摸复位和 TCA9554 +配置不同。RTC、IMU、TF 卡、电池状态、自动休眠、关机、播放参考通道和本地 AEC 尚未集成。 +当前支持范围为构建集成;电源时序、音频 slot、显示颜色/方向和触摸仍需在匹配实物上验证。 +完整说明见[工程文档](../../../../README.zh-CN.md)和[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c/README.md b/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c/README.md index 5f99392..3347f59 100644 --- a/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c/README.md +++ b/components/mybot_platform/boards/esp32-s3-touch-amoled-1.75c/README.md @@ -1,15 +1,72 @@ -# Waveshare ESP32-S3-Touch-AMOLED-1.75 +# ESP32-S3-Touch-AMOLED-1.75C +本目录提供 `mybot-esp32` 的 `esp32-s3-touch-amoled-1.75c` 板型配置。 +该板使用独立的引脚 profile,与原始 1.75 和 2.16 版本不能交叉烧录。 -[ESP32-S3-Touch-AMOLED-1.75](https://www.waveshare.com/esp32-s3-touch-amoled-1.75.htm) ESP32-S3-Touch-AMOLED-1.75 is a high performance, highly integrated microcontroller development board designed by Waveshare.\ -In the smaller form, the 1.75-inch capacitive HD AMOLED screen, highly integrated power management chip, six-axis sensor (three-axis accelerometer and three-axis gyroscope), RTC, low-power audio codec chip and echo cancellation circuit are mounted on the board, which is convenient for development and embedding into the product. +## 当前配置 +| 项目 | 本工程实现 | +| --- | --- | +| 芯片 | ESP32-S3 | +| 存储 | 保守的 16 MB QIO Flash profile;8 MB Octal PSRAM,80 MHz | +| 分区 | `partitions/v2/16m.csv`,双 OTA 应用分区与资源分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台设置,默认 UART0 | +| 电源 | AXP2101 初始化;GPIO46 控制扬声器功放;不探测或依赖 TCA9554 | +| 音频 | ES7210 采集、ES8311 播放;SDK 接口为 16 kHz、单声道、16 位 PCM | +| 显示 | 466 × 466 CO5300 AMOLED,40 MHz QSPI,显示偏移 `(6, 0)`,共享 LVGL 界面 | +| 输入 | CST9217 触摸、GPIO0 Boot 按键 | +| 网络 | Wi-Fi,支持首次自动配网和长按重新配网 | +| 视频 | 未集成摄像头采集,不支持 `CONFIG_MYBOT_ENABLE_VIDEO` | -## images +公共 I2C0 使用 SDA GPIO15、SCL GPIO14,先完成 AXP2101 上电,再挂接屏幕、触摸和音频设备。 +1.75C 的存储资料存在容量差异,因此固件只使用 16 MB 地址空间;扩展分区前必须通过启动 +日志确认实际 Flash 容量并验证分区布局。 -| [ESP32-S3-Touch-AMOLED-1.75](https://www.waveshare.com/esp32-s3-touch-amoled-1.75.htm) | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| | -| | -| | +| 信号 | 1.75C GPIO | 原始 1.75 GPIO | +| --- | --- | --- | +| I2S MCLK | 16 | 42 | +| CO5300 reset | 1 | 39 | +| CST9217 reset | 2 | 40 | +其他公共信号为 I2S BCLK GPIO9、WS GPIO45、DOUT GPIO8、DIN GPIO10,QSPI CLK GPIO38、 +CS GPIO12、D0-D3 GPIO4/GPIO5/GPIO6/GPIO7,以及 CST9217 INT GPIO11。 + +采集和播放共享两槽 16 kHz 标准 I2S;采集提取主麦 slot,播放将 SDK 单声道复制到两个物理 +输出 slot。音量可持久化,未保存过时默认值为 70。屏幕使用 RGB565 局部 DMA 刷新,传输 +起止边界保持偶数像素,不分配完整 framebuffer。 + +## 操作与配网 + +就绪时轻触屏幕或短按 Boot 开始对话,对话中再次操作结束对话。长按屏幕或 Boot 约 3 秒 +请求重新配网;应用先停止 MyBot,再进入配网流程,联网成功后重新启动。 +未保存 Wi-Fi 信息时自动进入配网,屏幕显示热点名称并播放提示音;按屏幕提示连接热点 +完成配置。触摸与 Boot 由板级常驻模块管理,MyBot 停止期间仍可请求配网。 + +## 编译与烧录 + +在工程根目录使用 ESP-IDF 5.5.2: + +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board esp32-s3-touch-amoled-1.75c --language both +``` + +脚本自动启用 LVGL,生成 `releases/esp32-s3-touch-amoled-1.75c-zh-CN.bin` 和 +`releases/esp32-s3-touch-amoled-1.75c-en-US.bin`,默认清理脚本管理的 `build/` 和 `releases/`。 + +需要独立构建、烧录并查看控制台时,可使用: + +```sh +idf.py -B build/esp32-s3-touch-amoled-1.75c \ + -DMYBOT_BOARD=esp32-s3-touch-amoled-1.75c \ + -DSDKCONFIG=build/esp32-s3-touch-amoled-1.75c/sdkconfig build flash monitor +``` + +如需指定端口,在命令中增加 `-p` 参数。其他板型必须使用不同的构建目录和 sdkconfig。 + +## 支持边界 + +本板复用 `esp32-s3-touch-amoled-1.75-common` 的板级生命周期、音频和输入实现,保留独立 +板型身份。RTC、IMU、TF 卡、电池状态、自动休眠、关机、播放参考通道和本地 AEC 尚未集成。 +当前支持范围为构建集成;电源时序、音频 slot、显示颜色/方向和触摸仍需在匹配实物上验证。 +完整说明见[工程文档](../../../../README.zh-CN.md)和[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/esp32-s3-touch-amoled-2.16/README.md b/components/mybot_platform/boards/esp32-s3-touch-amoled-2.16/README.md index e8233a9..823aa89 100644 --- a/components/mybot_platform/boards/esp32-s3-touch-amoled-2.16/README.md +++ b/components/mybot_platform/boards/esp32-s3-touch-amoled-2.16/README.md @@ -1,15 +1,73 @@ -# Waveshare ESP32-S3-Touch-AMOLED-2.16 +# ESP32-S3-Touch-AMOLED-2.16 +本目录提供 `mybot-esp32` 的 `esp32-s3-touch-amoled-2.16` 板型配置。 +硬件资料见 [Waveshare 产品页](https://www.waveshare.com/esp32-s3-touch-amoled-2.16.htm)。 +该板具有独立的板级生命周期与 480 像素面板实现,不能使用 1.75 或 1.75C 的固件。 -[ESP32-S3-Touch-AMOLED-2.16](https://www.waveshare.com/esp32-s3-touch-amoled-2.16.htm) ESP32-S3-Touch-AMOLED-2.16 is a high performance, highly integrated microcontroller development board designed by Waveshare.\ -In the smaller form, the 2.16-inch capacitive HD AMOLED screen, highly integrated power management chip, six-axis sensor (three-axis accelerometer and three-axis gyroscope), RTC, low-power audio codec chip and echo cancellation circuit are mounted on the board, which is convenient for development and embedding into the product. +## 当前配置 +| 项目 | 本工程实现 | +| --- | --- | +| 芯片 | ESP32-S3 | +| 存储 | 保守的 16 MB QIO Flash profile;80 MHz Octal PSRAM,实际容量待实物核对 | +| 分区 | `partitions/v2/16m.csv`,双 OTA 应用分区与资源分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台设置,默认 UART0 | +| 电源 | AXP2101 初始化;GPIO46 控制扬声器功放 | +| 音频 | ES7210 采集、ES8311 播放;SDK 接口为 16 kHz、单声道、16 位 PCM | +| 显示 | 480 × 480 CO5300 AMOLED,40 MHz QSPI,无显示偏移,共享 LVGL 界面 | +| 输入 | CST9217 触摸、GPIO0 Boot 按键 | +| 网络 | Wi-Fi,支持首次自动配网和长按重新配网 | +| 视频 | 未集成摄像头采集,不支持 `CONFIG_MYBOT_ENABLE_VIDEO` | -## images +公共 I2C0 使用 SDA GPIO15、SCL GPIO14,先完成 AXP2101 上电,再挂接屏幕、触摸和音频设备。 +本 profile 可选探测地址 `0x20` 的 TCA9554,未发现时可以继续初始化;实际板上是否搭载 +该器件仍需确认。 -| [ESP32-S3-Touch-AMOLED-2.16](https://www.waveshare.com/esp32-s3-touch-amoled-2.16.htm) | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| | -| | -| | +| 信号 | GPIO | +| --- | --- | +| I2S MCLK / BCLK / WS / DOUT / DIN | 42 / 9 / 45 / 8 / 10 | +| QSPI CLK / CS / D0-D3 | 38 / 12 / 4、5、6、7 | +| CO5300 reset | 39 | +| CST9217 reset / INT | 40 / 11 | +采集和播放复用 AMOLED 1.75 系列音频驱动,共享两槽 16 kHz 标准 I2S;采集提取主麦 slot, +播放将 SDK 单声道复制到两个物理输出 slot。音量可持久化,未保存过时默认值为 70。 +屏幕使用独立的 `co5300_480_panel.c`,采用 RGB565 局部 DMA 刷新,传输起止边界保持 +偶数像素,不分配完整 framebuffer。 + +## 操作与配网 + +就绪时轻触屏幕或短按 Boot 开始对话,对话中再次操作结束对话。长按屏幕或 Boot 约 3 秒 +请求重新配网;应用先停止 MyBot,再进入配网流程,联网成功后重新启动。 +未保存 Wi-Fi 信息时自动进入配网,屏幕显示热点名称并播放提示音;按屏幕提示连接热点 +完成配置。触摸与 Boot 由板级常驻模块管理,MyBot 停止期间仍可请求配网。 + +## 编译与烧录 + +在工程根目录使用 ESP-IDF 5.5.2: + +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board esp32-s3-touch-amoled-2.16 --language both +``` + +脚本自动启用 LVGL,生成 `releases/esp32-s3-touch-amoled-2.16-zh-CN.bin` 和 +`releases/esp32-s3-touch-amoled-2.16-en-US.bin`,默认清理脚本管理的 `build/` 和 `releases/`。 + +需要独立构建、烧录并查看控制台时,可使用: + +```sh +idf.py -B build/esp32-s3-touch-amoled-2.16 \ + -DMYBOT_BOARD=esp32-s3-touch-amoled-2.16 \ + -DSDKCONFIG=build/esp32-s3-touch-amoled-2.16/sdkconfig build flash monitor +``` + +如需指定端口,在命令中增加 `-p` 参数。其他板型必须使用不同的构建目录和 sdkconfig。 + +## 支持边界 + +中英文固件构建已在 ESP-IDF 5.5.2 验证,真机验证尚未完成。发布前需核对实际 Flash/PSRAM +容量,验证电源时序、480 × 480 显示颜色/方向、触摸和 16 kHz 双向音频。若硬件需要其他 +音频采样率,转换应留在平台驱动内,SDK 的 16 kHz 单声道 PCM 契约保持不变。 +RTC、IMU、TF 卡、电池状态、自动休眠、关机、播放参考通道和本地 AEC 尚未集成。 +完整说明见[工程文档](../../../../README.zh-CN.md)和[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/m5stack-core-s3/README.md b/components/mybot_platform/boards/m5stack-core-s3/README.md index d7aa9b8..c025caf 100644 --- a/components/mybot_platform/boards/m5stack-core-s3/README.md +++ b/components/mybot_platform/boards/m5stack-core-s3/README.md @@ -1,22 +1,58 @@ -# 使用说明 - - -**编译** - -```bash -python ./scripts/release.py m5stack-core-s3 -``` - -如需手动编译,请参考 `m5stack-core-s3/config.json` 修改 menuconfig 对应选项。 - -**烧录** - -```bash -idf.py flash -``` - -> [!NOTE] -> 进入下载模式:长按复位按键(约3秒),直至内部指示灯亮绿色,松开按键。 - - - +# M5Stack CoreS3 + +本工程的板型 ID 为 `m5stack-core-s3`,面向带 GC0308 摄像头的 CoreS3。 +[官方硬件文档](https://docs.m5stack.com/en/core/CoreS3)。 + +## 当前配置 + +| 项目 | 本工程实现 | +| --- | --- | +| SoC | ESP32-S3 | +| Flash | 16 MB,QIO | +| PSRAM | 8 MB,Quad,80 MHz | +| 分区 | [partitions/v2/16m.csv](../../../../partitions/v2/16m.csv),双 OTA 分区 | +| 控制台 | ESP-IDF 默认 UART0,板级配置未覆盖控制台类型 | +| 音频 | ES7210 采集、AW88298 播放;SDK 边界为 16 kHz 单声道 signed-16 PCM | +| 显示 | 320 × 240 ILI9342,自动使用 LVGL 像素眼镜界面 | +| 输入 | FT6336 触摸:短触开始/结束对话,长按 3 秒进入配网 | +| 摄像头 | GC0308 DVP,320 × 240 YUYV,软件 JPEG,上行最多 1 fps | +| 电源 | AXP2101 与 AW9523,由板级硬件层初始化并控制背光、复位 | + +共享 I2C1 为 SDA GPIO12、SCL GPIO11。I2S0 为 MCLK GPIO0、BCLK GPIO34、WS GPIO33、 +DIN GPIO14、DOUT GPIO13;GPIO0 用于音频时钟,不作为配网按键。LCD SPI3 为 MOSI GPIO37、 +SCLK GPIO36、CS GPIO3、DC GPIO35。 + +无已保存的 Wi-Fi 信息时自动进入配网并显示热点名称、播放提示音。已有网络时联网后启动 +MyBot;长按触摸会先停止 MyBot 再配网。设备音量保存在 NVS,重启后恢复。 + +## 构建与烧录 + +在仓库根目录使用 ESP-IDF v5.5.2: + +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board m5stack-core-s3 --language both +``` + +脚本默认开启视频,输出 `releases/m5stack-core-s3-zh-CN-video.bin` 和对应英文固件。 +需要关闭视频时追加 `--video off`。CoreS3-SE 不带 GC0308,不能使用视频固件。 +构建脚本的清理行为见[板卡索引](../README.md)。 + +直接构建中文视频固件并烧录时,使用独立目录;将串口替换为本机设备: + +```sh +idf.py -B build/m5stack-core-s3 \ + -DMYBOT_BOARD=m5stack-core-s3 \ + -DSDKCONFIG=build/m5stack-core-s3/sdkconfig \ + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;ci/ptime60.defaults;ci/video.defaults" build +idf.py -B build/m5stack-core-s3 -p /dev/ttyUSB0 flash monitor +``` + +英文直接构建需在新目录的 defaults 列表追加 `;ci/en-us.defaults`。 + +## 验证范围 + +已有音频和摄像头通路完成过真机验证;当前像素眼镜 UI、采集调度和 DMA 配置仍需按对应 +文档回归。构建成功不等于硬件验收。详见[像素眼镜 UI](../../../../docs/CORES3_UI.zh-CN.md)、 +[摄像头上行](../../../../docs/CORES3_VIDEO.zh-CN.md)及 +[音频对照测试](../../../../docs/CORES3_AUDIO_TEST.zh-CN.md)。 diff --git a/components/mybot_platform/boards/m5stack-stick-s3/README.md b/components/mybot_platform/boards/m5stack-stick-s3/README.md index b8a5721..2af4cb2 100644 --- a/components/mybot_platform/boards/m5stack-stick-s3/README.md +++ b/components/mybot_platform/boards/m5stack-stick-s3/README.md @@ -1,133 +1,57 @@ -# M5Stack Sticks3 +# M5Stack StickS3 -* MCU: ESP32-S3 -* PSRAM: 8MB -* Flash: 8MB -* Display: 1.14Inch, 135x240 LCD. +本工程的板型 ID 为 `m5stack-stick-s3`。 +[官方硬件文档](https://docs.m5stack.com/zh_CN/core/StickS3)。 ------------ -## Hardware +## 当前配置 -* SYS_I2C/I2C0 - * SCL -- G48 - * SDA -- G47 -* PMIC: M5PM1 - * Interface: I2C0@0x6E -* LCD - * Power: M5PM1_G2 高电平使能 - * Resolution: 135x240 - * Driver: CO5300 - * Interface: SPI - * MOSI -- G39 - * SCLK -- G40 - * CS -- G41 - * RS -- G45 - * BL -- G38 -* Audio - * Power: M5PM1_G2 高电平使能 - * ES8311@0x18 - * Control Interface: SYS_I2C - * Data Interface: I2S0 - * MCLK -- G18 - * BCLK -- G17 - * ASDOUT -- G16 - * LRCK -- G15 - * DSDIN -- G14 - * PA -- PM1_G3 -* Key - * KEY1 -- G11 -* IMU - * BMI270@0x68 - * Interface: SYS_I2C -* IR - * TX -- G46 - * RX -- G42 +| 项目 | 本工程实现 | +| --- | --- | +| SoC | ESP32-S3 | +| Flash | 8 MB,QIO | +| PSRAM | 8 MB,Octal,80 MHz | +| 分区 | [partitions/v2/8m.csv](../../../../partitions/v2/8m.csv),双 OTA 分区 | +| 控制台 | ESP-IDF 默认 UART0,板级配置未覆盖控制台类型 | +| 音频 | ES8311;SDK 边界为 16 kHz 单声道 signed-16 PCM,物理 I2S 使用双声道 | +| 显示 | ST7789P3,135 × 240,偏移 (52, 40),自动使用共享 LVGL 界面 | +| 输入 | GPIO11 主按键,低电平有效;短按开始/结束对话,长按 3 秒进入配网 | +| 电源 | M5PM1,G2 为显示与 codec 供电,G3 控制播放功放 | +| 摄像头 | 当前 profile 未提供视频接口,不支持开启视频 | -## 快速构建 +共享 I2C0 为 SDA GPIO47、SCL GPIO48,M5PM1 的 7-bit 地址为 `0x6e`,ES8311 为 `0x18`。 +I2S0 为 MCLK GPIO18、BCLK GPIO17、WS GPIO15、DIN GPIO16、DOUT GPIO14。 +LCD SPI3 为 MOSI GPIO39、SCLK GPIO40、CS GPIO41、DC GPIO45、RESET GPIO21; +背光 GPIO38 由 LEDC 驱动,默认亮度 60%。 -推荐使用 release 脚本生成完整固件包: +固件运行期间保持 G2 电源开启,播放生命周期控制 G3。音量逻辑值为 0–100,保存到 NVS; +当前 ES8311 硬件音量按逻辑值的 60% 映射。无 Wi-Fi 信息时自动进入配网并显示热点名称、 +播放提示音;长按主按键会先停止 MyBot 再重新配网。 -```bash -python scripts/release.py m5stack-stick-s3 --name m5stack-stick-s3 -``` - -生成的固件压缩包位于: - -```text -releases/v2.2.6_m5stack-stick-s3.zip -``` - -`config.json` 中的关键构建配置: - -```text -CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions/v2/8m.csv" -CONFIG_SPIRAM=y -``` +## 构建与烧录 -## 手动配置 +在仓库根目录使用 ESP-IDF v5.5.2: -配置编译目标: - -```bash -idf.py set-target esp32s3 +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board m5stack-stick-s3 --language both ``` -打开配置菜单: - -```bash -idf.py menuconfig -``` +输出 `releases/m5stack-stick-s3-zh-CN.bin` 和对应英文固件;LVGL 自动启用。 +构建脚本的清理行为见[板卡索引](../README.md)。 -选择板卡: +直接构建中文固件并烧录时,使用独立目录;将串口替换为本机设备: -```text -Xiaozhi Assistant -> Board Type -> M5Stack StickS3 +```sh +idf.py -B build/m5stack-stick-s3 \ + -DMYBOT_BOARD=m5stack-stick-s3 \ + -DSDKCONFIG=build/m5stack-stick-s3/sdkconfig \ + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;ci/ptime60.defaults" build +idf.py -B build/m5stack-stick-s3 -p /dev/ttyUSB0 flash monitor ``` -配置 Flash 大小: +## 验证范围 -```text -Serial flasher config -> Flash size -> 8 MB -``` - -配置分区表: - -```text -Partition Table -> Custom partition CSV file -> partitions/v2/8m.csv -``` - -配置 PSRAM: - -```text -Component config -> ESP PSRAM -> Support for external, SPI-connected RAM -> Select -``` - -编译: - -```bash -idf.py build -``` - -## 合并固件 - -手动构建后,可使用以下命令合并烧录固件: - -```bash -esptool.py --chip esp32s3 merge_bin \ - --flash_mode dio \ - --flash_freq 80m \ - --flash_size 8MB \ - 0x0 build/bootloader/bootloader.bin \ - 0x8000 build/partition_table/partition-table.bin \ - 0xd000 build/ota_data_initial.bin \ - 0x20000 build/xiaozhi.bin \ - 0x600000 build/generated_assets.bin \ - -o M5Stack-StickS3-XiaoZhi-v2.2.6_0x00.bin -``` - -烧录合并后的固件: - -```bash -esptool.py -b 1500000 write_flash -z 0 M5Stack-StickS3-XiaoZhi-v2.2.6_0x00.bin -``` +当前 profile 尚未完成真机验收,需验证电源时序、16 kHz 双向音频、按键与屏幕颜色/方向。 +GPIO12、IMU、红外、电池状态、关机手势和低功耗未接入。详见 +[平台移植](../../../../docs/BOARD_PORTING.zh-CN.md)及 +[平台 UI](../../../../docs/PLATFORM_UI.zh-CN.md)。 diff --git a/components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao/README.md b/components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao/README.md index bd997b4..43204b1 100644 --- a/components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao/README.md +++ b/components/mybot_platform/boards/respeaker-flex-xvf3800-circular4-xiao/README.md @@ -1,34 +1,61 @@ -# ReSpeaker Flex XVF3800 Circular-4 with XIAO ESP32S3 +# ReSpeaker Flex XVF3800 Circular-4 与 XIAO ESP32S3 -本说明根据本工程的 [board.cmake](board.cmake)、[board_config.h](board_config.h) 和 -[sdkconfig.defaults](sdkconfig.defaults) 整理;参考工程没有该板型的独立 README。 -硬件介绍见 [Seeed Studio ReSpeaker Flex 文档](https://wiki.seeedstudio.com/cn/respeaker_flex_introduction/)。 +本工程的板型 ID 为 `respeaker-flex-xvf3800-circular4-xiao`,面向搭配 XIAO ESP32S3 的 +Circular-4 音频前端。[官方硬件文档](https://wiki.seeedstudio.com/cn/respeaker_flex_introduction/)。 -## 硬件配置 +## 当前配置 -| 项目 | 当前 profile | +| 项目 | 本工程实现 | | --- | --- | -| MCU | XIAO ESP32S3 | +| SoC | XIAO ESP32S3 上的 ESP32-S3 | | Flash | 8 MB,QIO | | PSRAM | 8 MB,Octal,80 MHz | -| 音频 | XVF3800 麦克风前端与 AIC3104 输出,SDK 使用 16 kHz 单声道 PCM | -| I2S | BCLK GPIO8、WS GPIO7、DOUT GPIO44、DIN GPIO43 | -| I2C | SDA GPIO5、SCL GPIO6,400 kHz;AIC3104 `0x18`、XVF3800 `0x2c` | -| 输入 | XIAO Boot GPIO0 与 XVF3800 板载按键 | +| 分区 | [partitions/v2/8m.csv](../../../../partitions/v2/8m.csv),双 OTA 分区 | +| 控制台 | USB Serial/JTAG;禁用 UART0,GPIO43/GPIO44 已用于 I2S | +| 音频 | XVF3800 前端与 AIC3104 输出;SDK 使用 16 kHz 单声道 signed-16 PCM | +| 输入 | XIAO Boot GPIO0 与 XVF3800 板载按键 GPI0/X1D09 | | 显示 | 无屏幕,不编译 LVGL | -| 控制台 | USB Serial/JTAG;GPIO43/44 已用于 I2S | -| 网络 | Wi-Fi | -| 分区 | `partitions/v2/8m.csv` | +| 摄像头 | 当前 profile 未提供视频接口,不支持开启视频 | -XVF3800 提供硬件 AEC,当前 profile 关闭 Cloud AEC。当前 profile 没有摄像头支持。 +共享 I2C0 为 SDA GPIO5、SCL GPIO6,400 kHz;XVF3800 与 AIC3104 的 7-bit 地址分别为 +`0x2c`、`0x18`。I2S0 为 BCLK GPIO8、WS GPIO7、DOUT GPIO44、DIN GPIO43。 -## 构建 +## 音频与输入前提 -在工程根目录激活 ESP-IDF v5.5.2 后执行: +使用前必须单独为 XVF3800 烧录 Circular-4 **16 kHz 双通道 I2S 固件**;本工程不会代为烧录 +该前端固件。ESP32-S3 工作在 I2S 从机模式,从选定的 32-bit 采集 slot 生成 SDK 所需的 +单声道 signed-16 PCM。XVF3800 提供 AEC、波束成形、AGC 与降噪,因此板级配置禁止开启 +Cloud AEC,避免重复处理。音量由平台软件增益控制并保存在 NVS,初始默认值为 40。 + +短按任一已接入按键开始/结束对话,长按 3 秒进入配网;XVF3800 板载按键通过 I2C resource +36 轮询读取。无 Wi-Fi 信息时自动创建配置热点并播放提示音;手动配网前先停止 MyBot。 +设备没有屏幕,配网与配对状态通过语音和控制台日志查看。 + +## 构建与烧录 + +在仓库根目录使用 ESP-IDF v5.5.2: ```sh +source /path/to/esp-idf/export.sh python3 scripts/build_all.py --board respeaker-flex-xvf3800-circular4-xiao --language both ``` -构建与烧录的完整说明见[项目文档](../../../../README.zh-CN.md#构建)。当前板型的 -实机验证状态见[平台移植文档](../../../../docs/BOARD_PORTING.zh-CN.md)。 +输出 `releases/respeaker-flex-xvf3800-circular4-xiao-zh-CN.bin` 和对应英文固件。 +构建脚本的清理行为见[板卡索引](../README.md)。 + +直接构建中文固件并烧录时,使用独立目录;将串口替换为本机 USB Serial/JTAG 设备: + +```sh +idf.py -B build/respeaker-flex-xvf3800-circular4-xiao \ + -DMYBOT_BOARD=respeaker-flex-xvf3800-circular4-xiao \ + -DSDKCONFIG=build/respeaker-flex-xvf3800-circular4-xiao/sdkconfig \ + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;ci/ptime60.defaults" build +idf.py -B build/respeaker-flex-xvf3800-circular4-xiao -p /dev/ttyACM0 flash monitor +``` + +## 验证范围 + +当前 profile 尚未完成真机验收。需验证 XVF 固件版本、时钟方向、通道路由、双向音频、 +声学处理、按键与重复配网。构建成功不能证明这些硬件行为正确。 +详见[平台移植文档](../../../../docs/BOARD_PORTING.zh-CN.md)及 +[项目说明](../../../../README.zh-CN.md)。 diff --git a/components/mybot_platform/boards/sensecap-watcher/README.md b/components/mybot_platform/boards/sensecap-watcher/README.md index aa91010..c7bdf49 100644 --- a/components/mybot_platform/boards/sensecap-watcher/README.md +++ b/components/mybot_platform/boards/sensecap-watcher/README.md @@ -1,52 +1,66 @@ -# 编译命令 +# SenseCAP Watcher -## 一键编译 +本工程的板型 ID 为 `sensecap-watcher`。[English](README_en.md)。 -```bash -python scripts/release.py sensecap-watcher -``` +## 当前配置 -## 手动配置编译 +| 项目 | 本工程实现 | +| --- | --- | +| SoC | ESP32-S3 | +| Flash | 32 MB,QIO,开启 Quad Flash 32-bit 地址支持 | +| PSRAM | Octal,80 MHz;容量由实际设备检测 | +| 分区 | [partitions/v2/32m-sensecap.csv](../../../../partitions/v2/32m-sensecap.csv),保留出厂数据并提供双 4 MB OTA 分区 | +| 控制台 | ESP-IDF 默认 UART0,板级配置未覆盖控制台类型 | +| 音频 | ES7243E 采集、ES8311 播放;SDK 边界为 16 kHz 单声道 signed-16 PCM | +| 显示 | 412 × 412 SPD2010,QSPI,自动使用共享 LVGL 界面 | +| 输入 | 编码器 GPIO41/GPIO42,按键由 TCA9555 P0.3 读取 | +| 电源 | TCA9555 管理系统、LCD 与 codec/功放电源 | +| 摄像头 | 当前 profile 未提供视频接口,不支持开启视频 | -```bash -idf.py set-target esp32s3 -``` +共享 I2C0 为 SDA GPIO47、SCL GPIO48,TCA9555 的 7-bit 地址为 `0x21`。 +I2S0 为 MCLK GPIO10、BCLK GPIO11、WS GPIO12、DIN GPIO15、DOUT GPIO16。 +LCD QSPI 为 CLK GPIO7、D0 GPIO9、D1 GPIO1、D2 GPIO14、D3 GPIO13、CS GPIO45, +背光为 GPIO8。局部刷新按 4 像素对齐。 -**配置** +短按编码器开始/结束对话,长按 3 秒进入配网;代码将左旋映射为音量增加、右旋映射为音量 +降低,旋转方向需实机确认。音量保存到 NVS。无 Wi-Fi 信息时自动进入配网并显示热点名称、 +播放提示音;手动配网前先停止 MyBot。 -```bash -idf.py menuconfig -``` +## 构建与烧录 -选择板子 +在仓库根目录使用 ESP-IDF v5.5.2: -``` -Xiaozhi Assistant -> Board Type -> SenseCAP Watcher +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board sensecap-watcher --language both ``` -watcher 中一些额外的配置项如下,需要在menuconfig 中选择. +脚本输出 `releases/sensecap-watcher-zh-CN.bin` 和对应英文合并镜像;清理行为见 +[板卡索引](../README.md)。为保留出厂分区,设备烧录请使用下面的独立构建与 `idf.py flash`, +不要直接向整片 Flash 写入合并镜像。 -``` -CONFIG_BOARD_TYPE_SEEED_STUDIO_SENSECAP_WATCHER=y -CONFIG_ESPTOOLPY_FLASHSIZE_32MB=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions/v2/32m.csv" -CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y -CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=n -CONFIG_IDF_EXPERIMENTAL_FEATURES=y -``` +首次烧录前备份出厂分区,将串口替换为本机设备,并妥善保存备份: -## 编译烧入 - -```bash -idf.py -DBOARD_NAME=sensecap-watcher build flash +```sh +python -m esptool --chip esp32s3 --port /dev/ttyUSB0 --baud 2000000 \ + --before default_reset --after hard_reset --no-stub \ + read_flash 0x9000 204800 nvsfactory.bin ``` -注意: 如果当前设备出货之前是SenseCAP 固件(非小智版本),请特别小心处理闪存固件分区地址,以避免错误擦除 SenseCAP Watcher 的自身设备信息(EUI 等),否则设备即使恢复成SenseCAP固件也无法正确连接到 SenseCraft 服务器!所以在刷写固件之前,请务必记录设备的相关必要信息,以确保有恢复的方法! +出厂分区 `nvsfactory` 从 `0x9000` 开始,长度为 200 KiB。禁止执行 `erase-flash` 或使用 +其他板型的分区表。下面的标准烧录流程不会写入 `nvsfactory`: -您可以使用以下命令备份生产信息 +```sh +idf.py -B build/sensecap-watcher \ + -DMYBOT_BOARD=sensecap-watcher \ + -DSDKCONFIG=build/sensecap-watcher/sdkconfig \ + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;ci/ptime60.defaults" build +idf.py -B build/sensecap-watcher -p /dev/ttyUSB0 flash monitor +``` -```bash -# firstly backup the factory information partition which contains the credentials for connecting the SenseCraft server -esptool.py --chip esp32s3 --baud 2000000 --before default_reset --after hard_reset --no-stub read_flash 0x9000 204800 nvsfactory.bin +## 验证范围 -``` \ No newline at end of file +当前 profile 尚未完成真机验收;需验证电源时序、codec 的 16 kHz 工作模式、双向音频、 +编码器、配网和显示。摄像头、触摸、LED、电池状态、关机及低功耗尚未接入。 +详见[平台移植](../../../../docs/BOARD_PORTING.zh-CN.md)及 +[平台 UI](../../../../docs/PLATFORM_UI.zh-CN.md)。 diff --git a/components/mybot_platform/boards/sensecap-watcher/README_en.md b/components/mybot_platform/boards/sensecap-watcher/README_en.md index 27338a8..273c251 100644 --- a/components/mybot_platform/boards/sensecap-watcher/README_en.md +++ b/components/mybot_platform/boards/sensecap-watcher/README_en.md @@ -1,53 +1,72 @@ -# Build Instructions +# SenseCAP Watcher -## One-click Build +The board ID in this project is `sensecap-watcher`. [简体中文](README.md). -```bash -python scripts/release.py sensecap-watcher -c config_en.json -``` +## Current profile -## Manual Configuration and Build +| Item | Implementation | +| --- | --- | +| SoC | ESP32-S3 | +| Flash | 32 MB QIO, with Quad Flash 32-bit addressing enabled | +| PSRAM | Octal, 80 MHz; capacity is detected on the device | +| Partitions | [partitions/v2/32m-sensecap.csv](../../../../partitions/v2/32m-sensecap.csv), retaining factory data and two 4 MB OTA slots | +| Console | ESP-IDF's default UART0; the board does not override the console type | +| Audio | ES7243E capture and ES8311 playback; SDK boundary: 16 kHz mono signed-16 PCM | +| Display | 412 × 412 SPD2010 over QSPI; shared LVGL view selected automatically | +| Input | Rotary encoder on GPIO41/GPIO42; button read through TCA9555 P0.3 | +| Power | TCA9555 controls system, LCD and codec/amplifier rails | +| Camera | No video adapter in this profile; enabling video is unsupported | -```bash -idf.py set-target esp32s3 -``` +Shared I2C0 uses SDA GPIO47 and SCL GPIO48; TCA9555 has the 7-bit address `0x21`. +I2S0 uses MCLK GPIO10, BCLK GPIO11, WS GPIO12, DIN GPIO15 and DOUT GPIO16. +LCD QSPI uses CLK GPIO7, D0 GPIO9, D1 GPIO1, D2 GPIO14, D3 GPIO13 and CS GPIO45; +the backlight is on GPIO8. Partial updates are aligned to four pixels. -**Configuration** +A short encoder-button press starts/stops a conversation; a three-second hold requests Wi-Fi +provisioning. The code maps left rotation to volume up and right rotation to volume down; +verify physical rotation on the device. Volume is persisted in NVS. With no saved Wi-Fi +credentials, provisioning starts automatically, displays the hotspot name and plays a prompt. +Manual provisioning stops MyBot before entering setup. -```bash -idf.py menuconfig -``` +## Build and flash -Select the board: +Use ESP-IDF v5.5.2 from the repository root: -``` -Xiaozhi Assistant -> Board Type -> SenseCAP Watcher +```sh +source /path/to/esp-idf/export.sh +python3 scripts/build_all.py --board sensecap-watcher --language both ``` -There are some additional configuration options for the watcher. Please select them in menuconfig: +The script produces `releases/sensecap-watcher-zh-CN.bin` and its English merged image. +See the [board index](../README.md) for cleanup behavior. To preserve factory data, flash this +device through the dedicated build and `idf.py flash` below; do not write a merged image +across the entire Flash. -``` -CONFIG_BOARD_TYPE_SEEED_STUDIO_SENSECAP_WATCHER=y -CONFIG_ESPTOOLPY_FLASHSIZE_32MB=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions/v2/32m.csv" -CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH=y -CONFIG_ESPTOOLPY_FLASH_MODE_AUTO_DETECT=n -CONFIG_IDF_EXPERIMENTAL_FEATURES=y -CONFIG_LANGUAGE_EN_US=y -CONFIG_SR_WN_WN9_JARVIS_TTS=y +Before the first flash, back up the factory partition. Replace the serial port with your +device's port and keep the backup safe: + +```sh +python -m esptool --chip esp32s3 --port /dev/ttyUSB0 --baud 2000000 \ + --before default_reset --after hard_reset --no-stub \ + read_flash 0x9000 204800 nvsfactory.bin ``` -## Build and Flash +The `nvsfactory` partition starts at `0x9000` and occupies 200 KiB. Do not run `erase-flash` +or substitute another board's partition table. Standard flashing below does not write +`nvsfactory`: -```bash -idf.py -DBOARD_NAME=sensecap-watcher-en build flash +```sh +idf.py -B build/sensecap-watcher-en-US \ + -DMYBOT_BOARD=sensecap-watcher \ + -DSDKCONFIG=build/sensecap-watcher-en-US/sdkconfig \ + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;ci/ptime60.defaults;ci/en-us.defaults" build +idf.py -B build/sensecap-watcher-en-US -p /dev/ttyUSB0 flash monitor ``` -Note: If your device was previously shipped with the SenseCAP firmware (not the Xiaozhi version), please be very careful with the flash partition addresses to avoid accidentally erasing the device information (such as EUI) of the SenseCAP Watcher. Otherwise, even if you restore the SenseCAP firmware, the device may not be able to connect to the SenseCraft server correctly! Therefore, before flashing the firmware, be sure to record the necessary device information to ensure you have a way to recover it! +## Validation scope -You can use the following command to back up the factory information: - -```bash -# Firstly backup the factory information partition which contains the credentials for connecting the SenseCraft server -esptool.py --chip esp32s3 --baud 2000000 --before default_reset --after hard_reset --no-stub read_flash 0x9000 204800 nvsfactory.bin -``` +This profile has not completed real-device acceptance. Verify power sequencing, the codecs' +16 kHz mode, bidirectional audio, the encoder, provisioning and the display. Camera, touch, +LEDs, battery status, shutdown and low-power support are not integrated. See +[board porting](../../../../docs/BOARD_PORTING.md) and +[platform UI](../../../../docs/PLATFORM_UI.md). diff --git a/components/mybot_platform/boards/xingzhi-cube-1.54tft-wifi/README.md b/components/mybot_platform/boards/xingzhi-cube-1.54tft-wifi/README.md index 3817c19..d9d380f 100644 --- a/components/mybot_platform/boards/xingzhi-cube-1.54tft-wifi/README.md +++ b/components/mybot_platform/boards/xingzhi-cube-1.54tft-wifi/README.md @@ -1,32 +1,71 @@ # 行者 Cube 1.54 TFT Wi-Fi -本说明根据本工程的 [board.cmake](board.cmake)、[board_config.h](board_config.h) 和 -[sdkconfig.defaults](sdkconfig.defaults) 整理;参考工程没有该板型的独立 README。 +本工程的板型 ID 为 `xingzhi-cube-1.54tft-wifi`。接线和能力由本目录的 +[board_config.h](board_config.h)、[board.cmake](board.cmake)、 +[board.c](board.c) 和 [sdkconfig.defaults](sdkconfig.defaults) 定义。 -## 硬件配置 +## 硬件与已接入功能 -| 项目 | 当前 profile | +| 项目 | 当前实现 | | --- | --- | -| MCU | ESP32-S3 | -| Flash | 16 MB,QIO;实际容量待实机核对 | -| PSRAM | Octal,80 MHz;实际容量待实机核对 | -| 显示 | ST7789,240×240,SPI mode 3;GPIO13 PWM 背光 | -| 音频 | 麦克风与扬声器使用独立 I2S,16 kHz 单声道 | -| 输入 | Boot GPIO0、音量加 GPIO40、音量减 GPIO39 | -| 电源保持 | GPIO21 | -| 网络 | Wi-Fi | -| 分区 | `partitions/v2/16m.csv` | +| 主控 | ESP32-S3 | +| Flash | 16 MB QIO profile;实际容量需在目标设备核对 | +| PSRAM | Octal,80 MHz;实际容量需在目标设备核对 | +| 分区 | [16 MB 分区表](../../../../partitions/v2/16m.csv),双 OTA 应用分区及 8 MB assets 分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台配置,使用 UART0 | +| 音频 | 独立麦克风/扬声器 I2S,16 kHz 单声道;软件音量及 NVS 持久化 | +| 显示 | ST7789,240×240,SPI3 mode 3,40 MHz;共享 LVGL UI | +| 输入 | Boot 与音量加减按键;无触摸输入 | +| 电源保持 | GPIO21,整个进程运行期间保持高电平 | +| 网络 / 视频 | Wi-Fi;未接入摄像头,不支持开启 `CONFIG_MYBOT_ENABLE_VIDEO` | -麦克风 WS/BCLK/DIN 分别为 GPIO4/5/6,扬声器 DOUT/BCLK/WS 分别为 GPIO7/15/16。 -显示引脚及方向配置见 `board_config.h`。当前 profile 没有摄像头支持。 +## 引脚与上电行为 -## 构建 +| 功能 | 引脚 | +| --- | --- | +| 麦克风 I2S1 RX | WS GPIO4、BCLK GPIO5、DIN GPIO6 | +| 扬声器 I2S0 TX | DOUT GPIO7、BCLK GPIO15、WS GPIO16 | +| Boot / 音量加 / 音量减 | GPIO0 / GPIO40 / GPIO39,低电平有效 | +| LCD | MOSI GPIO10、SCLK GPIO9、CS GPIO14、DC GPIO8、RESET GPIO18 | +| 背光 | GPIO13,LEDC 5 kHz、13-bit PWM,默认 60% | + +板级初始化先解除 GPIO21 的 RTC hold、恢复普通 GPIO 并拉高以保持系统供电,再初始化 +背光、屏幕和常驻按键。面板使用 RGB 顺序、零偏移、不镜像并启用颜色反转。 + +SDK 音频边界为 16 kHz、单声道、signed-16 PCM;物理标准 I2S 使用 32-bit mono left slot, +由公共 raw I2S 驱动完成转换。播放通过公共 PCM 缓冲连续送入 I2S,初始软件音量默认 70, +后续从 NVS 恢复。当前实现未接入电池/充电监测、关机、休眠或低功耗。 + +## 配网与操作 + +- 短按 Boot:就绪时开始对话,对话中结束对话。 +- 长按 Boot 3 秒:请求配网;应用先停止 mybot,再进入配网模式。 +- 短按音量加减键:调节扬声器音量并持久化。 + +没有 Wi-Fi 凭据时自动进入配网。LCD 显示实际热点名称 `mybot-xxxx`,长文字自动滚动; +连接该热点后访问 `http://192.168.4.1` 配置 Wi-Fi。进入配网时播放对应语言提示音,取得 +可用 IP 后才启动 mybot。 -在工程根目录激活 ESP-IDF v5.5.2 后执行: +## 构建与烧录 + +在工程根目录激活 ESP-IDF v5.5.2 后构建中英文固件: ```sh python3 scripts/build_all.py --board xingzhi-cube-1.54tft-wifi --language both ``` -构建与烧录的完整说明见[项目文档](../../../../README.zh-CN.md#构建)。当前板型的 -实机验证状态见[平台移植文档](../../../../docs/BOARD_PORTING.zh-CN.md)。 +合并固件输出为 `releases/xingzhi-cube-1.54tft-wifi-zh-CN.bin` 和对应的 `en-US.bin`。 +批量脚本默认清理其专用构建和输出目录,详见[构建说明](../../../../README.zh-CN.md#构建)。 + +使用独立构建目录和 sdkconfig 的手动构建、烧录示例,将 `PORT` 替换为本机串口设备: + +```sh +idf.py -B build/xingzhi-cube-1.54tft-wifi \ + -DMYBOT_BOARD=xingzhi-cube-1.54tft-wifi \ + -DSDKCONFIG=build/xingzhi-cube-1.54tft-wifi/sdkconfig build +idf.py -B build/xingzhi-cube-1.54tft-wifi -p PORT flash monitor +``` + +构建成功不代表实机验收。实际 Flash/PSRAM 容量、GPIO21 供电保持、PWM 背光、显示方向、 +音频速度/音调和同时采集播放均需在目标硬件核对;验收范围见 +[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/zhengchen-1.54tft-ml307/README.md b/components/mybot_platform/boards/zhengchen-1.54tft-ml307/README.md index a7f289b..223c2da 100644 --- a/components/mybot_platform/boards/zhengchen-1.54tft-ml307/README.md +++ b/components/mybot_platform/boards/zhengchen-1.54tft-ml307/README.md @@ -1,45 +1,75 @@ -# 产品相关介绍网址 +# 征辰 1.54 TFT ML307 -```http -https://e.tb.cn/h.6Gl2LC7rsrswQZp?tk=qFuaV9hzh0k CZ356 -``` +本工程的板型 ID 为 `zhengchen-1.54tft-ml307`。硬件参数以本目录的 +[board_config.h](board_config.h)、[board.cmake](board.cmake) 和 +[sdkconfig.defaults](sdkconfig.defaults) 为准。 -# 编译配置命令 +## 硬件与已接入功能 -**配置编译目标为 ESP32S3:** +| 项目 | 当前实现 | +| --- | --- | +| 主控 | ESP32-S3 | +| Flash | 16 MB,QIO | +| PSRAM | Octal,80 MHz;实际容量以启动日志为准 | +| 分区 | [16 MB 分区表](../../../../partitions/v2/16m.csv),双 OTA 应用分区及 8 MB assets 分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台配置,使用 UART0 | +| 音频 | 独立麦克风/扬声器 I2S,16 kHz 单声道;软件音量及 NVS 持久化 | +| 显示 | ST7789,240×240,SPI3 mode 3,40 MHz;共享 LVGL UI | +| 输入 | Boot 与音量加减按键;无触摸输入 | +| 网络 | Wi-Fi 配网与联网 | +| 视频 | 未接入,不支持开启 `CONFIG_MYBOT_ENABLE_VIDEO` | -```bash -idf.py set-target esp32s3 -``` +ML307 的 RX GPIO11、TX GPIO12 仅在头文件中保留定义;当前 profile 没有 Modem 驱动、 +PPP 或 4G 联网实现,网络仍使用 Wi-Fi。 -**打开 menuconfig:** +## 引脚与上电行为 -```bash -idf.py menuconfig -``` +| 功能 | 引脚 | +| --- | --- | +| 麦克风 I2S1 RX | WS GPIO4、BCLK GPIO5、DIN GPIO6 | +| 扬声器 I2S0 TX | DOUT GPIO7、BCLK GPIO15、WS GPIO16 | +| Boot / 音量加 / 音量减 | GPIO0 / GPIO10 / GPIO39,低电平有效 | +| LCD | MOSI GPIO41、SCLK GPIO42、CS GPIO21、DC GPIO40、RESET GPIO45 | +| 显示电源 / 背光 | GPIO2 / GPIO20 | -**选择板子:** +板级初始化先拉高 GPIO2,关闭背光后初始化屏幕、显示启动页并注册按键。GPIO20 使用开关 +控制背光,默认点亮;没有 PWM 调光。该板型与征辰 Wi-Fi 板共用 +[板级生命周期](../zhengchen-1.54tft-common/board.c)。 -``` -Xiaozhi Assistant -> Board Type -> zhengchen-1.54tft-ml307 -``` +SDK 音频边界为 16 kHz、单声道、signed-16 PCM;物理标准 I2S 使用 32-bit mono left slot, +由平台驱动完成数据转换。播放通过公共 PCM 缓冲连续送入 I2S,初始软件音量默认 70,后续 +从 NVS 恢复。具体实现见[音频播放说明](../../../../docs/AUDIO_PLAYBACK.zh-CN.md)。 -``` +## 配网与操作 -**编译:** +- 短按 Boot:就绪时开始对话,对话中结束对话。 +- 长按 Boot 3 秒:请求配网;应用先停止 mybot,再进入配网模式。 +- 短按音量加减键:调节扬声器音量并持久化。 -bash -idf.py build -``` +没有 Wi-Fi 凭据时自动进入配网。LCD 显示实际热点名称 `mybot-xxxx`,长文字自动滚动; +连接该热点后访问 `http://192.168.4.1` 配置 Wi-Fi。进入配网时播放对应语言提示音,取得 +可用 IP 后才启动 mybot。 -**下载:** -idf.py build flash monitor +## 构建与烧录 -进行下载和显示日志 +在工程根目录激活 ESP-IDF v5.5.2 后构建中英文固件: +```sh +python3 scripts/build_all.py --board zhengchen-1.54tft-ml307 --language both +``` -**固件生成:** +合并固件输出为 `releases/zhengchen-1.54tft-ml307-zh-CN.bin` 和对应的 `en-US.bin`。 +批量脚本默认清理其专用构建和输出目录,详见[构建说明](../../../../README.zh-CN.md#构建)。 -```bash -idf.py merge-bin +需要使用 `idf.py` 逐步构建、烧录时,使用独立的构建目录和 sdkconfig: + +```sh +idf.py -B build/zhengchen-1.54tft-ml307 \ + -DMYBOT_BOARD=zhengchen-1.54tft-ml307 \ + -DSDKCONFIG=build/zhengchen-1.54tft-ml307/sdkconfig build +idf.py -B build/zhengchen-1.54tft-ml307 -p /dev/tty.wchusbserial1430 flash monitor ``` + +上述串口名为该征辰板在 macOS 上的设备名,其他系统按实际枚举结果选择端口。构建成功 +不代表实机验收;音频、屏幕颜色/方向、按键及重复配网应在目标设备上验证,参见 +[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/boards/zhengchen-1.54tft-wifi/README.md b/components/mybot_platform/boards/zhengchen-1.54tft-wifi/README.md index 20bd9a6..fa39bb2 100644 --- a/components/mybot_platform/boards/zhengchen-1.54tft-wifi/README.md +++ b/components/mybot_platform/boards/zhengchen-1.54tft-wifi/README.md @@ -1,45 +1,73 @@ -# 产品相关介绍网址 - -```http -https://e.tb.cn/h.6Gl2LC7rsrswQZp?tk=qFuaV9hzh0k CZ356 -``` - -# 编译配置命令 - -**配置编译目标为 ESP32S3:** - -```bash -idf.py set-target esp32s3 -``` - -**打开 menuconfig:** - -```bash -idf.py menuconfig -``` - -**选择板子:** - -``` -Xiaozhi Assistant -> Board Type -> zhengchen-1.54tft-wifi +# 征辰 1.54 TFT Wi-Fi + +本工程的板型 ID 为 `zhengchen-1.54tft-wifi`。硬件参数以本目录的 +[board_config.h](board_config.h)、[board.cmake](board.cmake) 和 +[sdkconfig.defaults](sdkconfig.defaults) 为准。 + +## 硬件与已接入功能 + +| 项目 | 当前实现 | +| --- | --- | +| 主控 | ESP32-S3 | +| Flash | 16 MB,QIO | +| PSRAM | Octal,80 MHz;实际容量以启动日志为准 | +| 分区 | [16 MB 分区表](../../../../partitions/v2/16m.csv),双 OTA 应用分区及 8 MB assets 分区 | +| 控制台 | 未覆盖 ESP-IDF 默认控制台配置,使用 UART0 | +| 音频 | 独立麦克风/扬声器 I2S,16 kHz 单声道;软件音量及 NVS 持久化 | +| 显示 | ST7789,240×240,SPI3 mode 3,40 MHz;共享 LVGL UI | +| 输入 | Boot 与音量加减按键;无触摸输入 | +| 网络 | Wi-Fi 配网与联网 | +| 视频 | 未接入,不支持开启 `CONFIG_MYBOT_ENABLE_VIDEO` | + +## 引脚与上电行为 + +| 功能 | 引脚 | +| --- | --- | +| 麦克风 I2S1 RX | WS GPIO4、BCLK GPIO5、DIN GPIO6 | +| 扬声器 I2S0 TX | DOUT GPIO7、BCLK GPIO15、WS GPIO16 | +| Boot / 音量加 / 音量减 | GPIO0 / GPIO10 / GPIO39,低电平有效 | +| LCD | MOSI GPIO41、SCLK GPIO42、CS GPIO21、DC GPIO40、RESET GPIO45 | +| 显示电源 / 背光 | GPIO2 / GPIO20 | + +板级初始化先拉高 GPIO2,关闭背光后初始化屏幕、显示启动页并注册按键。GPIO20 使用开关 +控制背光,默认点亮;没有 PWM 调光。该板型与征辰 ML307 板共用 +[板级生命周期](../zhengchen-1.54tft-common/board.c),本 profile 不配置或访问 GPIO11、 +GPIO12,也不包含蜂窝网络能力。 + +SDK 音频边界为 16 kHz、单声道、signed-16 PCM;物理标准 I2S 使用 32-bit mono left slot, +由平台驱动完成数据转换。播放通过公共 PCM 缓冲连续送入 I2S,初始软件音量默认 70,后续 +从 NVS 恢复。电池 ADC、充电状态、休眠与低功耗未在该 profile 中实现。 + +## 配网与操作 + +- 短按 Boot:就绪时开始对话,对话中结束对话。 +- 长按 Boot 3 秒:请求配网;应用先停止 mybot,再进入配网模式。 +- 短按音量加减键:调节扬声器音量并持久化。 + +没有 Wi-Fi 凭据时自动进入配网。LCD 显示实际热点名称 `mybot-xxxx`,长文字自动滚动; +连接该热点后访问 `http://192.168.4.1` 配置 Wi-Fi。进入配网时播放对应语言提示音,取得 +可用 IP 后才启动 mybot。 + +## 构建与烧录 + +在工程根目录激活 ESP-IDF v5.5.2 后构建中英文固件: + +```sh +python3 scripts/build_all.py --board zhengchen-1.54tft-wifi --language both ``` -``` +合并固件输出为 `releases/zhengchen-1.54tft-wifi-zh-CN.bin` 和对应的 `en-US.bin`。 +批量脚本默认清理其专用构建和输出目录,详见[构建说明](../../../../README.zh-CN.md#构建)。 -**编译:** +需要使用 `idf.py` 逐步构建、烧录时,使用独立的构建目录和 sdkconfig: -bash -idf.py build +```sh +idf.py -B build/zhengchen-1.54tft-wifi \ + -DMYBOT_BOARD=zhengchen-1.54tft-wifi \ + -DSDKCONFIG=build/zhengchen-1.54tft-wifi/sdkconfig build +idf.py -B build/zhengchen-1.54tft-wifi -p /dev/tty.wchusbserial1430 flash monitor ``` -**下载:** -idf.py build flash monitor - -进行下载和显示日志 - - -**固件生成:** - -```bash -idf.py merge-bin -``` +上述串口名为该征辰板在 macOS 上的设备名,其他系统按实际枚举结果选择端口。构建成功 +不代表实机验收;音频、屏幕颜色/方向、按键及重复配网应在目标设备上验证,参见 +[平台移植说明](../../../../docs/BOARD_PORTING.zh-CN.md)。 diff --git a/components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_LICENSE.txt b/components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_LICENSE.txt deleted file mode 100644 index bea3f83..0000000 --- a/components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_LICENSE.txt +++ /dev/null @@ -1,25 +0,0 @@ -Layout reference: https://github.com/78/xiaozhi-esp32 -Reference files: main/display/lcd_display.cc and main/display/lvgl_display/lvgl_theme.cc - -MIT License - -Copyright (c) 2025 Shenzhen Xinzhi Future Technology Co., Ltd. -Copyright (c) 2025 Project Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_view.cc b/components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_view.cc index f88fc99..852057f 100644 --- a/components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_view.cc +++ b/components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_view.cc @@ -1,7 +1,5 @@ /* SPDX-License-Identifier: MIT */ /* Copyright (c) 2026 Project Contributors */ -/* Status/content/notification layout adapted from the MIT-licensed display - * reference identified in LVGL_VIEW_LICENSE.txt. */ #include "display/lvgl_view.h" #include "display/lvgl_assets.h" #include "network/wifi_control.h" diff --git a/components/mybot_stack/mybot_sdk/mybot/CHANGELOG.md b/components/mybot_stack/mybot_sdk/mybot/CHANGELOG.md index 725379e..5f66c96 100644 --- a/components/mybot_stack/mybot_sdk/mybot/CHANGELOG.md +++ b/components/mybot_stack/mybot_sdk/mybot/CHANGELOG.md @@ -4,6 +4,10 @@ This project follows Semantic Versioning. ## [Unreleased] +### Changed + +- Refresh the Chinese and English pairing-code prompt and digit audio. + ## [1.3.0] - 2026-10-19 ### Added diff --git a/components/mybot_stack/mybot_sdk/mybot/THIRD_PARTY_NOTICES.md b/components/mybot_stack/mybot_sdk/mybot/THIRD_PARTY_NOTICES.md index 885c10b..e52c717 100644 --- a/components/mybot_stack/mybot_sdk/mybot/THIRD_PARTY_NOTICES.md +++ b/components/mybot_stack/mybot_sdk/mybot/THIRD_PARTY_NOTICES.md @@ -45,41 +45,6 @@ also remain in force. `src/support/mybot_json.c` and `src/internal/mybot_json.h` are namespaced derivatives of cJSON. They retain the MIT license and Dave Gamble copyright notice in the source. -## xiaozhi-esp32 announcement assets - -`assets/locales/` contains raw 16 kHz mono s16 PCM files decoded from the xiaozhi-esp32 project -(https://github.com/78/xiaozhi-esp32), which is distributed under the MIT License -(c) 2025 Shenzhen Xinzhi Future Technology Co., Ltd. and Project Contributors. The pairing-code -prompt and digit sounds are derived from that project's `main/assets/locales//*.ogg` -assets. The full MIT notice is included below and must accompany any redistribution of these files. - - MIT License - - Copyright (c) 2025 Shenzhen Xinzhi Future Technology Co., Ltd. - Copyright (c) 2025 Project Contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - -The CMake install target installs this file as `share/doc/mybot/THIRD_PARTY_NOTICES.md`; it does not -install the optional root `assets/` PCM files. A product that copies those assets must copy this -notice with them. - ## Release requirement Publish a release artifact containing the bundled Agora binary only after its license and written From 7abc0afc55b33b1dfebb478a5a62432d377502e5 Mon Sep 17 00:00:00 2001 From: shangjinlong Date: Wed, 21 Oct 2026 17:48:14 +0800 Subject: [PATCH 2/3] fix(audio): refresh Wi-Fi provisioning prompts --- CHANGELOG.md | 6 ++-- THIRD_PARTY_NOTICES.md | 2 +- VENDORED_SOURCES.md | 4 +-- components/mybot_platform/assets/README.md | 5 +++ .../assets/locales/SOURCES.json | 30 +++++++++++++++++- .../assets/locales/en-US/wificonfig.ogg | Bin 6661 -> 7132 bytes .../assets/locales/zh-CN/wificonfig.ogg | Bin 4445 -> 6704 bytes 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76a2715..d26986c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,9 +75,11 @@ Versioning and Conventional Commits. ### Changed -- Refresh the SDK snapshot to `7854c1d` (version 1.3.0) and update all 22 Chinese/English pairing +- Update the Chinese and English Wi-Fi provisioning prompts from the BK7259 release `ab25833`, + using the original 20 ms mono Opus/Ogg files with recorded hashes and decoded frame counts. +- Refresh the SDK snapshot to `3f9a1ad` (version 1.3.0) and update all 22 Chinese/English pairing prompt and digit recordings from its PCM assets. Encode 20 ms mono Opus/Ogg for the existing - firmware decoder, record source/output hashes, and retain the existing Wi-Fi provisioning audio. + firmware decoder and record source/output hashes. - Sync the MyBot SDK snapshot to the v1.3.0 release (`58f0ef9`) and report version 1.3.0 from the ESP-IDF wrapper. Changes since the previous snapshot are release metadata and comments. - Sync the MyBot SDK snapshot to `39d5ed1` (1.2.0 plus post-release fixes), accepting cloud diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 377d3bb..3916031 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -5,7 +5,7 @@ It does not replace third-party terms. This file is informational and is not leg | Component | Terms | Location | | --- | --- | --- | -| mybot SDK 1.3.0 + post-release asset refresh (`7854c1d`) | Apache-2.0; bundled JSON parser portions MIT | `components/mybot_stack/mybot_sdk/mybot` | +| mybot SDK 1.3.0 + post-release updates (`3f9a1ad`) | Apache-2.0; bundled JSON parser portions MIT | `components/mybot_stack/mybot_sdk/mybot` | | AOSL (`84e0860`) | Bundled license: Apache-2.0 text plus additional deployment restrictions | `components/mybot_stack/aosl` | | Agora RTSA Lite for ESP32-S3 1.10.1 (build 1270872) | Separate Agora distribution terms | `components/mybot_stack/agora_rtc` | | esp-wifi-connect 3.2.2 | MIT | `components/esp-wifi-connect` | diff --git a/VENDORED_SOURCES.md b/VENDORED_SOURCES.md index 39af3f7..5223f53 100644 --- a/VENDORED_SOURCES.md +++ b/VENDORED_SOURCES.md @@ -5,7 +5,7 @@ redistribution terms are documented separately in [THIRD_PARTY_NOTICES.md](THIRD | Path | Source | Pinned revision | | --- | --- | --- | -| `components/mybot_stack/mybot_sdk/mybot` | `github.com/junlon2006/mybot` | v1.3.0 + post-release asset refresh, commit `7854c1d5798004485aa1947ff55116bdb7ab0237` | +| `components/mybot_stack/mybot_sdk/mybot` | `github.com/junlon2006/mybot` | v1.3.0 + post-release updates, commit `3f9a1add55f1b946d59655b5b88f4662d780fb31` | | `components/mybot_stack/aosl` | `github.com/AgoraIO-Community/aosl` | v1.0.4 + post-release fixes, commit `84e086084ebcd0ae2455a0ce5721950c5fe2e656` | | `components/mybot_stack/agora_rtc` | Agora RTSA Lite package archive | v1.10.1, build 1270872 (`20260828_194128`) | | `components/esp-wifi-connect` | `github.com/78/esp-wifi-connect` | 3.2.2, commit `c24b97c194e6b4a1d7be0237b3c28980661cac1e` | @@ -31,7 +31,7 @@ redistribution terms are documented separately in [THIRD_PARTY_NOTICES.md](THIRD | `components/cmake_utilities` | ESP Component Registry `espressif/cmake_utilities` | 0.5.0 | | `components/m5pm1` | ESP Component Registry `m5stack/m5pm1` | 1.0.7, content hash `731f79d0629e245787440f5419aac5d7a82befeb25f97689d6a2d0331a24a72d` | | Pairing `prompt.ogg` and `0.ogg` through `9.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot`, `assets/locales` | commit `7854c1d5798004485aa1947ff55116bdb7ab0237`; 16 kHz mono s16 PCM converted to 20 ms Opus/Ogg; source/output SHA-256 and encoding command in `components/mybot_platform/assets/locales/SOURCES.json` | -| Wi-Fi `wificonfig.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot-bk7258` | commit `2577b5977a9f137855a7acf1fcdcd4040c5db2ea` | +| Wi-Fi `wificonfig.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot-bk7259`, `projects/mybot/assets/locales` | release commit `ab258333f0cc8b8d8e9b338e96a8c2b4296d9655`; copied byte for byte; SHA-256 and frame counts in `components/mybot_platform/assets/locales/SOURCES.json` | | `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_fonts.c`, `components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt` | `github.com/lvgl/lvgl`, `scripts/built_in_font/SourceHanSansSC-Normal.otf` | LVGL 9.5.0 source font SHA-256 `1ee89e1669362dee13851129c0a8a791a87521eb4148e5efbf5d26596738e25b`; generated 20 px, 4 bpp static UI subset | | `components/mybot_platform/assets/ui/noto_emoji`, `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_assets.c` | Noto Color Emoji font glyphs rasterized by `github.com/78/noto-fonts`, `png/noto-color-emoji_64` | 2.0.0, commit `d45dbc64052d57048f20ab1770074172ce9eb53b`; per-image SHA-256 values and glyph provenance in `assets/ui/noto_emoji/SOURCES.json` | diff --git a/components/mybot_platform/assets/README.md b/components/mybot_platform/assets/README.md index 4068420..6f58c38 100644 --- a/components/mybot_platform/assets/README.md +++ b/components/mybot_platform/assets/README.md @@ -17,6 +17,11 @@ little-endian PCM at commit `7854c1d5798004485aa1947ff55116bdb7ab0237`. They use [locales/SOURCES.json](locales/SOURCES.json) records the source revision, source/output SHA-256, sample counts, encoder version and full encoding command. +The two `wificonfig.ogg` recordings are copied byte for byte from the BK7259 release at commit +`ab258333f0cc8b8d8e9b338e96a8c2b4296d9655`. They use the same mono, 20 ms Opus format required by +the firmware. Their separate source revision, hashes and frame counts are recorded under +`wifi_provisioning` in `locales/SOURCES.json`. + To regenerate a pairing asset, obtain `assets/locales//.pcm` from the pinned SDK commit and use FFmpeg 6.1.1 with libopus 1.4. Run the command below for each locale (`en-US`, `zh-CN`) and sound (`prompt`, `0` through `9`), substituting the input and output paths: diff --git a/components/mybot_platform/assets/locales/SOURCES.json b/components/mybot_platform/assets/locales/SOURCES.json index 6491e31..e93fd26 100644 --- a/components/mybot_platform/assets/locales/SOURCES.json +++ b/components/mybot_platform/assets/locales/SOURCES.json @@ -227,5 +227,33 @@ "source_frames": 51840, "bytes": 10172 } - ] + ], + "wifi_provisioning": { + "source": { + "repository": "https://github.com/junlon2006/mybot-bk7259", + "ref": "release/v4.0.1-mybot-r2", + "commit": "ab258333f0cc8b8d8e9b338e96a8c2b4296d9655", + "format": "ogg_opus", + "sample_rate_hz": 16000, + "channels": 1, + "frame_duration_ms": 20 + }, + "conversion": "none; copied byte for byte from the pinned Git objects", + "files": [ + { + "file": "en-US/wificonfig.ogg", + "source_file": "projects/mybot/assets/locales/en-US/wificonfig.ogg", + "sha256": "a0af04e8a9e06dfc8fc8990d12bdee7c187fc61710465a92c1d00bc6848a8e75", + "frames": 39168, + "bytes": 7132 + }, + { + "file": "zh-CN/wificonfig.ogg", + "source_file": "projects/mybot/assets/locales/zh-CN/wificonfig.ogg", + "sha256": "c96e85c37533c8115a991c4614c0268a9e0c762c76e6e278a570ff0866590145", + "frames": 36480, + "bytes": 6704 + } + ] + } } diff --git a/components/mybot_platform/assets/locales/en-US/wificonfig.ogg b/components/mybot_platform/assets/locales/en-US/wificonfig.ogg index 216e948c89bb7a9abe1318cc5944f640f5e9f580..865dbe0dd4dde5c28bc391a5a4c94f2570fac87c 100644 GIT binary patch delta 7086 zcmYM1bx_n_xW;KDcj@l#?goV~u%M)Lmmo+t?gG*s(%mdwQc9PUbhlCx3rI^`e|PT8 zJ^!5Z%slhXIe(n@{XAj9YhskI?d^4tP>}v_InSDL{&#GgFQiDKWWxPVBmdJ(;Njm% zs+!RM^nd0a_Sq~!LJ=`h2{~b2DQRITWhH45HX#W`5lLwUNg)AgMP(@wMQL$aMOjfX zHYs^o*;g+m6nFug{lMq(Dj%O!Oi!jg?CNxRAUsutcL@E(1J`*%d-N^=4NfVkFy+~P zC-squ^ih-Dpk$kA9m*F6exj8@Z+j>f5@Juv4hFyyaiRiG0_|qEYZrFQ%RdlAqT0bD zc^N7wWJVMr;#Pbl2a88)Ki#GBbi_Bex#NgpEXQ@?fl$&^M>hY^NO2yJALANXX{sH_ z>a&oup_^@+QvQ09+R)L_!u5ra6!V1UbO%2VxpGJHAPk6$kr!irg}8zJfc7<#4b!zn z*v5)0VN*k%74FRJDHrh#X4?g1{a1LK$69fkKVBP@>KCU71`=)oArZY@YwF@JT)Rsn z1w03YwncK2*Yh0CG$AVjZqZff&>v#UUJg?jSPFP^5v31*`X<^S1!J zD;>Yr2w!5j1F!Pq*4+CeC`{A+0%PZ8aqwUYE@Umo{;A$F80%~TDnV;9%An$h_4N#> z{Jh892`z2({((S`;IcTA^wN}GwzwlN{G&PJc5O^Xq$?q(*|LT~OM!Mm55TF3!tz#E zod#kcJXv^~-9@b)4#>_W2F>+3q)W?O7onfWTM}o|H8``(IMWB9nU>_^DsB{?3TOQ1 zfEuwY%h1SZYWKlu{(*Pfsb`wObTFZ`O@n6L6mDzOdng&o_NF{r%{RB`Fgag`Z^Hxi z@Dz3BKI{_-px&8xmy%7(*J0V@8?bBCoKmZb@Yy{$K%3xSkI)yxBL!ylcV#95WVb+# z27$X_w0}*2x?bpcL~FDeSRt_ah0Joe7D}7>s4vA{zLX!Yfy!mgnPi|oa*C2MD?Qgx zwtnGkZ~VRiseSAA{aO#u)rI%IIu4ir`fBa6wr^GBaT}gl3%n4L#O5Zgtd^FS6Y5y~ z@ku|MV`B@guxo4qr0Ki&T1z3-kh826n}j?5U6)_11prO3=@xIH0BQr2_?xE+)pSyg zXp zB7R~x0nkqZQ0UapVYP%`6fYV1-VadV%3c;iixT{$;ll5b$B zYkQ!6v5@+pBeY|kQvj5)gpD?HywZ7)(Hm|hZ`AX##?sikNzRJ95tuEF{@!JiSnIrd zPM=1nZD)j!YpotwA6}5ac04N&6wz`zLH&n;;!!gxh|36J$h@xAQZFm>((<~co`PGT z#G*3_D=}`Vh<0ZfhW8{>2&_vP2AO;wzQ#BM3XI@Ck_=xRs8v^U~n29ne5wx*_t;P^UlM7id!ca#Y$+`Ohs2tE_Q?y z2t^N$|2#p3d;W9Rj;}Yw?#`SF_SWh&Va(Bmb^fD^+q4^4zdfC}nGn@L-u5AQ zkcX9RD=43{^3ue6DvZp%0uZjWsl6ZPeG@W00i}`xpb_7=@WiAEgwFO^RWIm1F3dq> zF;{4+Rr$O~1iJuWYgn1aZeQTsM$Vxme=QJ-Q#+7Fod(Yn z0#0riP&ze5_xF_PP;H79B5-cQhD|KHMH;t}U;YRD@-2O;zHXb@7baZ<{VvjDO(l`G zSU1g7Hz@a7G7j+u$O@dNkuWR*OrsH6t)vgV7B-M;7lv;^w)%G>xJ2o=dTvvac zM%A*~p9bfrQE18x3eR{ZkZ~~TikIy^={eLqIbP&<@KBjL{N2Y$4eR%j+%CC|`>URK zu67xpOzICT^FwTy=FO7z1YQNkKg4~oX-$EUML8CP`5rEgM_`sg@w%tz>)qay3zljg zUz;WD&qK7ul=z@%3w@sjUdUW#8VGZB_GSq=?i8f-3{?)9?_e8{2P$KV74(S9lgk)~ zF}|iM8Fv^;a(qmwN_*<8ax^~?I{5krj$Cu;T#8`AGV0RNy%5A-vJV@K5m29XBi{uo zg9P5@67e$?%`u2SpL`OhNf0ZGXk2MgipLaS~k24_EnRJwr)*`-wf7iI8YGjaCn~ z&_Xou@2+#drXcaZ`K(tI3iMM-(vtoAQp|(MtP<=-a5-vl24{epzvBOF1IOYujY;P6 zAn?7?1nMnDX0~t{Di6m%A`$~Naiu!5svb0m+T|8vy@`UsLrQul>N89w=%=Q(1ys$H zA@7f`KY#Kx{3N)TNqm%%f{TJO5;4#afllB^DYiY2RWv4mZd5d>*5#BgC?h%Q+FD~) z;0(f4>``x?0!kv&&K9(2UT%@*C>m0*Z1L?}datUSo!>acC?K1hH@Zo6m#foT9z)$G z=Uk446w~Z4Y)9&;Xs{JGV!8n!b3wu;XdiLP^%Wn83}HE`3)&H+WNisHI*x_V!8J0V zc==Hq({T<_L`t5Vwn?>fP=)(#0y9k z?Bp?}Tq6|i^%AHB$S;p-HNKnBY1zl=G^;}1AKEsYF6y0UR&-MD=w6*cW2Jb!iT}c! z@+O(tK4+v-l{-LO`YQpT@L5PV%Z21Y$%E)v=|cHw$Mgbw4L!{IJ9^i`Sa{wq%Pm)PMU5y?dMBOF21VL4j9t zVm$mWWhB(4WaZ_Rxdo(Tq@|_BBo!4PlH%NgQVNoaG9sdqLW-iIeC$B(y&~X&FpqdI zsja4$%kU?wcI7tl5Q>jMw_>iwD?Kk4;7uJ%YW_{i zrFGw*)TIZgKJVNZTPv^OMm-`@t;T^0<(=nfm;Ax(J!ep0n?d5(yY6rkg)nys3~|DYbm1h-HO*2Ih^bv zMVAIN10^Z2#(&+PBfULtzds>x6^B=wa6Qc~I06)r-5RbY_Ysm8GJpm=G`j_`gi$1j z0}rsb*c8V?Ge$K#2W_T2A1g_0ZNVqoj99G;^gzzjJnR;#bHU>4lSi07Aq8SQ$U4-_MSF$^q2-} zMrm2tGCT}k#JE4A)Umoo3pbhGA9jN*Y6f;(agE0@C+51++4jbmv)(+(v3!L z0ctSK!~||yc5J}j&_9Ug#xV=xD4eSN1To%VXC=fP5MoQ5^~>gHzKJA+MZlp4F%?5j zs+R#&pD7)QWK?`}|4diKNQBJAh7IKaxei_w+t6`qx`#K0T5b&piXV+nEN#Dm0X32u zQM(1yCRoB?WBJqDIu$zFmDOLY3v&;wqJ5XBrbpd(B8yS>e<2t7xsXbEp!V=wT!tbI zUbqr=tE$w~mYY&#^Hc5A?YuHtUW12Nrll?OxZ}0lFkC9E^*ZT&Ui)pJI&`ncM*D(K ze*g}tO$&@M1L~IW7#2R0Hh1037bZh)vHV~q4*MDY>^YaPdmibick<=sRH?=;@*S|Y zucE>|QJs_Ml#;jB84W*{FVXa2El7V(&gbeVvq#oQ+R+=xdT(lSgFdPmuJ+OvYG^kyd8==5E9^I% zwE)D|4^af0qy0V-rtd9@^Levjr&oikU~iXVwTbz(?*3Tuaa`dgFJYR^gY_DhywgOm zK{}D5JPS7QfUV*f5Wi$)#doC8pEvj;Qn(%`lN|Mxm=*RB=BO20RgfX$d_o(*nPXpB+Y$ z+E;Sd_jjt44$dlps>SN;9Zm*V2{WqgA0oI>X9QQz8iY=_fY7vzlMVisNy}E=KQ?{S zI!Xhsl6#qwzuf&YRa=*?mba!ekU>WkzcgoN5ZwgsRR=9lQg9_dW-fyQ3r*J&y=V3(Iv5zTs`To^bhOJ;;A%Qh>ktn|s|F$Lx-WN^|RL=2hwjT{% zkpwHnvnxVT75GD86m_h1WW$s*Dj=sG&eEs#4~Oc3POhhglHMY{N$#!(UZy+0ZN9*O zD#OTgf#b{ULT>>~u9o(vQVLGEo6Z5_Tdw;?$t#mV24^>N9}|+y=Ioc(gE-k5>8hqlMLZ=BJ~p&MFAE|!-tT5lgXNm7aRM{e0WR(`vVS=5#eFp%Rg*^i$1nY(}{e1UQ@q!RN%*1>7aNA8`E4ZXK@` z-a7UQbu)@_|Ki}lQ^a4_Lw60U%mX*J0Sb7@ytc3RxF07^`O)mPk1+sb4SCgXWK#+D z+`nx_pN@_=b#BFE9#WYMnLA&@MjxvoG~P!U$eW(_%Z#RDxoLe1+Ktl=YoWy9an(J6 zKRLFH06D5wX-0pn%SvJnd+ZRM82W4zEYj}IUjiC~|t~7==Y2khGUo7($(yy#y`s*iZ_%q z**2}U!;W>jzXlj^+SrqtuFjIL$UGEE*`1U2D$)l&z(T{eb-eiEHu-_l&%Pg11PG!u zj2SjleQt4z=PK@O0RtwfwfOchs7Hth`0dI3Mm-aIfJncyQx6e*w!D@H`P(mp9iYO6 z>&q!hJ@$hAyFF3hn{q4j)vBOr#^G#Sp9uS#!yImrp(EE|RSl6XcY@|X`uF~GYo-`{ zkw6W}P-Le+=_T5ipu_hR2=qrUl(D0YmFr|DsM{T}>-Pi9ZJ)J1sz$+Xs4P(10o?Rc zD}@HA5PbKBi~gPF&Cy1Pa#Ou8R=KUyF*@4z)p}&{;Z;QAO5aP*P~3-Hd@L9RgQ7W3@ubQuwDO)Ooxc33glia7juwvV{nKu|76+o;{+LM;eRechI>e7^2=;=(g zP?~8T^p&8UV@Ill#nciH-5UbalAcH%v@CRGCxDYV`mZ&D>Eq%%>w#F62NL%ICyO8| zGAv}2$yI37zpQ&&5e$v-#RGQVjmMn-9?iz3(N`XIOOo~jiNy+%*lMkA;A>Z_yi9jPR5c=OzZL%}(CvxBUb{TI0 z!B7(PP~Rr4XCip+lTkKcN-Z_wDVXXLeD{~dee>W& z2+j$k*@qxK&(IsG_%}dh5!!F=%W%||jcq?QcG6J750(b+s+jb$Qy*{KX=4V|tp0o- zN4O2HHzDw(5|jV|6Fc{RZCog9$(Q_-9A&c^RCg#9$ue4}%-Veh9o@;z;(By@(#mHz zs8}7x>|?P&gbqhN0B@AInCTAki}^|T`>f77i0EYaM8tfh6G(m!rfeyTSYEf8{;4&F=d*%4CP?Kv|mIAnL;x$1Yx+idyp@&mAp{ zA+HkT!OxqzT^GeDU%^mQG(t0c`HQvu61HUdFa3?=rj3I0)pp0Gj_A(UK$%7MYg*=s z{3$%o?o##?=KWB6BDGsSWQlqX$|nm0WU*i5pE4>nuscAB3vr0tiLxpu>8q3L#%Fq< zjQ>N1W6%lSYyhEa%pM+1a3qaN*B7nE5UTX9yDH94WRVx1>p0Lpc+}m+ z4%t(kAcqu#xsFbtT|hxsWctVkuUcZ5bFh&xK1)&d4PR&4(EMF1xgz%e2{u{=yHisg^Mf zzj*0E&`<$M0QF*A;5Z6S=9Ita_beP}IG7$GgNV@M(q}od^{Qx2XD$JhF0~tTx>}eS z!~sfye*H1~YCy4Se=Zd8b@_3vre`U6RNDkr5t0Y+Xc566MXLbZAo76hTv26AdsRO0~{jhoE> zy-a^F6yMxJ`g|!8Bb^Ytl@1w%AMh5fv5+td3C6zF*B5j_X7SIL<1mp*tX2Qh%85>m z6`lPf{);?U$;2hljQSGGIi7(q_6!U_YW%Un1`p!5@u}9G9g)A%)eoHh$g2;A0XV<5 Q`9T}l^rsL4FVNNh09JWm^Z)<= delta 6612 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 diff --git a/components/mybot_platform/assets/locales/zh-CN/wificonfig.ogg b/components/mybot_platform/assets/locales/zh-CN/wificonfig.ogg index 4eeeb77ead9ba191bd933f4e63d42c5b0b3f917e..87dc810c443862828b69005b2fc4c6974163d3ce 100644 GIT binary patch delta 6655 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 E4=#Sn8~^|S delta 4378 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 IEAYwqAFi-O_y7O^ From 3d6c67fec28603954023157bca01adce15029c1e Mon Sep 17 00:00:00 2001 From: shangjinlong Date: Wed, 21 Oct 2026 17:53:47 +0800 Subject: [PATCH 3/3] docs(audio): describe provisioning prompts as local assets --- CHANGELOG.md | 4 ++-- VENDORED_SOURCES.md | 1 - components/mybot_platform/assets/README.md | 6 ++---- .../mybot_platform/assets/locales/SOURCES.json | 16 ++++------------ 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d26986c..7ef8d2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,8 +75,8 @@ Versioning and Conventional Commits. ### Changed -- Update the Chinese and English Wi-Fi provisioning prompts from the BK7259 release `ab25833`, - using the original 20 ms mono Opus/Ogg files with recorded hashes and decoded frame counts. +- Update the local Chinese and English Wi-Fi provisioning prompts, retaining 20 ms mono Opus/Ogg + and recording checksums and decoded frame counts. - Refresh the SDK snapshot to `3f9a1ad` (version 1.3.0) and update all 22 Chinese/English pairing prompt and digit recordings from its PCM assets. Encode 20 ms mono Opus/Ogg for the existing firmware decoder and record source/output hashes. diff --git a/VENDORED_SOURCES.md b/VENDORED_SOURCES.md index 5223f53..0f1360b 100644 --- a/VENDORED_SOURCES.md +++ b/VENDORED_SOURCES.md @@ -31,7 +31,6 @@ redistribution terms are documented separately in [THIRD_PARTY_NOTICES.md](THIRD | `components/cmake_utilities` | ESP Component Registry `espressif/cmake_utilities` | 0.5.0 | | `components/m5pm1` | ESP Component Registry `m5stack/m5pm1` | 1.0.7, content hash `731f79d0629e245787440f5419aac5d7a82befeb25f97689d6a2d0331a24a72d` | | Pairing `prompt.ogg` and `0.ogg` through `9.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot`, `assets/locales` | commit `7854c1d5798004485aa1947ff55116bdb7ab0237`; 16 kHz mono s16 PCM converted to 20 ms Opus/Ogg; source/output SHA-256 and encoding command in `components/mybot_platform/assets/locales/SOURCES.json` | -| Wi-Fi `wificonfig.ogg` under `components/mybot_platform/assets/locales/{en-US,zh-CN}` | `github.com/junlon2006/mybot-bk7259`, `projects/mybot/assets/locales` | release commit `ab258333f0cc8b8d8e9b338e96a8c2b4296d9655`; copied byte for byte; SHA-256 and frame counts in `components/mybot_platform/assets/locales/SOURCES.json` | | `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_fonts.c`, `components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt` | `github.com/lvgl/lvgl`, `scripts/built_in_font/SourceHanSansSC-Normal.otf` | LVGL 9.5.0 source font SHA-256 `1ee89e1669362dee13851129c0a8a791a87521eb4148e5efbf5d26596738e25b`; generated 20 px, 4 bpp static UI subset | | `components/mybot_platform/assets/ui/noto_emoji`, `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_assets.c` | Noto Color Emoji font glyphs rasterized by `github.com/78/noto-fonts`, `png/noto-color-emoji_64` | 2.0.0, commit `d45dbc64052d57048f20ab1770074172ce9eb53b`; per-image SHA-256 values and glyph provenance in `assets/ui/noto_emoji/SOURCES.json` | diff --git a/components/mybot_platform/assets/README.md b/components/mybot_platform/assets/README.md index 6f58c38..b74655f 100644 --- a/components/mybot_platform/assets/README.md +++ b/components/mybot_platform/assets/README.md @@ -17,10 +17,8 @@ little-endian PCM at commit `7854c1d5798004485aa1947ff55116bdb7ab0237`. They use [locales/SOURCES.json](locales/SOURCES.json) records the source revision, source/output SHA-256, sample counts, encoder version and full encoding command. -The two `wificonfig.ogg` recordings are copied byte for byte from the BK7259 release at commit -`ab258333f0cc8b8d8e9b338e96a8c2b4296d9655`. They use the same mono, 20 ms Opus format required by -the firmware. Their separate source revision, hashes and frame counts are recorded under -`wifi_provisioning` in `locales/SOURCES.json`. +The local `wificonfig.ogg` in each locale is played when Wi-Fi provisioning starts. Its format, +checksums and decoded frame counts are recorded under `wifi_provisioning` in `locales/SOURCES.json`. To regenerate a pairing asset, obtain `assets/locales//.pcm` from the pinned SDK commit and use FFmpeg 6.1.1 with libopus 1.4. Run the command below for each locale (`en-US`, `zh-CN`) diff --git a/components/mybot_platform/assets/locales/SOURCES.json b/components/mybot_platform/assets/locales/SOURCES.json index e93fd26..e74c437 100644 --- a/components/mybot_platform/assets/locales/SOURCES.json +++ b/components/mybot_platform/assets/locales/SOURCES.json @@ -229,27 +229,19 @@ } ], "wifi_provisioning": { - "source": { - "repository": "https://github.com/junlon2006/mybot-bk7259", - "ref": "release/v4.0.1-mybot-r2", - "commit": "ab258333f0cc8b8d8e9b338e96a8c2b4296d9655", - "format": "ogg_opus", - "sample_rate_hz": 16000, - "channels": 1, - "frame_duration_ms": 20 - }, - "conversion": "none; copied byte for byte from the pinned Git objects", + "format": "ogg_opus", + "sample_rate_hz": 16000, + "channels": 1, + "frame_duration_ms": 20, "files": [ { "file": "en-US/wificonfig.ogg", - "source_file": "projects/mybot/assets/locales/en-US/wificonfig.ogg", "sha256": "a0af04e8a9e06dfc8fc8990d12bdee7c187fc61710465a92c1d00bc6848a8e75", "frames": 39168, "bytes": 7132 }, { "file": "zh-CN/wificonfig.ogg", - "source_file": "projects/mybot/assets/locales/zh-CN/wificonfig.ogg", "sha256": "c96e85c37533c8115a991c4614c0268a9e0c762c76e6e278a570ff0866590145", "frames": 36480, "bytes": 6704