diff --git a/README.md b/README.md
index 419b48c2..d8abbd8e 100644
--- a/README.md
+++ b/README.md
@@ -81,7 +81,7 @@ Factory firmware (restores the out-of-box demo): download the file whose name co
| [10_U8G2_Test](examples/arduino/examples/10_U8G2_Test/) | U8g2 |
Libraries used by the sketches are bundled in [`examples/arduino/libraries`](examples/arduino/libraries/).
-ESPHome configurations are in [`examples/esphome`](examples/esphome/README.md) and the XiaoZhi AI firmware source in [`examples/xiaozhi`](examples/xiaozhi/).
+ESPHome configurations are in [`examples/esphome`](examples/esphome/README.md). The XiaoZhi AI firmware source for this board is in the upstream [xiaozhi-esp32](https://github.com/78/xiaozhi-esp32/tree/main/main/boards/waveshare/esp32-s3-rlcd-4.2) repository.
## 🛠️ Development Environment
diff --git a/README_ZH.md b/README_ZH.md
index 497d427f..1c9dfa69 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -79,7 +79,7 @@ ESP32-S3-RLCD-4.2 是一块 AIoT 开发板,采用 ESP32-S3-WROOM-1-N16R8 模
| [10_U8G2_Test](examples/arduino/examples/10_U8G2_Test/README_ZH.md) | U8g2 |
草图使用的库随仓库提供,位于 [`examples/arduino/libraries`](examples/arduino/libraries/)。
-ESPHome 配置位于 [`examples/esphome`](examples/esphome/README_ZH.md),小智 AI 固件源码位于 [`examples/xiaozhi`](examples/xiaozhi/)。
+ESPHome 配置位于 [`examples/esphome`](examples/esphome/README_ZH.md)。本产品的小智 AI 固件源码在上游 [xiaozhi-esp32](https://github.com/78/xiaozhi-esp32/tree/main/main/boards/waveshare/esp32-s3-rlcd-4.2) 仓库。
## 🛠️ 开发环境
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/.gitignore b/examples/xiaozhi/XiaoZhiCode_V2.1.0/.gitignore
deleted file mode 100644
index a1b5d8e6..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/.gitignore
+++ /dev/null
@@ -1,19 +0,0 @@
-tmp/
-components/
-managed_components/
-build/
-.vscode/
-.devcontainer/
-sdkconfig.old
-sdkconfig
-dependencies.lock
-.env
-releases/
-main/assets/lang_config.h
-main/mmap_generate_emoji.h
-.DS_Store
-.cache
-*.pyc
-*.bin
-mmap_generate_*.h
-.clangd
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/CMakeLists.txt b/examples/xiaozhi/XiaoZhiCode_V2.1.0/CMakeLists.txt
deleted file mode 100644
index 8dcd6df0..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-# For more information about build system see
-# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
-# The following five lines of boilerplate have to be in your project's
-# CMakeLists in this exact order for cmake to work correctly
-cmake_minimum_required(VERSION 3.16)
-
-set(PROJECT_VER "2.1.0")
-
-# Add this line to disable the specific warning
-add_compile_options(-Wno-missing-field-initializers)
-
-include($ENV{IDF_PATH}/tools/cmake/project.cmake)
-project(xiaozhi)
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/LICENSE b/examples/xiaozhi/XiaoZhiCode_V2.1.0/LICENSE
deleted file mode 100644
index e90b5545..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/LICENSE
+++ /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/examples/xiaozhi/XiaoZhiCode_V2.1.0/README.md b/examples/xiaozhi/XiaoZhiCode_V2.1.0/README.md
deleted file mode 100644
index 9e8c70d6..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/README.md
+++ /dev/null
@@ -1,172 +0,0 @@
-# An MCP-based Chatbot
-
-(English | [中文](README_zh.md) | [日本語](README_ja.md))
-
-## Introduction
-
-👉 [Human: Give AI a camera vs AI: Instantly finds out the owner hasn't washed hair for three days【bilibili】](https://www.bilibili.com/video/BV1bpjgzKEhd/)
-
-👉 [Handcraft your AI girlfriend, beginner's guide【bilibili】](https://www.bilibili.com/video/BV1XnmFYLEJN/)
-
-As a voice interaction entry, the XiaoZhi AI chatbot leverages the AI capabilities of large models like Qwen / DeepSeek, and achieves multi-terminal control via the MCP protocol.
-
-
-
-## Version Notes
-
-The current v2 version is incompatible with the v1 partition table, so it is not possible to upgrade from v1 to v2 via OTA. For partition table details, see [partitions/v2/README.md](partitions/v2/README.md).
-
-All hardware running v1 can be upgraded to v2 by manually flashing the firmware.
-
-The stable version of v1 is 1.9.2. You can switch to v1 by running `git checkout v1`. The v1 branch will be maintained until February 2026.
-
-### Features Implemented
-
-- Wi-Fi / ML307 Cat.1 4G
-- Offline voice wake-up [ESP-SR](https://github.com/espressif/esp-sr)
-- Supports two communication protocols ([Websocket](docs/websocket.md) or MQTT+UDP)
-- Uses OPUS audio codec
-- Voice interaction based on streaming ASR + LLM + TTS architecture
-- Speaker recognition, identifies the current speaker [3D Speaker](https://github.com/modelscope/3D-Speaker)
-- OLED / LCD display, supports emoji display
-- Battery display and power management
-- Multi-language support (Chinese, English, Japanese)
-- Supports ESP32-C3, ESP32-S3, ESP32-P4 chip platforms
-- Device-side MCP for device control (Speaker, LED, Servo, GPIO, etc.)
-- Cloud-side MCP to extend large model capabilities (smart home control, PC desktop operation, knowledge search, email, etc.)
-- Customizable wake words, fonts, emojis, and chat backgrounds with online web-based editing ([Custom Assets Generator](https://github.com/78/xiaozhi-assets-generator))
-
-## Hardware
-
-### Breadboard DIY Practice
-
-See the Feishu document tutorial:
-
-👉 ["XiaoZhi AI Chatbot Encyclopedia"](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb?from=from_copylink)
-
-Breadboard demo:
-
-
-
-### Supports 70+ Open Source Hardware (Partial List)
-
-- LiChuang ESP32-S3 Development Board
-- Espressif ESP32-S3-BOX3
-- M5Stack CoreS3
-- M5Stack AtomS3R + Echo Base
-- Magic Button 2.4
-- Waveshare ESP32-S3-Touch-AMOLED-1.8
-- LILYGO T-Circle-S3
-- XiaGe Mini C3
-- CuiCan AI Pendant
-- WMnologo-Xingzhi-1.54TFT
-- SenseCAP Watcher
-- ESP-HI Low Cost Robot Dog
-
-
-
-## Software
-
-### Firmware Flashing
-
-For beginners, it is recommended to use the firmware that can be flashed without setting up a development environment.
-
-The firmware connects to the official [xiaozhi.me](https://xiaozhi.me) server by default. Personal users can register an account to use the Qwen real-time model for free.
-
-👉 [Beginner's Firmware Flashing Guide](https://ccnphfhqs21z.feishu.cn/wiki/Zpz4wXBtdimBrLk25WdcXzxcnNS)
-
-### Development Environment
-
-- Cursor or VSCode
-- Install ESP-IDF plugin, select SDK version 5.4 or above
-- Linux is better than Windows for faster compilation and fewer driver issues
-- This project uses Google C++ code style, please ensure compliance when submitting code
-
-### Developer Documentation
-
-- [Custom Board Guide](docs/custom-board.md) - Learn how to create custom boards for XiaoZhi AI
-- [MCP Protocol IoT Control Usage](docs/mcp-usage.md) - Learn how to control IoT devices via MCP protocol
-- [MCP Protocol Interaction Flow](docs/mcp-protocol.md) - Device-side MCP protocol implementation
-- [MQTT + UDP Hybrid Communication Protocol Document](docs/mqtt-udp.md)
-- [A detailed WebSocket communication protocol document](docs/websocket.md)
-
-## Large Model Configuration
-
-If you already have a XiaoZhi AI chatbot device and have connected to the official server, you can log in to the [xiaozhi.me](https://xiaozhi.me) console for configuration.
-
-👉 [Backend Operation Video Tutorial (Old Interface)](https://www.bilibili.com/video/BV1jUCUY2EKM/)
-
-## Related Open Source Projects
-
-For server deployment on personal computers, refer to the following open-source projects:
-
-- [xinnan-tech/xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) Python server
-- [joey-zhou/xiaozhi-esp32-server-java](https://github.com/joey-zhou/xiaozhi-esp32-server-java) Java server
-- [AnimeAIChat/xiaozhi-server-go](https://github.com/AnimeAIChat/xiaozhi-server-go) Golang server
-
-Other client projects using the XiaoZhi communication protocol:
-
-- [huangjunsen0406/py-xiaozhi](https://github.com/huangjunsen0406/py-xiaozhi) Python client
-- [TOM88812/xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) Android client
-- [100askTeam/xiaozhi-linux](http://github.com/100askTeam/xiaozhi-linux) Linux client by 100ask
-- [78/xiaozhi-sf32](https://github.com/78/xiaozhi-sf32) Bluetooth chip firmware by Sichuan
-- [QuecPython/solution-xiaozhiAI](https://github.com/QuecPython/solution-xiaozhiAI) QuecPython firmware by Quectel
-
-Custom Assets Tools:
-
-- [78/xiaozhi-assets-generator](https://github.com/78/xiaozhi-assets-generator) Custom Assets Generator (Wake words, fonts, emojis, backgrounds)
-
-## About the Project
-
-This is an open-source ESP32 project, released under the MIT license, allowing anyone to use it for free, including for commercial purposes.
-
-We hope this project helps everyone understand AI hardware development and apply rapidly evolving large language models to real hardware devices.
-
-If you have any ideas or suggestions, please feel free to raise Issues or join the QQ group: 1011329060
-
-## Star History
-
-
-
-
-
-
-
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/README_ja.md b/examples/xiaozhi/XiaoZhiCode_V2.1.0/README_ja.md
deleted file mode 100644
index ea7f70f0..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/README_ja.md
+++ /dev/null
@@ -1,168 +0,0 @@
-# MCP ベースのチャットボット
-
-(日本語 | [中文](README_zh.md) | [English](README.md))
-
-## はじめに
-
-👉 [人間:AIにカメラを装着 vs AI:その場で飼い主が3日間髪を洗っていないことを発見【bilibili】](https://www.bilibili.com/video/BV1bpjgzKEhd/)
-
-👉 [手作りでAIガールフレンドを作る、初心者入門チュートリアル【bilibili】](https://www.bilibili.com/video/BV1XnmFYLEJN/)
-
-シャオジーAIチャットボットは音声インタラクションの入口として、Qwen / DeepSeekなどの大規模モデルのAI能力を活用し、MCPプロトコルを通じてマルチエンド制御を実現します。
-
-
-
-## バージョンノート
-
-現在のv2バージョンはv1パーティションテーブルと互換性がないため、v1からv2へOTAでアップグレードすることはできません。パーティションテーブルの詳細については、[partitions/v2/README.md](partitions/v2/README.md)をご参照ください。
-
-v1を実行しているすべてのハードウェアは、ファームウェアを手動で書き込むことでv2にアップグレードできます。
-
-v1の安定版は1.9.2です。`git checkout v1`でv1に切り替えることができます。v1ブランチは2026年2月まで継続的にメンテナンスされます。
-
-### 実装済み機能
-
-- Wi-Fi / ML307 Cat.1 4G
-- オフライン音声ウェイクアップ [ESP-SR](https://github.com/espressif/esp-sr)
-- 2種類の通信プロトコルに対応([Websocket](docs/websocket.md) または MQTT+UDP)
-- OPUSオーディオコーデックを採用
-- ストリーミングASR + LLM + TTSアーキテクチャに基づく音声インタラクション
-- 話者認識、現在話している人を識別 [3D Speaker](https://github.com/modelscope/3D-Speaker)
-- OLED / LCDディスプレイ、表情表示対応
-- バッテリー表示と電源管理
-- 多言語対応(中国語、英語、日本語)
-- ESP32-C3、ESP32-S3、ESP32-P4チッププラットフォーム対応
-- デバイス側MCPによるデバイス制御(音量・明るさ調整、アクション制御など)
-- クラウド側MCPで大規模モデル能力を拡張(スマートホーム制御、PCデスクトップ操作、知識検索、メール送受信など)
-- カスタマイズ可能なウェイクワード、フォント、絵文字、チャット背景、オンラインWeb編集に対応 ([カスタムアセットジェネレーター](https://github.com/78/xiaozhi-assets-generator))
-
-## ハードウェア
-
-### ブレッドボード手作り実践
-
-Feishuドキュメントチュートリアルをご覧ください:
-
-👉 [「シャオジーAIチャットボット百科事典」](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb?from=from_copylink)
-
-ブレッドボードのデモ:
-
-
-
-### 70種類以上のオープンソースハードウェアに対応(一部のみ表示)
-
-- 立創・実戦派 ESP32-S3 開発ボード
-- 楽鑫 ESP32-S3-BOX3
-- M5Stack CoreS3
-- M5Stack AtomS3R + Echo Base
-- マジックボタン2.4
-- 微雪電子 ESP32-S3-Touch-AMOLED-1.8
-- LILYGO T-Circle-S3
-- エビ兄さん Mini C3
-- CuiCan AIペンダント
-- 無名科技Nologo-星智-1.54TFT
-- SenseCAP Watcher
-- ESP-HI 超低コストロボット犬
-
-
-
-## ソフトウェア
-
-### ファームウェア書き込み
-
-初心者の方は、まず開発環境を構築せずに書き込み可能なファームウェアを使用することをおすすめします。
-
-ファームウェアはデフォルトで公式 [xiaozhi.me](https://xiaozhi.me) サーバーに接続します。個人ユーザーはアカウント登録でQwenリアルタイムモデルを無料で利用できます。
-
-👉 [初心者向けファームウェア書き込みガイド](https://ccnphfhqs21z.feishu.cn/wiki/Zpz4wXBtdimBrLk25WdcXzxcnNS)
-
-### 開発環境
-
-- Cursor または VSCode
-- ESP-IDFプラグインをインストールし、SDKバージョン5.4以上を選択
-- LinuxはWindowsよりも優れており、コンパイルが速く、ドライバの問題も少ない
-- 本プロジェクトはGoogle C++コードスタイルを採用、コード提出時は準拠を確認してください
-
-### 開発者ドキュメント
-
-- [カスタム開発ボードガイド](docs/custom-board.md) - シャオジーAI用のカスタム開発ボード作成方法
-- [MCPプロトコルIoT制御使用法](docs/mcp-usage.md) - MCPプロトコルでIoTデバイスを制御する方法
-- [MCPプロトコルインタラクションフロー](docs/mcp-protocol.md) - デバイス側MCPプロトコルの実装方法
-- [MQTT + UDP ハイブリッド通信プロトコルドキュメント](docs/mqtt-udp.md)
-- [詳細なWebSocket通信プロトコルドキュメント](docs/websocket.md)
-
-## 大規模モデル設定
-
-すでにシャオジーAIチャットボットデバイスをお持ちで、公式サーバーに接続済みの場合は、[xiaozhi.me](https://xiaozhi.me) コンソールで設定できます。
-
-👉 [バックエンド操作ビデオチュートリアル(旧インターフェース)](https://www.bilibili.com/video/BV1jUCUY2EKM/)
-
-## 関連オープンソースプロジェクト
-
-個人PCでサーバーをデプロイする場合は、以下のオープンソースプロジェクトを参照してください:
-
-- [xinnan-tech/xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) Pythonサーバー
-- [joey-zhou/xiaozhi-esp32-server-java](https://github.com/joey-zhou/xiaozhi-esp32-server-java) Javaサーバー
-- [AnimeAIChat/xiaozhi-server-go](https://github.com/AnimeAIChat/xiaozhi-server-go) Golangサーバー
-
-シャオジー通信プロトコルを利用した他のクライアントプロジェクト:
-
-- [huangjunsen0406/py-xiaozhi](https://github.com/huangjunsen0406/py-xiaozhi) Pythonクライアント
-- [TOM88812/xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) Androidクライアント
-- [100askTeam/xiaozhi-linux](http://github.com/100askTeam/xiaozhi-linux) 百問科技提供のLinuxクライアント
-- [78/xiaozhi-sf32](https://github.com/78/xiaozhi-sf32) 思澈科技のBluetoothチップファームウェア
-- [QuecPython/solution-xiaozhiAI](https://github.com/QuecPython/solution-xiaozhiAI) 移遠提供のQuecPythonファームウェア
-
-## プロジェクトについて
-
-これはエビ兄さんがオープンソースで公開しているESP32プロジェクトで、MITライセンスのもと、誰でも無料で、商用利用も可能です。
-
-このプロジェクトを通じて、AIハードウェア開発を理解し、急速に進化する大規模言語モデルを実際のハードウェアデバイスに応用できるようになることを目指しています。
-
-ご意見やご提案があれば、いつでもIssueを提出するか、QQグループ:1011329060 にご参加ください。
-
-## スター履歴
-
-
-
-
-
-
-
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/README_zh.md b/examples/xiaozhi/XiaoZhiCode_V2.1.0/README_zh.md
deleted file mode 100644
index e7ad1fad..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/README_zh.md
+++ /dev/null
@@ -1,168 +0,0 @@
-# An MCP-based Chatbot
-
-(中文 | [English](README.md) | [日本語](README_ja.md))
-
-## 介绍
-
-👉 [人类:给 AI 装摄像头 vs AI:当场发现主人三天没洗头【bilibili】](https://www.bilibili.com/video/BV1bpjgzKEhd/)
-
-👉 [手工打造你的 AI 女友,新手入门教程【bilibili】](https://www.bilibili.com/video/BV1XnmFYLEJN/)
-
-小智 AI 聊天机器人作为一个语音交互入口,利用 Qwen / DeepSeek 等大模型的 AI 能力,通过 MCP 协议实现多端控制。
-
-
-
-### 版本说明
-
-当前 v2 版本与 v1 版本分区表不兼容,所以无法从 v1 版本通过 OTA 升级到 v2 版本。分区表说明参见 [partitions/v2/README.md](partitions/v2/README.md)。
-
-使用 v1 版本的所有硬件,可以通过手动烧录固件来升级到 v2 版本。
-
-v1 的稳定版本为 1.9.2,可以通过 `git checkout v1` 来切换到 v1 版本,该分支会持续维护到 2026 年 2 月。
-
-### 已实现功能
-
-- Wi-Fi / ML307 Cat.1 4G
-- 离线语音唤醒 [ESP-SR](https://github.com/espressif/esp-sr)
-- 支持两种通信协议([Websocket](docs/websocket.md) 或 MQTT+UDP)
-- 采用 OPUS 音频编解码
-- 基于流式 ASR + LLM + TTS 架构的语音交互
-- 声纹识别,识别当前说话人的身份 [3D Speaker](https://github.com/modelscope/3D-Speaker)
-- OLED / LCD 显示屏,支持表情显示
-- 电量显示与电源管理
-- 支持多语言(中文、英文、日文)
-- 支持 ESP32-C3、ESP32-S3、ESP32-P4 芯片平台
-- 通过设备端 MCP 实现设备控制(音量、灯光、电机、GPIO 等)
-- 通过云端 MCP 扩展大模型能力(智能家居控制、PC桌面操作、知识搜索、邮件收发等)
-- 自定义唤醒词、字体、表情与聊天背景,支持网页端在线修改 ([自定义Assets生成器](https://github.com/78/xiaozhi-assets-generator))
-
-## 硬件
-
-### 面包板手工制作实践
-
-详见飞书文档教程:
-
-👉 [《小智 AI 聊天机器人百科全书》](https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb?from=from_copylink)
-
-面包板效果图如下:
-
-
-
-### 支持 70 多个开源硬件(仅展示部分)
-
-- 立创·实战派 ESP32-S3 开发板
-- 乐鑫 ESP32-S3-BOX3
-- M5Stack CoreS3
-- M5Stack AtomS3R + Echo Base
-- 神奇按钮 2.4
-- 微雪电子 ESP32-S3-Touch-AMOLED-1.8
-- LILYGO T-Circle-S3
-- 虾哥 Mini C3
-- 璀璨·AI 吊坠
-- 无名科技 Nologo-星智-1.54TFT
-- SenseCAP Watcher
-- ESP-HI 超低成本机器狗
-
-
-
-## 软件
-
-### 固件烧录
-
-新手第一次操作建议先不要搭建开发环境,直接使用免开发环境烧录的固件。
-
-固件默认接入 [xiaozhi.me](https://xiaozhi.me) 官方服务器,个人用户注册账号可以免费使用 Qwen 实时模型。
-
-👉 [新手烧录固件教程](https://ccnphfhqs21z.feishu.cn/wiki/Zpz4wXBtdimBrLk25WdcXzxcnNS)
-
-### 开发环境
-
-- Cursor 或 VSCode
-- 安装 ESP-IDF 插件,选择 SDK 版本 5.4 或以上
-- Linux 比 Windows 更好,编译速度快,也免去驱动问题的困扰
-- 本项目使用 Google C++ 代码风格,提交代码时请确保符合规范
-
-### 开发者文档
-
-- [自定义开发板指南](docs/custom-board.md) - 学习如何为小智 AI 创建自定义开发板
-- [MCP 协议物联网控制用法说明](docs/mcp-usage.md) - 了解如何通过 MCP 协议控制物联网设备
-- [MCP 协议交互流程](docs/mcp-protocol.md) - 设备端 MCP 协议的实现方式
-- [MQTT + UDP 混合通信协议文档](docs/mqtt-udp.md)
-- [一份详细的 WebSocket 通信协议文档](docs/websocket.md)
-
-## 大模型配置
-
-如果你已经拥有一个小智 AI 聊天机器人设备,并且已接入官方服务器,可以登录 [xiaozhi.me](https://xiaozhi.me) 控制台进行配置。
-
-👉 [后台操作视频教程(旧版界面)](https://www.bilibili.com/video/BV1jUCUY2EKM/)
-
-## 相关开源项目
-
-在个人电脑上部署服务器,可以参考以下第三方开源的项目:
-
-- [xinnan-tech/xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) Python 服务器
-- [joey-zhou/xiaozhi-esp32-server-java](https://github.com/joey-zhou/xiaozhi-esp32-server-java) Java 服务器
-- [AnimeAIChat/xiaozhi-server-go](https://github.com/AnimeAIChat/xiaozhi-server-go) Golang 服务器
-
-使用小智通信协议的第三方客户端项目:
-
-- [huangjunsen0406/py-xiaozhi](https://github.com/huangjunsen0406/py-xiaozhi) Python 客户端
-- [TOM88812/xiaozhi-android-client](https://github.com/TOM88812/xiaozhi-android-client) Android 客户端
-- [100askTeam/xiaozhi-linux](http://github.com/100askTeam/xiaozhi-linux) 百问科技提供的 Linux 客户端
-- [78/xiaozhi-sf32](https://github.com/78/xiaozhi-sf32) 思澈科技的蓝牙芯片固件
-- [QuecPython/solution-xiaozhiAI](https://github.com/QuecPython/solution-xiaozhiAI) 移远提供的 QuecPython 固件
-
-## 关于项目
-
-这是一个由虾哥开源的 ESP32 项目,以 MIT 许可证发布,允许任何人免费使用,修改或用于商业用途。
-
-我们希望通过这个项目,能够帮助大家了解 AI 硬件开发,将当下飞速发展的大语言模型应用到实际的硬件设备中。
-
-如果你有任何想法或建议,请随时提出 Issues 或加入 QQ 群:1011329060
-
-## Star History
-
-
-
-
-
-
-
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/CMakeLists.txt b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/CMakeLists.txt
deleted file mode 100644
index e9927b0f..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/CMakeLists.txt
+++ /dev/null
@@ -1,940 +0,0 @@
-# Define source files
-set(SOURCES "audio/audio_codec.cc"
- "audio/audio_service.cc"
- "audio/codecs/no_audio_codec.cc"
- "audio/codecs/box_audio_codec.cc"
- "audio/codecs/es8311_audio_codec.cc"
- "audio/codecs/es8374_audio_codec.cc"
- "audio/codecs/es8388_audio_codec.cc"
- "audio/codecs/es8389_audio_codec.cc"
- "audio/codecs/dummy_audio_codec.cc"
- "audio/processors/audio_debugger.cc"
- "led/single_led.cc"
- "led/circular_strip.cc"
- "led/gpio_led.cc"
- "display/display.cc"
- "display/lcd_display.cc"
- "display/oled_display.cc"
- "display/lvgl_display/lvgl_display.cc"
- "display/emote_display.cc"
- "display/lvgl_display/emoji_collection.cc"
- "display/lvgl_display/lvgl_theme.cc"
- "display/lvgl_display/lvgl_font.cc"
- "display/lvgl_display/lvgl_image.cc"
- "display/lvgl_display/gif/lvgl_gif.cc"
- "display/lvgl_display/gif/gifdec.c"
- "display/lvgl_display/jpg/image_to_jpeg.cpp"
- "display/lvgl_display/jpg/jpeg_to_image.c"
- "protocols/protocol.cc"
- "protocols/mqtt_protocol.cc"
- "protocols/websocket_protocol.cc"
- "mcp_server.cc"
- "system_info.cc"
- "application.cc"
- "ota.cc"
- "settings.cc"
- "device_state_machine.cc"
- "assets.cc"
- "main.cc"
- )
-
-set(INCLUDE_DIRS "." "display" "display/lvgl_display" "display/lvgl_display/jpg" "audio" "protocols")
-
-# Add board common files
-file(GLOB BOARD_COMMON_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/boards/common/*.cc)
-list(APPEND SOURCES ${BOARD_COMMON_SOURCES})
-list(APPEND INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/boards/common)
-
-idf_build_get_property(build_components BUILD_COMPONENTS)
-# Function to find component dynamically by pattern
-function(find_component_by_pattern PATTERN COMPONENT_VAR PATH_VAR)
- foreach(COMPONENT ${build_components})
- if(COMPONENT MATCHES "${PATTERN}")
- set(${COMPONENT_VAR} ${COMPONENT} PARENT_SCOPE)
- idf_component_get_property(COMPONENT_PATH ${COMPONENT} COMPONENT_DIR)
- set(${PATH_VAR} "${COMPONENT_PATH}" PARENT_SCOPE)
- break()
- endif()
- endforeach()
-endfunction()
-
-# Set default BUILTIN_TEXT_FONT and BUILTIN_ICON_FONT
-set(BUILTIN_TEXT_FONT font_puhui_14_1)
-set(BUILTIN_ICON_FONT font_awesome_14_1)
-
-# Add board files according to BOARD_TYPE
-# Set default assets if the board uses partition table V2
-if(CONFIG_BOARD_TYPE_BREAD_COMPACT_WIFI)
- set(BOARD_TYPE "bread-compact-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_ML307)
- set(BOARD_TYPE "bread-compact-ml307")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_ESP32)
- set(BOARD_TYPE "bread-compact-esp32")
-elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_ESP32_LCD)
- set(BOARD_TYPE "bread-compact-esp32-lcd")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_DF_K10)
- set(BOARD_TYPE "df-k10")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_DF_S3_AI_CAM)
- set(BOARD_TYPE "df-s3-ai-cam")
-elseif(CONFIG_BOARD_TYPE_ESP_BOX_3)
- set(BOARD_TYPE "esp-box-3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_BOX)
- set(BOARD_TYPE "esp-box")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_BOX_LITE)
- set(BOARD_TYPE "esp-box-lite")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_KEVIN_BOX_2)
- set(BOARD_TYPE "kevin-box-2")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_KEVIN_C3)
- set(BOARD_TYPE "kevin-c3")
-elseif(CONFIG_BOARD_TYPE_KEVIN_SP_V3_DEV)
- set(BOARD_TYPE "kevin-sp-v3-dev")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_KEVIN_SP_V4_DEV)
- set(BOARD_TYPE "kevin-sp-v4-dev")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_KEVIN_YUYING_313LCD)
- set(BOARD_TYPE "kevin-yuying-313lcd")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LICHUANG_DEV_S3)
- set(BOARD_TYPE "lichuang-dev")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LICHUANG_DEV_C3)
- set(BOARD_TYPE "lichuang-c3-dev")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_MAGICLICK_S3_2P4)
- set(BOARD_TYPE "magiclick-2p4")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_MAGICLICK_S3_2P5)
- set(BOARD_TYPE "magiclick-2p5")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_MAGICLICK_C3)
- set(BOARD_TYPE "magiclick-c3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_MAGICLICK_C3_V2)
- set(BOARD_TYPE "magiclick-c3-v2")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_M5STACK_CORE_S3)
- set(BOARD_TYPE "m5stack-core-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_M5STACK_CORE_TAB5)
- set(BOARD_TYPE "m5stack-tab5")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_M5STACK_ATOM_S3_ECHO_BASE)
- set(BOARD_TYPE "atoms3-echo-base")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_M5STACK_ATOM_S3R_ECHO_BASE)
- set(BOARD_TYPE "atoms3r-echo-base")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_M5STACK_ATOM_S3R_CAM_M12_ECHO_BASE)
- set(BOARD_TYPE "atoms3r-cam-m12-echo-base")
-elseif(CONFIG_BOARD_TYPE_M5STACK_ATOM_ECHOS3R)
- set(BOARD_TYPE "atom-echos3r")
-elseif(CONFIG_BOARD_TYPE_M5STACK_ATOM_MATRIX_ECHO_BASE)
- set(BOARD_TYPE "atommatrix-echo-base")
-elseif(CONFIG_BOARD_TYPE_XMINI_C3_V3)
- set(BOARD_TYPE "xmini-c3-v3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_XMINI_C3_4G)
- set(BOARD_TYPE "xmini-c3-4g")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_XMINI_C3)
- set(BOARD_TYPE "xmini-c3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_ESP_KORVO2_V3)
- set(BOARD_TYPE "esp32s3-korvo2-v3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_SPARKBOT)
- set(BOARD_TYPE "esp-sparkbot")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_SPOT_S3)
- set(BOARD_TYPE "esp-spot")
-elseif(CONFIG_BOARD_TYPE_ESP_SPOT_C5)
- set(BOARD_TYPE "esp-spot")
-elseif(CONFIG_BOARD_TYPE_ESP_HI)
- set(BOARD_TYPE "esp-hi")
- # Set ESP_HI emoji directory for DEFAULT_ASSETS_EXTRA_FILES
- set(DEFAULT_ASSETS_EXTRA_FILES "${CMAKE_BINARY_DIR}/emoji")
-elseif(CONFIG_BOARD_TYPE_ECHOEAR)
- set(BOARD_TYPE "echoear")
- set(BUILTIN_TEXT_FONT font_puhui_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_SENSAIRSHUTTLE)
- set(BOARD_TYPE "esp-sensairshuttle")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_AUDIO_BOARD)
- set(BOARD_TYPE "waveshare-s3-audio-board")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_8)
- set(BOARD_TYPE "esp32-s3-touch-amoled-1.8")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_2_06)
- set(BOARD_TYPE "waveshare-s3-touch-amoled-2.06")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_2_06)
- set(BOARD_TYPE "waveshare-c6-touch-amoled-2.06")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4B)
- set(BOARD_TYPE "waveshare-s3-touch-lcd-4b")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_75)
- set(BOARD_TYPE "waveshare-s3-touch-amoled-1.75")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_83)
- set(BOARD_TYPE "waveshare-s3-touch-lcd-1.83")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_85C)
- set(BOARD_TYPE "esp32-s3-touch-lcd-1.85c")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_85)
- set(BOARD_TYPE "esp32-s3-touch-lcd-1.85")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_46)
- set(BOARD_TYPE "esp32-s3-touch-lcd-1.46")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_5)
- set(BOARD_TYPE "esp32-s3-touch-lcd-3.5")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_5B)
- set(BOARD_TYPE "waveshare-s3-touch-lcd-3.5b")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_ePaper_1_54)
- set(BOARD_TYPE "waveshare-s3-epaper-1.54")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_RLCD_4_2)
- set(BOARD_TYPE "waveshare-s3-rlcd-4.2")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_49)
- set(BOARD_TYPE "waveshare-s3-touch-lcd-3.49")
- set(LVGL_TEXT_FONT font_puhui_basic_30_4)
- set(LVGL_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_LCD_1_69)
- set(BOARD_TYPE "waveshare-c6-lcd-1.69")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_TOUCH_LCD_1_83)
- set(BOARD_TYPE "waveshare-c6-touch-lcd-1.83")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_43)
- set(BOARD_TYPE "waveshare-c6-touch-amoled-1.43")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_32)
- set(BOARD_TYPE "waveshare-c6-touch-amoled-1.32")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_32)
- set(BOARD_TYPE "waveshare-s3-touch-amoled-1.32")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_P4_NANO)
- set(BOARD_TYPE "waveshare-p4-nano")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_4B)
- set(BOARD_TYPE "waveshare-p4-wifi6-touch-lcd-4b")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_7B)
- set(BOARD_TYPE "waveshare-p4-wifi6-touch-lcd-7b")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC)
- set(BOARD_TYPE "waveshare-p4-wifi6-touch-lcd-xc")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_P4_FUNCTION_EV_BOARD)
- set(BOARD_TYPE "esp-p4-function-ev-board")
-elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_WIFI_LCD)
- set(BOARD_TYPE "bread-compact-wifi-lcd")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_TUDOUZI)
- set(BOARD_TYPE "tudouzi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_LILYGO_T_CIRCLE_S3)
- set(BOARD_TYPE "lilygo-t-circle-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_0_V1_1)
- set(BOARD_TYPE "lilygo-t-cameraplus-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_2)
- set(BOARD_TYPE "lilygo-t-cameraplus-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA)
- set(BOARD_TYPE "lilygo-t-display-s3-pro-mvsrlora")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA_NO_BATTERY)
- set(BOARD_TYPE "lilygo-t-display-s3-pro-mvsrlora")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LILYGO_T_DISPLAY_P4)
- set(BOARD_TYPE "lilygo-t-display-p4")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_MOVECALL_MOJI_ESP32S3)
- set(BOARD_TYPE "movecall-moji-esp32s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_MOVECALL_MOJI2_ESP32C5)
- set(BOARD_TYPE "movecall-moji2-esp32c5")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_MOVECALL_CUICAN_ESP32S3)
- set(BOARD_TYPE "movecall-cuican-esp32s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3)
- set(BOARD_TYPE "atk-dnesp32s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX)
- set(BOARD_TYPE "atk-dnesp32s3-box")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX0)
- set(BOARD_TYPE "atk-dnesp32s3-box0")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX2_WIFI)
- set(BOARD_TYPE "atk-dnesp32s3-box2-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3_BOX2_4G)
- set(BOARD_TYPE "atk-dnesp32s3-box2-4g")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3M_WIFI)
- set(BOARD_TYPE "atk-dnesp32s3m-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_ATK_DNESP32S3M_4G)
- set(BOARD_TYPE "atk-dnesp32s3m-4g")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_DU_CHATX)
- set(BOARD_TYPE "du-chatx")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_TAIJI_PI_S3)
- set(BOARD_TYPE "taiji-pi-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_CUBE_0_85TFT_WIFI)
- set(BOARD_TYPE "xingzhi-cube-0.85tft-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_CUBE_0_85TFT_ML307)
- set(BOARD_TYPE "xingzhi-cube-0.85tft-ml307")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_CUBE_0_96OLED_WIFI)
- set(BOARD_TYPE "xingzhi-cube-0.96oled-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_CUBE_0_96OLED_ML307)
- set(BOARD_TYPE "xingzhi-cube-0.96oled-ml307")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_CUBE_1_54TFT_WIFI)
- set(BOARD_TYPE "xingzhi-cube-1.54tft-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_CUBE_1_54TFT_ML307)
- set(BOARD_TYPE "xingzhi-cube-1.54tft-ml307")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_XINGZHI_METAL_1_54_WIFI)
- set(BOARD_TYPE "xingzhi-metal-1.54-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_SEEED_STUDIO_SENSECAP_WATCHER)
- set(BOARD_TYPE "sensecap-watcher")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_DOIT_S3_AIBOX)
- set(BOARD_TYPE "doit-s3-aibox")
-elseif(CONFIG_BOARD_TYPE_MIXGO_NOVA)
- set(BOARD_TYPE "mixgo-nova")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_GENJUTECH_S3_1_54TFT)
- set(BOARD_TYPE "genjutech-s3-1.54tft")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_CGC)
- set(BOARD_TYPE "esp32-cgc")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_CGC_144)
- set(BOARD_TYPE "esp32-cgc-144")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-elseif(CONFIG_BOARD_TYPE_ESP_S3_LCD_EV_Board)
- set(BOARD_TYPE "esp-s3-lcd-ev-board")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ESP_S3_LCD_EV_Board_2)
- set(BOARD_TYPE "esp-s3-lcd-ev-board-2")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ZHENGCHEN_1_54TFT_WIFI)
- set(BOARD_TYPE "zhengchen-1.54tft-wifi")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_MINSI_K08_DUAL)
- set(BOARD_TYPE "minsi-k08-dual")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_ZHENGCHEN_1_54TFT_ML307)
- set(BOARD_TYPE "zhengchen-1.54tft-ml307")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_SPOTPEAR_ESP32_S3_1_54_MUMA)
- set(BOARD_TYPE "sp-esp32-s3-1.54-muma")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_SPOTPEAR_ESP32_S3_1_28_BOX)
- set(BOARD_TYPE "sp-esp32-s3-1.28-box")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_OTTO_ROBOT)
- set(BOARD_TYPE "otto-robot")
- set(BUILTIN_TEXT_FONT font_puhui_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
-elseif(CONFIG_BOARD_TYPE_ELECTRON_BOT)
- set(BOARD_TYPE "electron-bot")
- set(BUILTIN_TEXT_FONT font_puhui_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
-elseif(CONFIG_BOARD_TYPE_BREAD_COMPACT_WIFI_CAM)
- set(BOARD_TYPE "bread-compact-wifi-s3cam")
- set(BUILTIN_TEXT_FONT font_puhui_basic_16_4)
- set(BUILTIN_ICON_FONT font_awesome_16_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_JIUCHUAN)
- set(BOARD_TYPE "jiuchuan-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LABPLUS_MPYTHON_V3)
- set(BOARD_TYPE "labplus-mpython-v3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_LABPLUS_LEDONG_V2)
- set(BOARD_TYPE "labplus-ledong-v2")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_SURFER_C3_1_14TFT)
- set(BOARD_TYPE "surfer-c3-1.14tft")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_YUNLIAO_S3)
- set(BOARD_TYPE "yunliao-s3")
- set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
- set(BUILTIN_ICON_FONT font_awesome_20_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_WIRELESS_TAG_WTP4C5MP07S)
- set(BOARD_TYPE "wireless-tag-wtp4c5mp07s")
- set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
- set(BUILTIN_ICON_FONT font_awesome_30_4)
- set(DEFAULT_EMOJI_COLLECTION twemoji_64)
-elseif(CONFIG_BOARD_TYPE_AIPI_LITE)
- set(BOARD_TYPE "aipi-lite")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
- set(DEFAULT_EMOJI_COLLECTION twemoji_32)
-elseif(CONFIG_BOARD_TYPE_HU_087)
- set(BOARD_TYPE "hu-087")
- set(BUILTIN_TEXT_FONT font_puhui_basic_14_1)
- set(BUILTIN_ICON_FONT font_awesome_14_1)
-endif()
-
-file(GLOB BOARD_SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE}/*.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE}/*.c
-)
-list(APPEND SOURCES ${BOARD_SOURCES})
-
-# Select audio processor according to Kconfig
-if(CONFIG_USE_AUDIO_PROCESSOR)
- list(APPEND SOURCES "audio/processors/afe_audio_processor.cc")
-else()
- list(APPEND SOURCES "audio/processors/no_audio_processor.cc")
-endif()
-if(CONFIG_IDF_TARGET_ESP32S3 OR CONFIG_IDF_TARGET_ESP32P4)
- list(APPEND SOURCES "audio/wake_words/afe_wake_word.cc")
- list(APPEND SOURCES "audio/wake_words/custom_wake_word.cc")
-else()
- list(APPEND SOURCES "audio/wake_words/esp_wake_word.cc")
-endif()
-
-# Auto Select Additional Sources
-if (CONFIG_USE_ESP_BLUFI_WIFI_PROVISIONING)
- list(APPEND SOURCES "boards/common/blufi.cpp")
-endif ()
-# Select language directory according to Kconfig
-if(CONFIG_LANGUAGE_ZH_CN)
- set(LANG_DIR "zh-CN")
-elseif(CONFIG_LANGUAGE_ZH_TW)
- set(LANG_DIR "zh-TW")
-elseif(CONFIG_LANGUAGE_EN_US)
- set(LANG_DIR "en-US")
-elseif(CONFIG_LANGUAGE_JA_JP)
- set(LANG_DIR "ja-JP")
-elseif(CONFIG_LANGUAGE_KO_KR)
- set(LANG_DIR "ko-KR")
-elseif(CONFIG_LANGUAGE_VI_VN)
- set(LANG_DIR "vi-VN")
-elseif(CONFIG_LANGUAGE_TH_TH)
- set(LANG_DIR "th-TH")
-elseif(CONFIG_LANGUAGE_DE_DE)
- set(LANG_DIR "de-DE")
-elseif(CONFIG_LANGUAGE_FR_FR)
- set(LANG_DIR "fr-FR")
-elseif(CONFIG_LANGUAGE_ES_ES)
- set(LANG_DIR "es-ES")
-elseif(CONFIG_LANGUAGE_IT_IT)
- set(LANG_DIR "it-IT")
-elseif(CONFIG_LANGUAGE_RU_RU)
- set(LANG_DIR "ru-RU")
-elseif(CONFIG_LANGUAGE_AR_SA)
- set(LANG_DIR "ar-SA")
-elseif(CONFIG_LANGUAGE_HI_IN)
- set(LANG_DIR "hi-IN")
-elseif(CONFIG_LANGUAGE_PT_PT)
- set(LANG_DIR "pt-PT")
-elseif(CONFIG_LANGUAGE_PL_PL)
- set(LANG_DIR "pl-PL")
-elseif(CONFIG_LANGUAGE_CS_CZ)
- set(LANG_DIR "cs-CZ")
-elseif(CONFIG_LANGUAGE_FI_FI)
- set(LANG_DIR "fi-FI")
-elseif(CONFIG_LANGUAGE_TR_TR)
- set(LANG_DIR "tr-TR")
-elseif(CONFIG_LANGUAGE_ID_ID)
- set(LANG_DIR "id-ID")
-elseif(CONFIG_LANGUAGE_UK_UA)
- set(LANG_DIR "uk-UA")
-elseif(CONFIG_LANGUAGE_RO_RO)
- set(LANG_DIR "ro-RO")
-elseif(CONFIG_LANGUAGE_BG_BG)
- set(LANG_DIR "bg-BG")
-elseif(CONFIG_LANGUAGE_CA_ES)
- set(LANG_DIR "ca-ES")
-elseif(CONFIG_LANGUAGE_DA_DK)
- set(LANG_DIR "da-DK")
-elseif(CONFIG_LANGUAGE_EL_GR)
- set(LANG_DIR "el-GR")
-elseif(CONFIG_LANGUAGE_FA_IR)
- set(LANG_DIR "fa-IR")
-elseif(CONFIG_LANGUAGE_FIL_PH)
- set(LANG_DIR "fil-PH")
-elseif(CONFIG_LANGUAGE_HE_IL)
- set(LANG_DIR "he-IL")
-elseif(CONFIG_LANGUAGE_HR_HR)
- set(LANG_DIR "hr-HR")
-elseif(CONFIG_LANGUAGE_HU_HU)
- set(LANG_DIR "hu-HU")
-elseif(CONFIG_LANGUAGE_MS_MY)
- set(LANG_DIR "ms-MY")
-elseif(CONFIG_LANGUAGE_NB_NO)
- set(LANG_DIR "nb-NO")
-elseif(CONFIG_LANGUAGE_NL_NL)
- set(LANG_DIR "nl-NL")
-elseif(CONFIG_LANGUAGE_SK_SK)
- set(LANG_DIR "sk-SK")
-elseif(CONFIG_LANGUAGE_SL_SI)
- set(LANG_DIR "sl-SI")
-elseif(CONFIG_LANGUAGE_SV_SE)
- set(LANG_DIR "sv-SE")
-elseif(CONFIG_LANGUAGE_SR_RS)
- set(LANG_DIR "sr-RS")
-endif()
-
-# Define generation path
-set(LANG_JSON "${CMAKE_CURRENT_SOURCE_DIR}/assets/locales/${LANG_DIR}/language.json")
-set(LANG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/assets/lang_config.h")
-
-# Collect current language audio files
-file(GLOB LANG_SOUNDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/locales/${LANG_DIR}/*.ogg)
-
-# If not en-US, collect en-US audio files as fallback for missing files
-if(NOT LANG_DIR STREQUAL "en-US")
- file(GLOB EN_US_SOUNDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/locales/en-US/*.ogg)
-
- # Extract filenames (without path) from current language
- set(EXISTING_NAMES "")
- foreach(SOUND_FILE ${LANG_SOUNDS})
- get_filename_component(FILENAME ${SOUND_FILE} NAME)
- list(APPEND EXISTING_NAMES ${FILENAME})
- endforeach()
-
- # Only add en-US audio files that are missing in current language
- foreach(EN_SOUND ${EN_US_SOUNDS})
- get_filename_component(FILENAME ${EN_SOUND} NAME)
- if(NOT ${FILENAME} IN_LIST EXISTING_NAMES)
- list(APPEND LANG_SOUNDS ${EN_SOUND})
- message(STATUS "Using en-US fallback for missing audio: ${FILENAME}")
- endif()
- endforeach()
-endif()
-
-file(GLOB COMMON_SOUNDS ${CMAKE_CURRENT_SOURCE_DIR}/assets/common/*.ogg)
-
-# If target chip is ESP32, exclude specific files to avoid build errors
-if(CONFIG_IDF_TARGET_ESP32)
- list(REMOVE_ITEM SOURCES "audio/codecs/box_audio_codec.cc"
- "audio/codecs/es8388_audio_codec.cc"
- "audio/codecs/es8389_audio_codec.cc"
- "led/gpio_led.cc"
- "${CMAKE_CURRENT_SOURCE_DIR}/boards/common/esp32_camera.cc"
- "display/lvgl_display/jpg/image_to_jpeg.cpp"
- "display/lvgl_display/jpg/jpeg_to_image.c"
- )
-endif()
-
-idf_component_register(SRCS ${SOURCES}
- EMBED_FILES ${LANG_SOUNDS} ${COMMON_SOUNDS}
- INCLUDE_DIRS ${INCLUDE_DIRS}
- WHOLE_ARCHIVE
- )
-
-# Use target_compile_definitions to define BOARD_TYPE, BOARD_NAME
-# If BOARD_NAME is empty, use BOARD_TYPE
-if(NOT BOARD_NAME)
- set(BOARD_NAME ${BOARD_TYPE})
-endif()
-target_compile_definitions(${COMPONENT_LIB}
- PRIVATE BOARD_TYPE=\"${BOARD_TYPE}\" BOARD_NAME=\"${BOARD_NAME}\"
- PRIVATE BUILTIN_TEXT_FONT=${BUILTIN_TEXT_FONT} BUILTIN_ICON_FONT=${BUILTIN_ICON_FONT}
- )
-
-# Add generation rules
-add_custom_command(
- OUTPUT ${LANG_HEADER}
- COMMAND python ${PROJECT_DIR}/scripts/gen_lang.py
- --language "${LANG_DIR}"
- --output "${LANG_HEADER}"
- DEPENDS
- ${LANG_JSON}
- ${PROJECT_DIR}/scripts/gen_lang.py
- COMMENT "Generating ${LANG_DIR} language config"
-)
-
-# Force build generation dependencies
-add_custom_target(lang_header ALL
- DEPENDS ${LANG_HEADER}
-)
-
-# Find ESP-SR component dynamically
-find_component_by_pattern("espressif__esp-sr" ESP_SR_COMPONENT ESP_SR_COMPONENT_PATH)
-if(ESP_SR_COMPONENT_PATH)
- set(ESP_SR_MODEL_PATH "${ESP_SR_COMPONENT_PATH}/model")
-endif()
-
-# Find xiaozhi-fonts component dynamically
-find_component_by_pattern("xiaozhi-fonts" XIAOZHI_FONTS_COMPONENT XIAOZHI_FONTS_COMPONENT_PATH)
-if(XIAOZHI_FONTS_COMPONENT_PATH)
- set(XIAOZHI_FONTS_PATH "${XIAOZHI_FONTS_COMPONENT_PATH}")
-endif()
-
-if(CONFIG_BOARD_TYPE_ESP_HI)
-set(URL "https://github.com/espressif2022/image_player/raw/main/test_apps/test_8bit")
-set(EMOJI_DIR "${CMAKE_BINARY_DIR}/emoji")
-file(MAKE_DIRECTORY ${EMOJI_DIR})
-
-# List all files to download
-set(FILES_TO_DOWNLOAD "")
-list(APPEND FILES_TO_DOWNLOAD "Anger_enter.aaf" "Anger_loop.aaf" "Anger_return.aaf")
-list(APPEND FILES_TO_DOWNLOAD "happy_enter.aaf" "happy_loop.aaf" "happ_return.aaf")
-list(APPEND FILES_TO_DOWNLOAD "sad_enter.aaf" "sad_loop.aaf" "sad_return.aaf")
-list(APPEND FILES_TO_DOWNLOAD "scorn_enter.aaf" "scorn_loop.aaf" "scorn_return.aaf")
-list(APPEND FILES_TO_DOWNLOAD "left_enter.aaf" "left_loop.aaf" "left_return.aaf")
-list(APPEND FILES_TO_DOWNLOAD "right_enter.aaf" "right_loop.aaf" "right_return.aaf")
-list(APPEND FILES_TO_DOWNLOAD "asking.aaf" "blink_once.aaf" "blink_quick.aaf")
-list(APPEND FILES_TO_DOWNLOAD "connecting.aaf" "panic_enter.aaf" "panic_loop.aaf")
-list(APPEND FILES_TO_DOWNLOAD "panic_return.aaf" "wake.aaf")
-
-foreach(FILENAME IN LISTS FILES_TO_DOWNLOAD)
- set(REMOTE_FILE "${URL}/${FILENAME}")
- set(LOCAL_FILE "${EMOJI_DIR}/${FILENAME}")
-
- # Check if local file exists
- if(EXISTS ${LOCAL_FILE})
- message(STATUS "File ${FILENAME} already exists, skipping download")
- else()
- message(STATUS "Downloading ${FILENAME}")
- file(DOWNLOAD ${REMOTE_FILE} ${LOCAL_FILE}
- STATUS DOWNLOAD_STATUS)
- list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
- if(NOT STATUS_CODE EQUAL 0)
- message(FATAL_ERROR "Failed to download ${FILENAME} from ${URL}")
- endif()
- endif()
-endforeach()
-
-endif()
-
-
-# Function to build default assets based on configuration
-function(build_default_assets_bin)
- # Set output path for generated assets.bin
- set(GENERATED_ASSETS_BIN "${CMAKE_BINARY_DIR}/generated_assets.bin")
-
- # Prepare arguments for build script
- set(BUILD_ARGS
- "--sdkconfig" "${SDKCONFIG}"
- "--output" "${GENERATED_ASSETS_BIN}"
- )
-
- # Add builtin text font if defined
- if(BUILTIN_TEXT_FONT)
- list(APPEND BUILD_ARGS "--builtin_text_font" "${BUILTIN_TEXT_FONT}")
- endif()
-
- # Add default emoji collection if defined
- if(DEFAULT_EMOJI_COLLECTION)
- list(APPEND BUILD_ARGS "--emoji_collection" "${DEFAULT_EMOJI_COLLECTION}")
- endif()
-
- # Add default assets extra files if defined
- if(DEFAULT_ASSETS_EXTRA_FILES)
- list(APPEND BUILD_ARGS "--extra_files" "${DEFAULT_ASSETS_EXTRA_FILES}")
- endif()
-
- list(APPEND BUILD_ARGS "--esp_sr_model_path" "${ESP_SR_MODEL_PATH}")
- list(APPEND BUILD_ARGS "--xiaozhi_fonts_path" "${XIAOZHI_FONTS_PATH}")
-
- # Create custom command to build assets
- add_custom_command(
- OUTPUT ${GENERATED_ASSETS_BIN}
- COMMAND python ${PROJECT_DIR}/scripts/build_default_assets.py ${BUILD_ARGS}
- DEPENDS
- ${SDKCONFIG}
- ${PROJECT_DIR}/scripts/build_default_assets.py
- COMMENT "Building default assets.bin based on configuration"
- VERBATIM
- )
-
- # Create target for generated assets
- add_custom_target(generated_default_assets ALL
- DEPENDS ${GENERATED_ASSETS_BIN}
- )
-
- # Set the generated file path in parent scope
- set(GENERATED_ASSETS_LOCAL_FILE ${GENERATED_ASSETS_BIN} PARENT_SCOPE)
-
- message(STATUS "Default assets build configured: ${GENERATED_ASSETS_BIN}")
-endfunction()
-
-
-# Function to get local assets file path (handles both URL and local file)
-function(get_assets_local_file assets_source assets_local_file_var)
- # Check if it's a URL (starts with http:// or https://)
- if(assets_source MATCHES "^https?://")
- # It's a URL, download it
- get_filename_component(ASSETS_FILENAME "${assets_source}" NAME)
- set(ASSETS_LOCAL_FILE "${CMAKE_BINARY_DIR}/${ASSETS_FILENAME}")
- set(ASSETS_TEMP_FILE "${CMAKE_BINARY_DIR}/${ASSETS_FILENAME}.tmp")
-
- # Check if local file exists
- if(EXISTS ${ASSETS_LOCAL_FILE})
- message(STATUS "Assets file ${ASSETS_FILENAME} already exists, skipping download")
- else()
- message(STATUS "Downloading ${ASSETS_FILENAME}")
-
- # Clean up any existing temp file
- if(EXISTS ${ASSETS_TEMP_FILE})
- file(REMOVE ${ASSETS_TEMP_FILE})
- endif()
-
- # Download to temporary file first
- file(DOWNLOAD ${assets_source} ${ASSETS_TEMP_FILE}
- STATUS DOWNLOAD_STATUS)
- list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
- if(NOT STATUS_CODE EQUAL 0)
- # Clean up temp file on failure
- if(EXISTS ${ASSETS_TEMP_FILE})
- file(REMOVE ${ASSETS_TEMP_FILE})
- endif()
- message(FATAL_ERROR "Failed to download ${ASSETS_FILENAME} from ${assets_source}")
- endif()
-
- # Move temp file to final location (atomic operation)
- file(RENAME ${ASSETS_TEMP_FILE} ${ASSETS_LOCAL_FILE})
- message(STATUS "Successfully downloaded ${ASSETS_FILENAME}")
- endif()
- else()
- # It's a local file path
- if(IS_ABSOLUTE "${assets_source}")
- set(ASSETS_LOCAL_FILE "${assets_source}")
- else()
- set(ASSETS_LOCAL_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${assets_source}")
- endif()
-
- # Check if local file exists
- if(NOT EXISTS ${ASSETS_LOCAL_FILE})
- message(FATAL_ERROR "Assets file not found: ${ASSETS_LOCAL_FILE}")
- endif()
-
- message(STATUS "Using assets file: ${ASSETS_LOCAL_FILE}")
- endif()
-
- set(${assets_local_file_var} ${ASSETS_LOCAL_FILE} PARENT_SCOPE)
-endfunction()
-
-
-partition_table_get_partition_info(size "--partition-name assets" "size")
-partition_table_get_partition_info(offset "--partition-name assets" "offset")
-if ("${size}" AND "${offset}")
- # Flash assets based on configuration
- if(CONFIG_FLASH_DEFAULT_ASSETS)
- # Build default assets based on configuration
- build_default_assets_bin()
- esptool_py_flash_to_partition(flash "assets" "${GENERATED_ASSETS_LOCAL_FILE}")
- message(STATUS "Generated default assets flash configured: ${GENERATED_ASSETS_LOCAL_FILE} -> assets partition")
- elseif(CONFIG_FLASH_CUSTOM_ASSETS)
- # Flash custom assets
- get_assets_local_file("${CONFIG_CUSTOM_ASSETS_FILE}" ASSETS_LOCAL_FILE)
- esptool_py_flash_to_partition(flash "assets" "${ASSETS_LOCAL_FILE}")
- message(STATUS "Custom assets flash configured: ${ASSETS_LOCAL_FILE} -> assets partition")
- elseif(CONFIG_FLASH_NONE_ASSETS)
- message(STATUS "Assets flashing disabled (FLASH_NONE_ASSETS)")
- endif()
-else()
- message(STATUS "Assets partition not found, using v1 partition table")
-endif()
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/Kconfig.projbuild b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/Kconfig.projbuild
deleted file mode 100644
index e271fe55..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/Kconfig.projbuild
+++ /dev/null
@@ -1,820 +0,0 @@
-menu "Xiaozhi Assistant"
-
-config OTA_URL
- string "Default OTA URL"
- default "https://api.tenclass.net/xiaozhi/ota/"
- help
- The application will access this URL to check for new firmwares and server address.
-
-choice
- prompt "Flash Assets"
- default FLASH_DEFAULT_ASSETS
- help
- Select the assets to flash.
-
- config FLASH_NONE_ASSETS
- bool "Do not flash assets"
- config FLASH_DEFAULT_ASSETS
- bool "Flash Default Assets"
- config FLASH_CUSTOM_ASSETS
- bool "Flash Custom Assets"
-endchoice
-
-config CUSTOM_ASSETS_FILE
- depends on FLASH_CUSTOM_ASSETS
- string "Custom Assets File"
- default "assets.bin"
- help
- The custom assets file to flash.
- It can be a local file relative to the project directory or a remote url.
-
-choice
- prompt "Default Language"
- default LANGUAGE_ZH_CN
- help
- Select device display language
-
- config LANGUAGE_ZH_CN
- bool "Chinese"
- config LANGUAGE_ZH_TW
- bool "Chinese Traditional"
- config LANGUAGE_EN_US
- bool "English"
- config LANGUAGE_JA_JP
- bool "Japanese"
- config LANGUAGE_KO_KR
- bool "Korean"
- config LANGUAGE_VI_VN
- bool "Vietnamese"
- config LANGUAGE_TH_TH
- bool "Thai"
- config LANGUAGE_DE_DE
- bool "German"
- config LANGUAGE_FR_FR
- bool "French"
- config LANGUAGE_ES_ES
- bool "Spanish"
- config LANGUAGE_IT_IT
- bool "Italian"
- config LANGUAGE_RU_RU
- bool "Russian"
- config LANGUAGE_AR_SA
- bool "Arabic"
- config LANGUAGE_HI_IN
- bool "Hindi"
- config LANGUAGE_PT_PT
- bool "Portuguese"
- config LANGUAGE_PL_PL
- bool "Polish"
- config LANGUAGE_CS_CZ
- bool "Czech"
- config LANGUAGE_FI_FI
- bool "Finnish"
- config LANGUAGE_TR_TR
- bool "Turkish"
- config LANGUAGE_ID_ID
- bool "Indonesian"
- config LANGUAGE_UK_UA
- bool "Ukrainian"
- config LANGUAGE_RO_RO
- bool "Romanian"
- config LANGUAGE_BG_BG
- bool "Bulgarian"
- config LANGUAGE_CA_ES
- bool "Catalan"
- config LANGUAGE_DA_DK
- bool "Danish"
- config LANGUAGE_EL_GR
- bool "Greek"
- config LANGUAGE_FA_IR
- bool "Persian"
- config LANGUAGE_FIL_PH
- bool "Filipino"
- config LANGUAGE_HE_IL
- bool "Hebrew"
- config LANGUAGE_HR_HR
- bool "Croatian"
- config LANGUAGE_HU_HU
- bool "Hungarian"
- config LANGUAGE_MS_MY
- bool "Malay"
- config LANGUAGE_NB_NO
- bool "Norwegian"
- config LANGUAGE_NL_NL
- bool "Dutch"
- config LANGUAGE_SK_SK
- bool "Slovak"
- config LANGUAGE_SL_SI
- bool "Slovenian"
- config LANGUAGE_SV_SE
- bool "Swedish"
- config LANGUAGE_SR_RS
- bool "Serbian"
-endchoice
-
-choice BOARD_TYPE
- prompt "Board Type"
- default BOARD_TYPE_BREAD_COMPACT_WIFI
- help
- Board type. 开发板类型
- config BOARD_TYPE_BREAD_COMPACT_WIFI
- bool "Bread Compact WiFi (面包板)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_BREAD_COMPACT_WIFI_LCD
- bool "Bread Compact WiFi + LCD (面包板)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_BREAD_COMPACT_WIFI_CAM
- bool "Bread Compact WiFi + LCD + Camera (面包板)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_BREAD_COMPACT_ML307
- bool "Bread Compact ML307/EC801E (面包板 4G)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_BREAD_COMPACT_ESP32
- bool "Bread Compact ESP32 DevKit (面包板)"
- depends on IDF_TARGET_ESP32
- config BOARD_TYPE_BREAD_COMPACT_ESP32_LCD
- bool "Bread Compact ESP32 DevKit + LCD (面包板)"
- depends on IDF_TARGET_ESP32
- config BOARD_TYPE_XMINI_C3_V3
- bool "Xmini C3 V3"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_XMINI_C3_4G
- bool "Xmini C3 4G"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_XMINI_C3
- bool "Xmini C3"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_ESP_KORVO2_V3
- bool "Espressif Korvo2 V3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_SPARKBOT
- bool "Espressif SparkBot"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_SENSAIRSHUTTLE
- bool "Espressif ESP-SensairShuttle"
- depends on IDF_TARGET_ESP32C5
- config BOARD_TYPE_ESP_SPOT_S3
- bool "Espressif Spot-S3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_SPOT_C5
- bool "Espressif Spot-C5"
- depends on IDF_TARGET_ESP32C5
- config BOARD_TYPE_ESP_HI
- bool "Espressif ESP-HI"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_ESP_BOX_3
- bool "Espressif ESP-BOX-3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_BOX
- bool "Espressif ESP-BOX"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_BOX_LITE
- bool "Espressif ESP-BOX-Lite"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_P4_FUNCTION_EV_BOARD
- bool "Espressif ESP-P4-Function-EV-Board"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_ECHOEAR
- bool "EchoEar"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_KEVIN_BOX_2
- bool "Kevin Box 2"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_KEVIN_C3
- bool "Kevin C3"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_KEVIN_SP_V3_DEV
- bool "Kevin SP V3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_KEVIN_SP_V4_DEV
- bool "Kevin SP V4"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_KEVIN_YUYING_313LCD
- bool "鱼鹰科技 3.13LCD"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_CGC
- bool "CGC"
- depends on IDF_TARGET_ESP32
- config BOARD_TYPE_CGC_144
- bool "CGC 144"
- depends on IDF_TARGET_ESP32
- config BOARD_TYPE_LICHUANG_DEV_S3
- bool "立创·实战派 ESP32-S3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LICHUANG_DEV_C3
- bool "立创·实战派 ESP32-C3"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_DF_K10
- bool "DFRobot 行空板 k10"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_DF_S3_AI_CAM
- bool "DFRobot ESP32-S3 AI智能摄像头模块"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_MAGICLICK_S3_2P4
- bool "神奇按钮 Magiclick_2.4"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_MAGICLICK_S3_2P5
- bool "神奇按钮 Magiclick_2.5"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_MAGICLICK_C3
- bool "神奇按钮 Magiclick_C3"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_MAGICLICK_C3_V2
- bool "神奇按钮 Magiclick_C3_v2"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_M5STACK_CORE_S3
- bool "M5Stack CoreS3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_M5STACK_CORE_TAB5
- bool "M5Stack Tab5"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_M5STACK_ATOM_S3_ECHO_BASE
- bool "M5Stack AtomS3 + Echo Base"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_M5STACK_ATOM_S3R_ECHO_BASE
- bool "M5Stack AtomS3R + Echo Base"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_M5STACK_ATOM_S3R_CAM_M12_ECHO_BASE
- bool "M5Stack AtomS3R CAM/M12 + Echo Base"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_M5STACK_ATOM_ECHOS3R
- bool "M5Stack AtomEchoS3R"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_M5STACK_ATOM_MATRIX_ECHO_BASE
- bool "M5Stack AtomMatrix + Echo Base"
- depends on IDF_TARGET_ESP32
- config BOARD_TYPE_WAVESHARE_S3_AUDIO_BOARD
- bool "Waveshare ESP32-S3-Audio-Board"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_8
- bool "Waveshare ESP32-S3-Touch-AMOLED-1.8"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_2_06
- bool "Waveshare ESP32-S3-Touch-AMOLED-2.06"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_2_06
- bool "Waveshare ESP32-C6-Touch-AMOLED-2.06"
- depends on IDF_TARGET_ESP32C6
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_75
- bool "Waveshare ESP32-S3-Touch-AMOLED-1.75"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_83
- bool "Waveshare ESP32-S3-Touch-LCD-1.83"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4B
- bool "Waveshare ESP32-S3-Touch-LCD-4B"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_85C
- bool "Waveshare ESP32-S3-Touch-LCD-1.85C"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_85
- bool "Waveshare ESP32-S3-Touch-LCD-1.85"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_46
- bool "Waveshare ESP32-S3-Touch-LCD-1.46"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_C6_LCD_1_69
- bool "Waveshare ESP32-C6-LCD-1.69"
- depends on IDF_TARGET_ESP32C6
- config BOARD_TYPE_WAVESHARE_C6_TOUCH_LCD_1_83
- bool "Waveshare ESP32-C6-Touch-LCD-1.83"
- depends on IDF_TARGET_ESP32C6
- config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_43
- bool "Waveshare ESP32-C6-Touch-AMOLOED-1.43"
- depends on IDF_TARGET_ESP32C6
- config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_32
- bool "Waveshare ESP32-C6-Touch-AMOLOED-1.32"
- depends on IDF_TARGET_ESP32C6
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_32
- bool "Waveshare ESP32-S3-Touch-AMOLOED-1.32"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_49
- bool "Waveshare ESP32-S3-Touch-LCD-3.49"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_5
- bool "Waveshare ESP32-S3-Touch-LCD-3.5"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_ePaper_1_54
- bool "Waveshare ESP32-S3-ePaper-1.54"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_RLCD_4_2
- bool "Waveshare ESP32-S3-RLCD-4.2"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_5B
- bool "Waveshare ESP32-S3-Touch-LCD-3.5B"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WAVESHARE_P4_NANO
- bool "Waveshare ESP32-P4-NANO"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_4B
- bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4B"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_7B
- bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-7B"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC
- bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C or ESP32-P4-WIFI6-Touch-LCD-4C"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_TUDOUZI
- bool "土豆子"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LILYGO_T_CIRCLE_S3
- bool "LILYGO T-Circle-S3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_0_V1_1
- bool "LILYGO T-CameraPlus-S3_V1_0_V1_1"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LILYGO_T_CAMERAPLUS_S3_V1_2
- bool "LILYGO T-CameraPlus-S3_V1_2"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA
- bool "LILYGO T-Display-S3-Pro-MVSRLora"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LILYGO_T_DISPLAY_S3_PRO_MVSRLORA_NO_BATTERY
- bool "LILYGO T-Display-S3-Pro-MVSRLora_No_Battery"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LILYGO_T_DISPLAY_P4
- bool "LILYGO T-Display-P4"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_MOVECALL_MOJI_ESP32S3
- bool "Movecall Moji 小智AI衍生版"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_MOVECALL_MOJI2_ESP32C5
- bool "Movecall Moji2.0 小智AI衍生版"
- depends on IDF_TARGET_ESP32C5
- config BOARD_TYPE_MOVECALL_CUICAN_ESP32S3
- bool "Movecall CuiCan 璀璨·AI吊坠"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3
- bool "正点原子DNESP32S3开发板"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3_BOX
- bool "正点原子DNESP32S3-BOX"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3_BOX0
- bool "正点原子DNESP32S3-BOX0"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3_BOX2_WIFI
- bool "正点原子DNESP32S3-BOX2-WIFI"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3_BOX2_4G
- bool "正点原子DNESP32S3-BOX2-4G"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3M_WIFI
- bool "正点原子DNESP32S3M-WIFI"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ATK_DNESP32S3M_4G
- bool "正点原子DNESP32S3M-4G"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_DU_CHATX
- bool "嘟嘟开发板CHATX(wifi)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_TAIJI_PI_S3
- bool "太极小派esp32s3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_CUBE_0_85TFT_WIFI
- bool "无名科技星智0.85(WIFI)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_CUBE_0_85TFT_ML307
- bool "无名科技星智0.85(ML307)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_CUBE_0_96OLED_WIFI
- bool "无名科技星智0.96(WIFI)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_CUBE_0_96OLED_ML307
- bool "无名科技星智0.96(ML307)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_CUBE_1_54TFT_WIFI
- bool "无名科技星智1.54(WIFI)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_CUBE_1_54TFT_ML307
- bool "无名科技星智1.54(ML307)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_XINGZHI_METAL_1_54_WIFI
- bool "无名科技星智1.54 METAL(wifi)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_SEEED_STUDIO_SENSECAP_WATCHER
- bool "Seeed Studio SenseCAP Watcher"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_DOIT_S3_AIBOX
- bool "四博智联AI陪伴盒子"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_MIXGO_NOVA
- bool "元控·青春"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_GENJUTECH_S3_1_54TFT
- bool "亘具科技1.54(s3)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_S3_LCD_EV_Board
- bool "乐鑫ESP S3 LCD EV Board开发板"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ESP_S3_LCD_EV_Board_2
- bool "乐鑫ESP S3 LCD EV Board 2开发板"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ZHENGCHEN_1_54TFT_WIFI
- bool "征辰科技1.54(WIFI)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ZHENGCHEN_1_54TFT_ML307
- bool "征辰科技1.54(ML307)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_MINSI_K08_DUAL
- bool "敏思科技K08(DUAL)"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_SPOTPEAR_ESP32_S3_1_54_MUMA
- bool "Spotpear ESP32-S3-1.54-MUMA"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_SPOTPEAR_ESP32_S3_1_28_BOX
- bool "Spotpear ESP32-S3-1.28-BOX"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_OTTO_ROBOT
- bool "ottoRobot"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_ELECTRON_BOT
- bool "electronBot"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_JIUCHUAN
- bool "九川智能"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LABPLUS_MPYTHON_V3
- bool "labplus mpython_v3 board"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_LABPLUS_LEDONG_V2
- bool "labplus ledong_v2 board"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_SURFER_C3_1_14TFT
- bool "Surfer-C3-1.14TFT"
- depends on IDF_TARGET_ESP32C3
- config BOARD_TYPE_YUNLIAO_S3
- bool "小智云聊-S3"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_WIRELESS_TAG_WTP4C5MP07S
- bool "Wireless-Tag WTP4C5MP07S"
- depends on IDF_TARGET_ESP32P4
- config BOARD_TYPE_AIPI_LITE
- bool "AIPI-Lite"
- depends on IDF_TARGET_ESP32S3
- config BOARD_TYPE_HU_087
- bool "HU-087"
- depends on IDF_TARGET_ESP32S3
-endchoice
-
-choice
- depends on BOARD_TYPE_LILYGO_T_DISPLAY_P4
- prompt "Select the screen type"
- default SCREEN_TYPE_HI8561
- config SCREEN_TYPE_HI8561
- bool "HI8561"
- config SCREEN_TYPE_RM69A10
- bool "RM69A10"
-endchoice
-
-choice
- depends on BOARD_TYPE_LILYGO_T_DISPLAY_P4
- prompt "Select the color format of the screen"
- default SCREEN_PIXEL_FORMAT_RGB565
- config SCREEN_PIXEL_FORMAT_RGB565
- bool "RGB565"
- config SCREEN_PIXEL_FORMAT_RGB888
- bool "RGB888"
-endchoice
-
-choice ESP_S3_LCD_EV_Board_Version_TYPE
- depends on BOARD_TYPE_ESP_S3_LCD_EV_Board
- prompt "EV_BOARD Type"
- default ESP_S3_LCD_EV_Board_1p4
- config ESP_S3_LCD_EV_Board_1p4
- bool "乐鑫ESP32_S3_LCD_EV_Board-MB_V1.4"
- config ESP_S3_LCD_EV_Board_1p5
- bool "乐鑫ESP32_S3_LCD_EV_Board-MB_V1.5"
-endchoice
-
-choice DISPLAY_OLED_TYPE
- depends on BOARD_TYPE_BREAD_COMPACT_WIFI || BOARD_TYPE_BREAD_COMPACT_ML307 || BOARD_TYPE_BREAD_COMPACT_ESP32 || BOARD_TYPE_HU_087
- prompt "OLED Type"
- default OLED_SSD1306_128X32
- help
- OLED Monochrome Display Type
- config OLED_SSD1306_128X32
- bool "SSD1306 128*32"
- config OLED_SSD1306_128X64
- bool "SSD1306 128*64"
- config OLED_SH1106_128X64
- bool "SH1106 128*64"
-endchoice
-
-choice DISPLAY_LCD_TYPE
- depends on BOARD_TYPE_BREAD_COMPACT_WIFI_LCD || BOARD_TYPE_BREAD_COMPACT_ESP32_LCD || BOARD_TYPE_CGC || BOARD_TYPE_WAVESHARE_P4_NANO || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC || BOARD_TYPE_BREAD_COMPACT_WIFI_CAM
- prompt "LCD Type"
- default LCD_ST7789_240X320
- help
- LCD Display Type
- config LCD_ST7789_240X320
- bool "ST7789 240*320, IPS"
- config LCD_ST7789_240X320_NO_IPS
- bool "ST7789 240*320, Non-IPS"
- config LCD_ST7789_170X320
- bool "ST7789 170*320"
- config LCD_ST7789_172X320
- bool "ST7789 172*320"
- config LCD_ST7789_240X280
- bool "ST7789 240*280"
- config LCD_ST7789_240X240
- bool "ST7789 240*240"
- config LCD_ST7789_240X240_7PIN
- bool "ST7789 240*240, 7PIN"
- config LCD_ST7789_240X135
- bool "ST7789 240*135"
- config LCD_ST7735_128X160
- bool "ST7735 128*160"
- config LCD_ST7735_128X128
- bool "ST7735 128*128"
- config LCD_ST7796_320X480
- bool "ST7796 320*480 IPS"
- config LCD_ST7796_320X480_NO_IPS
- bool "ST7796 320*480, Non-IPS"
- config LCD_ILI9341_240X320
- bool "ILI9341 240*320"
- config LCD_ILI9341_240X320_NO_IPS
- bool "ILI9341 240*320, Non-IPS"
- config LCD_GC9A01_240X240
- bool "GC9A01 240*240 Circle"
- config LCD_TYPE_800_1280_10_1_INCH
- bool "Waveshare 101M-8001280-IPS-CT-K Display"
- config LCD_TYPE_800_1280_10_1_INCH_A
- bool "Waveshare 10.1-DSI-TOUCH-A Display"
- config LCD_TYPE_800_800_3_4_INCH
- bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C with 800*800 3.4inch round display"
- config LCD_TYPE_720_720_4_INCH
- bool "Waveshare ESP32-P4-WIFI6-Touch-LCD-4C with 720*720 4inch round display"
- config LCD_CUSTOM
- bool "Custom LCD (自定义屏幕参数)"
-endchoice
-
-choice DISPLAY_ESP32S3_KORVO2_V3
- depends on BOARD_TYPE_ESP_KORVO2_V3
- prompt "ESP32S3_KORVO2_V3 LCD Type"
- default ESP32S3_KORVO2_V3_LCD_ST7789
- help
- LCD Display Type
- config ESP32S3_KORVO2_V3_LCD_ST7789
- bool "ST7789 240*280"
- config ESP32S3_KORVO2_V3_LCD_ILI9341
- bool "ILI9341 240*320"
-endchoice
-
-choice DISPLAY_ESP32S3_AUDIO_BOARD
- depends on BOARD_TYPE_WAVESHARE_S3_AUDIO_BOARD
- prompt "ESP32S3_AUDIO_BOARD LCD Type"
- default AUDIO_BOARD_LCD_JD9853
- help
- LCD Display Type
- config AUDIO_BOARD_LCD_JD9853
- bool "JD9853 320*172"
- config AUDIO_BOARD_LCD_ST7789
- bool "ST7789 240*320"
-endchoice
-
-choice DISPLAY_STYLE
- prompt "Select display style"
- default USE_DEFAULT_MESSAGE_STYLE
- help
- Select display style for Xiaozhi device
-
- config USE_DEFAULT_MESSAGE_STYLE
- bool "Enable default message style"
-
- config USE_WECHAT_MESSAGE_STYLE
- bool "Enable WeChat Message Style"
-
- config USE_EMOTE_MESSAGE_STYLE
- bool "Emote animation style"
- depends on BOARD_TYPE_ESP_BOX_3 || BOARD_TYPE_ECHOEAR || BOARD_TYPE_LICHUANG_DEV_S3 || BOARD_TYPE_ESP_SENSAIRSHUTTLE
-endchoice
-
-choice WAKE_WORD_TYPE
- prompt "Wake Word Implementation Type"
- default USE_AFE_WAKE_WORD if (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
- default WAKE_WORD_DISABLED
- help
- Choose the type of wake word implementation to use
-
- config WAKE_WORD_DISABLED
- bool "Disabled"
- help
- Disable wake word detection
-
- config USE_ESP_WAKE_WORD
- bool "Wakenet model without AFE"
- depends on IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C5 || IDF_TARGET_ESP32C6 || (IDF_TARGET_ESP32 && SPIRAM)
- help
- Support ESP32 C3、ESP32 C5 与 ESP32 C6, and (ESP32 with PSRAM)
-
- config USE_AFE_WAKE_WORD
- bool "Wakenet model with AFE"
- depends on (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
- help
- Support AEC if available, requires ESP32 S3 and PSRAM
-
- config USE_CUSTOM_WAKE_WORD
- bool "Multinet model (Custom Wake Word)"
- depends on (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
- help
- Requires ESP32 S3 and PSRAM
-
-endchoice
-
-config CUSTOM_WAKE_WORD
- string "Custom Wake Word"
- default "xiao tu dou"
- depends on USE_CUSTOM_WAKE_WORD
- help
- Custom Wake Word, use pinyin for Chinese, separated by spaces
-
-config CUSTOM_WAKE_WORD_DISPLAY
- string "Custom Wake Word Display"
- default "小土豆"
- depends on USE_CUSTOM_WAKE_WORD
- help
- Greeting sent to the server after wake word detection
-
-config CUSTOM_WAKE_WORD_THRESHOLD
- int "Custom Wake Word Threshold (%)"
- default 20
- range 1 99
- depends on USE_CUSTOM_WAKE_WORD
- help
- Custom Wake Word Threshold, range 1-99, the smaller the more sensitive, default 20
-
-config SEND_WAKE_WORD_DATA
- bool "Send Wake Word Data"
- default y
- depends on USE_AFE_WAKE_WORD || USE_CUSTOM_WAKE_WORD
- help
- Send wake word data to the server as the first message of the conversation and wait for response
-
-config USE_AUDIO_PROCESSOR
- bool "Enable Audio Noise Reduction"
- default y
- depends on (IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4) && SPIRAM
- help
- Requires ESP32 S3 and PSRAM
-
-config USE_DEVICE_AEC
- bool "Enable Device-Side AEC"
- default n
- depends on USE_AUDIO_PROCESSOR && (BOARD_TYPE_ESP_BOX_3 || BOARD_TYPE_ESP_BOX || BOARD_TYPE_ESP_BOX_LITE \
- || BOARD_TYPE_LICHUANG_DEV_S3 || BOARD_TYPE_ESP_KORVO2_V3 || BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_75 || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_1_83\
- || BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_2_06 || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_4B || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_7B \
- || BOARD_TYPE_WAVESHARE_P4_WIFI6_TOUCH_LCD_XC || BOARD_TYPE_ESP_S3_LCD_EV_Board_2 || BOARD_TYPE_YUNLIAO_S3 \
- || BOARD_TYPE_ECHOEAR || BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_49 || BOARD_TYPE_WAVESHARE_S3_RLCD_4_2)
- help
- To work properly, device-side AEC requires a clean output reference path from the speaker signal and physical acoustic isolation between the microphone and speaker.
-
-config USE_SERVER_AEC
- bool "Enable Server-Side AEC (Unstable)"
- default n
- depends on USE_AUDIO_PROCESSOR
- help
- To work perperly, server-side AEC requires server support
-
-config USE_AUDIO_DEBUGGER
- bool "Enable Audio Debugger"
- default n
- help
- Enable audio debugger, send audio data through UDP to the host machine
-
-menu "WiFi Configuration Method"
- help
- WiFi Configuration Method Selection
- config USE_HOTSPOT_WIFI_PROVISIONING
- bool "Hotspot"
- default y
- help
- Use WiFi Hotspot to transmit WiFi configuration data
- config USE_ACOUSTIC_WIFI_PROVISIONING
- bool "Acoustic"
- help
- Use audio signal to transmit WiFi configuration data
-
- config USE_ESP_BLUFI_WIFI_PROVISIONING
- bool "Esp Blufi"
- help
- Use esp blufi protocol to transmit WiFi configuration data
- select BT_ENABLED
- select BT_BLE_42_FEATURES_SUPPORTED
- select BT_BLE_BLUFI_ENABLE
- select MBEDTLS_DHM_C
-endmenu
-
-config AUDIO_DEBUG_UDP_SERVER
- string "Audio Debug UDP Server Address"
- default "192.168.2.100:8000"
- depends on USE_AUDIO_DEBUGGER
- help
- UDP server address, format: IP:PORT, used to receive audio debugging data
-
-config RECEIVE_CUSTOM_MESSAGE
- bool "Enable Custom Message Reception"
- default n
- help
- Enable custom message reception, allow the device to receive custom messages from the server (preferably through the MQTT protocol)
-
-menu "Camera Configuration"
- depends on !IDF_TARGET_ESP32
-
- comment "Warning: Please read the help text before modifying these settings."
-
- config XIAOZHI_CAMERA_ALLOW_JPEG_INPUT
- bool "Allow JPEG Input"
- default n
- help
- Allow JPEG Input format for the camera.
-
- This option may need to be enabled when using a USB camera.
-
- Not currently supported when used simultaneously with XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE.
-
- config XIAOZHI_ENABLE_HARDWARE_JPEG_ENCODER
- bool "Enable Hardware JPEG Encoder"
- default y
- depends on SOC_JPEG_ENCODE_SUPPORTED
- help
- Use hardware JPEG encoder on ESP32-P4 to encode image to JPEG.
- See https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/jpeg.html for more details.
-
- config XIAOZHI_ENABLE_HARDWARE_JPEG_DECODER
- bool "Enable Hardware JPEG Decoder"
- default n
- depends on SOC_JPEG_DECODE_SUPPORTED && XIAOZHI_CAMERA_ALLOW_JPEG_INPUT
- help
- Use hardware JPEG decoder on ESP32-P4 to decode JPEG to image.
- See https://docs.espressif.com/projects/esp-idf/en/stable/esp32p4/api-reference/peripherals/jpeg.html for more details.
-
- config XIAOZHI_ENABLE_CAMERA_DEBUG_MODE
- bool "Enable Camera Debug Mode"
- default n
- help
- Enable camera debug mode, print camera debug information to the console.
- Only works on boards that support camera.
-
- config XIAOZHI_ENABLE_CAMERA_ENDIANNESS_SWAP
- bool "Enable software camera buffer endianness swapping"
- default n
- depends on !CAMERA_SENSOR_SWAP_PIXEL_BYTE_ORDER
- help
- This option treats the camera buffer as a uint16_t[] array and performs byte-swapping (endianness conversion) on each element.
-
- Should only be modified by development board integration engineers.
-
- **Incorrect usage may result in incorrect image colors!**
-
- ATTENTION: If the option CAMERA_SENSOR_SWAP_PIXEL_BYTE_ORDER is available for your sensor, please use that instead.
-
- menuconfig XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE
- bool "Enable Camera Image Rotation"
- default n
- depends on !XIAOZHI_CAMERA_ALLOW_JPEG_INPUT
- help
- Enable camera image rotation, rotate the camera image to the correct orientation.
- - On ESP32-P4, rotation is handled by PPA hardware.
- - On other chips, rotation is done in software with performance cost.
- - For 180° rotation, use HFlip + VFlip instead of this option.
-
- Not currently supported when used simultaneously with XIAOZHI_CAMERA_ALLOW_JPEG_INPUT.
-
- if XIAOZHI_ENABLE_ROTATE_CAMERA_IMAGE
- choice XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE
- prompt "Camera Image Rotation Angle (clockwise)"
- default XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE_90
- help
- Camera image rotation angle.
- config XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE_90
- bool "90°"
- config XIAOZHI_CAMERA_IMAGE_ROTATION_ANGLE_270
- bool "270°"
- comment "For 180° rotation, use HFlip + VFlip instead of this option"
- endchoice
- endif
-endmenu
-
-menu "TAIJIPAI_S3_CONFIG"
- depends on BOARD_TYPE_TAIJI_PI_S3
- choice I2S_TYPE_TAIJIPI_S3
- prompt "taiji-pi-S3 I2S Type"
- default TAIJIPAI_I2S_TYPE_STD
- help
- I2S 类型选择
- config TAIJIPAI_I2S_TYPE_STD
- bool "I2S Type STD"
- config TAIJIPAI_I2S_TYPE_PDM
- bool "I2S Type PDM"
- endchoice
-
- config I2S_USE_2SLOT
- bool "Enable I2S 2 Slot"
- default y
- help
- 启动双声道
-endmenu
-
-endmenu
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/application.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/application.cc
deleted file mode 100644
index 09803862..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/application.cc
+++ /dev/null
@@ -1,1055 +0,0 @@
-#include "application.h"
-#include "board.h"
-#include "display.h"
-#include "system_info.h"
-#include "audio_codec.h"
-#include "mqtt_protocol.h"
-#include "websocket_protocol.h"
-#include "assets/lang_config.h"
-#include "mcp_server.h"
-#include "assets.h"
-#include "settings.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#define TAG "Application"
-
-
-Application::Application() {
- event_group_ = xEventGroupCreate();
-
-#if CONFIG_USE_DEVICE_AEC && CONFIG_USE_SERVER_AEC
-#error "CONFIG_USE_DEVICE_AEC and CONFIG_USE_SERVER_AEC cannot be enabled at the same time"
-#elif CONFIG_USE_DEVICE_AEC
- aec_mode_ = kAecOnDeviceSide;
-#elif CONFIG_USE_SERVER_AEC
- aec_mode_ = kAecOnServerSide;
-#else
- aec_mode_ = kAecOff;
-#endif
-
- esp_timer_create_args_t clock_timer_args = {
- .callback = [](void* arg) {
- Application* app = (Application*)arg;
- xEventGroupSetBits(app->event_group_, MAIN_EVENT_CLOCK_TICK);
- },
- .arg = this,
- .dispatch_method = ESP_TIMER_TASK,
- .name = "clock_timer",
- .skip_unhandled_events = true
- };
- esp_timer_create(&clock_timer_args, &clock_timer_handle_);
-}
-
-Application::~Application() {
- if (clock_timer_handle_ != nullptr) {
- esp_timer_stop(clock_timer_handle_);
- esp_timer_delete(clock_timer_handle_);
- }
- vEventGroupDelete(event_group_);
-}
-
-bool Application::SetDeviceState(DeviceState state) {
- return state_machine_.TransitionTo(state);
-}
-
-void Application::Initialize() {
- auto& board = Board::GetInstance();
- SetDeviceState(kDeviceStateStarting);
-
- // Setup the display
- auto display = board.GetDisplay();
-
- // Print board name/version info
- display->SetChatMessage("system", SystemInfo::GetUserAgent().c_str());
-
- // Setup the audio service
- auto codec = board.GetAudioCodec();
- audio_service_.Initialize(codec);
- audio_service_.Start();
-
- AudioServiceCallbacks callbacks;
- callbacks.on_send_queue_available = [this]() {
- xEventGroupSetBits(event_group_, MAIN_EVENT_SEND_AUDIO);
- };
- callbacks.on_wake_word_detected = [this](const std::string& wake_word) {
- xEventGroupSetBits(event_group_, MAIN_EVENT_WAKE_WORD_DETECTED);
- };
- callbacks.on_vad_change = [this](bool speaking) {
- xEventGroupSetBits(event_group_, MAIN_EVENT_VAD_CHANGE);
- };
- audio_service_.SetCallbacks(callbacks);
-
- // Add state change listeners
- state_machine_.AddStateChangeListener([this](DeviceState old_state, DeviceState new_state) {
- xEventGroupSetBits(event_group_, MAIN_EVENT_STATE_CHANGED);
- });
-
- // Start the clock timer to update the status bar
- esp_timer_start_periodic(clock_timer_handle_, 1000000);
-
- // Add MCP common tools (only once during initialization)
- auto& mcp_server = McpServer::GetInstance();
- mcp_server.AddCommonTools();
- mcp_server.AddUserOnlyTools();
-
- // Set network event callback for UI updates and network state handling
- board.SetNetworkEventCallback([this](NetworkEvent event, const std::string& data) {
- auto display = Board::GetInstance().GetDisplay();
-
- switch (event) {
- case NetworkEvent::Scanning:
- display->ShowNotification(Lang::Strings::SCANNING_WIFI, 30000);
- xEventGroupSetBits(event_group_, MAIN_EVENT_NETWORK_DISCONNECTED);
- break;
- case NetworkEvent::Connecting: {
- if (data.empty()) {
- // Cellular network - registering without carrier info yet
- display->SetStatus(Lang::Strings::REGISTERING_NETWORK);
- } else {
- // WiFi or cellular with carrier info
- std::string msg = Lang::Strings::CONNECT_TO;
- msg += data;
- msg += "...";
- display->ShowNotification(msg.c_str(), 30000);
- }
- break;
- }
- case NetworkEvent::Connected: {
- std::string msg = Lang::Strings::CONNECTED_TO;
- msg += data;
- display->ShowNotification(msg.c_str(), 30000);
- xEventGroupSetBits(event_group_, MAIN_EVENT_NETWORK_CONNECTED);
- break;
- }
- case NetworkEvent::Disconnected:
- xEventGroupSetBits(event_group_, MAIN_EVENT_NETWORK_DISCONNECTED);
- break;
- case NetworkEvent::WifiConfigModeEnter:
- // WiFi config mode enter is handled by WifiBoard internally
- break;
- case NetworkEvent::WifiConfigModeExit:
- // WiFi config mode exit is handled by WifiBoard internally
- break;
- // Cellular modem specific events
- case NetworkEvent::ModemDetecting:
- display->SetStatus(Lang::Strings::DETECTING_MODULE);
- break;
- case NetworkEvent::ModemErrorNoSim:
- Alert(Lang::Strings::ERROR, Lang::Strings::PIN_ERROR, "triangle_exclamation", Lang::Sounds::OGG_ERR_PIN);
- break;
- case NetworkEvent::ModemErrorRegDenied:
- Alert(Lang::Strings::ERROR, Lang::Strings::REG_ERROR, "triangle_exclamation", Lang::Sounds::OGG_ERR_REG);
- break;
- case NetworkEvent::ModemErrorInitFailed:
- display->SetStatus(Lang::Strings::DETECTING_MODULE);
- display->SetChatMessage("system", Lang::Strings::DETECTING_MODULE);
- break;
- case NetworkEvent::ModemErrorTimeout:
- display->SetStatus(Lang::Strings::REGISTERING_NETWORK);
- break;
- }
- });
-
- // Start network asynchronously
- board.StartNetwork();
-
- // Update the status bar immediately to show the network state
- display->UpdateStatusBar(true);
-}
-
-void Application::Run() {
- const EventBits_t ALL_EVENTS =
- MAIN_EVENT_SCHEDULE |
- MAIN_EVENT_SEND_AUDIO |
- MAIN_EVENT_WAKE_WORD_DETECTED |
- MAIN_EVENT_VAD_CHANGE |
- MAIN_EVENT_CLOCK_TICK |
- MAIN_EVENT_ERROR |
- MAIN_EVENT_NETWORK_CONNECTED |
- MAIN_EVENT_NETWORK_DISCONNECTED |
- MAIN_EVENT_TOGGLE_CHAT |
- MAIN_EVENT_START_LISTENING |
- MAIN_EVENT_STOP_LISTENING |
- MAIN_EVENT_ACTIVATION_DONE |
- MAIN_EVENT_STATE_CHANGED;
-
- while (true) {
- auto bits = xEventGroupWaitBits(event_group_, ALL_EVENTS, pdTRUE, pdFALSE, portMAX_DELAY);
-
- if (bits & MAIN_EVENT_ERROR) {
- SetDeviceState(kDeviceStateIdle);
- Alert(Lang::Strings::ERROR, last_error_message_.c_str(), "circle_xmark", Lang::Sounds::OGG_EXCLAMATION);
- }
-
- if (bits & MAIN_EVENT_NETWORK_CONNECTED) {
- HandleNetworkConnectedEvent();
- }
-
- if (bits & MAIN_EVENT_NETWORK_DISCONNECTED) {
- HandleNetworkDisconnectedEvent();
- }
-
- if (bits & MAIN_EVENT_ACTIVATION_DONE) {
- HandleActivationDoneEvent();
- }
-
- if (bits & MAIN_EVENT_STATE_CHANGED) {
- HandleStateChangedEvent();
- }
-
- if (bits & MAIN_EVENT_TOGGLE_CHAT) {
- HandleToggleChatEvent();
- }
-
- if (bits & MAIN_EVENT_START_LISTENING) {
- HandleStartListeningEvent();
- }
-
- if (bits & MAIN_EVENT_STOP_LISTENING) {
- HandleStopListeningEvent();
- }
-
- if (bits & MAIN_EVENT_SEND_AUDIO) {
- while (auto packet = audio_service_.PopPacketFromSendQueue()) {
- if (protocol_ && !protocol_->SendAudio(std::move(packet))) {
- break;
- }
- }
- }
-
- if (bits & MAIN_EVENT_WAKE_WORD_DETECTED) {
- HandleWakeWordDetectedEvent();
- }
-
- if (bits & MAIN_EVENT_VAD_CHANGE) {
- if (GetDeviceState() == kDeviceStateListening) {
- auto led = Board::GetInstance().GetLed();
- led->OnStateChanged();
- }
- }
-
- if (bits & MAIN_EVENT_SCHEDULE) {
- std::unique_lock lock(mutex_);
- auto tasks = std::move(main_tasks_);
- lock.unlock();
- for (auto& task : tasks) {
- task();
- }
- }
-
- if (bits & MAIN_EVENT_CLOCK_TICK) {
- clock_ticks_++;
- auto display = Board::GetInstance().GetDisplay();
- display->UpdateStatusBar();
-
- // Print debug info every 10 seconds
- if (clock_ticks_ % 10 == 0) {
- SystemInfo::PrintHeapStats();
- }
- }
- }
-}
-
-void Application::HandleNetworkConnectedEvent() {
- ESP_LOGI(TAG, "Network connected");
- auto state = GetDeviceState();
-
- if (state == kDeviceStateStarting || state == kDeviceStateWifiConfiguring) {
- // Network is ready, start activation
- SetDeviceState(kDeviceStateActivating);
- if (activation_task_handle_ != nullptr) {
- ESP_LOGW(TAG, "Activation task already running");
- return;
- }
-
- xTaskCreate([](void* arg) {
- Application* app = static_cast(arg);
- app->ActivationTask();
- app->activation_task_handle_ = nullptr;
- vTaskDelete(NULL);
- }, "activation", 4096 * 2, this, 2, &activation_task_handle_);
- }
-
- // Update the status bar immediately to show the network state
- auto display = Board::GetInstance().GetDisplay();
- display->UpdateStatusBar(true);
-}
-
-void Application::HandleNetworkDisconnectedEvent() {
- // Close current conversation when network disconnected
- auto state = GetDeviceState();
- if (state == kDeviceStateConnecting || state == kDeviceStateListening || state == kDeviceStateSpeaking) {
- ESP_LOGI(TAG, "Closing audio channel due to network disconnection");
- protocol_->CloseAudioChannel();
- }
-
- // Update the status bar immediately to show the network state
- auto display = Board::GetInstance().GetDisplay();
- display->UpdateStatusBar(true);
-}
-
-void Application::HandleActivationDoneEvent() {
- ESP_LOGI(TAG, "Activation done");
-
- SystemInfo::PrintHeapStats();
- SetDeviceState(kDeviceStateIdle);
-
- has_server_time_ = ota_->HasServerTime();
-
- auto display = Board::GetInstance().GetDisplay();
- std::string message = std::string(Lang::Strings::VERSION) + ota_->GetCurrentVersion();
- display->ShowNotification(message.c_str());
- display->SetChatMessage("system", "");
-
- // Play the success sound to indicate the device is ready
- audio_service_.PlaySound(Lang::Sounds::OGG_SUCCESS);
-
- // Release OTA object after activation is complete
- ota_.reset();
- auto& board = Board::GetInstance();
- board.SetPowerSaveLevel(PowerSaveLevel::LOW_POWER);
-}
-
-void Application::ActivationTask() {
- // Create OTA object for activation process
- ota_ = std::make_unique();
-
- // Check for new assets version
- CheckAssetsVersion();
-
- // Check for new firmware version
- CheckNewVersion();
-
- // Initialize the protocol
- InitializeProtocol();
-
- // Signal completion to main loop
- xEventGroupSetBits(event_group_, MAIN_EVENT_ACTIVATION_DONE);
-}
-
-void Application::CheckAssetsVersion() {
- // Only allow CheckAssetsVersion to be called once
- if (assets_version_checked_) {
- return;
- }
- assets_version_checked_ = true;
-
- auto& board = Board::GetInstance();
- auto display = board.GetDisplay();
- auto& assets = Assets::GetInstance();
-
- if (!assets.partition_valid()) {
- ESP_LOGW(TAG, "Assets partition is disabled for board %s", BOARD_NAME);
- return;
- }
-
- Settings settings("assets", true);
- // Check if there is a new assets need to be downloaded
- std::string download_url = settings.GetString("download_url");
-
- if (!download_url.empty()) {
- settings.EraseKey("download_url");
-
- char message[256];
- snprintf(message, sizeof(message), Lang::Strings::FOUND_NEW_ASSETS, download_url.c_str());
- Alert(Lang::Strings::LOADING_ASSETS, message, "cloud_arrow_down", Lang::Sounds::OGG_UPGRADE);
-
- // Wait for the audio service to be idle for 3 seconds
- vTaskDelay(pdMS_TO_TICKS(3000));
- SetDeviceState(kDeviceStateUpgrading);
- board.SetPowerSaveLevel(PowerSaveLevel::PERFORMANCE);
- display->SetChatMessage("system", Lang::Strings::PLEASE_WAIT);
-
- bool success = assets.Download(download_url, [display](int progress, size_t speed) -> void {
- std::thread([display, progress, speed]() {
- char buffer[32];
- snprintf(buffer, sizeof(buffer), "%d%% %uKB/s", progress, speed / 1024);
- display->SetChatMessage("system", buffer);
- }).detach();
- });
-
- board.SetPowerSaveLevel(PowerSaveLevel::LOW_POWER);
- vTaskDelay(pdMS_TO_TICKS(1000));
-
- if (!success) {
- Alert(Lang::Strings::ERROR, Lang::Strings::DOWNLOAD_ASSETS_FAILED, "circle_xmark", Lang::Sounds::OGG_EXCLAMATION);
- vTaskDelay(pdMS_TO_TICKS(2000));
- SetDeviceState(kDeviceStateActivating);
- return;
- }
- }
-
- // Apply assets
- assets.Apply();
- display->SetChatMessage("system", "");
- display->SetEmotion("microchip_ai");
-}
-
-void Application::CheckNewVersion() {
- const int MAX_RETRY = 10;
- int retry_count = 0;
- int retry_delay = 10; // Initial retry delay in seconds
-
- auto& board = Board::GetInstance();
- while (true) {
- auto display = board.GetDisplay();
- display->SetStatus(Lang::Strings::CHECKING_NEW_VERSION);
-
- esp_err_t err = ota_->CheckVersion();
- if (err != ESP_OK) {
- retry_count++;
- if (retry_count >= MAX_RETRY) {
- ESP_LOGE(TAG, "Too many retries, exit version check");
- return;
- }
-
- char error_message[128];
- snprintf(error_message, sizeof(error_message), "code=%d, url=%s", err, ota_->GetCheckVersionUrl().c_str());
- char buffer[256];
- snprintf(buffer, sizeof(buffer), Lang::Strings::CHECK_NEW_VERSION_FAILED, retry_delay, error_message);
- Alert(Lang::Strings::ERROR, buffer, "cloud_slash", Lang::Sounds::OGG_EXCLAMATION);
-
- ESP_LOGW(TAG, "Check new version failed, retry in %d seconds (%d/%d)", retry_delay, retry_count, MAX_RETRY);
- for (int i = 0; i < retry_delay; i++) {
- vTaskDelay(pdMS_TO_TICKS(1000));
- if (GetDeviceState() == kDeviceStateIdle) {
- break;
- }
- }
- retry_delay *= 2; // Double the retry delay
- continue;
- }
- retry_count = 0;
- retry_delay = 10; // Reset retry delay
-
- if (ota_->HasNewVersion()) {
- if (UpgradeFirmware(ota_->GetFirmwareUrl(), ota_->GetFirmwareVersion())) {
- return; // This line will never be reached after reboot
- }
- // If upgrade failed, continue to normal operation
- }
-
- // No new version, mark the current version as valid
- ota_->MarkCurrentVersionValid();
- if (!ota_->HasActivationCode() && !ota_->HasActivationChallenge()) {
- // Exit the loop if done checking new version
- break;
- }
-
- display->SetStatus(Lang::Strings::ACTIVATION);
- // Activation code is shown to the user and waiting for the user to input
- if (ota_->HasActivationCode()) {
- ShowActivationCode(ota_->GetActivationCode(), ota_->GetActivationMessage());
- }
-
- // This will block the loop until the activation is done or timeout
- for (int i = 0; i < 10; ++i) {
- ESP_LOGI(TAG, "Activating... %d/%d", i + 1, 10);
- esp_err_t err = ota_->Activate();
- if (err == ESP_OK) {
- break;
- } else if (err == ESP_ERR_TIMEOUT) {
- vTaskDelay(pdMS_TO_TICKS(3000));
- } else {
- vTaskDelay(pdMS_TO_TICKS(10000));
- }
- if (GetDeviceState() == kDeviceStateIdle) {
- break;
- }
- }
- }
-}
-
-void Application::InitializeProtocol() {
- auto& board = Board::GetInstance();
- auto display = board.GetDisplay();
- auto codec = board.GetAudioCodec();
-
- display->SetStatus(Lang::Strings::LOADING_PROTOCOL);
-
- if (ota_->HasMqttConfig()) {
- protocol_ = std::make_unique();
- } else if (ota_->HasWebsocketConfig()) {
- protocol_ = std::make_unique();
- } else {
- ESP_LOGW(TAG, "No protocol specified in the OTA config, using MQTT");
- protocol_ = std::make_unique();
- }
-
- protocol_->OnConnected([this]() {
- DismissAlert();
- });
-
- protocol_->OnNetworkError([this](const std::string& message) {
- last_error_message_ = message;
- xEventGroupSetBits(event_group_, MAIN_EVENT_ERROR);
- });
-
- protocol_->OnIncomingAudio([this](std::unique_ptr packet) {
- if (GetDeviceState() == kDeviceStateSpeaking) {
- audio_service_.PushPacketToDecodeQueue(std::move(packet));
- }
- });
-
- protocol_->OnAudioChannelOpened([this, codec, &board]() {
- board.SetPowerSaveLevel(PowerSaveLevel::PERFORMANCE);
- if (protocol_->server_sample_rate() != codec->output_sample_rate()) {
- ESP_LOGW(TAG, "Server sample rate %d does not match device output sample rate %d, resampling may cause distortion",
- protocol_->server_sample_rate(), codec->output_sample_rate());
- }
- });
-
- protocol_->OnAudioChannelClosed([this, &board]() {
- board.SetPowerSaveLevel(PowerSaveLevel::LOW_POWER);
- Schedule([this]() {
- auto display = Board::GetInstance().GetDisplay();
- display->SetChatMessage("system", "");
- SetDeviceState(kDeviceStateIdle);
- });
- });
-
- protocol_->OnIncomingJson([this, display](const cJSON* root) {
- // Parse JSON data
- auto type = cJSON_GetObjectItem(root, "type");
- if (strcmp(type->valuestring, "tts") == 0) {
- auto state = cJSON_GetObjectItem(root, "state");
- if (strcmp(state->valuestring, "start") == 0) {
- Schedule([this]() {
- aborted_ = false;
- SetDeviceState(kDeviceStateSpeaking);
- });
- } else if (strcmp(state->valuestring, "stop") == 0) {
- Schedule([this]() {
- if (GetDeviceState() == kDeviceStateSpeaking) {
- if (listening_mode_ == kListeningModeManualStop) {
- SetDeviceState(kDeviceStateIdle);
- } else {
- SetDeviceState(kDeviceStateListening);
- }
- }
- });
- } else if (strcmp(state->valuestring, "sentence_start") == 0) {
- auto text = cJSON_GetObjectItem(root, "text");
- if (cJSON_IsString(text)) {
- ESP_LOGI(TAG, "<< %s", text->valuestring);
- Schedule([this, display, message = std::string(text->valuestring)]() {
- display->SetChatMessage("assistant", message.c_str());
- });
- }
- }
- } else if (strcmp(type->valuestring, "stt") == 0) {
- auto text = cJSON_GetObjectItem(root, "text");
- if (cJSON_IsString(text)) {
- ESP_LOGI(TAG, ">> %s", text->valuestring);
- Schedule([this, display, message = std::string(text->valuestring)]() {
- display->SetChatMessage("user", message.c_str());
- });
- }
- } else if (strcmp(type->valuestring, "llm") == 0) {
- auto emotion = cJSON_GetObjectItem(root, "emotion");
- if (cJSON_IsString(emotion)) {
- Schedule([this, display, emotion_str = std::string(emotion->valuestring)]() {
- display->SetEmotion(emotion_str.c_str());
- });
- }
- } else if (strcmp(type->valuestring, "mcp") == 0) {
- auto payload = cJSON_GetObjectItem(root, "payload");
- if (cJSON_IsObject(payload)) {
- McpServer::GetInstance().ParseMessage(payload);
- }
- } else if (strcmp(type->valuestring, "system") == 0) {
- auto command = cJSON_GetObjectItem(root, "command");
- if (cJSON_IsString(command)) {
- ESP_LOGI(TAG, "System command: %s", command->valuestring);
- if (strcmp(command->valuestring, "reboot") == 0) {
- // Do a reboot if user requests a OTA update
- Schedule([this]() {
- Reboot();
- });
- } else {
- ESP_LOGW(TAG, "Unknown system command: %s", command->valuestring);
- }
- }
- } else if (strcmp(type->valuestring, "alert") == 0) {
- auto status = cJSON_GetObjectItem(root, "status");
- auto message = cJSON_GetObjectItem(root, "message");
- auto emotion = cJSON_GetObjectItem(root, "emotion");
- if (cJSON_IsString(status) && cJSON_IsString(message) && cJSON_IsString(emotion)) {
- Alert(status->valuestring, message->valuestring, emotion->valuestring, Lang::Sounds::OGG_VIBRATION);
- } else {
- ESP_LOGW(TAG, "Alert command requires status, message and emotion");
- }
-#if CONFIG_RECEIVE_CUSTOM_MESSAGE
- } else if (strcmp(type->valuestring, "custom") == 0) {
- auto payload = cJSON_GetObjectItem(root, "payload");
- ESP_LOGI(TAG, "Received custom message: %s", cJSON_PrintUnformatted(root));
- if (cJSON_IsObject(payload)) {
- Schedule([this, display, payload_str = std::string(cJSON_PrintUnformatted(payload))]() {
- display->SetChatMessage("system", payload_str.c_str());
- });
- } else {
- ESP_LOGW(TAG, "Invalid custom message format: missing payload");
- }
-#endif
- } else {
- ESP_LOGW(TAG, "Unknown message type: %s", type->valuestring);
- }
- });
-
- protocol_->Start();
-}
-
-void Application::ShowActivationCode(const std::string& code, const std::string& message) {
- struct digit_sound {
- char digit;
- const std::string_view& sound;
- };
- static const std::array digit_sounds{{
- digit_sound{'0', Lang::Sounds::OGG_0},
- digit_sound{'1', Lang::Sounds::OGG_1},
- digit_sound{'2', Lang::Sounds::OGG_2},
- digit_sound{'3', Lang::Sounds::OGG_3},
- digit_sound{'4', Lang::Sounds::OGG_4},
- digit_sound{'5', Lang::Sounds::OGG_5},
- digit_sound{'6', Lang::Sounds::OGG_6},
- digit_sound{'7', Lang::Sounds::OGG_7},
- digit_sound{'8', Lang::Sounds::OGG_8},
- digit_sound{'9', Lang::Sounds::OGG_9}
- }};
-
- // This sentence uses 9KB of SRAM, so we need to wait for it to finish
- Alert(Lang::Strings::ACTIVATION, message.c_str(), "link", Lang::Sounds::OGG_ACTIVATION);
-
- for (const auto& digit : code) {
- auto it = std::find_if(digit_sounds.begin(), digit_sounds.end(),
- [digit](const digit_sound& ds) { return ds.digit == digit; });
- if (it != digit_sounds.end()) {
- audio_service_.PlaySound(it->sound);
- }
- }
-}
-
-void Application::Alert(const char* status, const char* message, const char* emotion, const std::string_view& sound) {
- ESP_LOGW(TAG, "Alert [%s] %s: %s", emotion, status, message);
- auto display = Board::GetInstance().GetDisplay();
- display->SetStatus(status);
- display->SetEmotion(emotion);
- display->SetChatMessage("system", message);
- if (!sound.empty()) {
- audio_service_.PlaySound(sound);
- }
-}
-
-void Application::DismissAlert() {
- if (GetDeviceState() == kDeviceStateIdle) {
- auto display = Board::GetInstance().GetDisplay();
- display->SetStatus(Lang::Strings::STANDBY);
- display->SetEmotion("neutral");
- display->SetChatMessage("system", "");
- }
-}
-
-void Application::ToggleChatState() {
- xEventGroupSetBits(event_group_, MAIN_EVENT_TOGGLE_CHAT);
-}
-
-void Application::StartListening() {
- xEventGroupSetBits(event_group_, MAIN_EVENT_START_LISTENING);
-}
-
-void Application::StopListening() {
- xEventGroupSetBits(event_group_, MAIN_EVENT_STOP_LISTENING);
-}
-
-void Application::HandleToggleChatEvent() {
- auto state = GetDeviceState();
-
- if (state == kDeviceStateActivating) {
- SetDeviceState(kDeviceStateIdle);
- return;
- } else if (state == kDeviceStateWifiConfiguring) {
- audio_service_.EnableAudioTesting(true);
- SetDeviceState(kDeviceStateAudioTesting);
- return;
- } else if (state == kDeviceStateAudioTesting) {
- audio_service_.EnableAudioTesting(false);
- SetDeviceState(kDeviceStateWifiConfiguring);
- return;
- }
-
- if (!protocol_) {
- ESP_LOGE(TAG, "Protocol not initialized");
- return;
- }
-
- if (state == kDeviceStateIdle) {
- if (!protocol_->IsAudioChannelOpened()) {
- SetDeviceState(kDeviceStateConnecting);
- if (!protocol_->OpenAudioChannel()) {
- return;
- }
- }
-
- SetListeningMode(aec_mode_ == kAecOff ? kListeningModeAutoStop : kListeningModeRealtime);
- } else if (state == kDeviceStateSpeaking) {
- AbortSpeaking(kAbortReasonNone);
- } else if (state == kDeviceStateListening) {
- protocol_->CloseAudioChannel();
- }
-}
-
-void Application::HandleStartListeningEvent() {
- auto state = GetDeviceState();
-
- if (state == kDeviceStateActivating) {
- SetDeviceState(kDeviceStateIdle);
- return;
- } else if (state == kDeviceStateWifiConfiguring) {
- audio_service_.EnableAudioTesting(true);
- SetDeviceState(kDeviceStateAudioTesting);
- return;
- }
-
- if (!protocol_) {
- ESP_LOGE(TAG, "Protocol not initialized");
- return;
- }
-
- if (state == kDeviceStateIdle) {
- if (!protocol_->IsAudioChannelOpened()) {
- SetDeviceState(kDeviceStateConnecting);
- if (!protocol_->OpenAudioChannel()) {
- return;
- }
- }
-
- SetListeningMode(kListeningModeManualStop);
- } else if (state == kDeviceStateSpeaking) {
- AbortSpeaking(kAbortReasonNone);
- SetListeningMode(kListeningModeManualStop);
- }
-}
-
-void Application::HandleStopListeningEvent() {
- auto state = GetDeviceState();
-
- if (state == kDeviceStateAudioTesting) {
- audio_service_.EnableAudioTesting(false);
- SetDeviceState(kDeviceStateWifiConfiguring);
- return;
- } else if (state == kDeviceStateListening) {
- if (protocol_) {
- protocol_->SendStopListening();
- }
- SetDeviceState(kDeviceStateIdle);
- }
-}
-
-void Application::HandleWakeWordDetectedEvent() {
- if (!protocol_) {
- return;
- }
-
- auto state = GetDeviceState();
-
- if (state == kDeviceStateIdle) {
- audio_service_.EncodeWakeWord();
-
- if (!protocol_->IsAudioChannelOpened()) {
- SetDeviceState(kDeviceStateConnecting);
- if (!protocol_->OpenAudioChannel()) {
- audio_service_.EnableWakeWordDetection(true);
- return;
- }
- }
-
- auto wake_word = audio_service_.GetLastWakeWord();
- ESP_LOGI(TAG, "Wake word detected: %s", wake_word.c_str());
-#if CONFIG_SEND_WAKE_WORD_DATA
- // Encode and send the wake word data to the server
- while (auto packet = audio_service_.PopWakeWordPacket()) {
- protocol_->SendAudio(std::move(packet));
- }
- // Set the chat state to wake word detected
- protocol_->SendWakeWordDetected(wake_word);
- SetListeningMode(aec_mode_ == kAecOff ? kListeningModeAutoStop : kListeningModeRealtime);
-#else
- // Set flag to play popup sound after state changes to listening
- // (PlaySound here would be cleared by ResetDecoder in EnableVoiceProcessing)
- play_popup_on_listening_ = true;
- SetListeningMode(aec_mode_ == kAecOff ? kListeningModeAutoStop : kListeningModeRealtime);
-#endif
- } else if (state == kDeviceStateSpeaking) {
- AbortSpeaking(kAbortReasonWakeWordDetected);
- } else if (state == kDeviceStateActivating) {
- // Restart the activation check if the wake word is detected during activation
- SetDeviceState(kDeviceStateIdle);
- }
-}
-
-void Application::HandleStateChangedEvent() {
- DeviceState new_state = state_machine_.GetState();
- clock_ticks_ = 0;
-
- auto& board = Board::GetInstance();
- auto display = board.GetDisplay();
- auto led = board.GetLed();
- led->OnStateChanged();
-
- switch (new_state) {
- case kDeviceStateUnknown:
- case kDeviceStateIdle:
- display->SetStatus(Lang::Strings::STANDBY);
- display->SetEmotion("neutral");
- audio_service_.EnableVoiceProcessing(false);
- audio_service_.EnableWakeWordDetection(true);
- break;
- case kDeviceStateConnecting:
- display->SetStatus(Lang::Strings::CONNECTING);
- display->SetEmotion("neutral");
- display->SetChatMessage("system", "");
- break;
- case kDeviceStateListening:
- display->SetStatus(Lang::Strings::LISTENING);
- display->SetEmotion("neutral");
-
- // Make sure the audio processor is running
- if (!audio_service_.IsAudioProcessorRunning()) {
- // Send the start listening command
- protocol_->SendStartListening(listening_mode_);
- audio_service_.EnableVoiceProcessing(true);
- audio_service_.EnableWakeWordDetection(false);
- }
-
- // Play popup sound after ResetDecoder (in EnableVoiceProcessing) has been called
- if (play_popup_on_listening_) {
- play_popup_on_listening_ = false;
- audio_service_.PlaySound(Lang::Sounds::OGG_POPUP);
- }
- break;
- case kDeviceStateSpeaking:
- display->SetStatus(Lang::Strings::SPEAKING);
-
- if (listening_mode_ != kListeningModeRealtime) {
- audio_service_.EnableVoiceProcessing(false);
- // Only AFE wake word can be detected in speaking mode
- audio_service_.EnableWakeWordDetection(audio_service_.IsAfeWakeWord());
- }
- audio_service_.ResetDecoder();
- break;
- case kDeviceStateWifiConfiguring:
- audio_service_.EnableVoiceProcessing(false);
- audio_service_.EnableWakeWordDetection(false);
- break;
- default:
- // Do nothing
- break;
- }
-}
-
-void Application::Schedule(std::function&& callback) {
- {
- std::lock_guard lock(mutex_);
- main_tasks_.push_back(std::move(callback));
- }
- xEventGroupSetBits(event_group_, MAIN_EVENT_SCHEDULE);
-}
-
-void Application::AbortSpeaking(AbortReason reason) {
- ESP_LOGI(TAG, "Abort speaking");
- aborted_ = true;
- if (protocol_) {
- protocol_->SendAbortSpeaking(reason);
- }
-}
-
-void Application::SetListeningMode(ListeningMode mode) {
- listening_mode_ = mode;
- SetDeviceState(kDeviceStateListening);
-}
-
-void Application::Reboot() {
- ESP_LOGI(TAG, "Rebooting...");
- // Disconnect the audio channel
- if (protocol_ && protocol_->IsAudioChannelOpened()) {
- protocol_->CloseAudioChannel();
- }
- protocol_.reset();
- audio_service_.Stop();
-
- vTaskDelay(pdMS_TO_TICKS(1000));
- esp_restart();
-}
-
-bool Application::UpgradeFirmware(const std::string& url, const std::string& version) {
- auto& board = Board::GetInstance();
- auto display = board.GetDisplay();
-
- std::string upgrade_url = url;
- std::string version_info = version.empty() ? "(Manual upgrade)" : version;
-
- // Close audio channel if it's open
- if (protocol_ && protocol_->IsAudioChannelOpened()) {
- ESP_LOGI(TAG, "Closing audio channel before firmware upgrade");
- protocol_->CloseAudioChannel();
- }
- ESP_LOGI(TAG, "Starting firmware upgrade from URL: %s", upgrade_url.c_str());
-
- Alert(Lang::Strings::OTA_UPGRADE, Lang::Strings::UPGRADING, "download", Lang::Sounds::OGG_UPGRADE);
- vTaskDelay(pdMS_TO_TICKS(3000));
-
- SetDeviceState(kDeviceStateUpgrading);
-
- std::string message = std::string(Lang::Strings::NEW_VERSION) + version_info;
- display->SetChatMessage("system", message.c_str());
-
- board.SetPowerSaveLevel(PowerSaveLevel::PERFORMANCE);
- audio_service_.Stop();
- vTaskDelay(pdMS_TO_TICKS(1000));
-
- bool upgrade_success = Ota::Upgrade(upgrade_url, [display](int progress, size_t speed) {
- std::thread([display, progress, speed]() {
- char buffer[32];
- snprintf(buffer, sizeof(buffer), "%d%% %uKB/s", progress, speed / 1024);
- display->SetChatMessage("system", buffer);
- }).detach();
- });
-
- if (!upgrade_success) {
- // Upgrade failed, restart audio service and continue running
- ESP_LOGE(TAG, "Firmware upgrade failed, restarting audio service and continuing operation...");
- audio_service_.Start(); // Restart audio service
- board.SetPowerSaveLevel(PowerSaveLevel::LOW_POWER); // Restore power save level
- Alert(Lang::Strings::ERROR, Lang::Strings::UPGRADE_FAILED, "circle_xmark", Lang::Sounds::OGG_EXCLAMATION);
- vTaskDelay(pdMS_TO_TICKS(3000));
- return false;
- } else {
- // Upgrade success, reboot immediately
- ESP_LOGI(TAG, "Firmware upgrade successful, rebooting...");
- display->SetChatMessage("system", "Upgrade successful, rebooting...");
- vTaskDelay(pdMS_TO_TICKS(1000)); // Brief pause to show message
- Reboot();
- return true;
- }
-}
-
-void Application::WakeWordInvoke(const std::string& wake_word) {
- if (!protocol_) {
- return;
- }
-
- auto state = GetDeviceState();
-
- if (state == kDeviceStateIdle) {
- audio_service_.EncodeWakeWord();
-
- if (!protocol_->IsAudioChannelOpened()) {
- SetDeviceState(kDeviceStateConnecting);
- if (!protocol_->OpenAudioChannel()) {
- audio_service_.EnableWakeWordDetection(true);
- return;
- }
- }
-
- ESP_LOGI(TAG, "Wake word detected: %s", wake_word.c_str());
-#if CONFIG_USE_AFE_WAKE_WORD || CONFIG_USE_CUSTOM_WAKE_WORD
- // Encode and send the wake word data to the server
- while (auto packet = audio_service_.PopWakeWordPacket()) {
- protocol_->SendAudio(std::move(packet));
- }
- // Set the chat state to wake word detected
- protocol_->SendWakeWordDetected(wake_word);
- SetListeningMode(aec_mode_ == kAecOff ? kListeningModeAutoStop : kListeningModeRealtime);
-#else
- // Set flag to play popup sound after state changes to listening
- // (PlaySound here would be cleared by ResetDecoder in EnableVoiceProcessing)
- play_popup_on_listening_ = true;
- SetListeningMode(aec_mode_ == kAecOff ? kListeningModeAutoStop : kListeningModeRealtime);
-#endif
- } else if (state == kDeviceStateSpeaking) {
- Schedule([this]() {
- AbortSpeaking(kAbortReasonNone);
- });
- } else if (state == kDeviceStateListening) {
- Schedule([this]() {
- if (protocol_) {
- protocol_->CloseAudioChannel();
- }
- });
- }
-}
-
-bool Application::CanEnterSleepMode() {
- if (GetDeviceState() != kDeviceStateIdle) {
- return false;
- }
-
- if (protocol_ && protocol_->IsAudioChannelOpened()) {
- return false;
- }
-
- if (!audio_service_.IsIdle()) {
- return false;
- }
-
- // Now it is safe to enter sleep mode
- return true;
-}
-
-void Application::SendMcpMessage(const std::string& payload) {
- // Always schedule to run in main task for thread safety
- Schedule([this, payload = std::move(payload)]() {
- if (protocol_) {
- protocol_->SendMcpMessage(payload);
- }
- });
-}
-
-void Application::SetAecMode(AecMode mode) {
- aec_mode_ = mode;
- Schedule([this]() {
- auto& board = Board::GetInstance();
- auto display = board.GetDisplay();
- switch (aec_mode_) {
- case kAecOff:
- audio_service_.EnableDeviceAec(false);
- display->ShowNotification(Lang::Strings::RTC_MODE_OFF);
- break;
- case kAecOnServerSide:
- audio_service_.EnableDeviceAec(false);
- display->ShowNotification(Lang::Strings::RTC_MODE_ON);
- break;
- case kAecOnDeviceSide:
- audio_service_.EnableDeviceAec(true);
- display->ShowNotification(Lang::Strings::RTC_MODE_ON);
- break;
- }
-
- // If the AEC mode is changed, close the audio channel
- if (protocol_ && protocol_->IsAudioChannelOpened()) {
- protocol_->CloseAudioChannel();
- }
- });
-}
-
-void Application::PlaySound(const std::string_view& sound) {
- audio_service_.PlaySound(sound);
-}
-
-void Application::ResetProtocol() {
- Schedule([this]() {
- // Close audio channel if opened
- if (protocol_ && protocol_->IsAudioChannelOpened()) {
- protocol_->CloseAudioChannel();
- }
- // Reset protocol
- protocol_.reset();
- });
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/application.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/application.h
deleted file mode 100644
index 33bda4cf..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/application.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef _APPLICATION_H_
-#define _APPLICATION_H_
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-#include "protocol.h"
-#include "ota.h"
-#include "audio_service.h"
-#include "device_state.h"
-#include "device_state_machine.h"
-
-// Main event bits
-#define MAIN_EVENT_SCHEDULE (1 << 0)
-#define MAIN_EVENT_SEND_AUDIO (1 << 1)
-#define MAIN_EVENT_WAKE_WORD_DETECTED (1 << 2)
-#define MAIN_EVENT_VAD_CHANGE (1 << 3)
-#define MAIN_EVENT_ERROR (1 << 4)
-#define MAIN_EVENT_ACTIVATION_DONE (1 << 5)
-#define MAIN_EVENT_CLOCK_TICK (1 << 6)
-#define MAIN_EVENT_NETWORK_CONNECTED (1 << 7)
-#define MAIN_EVENT_NETWORK_DISCONNECTED (1 << 8)
-#define MAIN_EVENT_TOGGLE_CHAT (1 << 9)
-#define MAIN_EVENT_START_LISTENING (1 << 10)
-#define MAIN_EVENT_STOP_LISTENING (1 << 11)
-#define MAIN_EVENT_STATE_CHANGED (1 << 12)
-
-
-enum AecMode {
- kAecOff,
- kAecOnDeviceSide,
- kAecOnServerSide,
-};
-
-class Application {
-public:
- static Application& GetInstance() {
- static Application instance;
- return instance;
- }
- // Delete copy constructor and assignment operator
- Application(const Application&) = delete;
- Application& operator=(const Application&) = delete;
-
- /**
- * Initialize the application
- * This sets up display, audio, network callbacks, etc.
- * Network connection starts asynchronously.
- */
- void Initialize();
-
- /**
- * Run the main event loop
- * This function runs in the main task and never returns.
- * It handles all events including network, state changes, and user interactions.
- */
- void Run();
-
- DeviceState GetDeviceState() const { return state_machine_.GetState(); }
- bool IsVoiceDetected() const { return audio_service_.IsVoiceDetected(); }
-
- /**
- * Request state transition
- * Returns true if transition was successful
- */
- bool SetDeviceState(DeviceState state);
-
- /**
- * Schedule a callback to be executed in the main task
- */
- void Schedule(std::function&& callback);
-
- /**
- * Alert with status, message, emotion and optional sound
- */
- void Alert(const char* status, const char* message, const char* emotion = "", const std::string_view& sound = "");
- void DismissAlert();
-
- void AbortSpeaking(AbortReason reason);
-
- /**
- * Toggle chat state (event-based, thread-safe)
- * Sends MAIN_EVENT_TOGGLE_CHAT to be handled in Run()
- */
- void ToggleChatState();
-
- /**
- * Start listening (event-based, thread-safe)
- * Sends MAIN_EVENT_START_LISTENING to be handled in Run()
- */
- void StartListening();
-
- /**
- * Stop listening (event-based, thread-safe)
- * Sends MAIN_EVENT_STOP_LISTENING to be handled in Run()
- */
- void StopListening();
-
- void Reboot();
- void WakeWordInvoke(const std::string& wake_word);
- bool UpgradeFirmware(const std::string& url, const std::string& version = "");
- bool CanEnterSleepMode();
- void SendMcpMessage(const std::string& payload);
- void SetAecMode(AecMode mode);
- AecMode GetAecMode() const { return aec_mode_; }
- void PlaySound(const std::string_view& sound);
- AudioService& GetAudioService() { return audio_service_; }
-
- /**
- * Reset protocol resources (thread-safe)
- * Can be called from any task to release resources allocated after network connected
- * This includes closing audio channel, resetting protocol and ota objects
- */
- void ResetProtocol();
-
-private:
- Application();
- ~Application();
-
- std::mutex mutex_;
- std::deque> main_tasks_;
- std::unique_ptr protocol_;
- EventGroupHandle_t event_group_ = nullptr;
- esp_timer_handle_t clock_timer_handle_ = nullptr;
- DeviceStateMachine state_machine_;
- ListeningMode listening_mode_ = kListeningModeAutoStop;
- AecMode aec_mode_ = kAecOff;
- std::string last_error_message_;
- AudioService audio_service_;
- std::unique_ptr ota_;
-
- bool has_server_time_ = false;
- bool aborted_ = false;
- bool assets_version_checked_ = false;
- bool play_popup_on_listening_ = false; // Flag to play popup sound after state changes to listening
- int clock_ticks_ = 0;
- TaskHandle_t activation_task_handle_ = nullptr;
-
-
- // Event handlers
- void HandleStateChangedEvent();
- void HandleToggleChatEvent();
- void HandleStartListeningEvent();
- void HandleStopListeningEvent();
- void HandleNetworkConnectedEvent();
- void HandleNetworkDisconnectedEvent();
- void HandleActivationDoneEvent();
- void HandleWakeWordDetectedEvent();
-
- // Activation task (runs in background)
- void ActivationTask();
-
- // Helper methods
- void CheckAssetsVersion();
- void CheckNewVersion();
- void InitializeProtocol();
- void ShowActivationCode(const std::string& code, const std::string& message);
- void SetListeningMode(ListeningMode mode);
-
- // State change handler called by state machine
- void OnStateChanged(DeviceState old_state, DeviceState new_state);
-};
-
-
-class TaskPriorityReset {
-public:
- TaskPriorityReset(BaseType_t priority) {
- original_priority_ = uxTaskPriorityGet(NULL);
- vTaskPrioritySet(NULL, priority);
- }
- ~TaskPriorityReset() {
- vTaskPrioritySet(NULL, original_priority_);
- }
-
-private:
- BaseType_t original_priority_;
-};
-
-#endif // _APPLICATION_H_
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets.cc
deleted file mode 100644
index 2d45bd36..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets.cc
+++ /dev/null
@@ -1,532 +0,0 @@
-#include "assets.h"
-#include "board.h"
-#include "display.h"
-#include "application.h"
-#include "lvgl_theme.h"
-#include "emote_display.h"
-#ifdef HAVE_LVGL
-#include "display/lcd_display.h"
-#endif
-
-#include
-#include
-#include
-#include
-
-
-#define TAG "Assets"
-
-struct mmap_assets_table {
- char asset_name[32]; /*!< Name of the asset */
- uint32_t asset_size; /*!< Size of the asset */
- uint32_t asset_offset; /*!< Offset of the asset */
- uint16_t asset_width; /*!< Width of the asset */
- uint16_t asset_height; /*!< Height of the asset */
-};
-
-
-Assets::Assets() {
- // Initialize the partition
- InitializePartition();
-}
-
-Assets::~Assets() {
- if (mmap_handle_ != 0) {
- esp_partition_munmap(mmap_handle_);
- }
-}
-
-uint32_t Assets::CalculateChecksum(const char* data, uint32_t length) {
- uint32_t checksum = 0;
- for (uint32_t i = 0; i < length; i++) {
- checksum += data[i];
- }
- return checksum & 0xFFFF;
-}
-
-bool Assets::InitializePartition() {
- partition_valid_ = false;
- checksum_valid_ = false;
- assets_.clear();
-
- partition_ = esp_partition_find_first(ESP_PARTITION_TYPE_ANY, ESP_PARTITION_SUBTYPE_ANY, "assets");
- if (partition_ == nullptr) {
- ESP_LOGI(TAG, "No assets partition found");
- return false;
- }
-
- int free_pages = spi_flash_mmap_get_free_pages(SPI_FLASH_MMAP_DATA);
- uint32_t storage_size = free_pages * 64 * 1024;
- ESP_LOGI(TAG, "The storage free size is %ld KB", storage_size / 1024);
- ESP_LOGI(TAG, "The partition size is %ld KB", partition_->size / 1024);
- if (storage_size < partition_->size) {
- ESP_LOGE(TAG, "The free size %ld KB is less than assets partition required %ld KB", storage_size / 1024, partition_->size / 1024);
- return false;
- }
-
- esp_err_t err = esp_partition_mmap(partition_, 0, partition_->size, ESP_PARTITION_MMAP_DATA, (const void**)&mmap_root_, &mmap_handle_);
- if (err != ESP_OK) {
- ESP_LOGE(TAG, "Failed to mmap assets partition: %s", esp_err_to_name(err));
- return false;
- }
-
- partition_valid_ = true;
-
- uint32_t stored_files = *(uint32_t*)(mmap_root_ + 0);
- uint32_t stored_chksum = *(uint32_t*)(mmap_root_ + 4);
- uint32_t stored_len = *(uint32_t*)(mmap_root_ + 8);
-
- if (stored_len > partition_->size - 12) {
- ESP_LOGD(TAG, "The stored_len (0x%lx) is greater than the partition size (0x%lx) - 12", stored_len, partition_->size);
- return false;
- }
-
- auto start_time = esp_timer_get_time();
- uint32_t calculated_checksum = CalculateChecksum(mmap_root_ + 12, stored_len);
- auto end_time = esp_timer_get_time();
- ESP_LOGI(TAG, "The checksum calculation time is %d ms", int((end_time - start_time) / 1000));
-
- if (calculated_checksum != stored_chksum) {
- ESP_LOGE(TAG, "The calculated checksum (0x%lx) does not match the stored checksum (0x%lx)", calculated_checksum, stored_chksum);
- return false;
- }
-
- checksum_valid_ = true;
-
- for (uint32_t i = 0; i < stored_files; i++) {
- auto item = (const mmap_assets_table*)(mmap_root_ + 12 + i * sizeof(mmap_assets_table));
- auto asset = Asset{
- .size = static_cast(item->asset_size),
- .offset = static_cast(12 + sizeof(mmap_assets_table) * stored_files + item->asset_offset)
- };
- assets_[item->asset_name] = asset;
- }
- return checksum_valid_;
-}
-
-bool Assets::Apply() {
- void* ptr = nullptr;
- size_t size = 0;
- if (!GetAssetData("index.json", ptr, size)) {
- ESP_LOGE(TAG, "The index.json file is not found");
- return false;
- }
-
- cJSON* root = cJSON_ParseWithLength(static_cast(ptr), size);
- if (root == nullptr) {
- ESP_LOGE(TAG, "The index.json file is not valid");
- return false;
- }
-
- cJSON* version = cJSON_GetObjectItem(root, "version");
- if (cJSON_IsNumber(version)) {
- if (version->valuedouble > 1) {
- ESP_LOGE(TAG, "The assets version %d is not supported, please upgrade the firmware", version->valueint);
- return false;
- }
- }
-
- cJSON* srmodels = cJSON_GetObjectItem(root, "srmodels");
- if (cJSON_IsString(srmodels)) {
- std::string srmodels_file = srmodels->valuestring;
- if (GetAssetData(srmodels_file, ptr, size)) {
- if (models_list_ != nullptr) {
- esp_srmodel_deinit(models_list_);
- models_list_ = nullptr;
- }
- models_list_ = srmodel_load(static_cast(ptr));
- if (models_list_ != nullptr) {
- auto& app = Application::GetInstance();
- app.GetAudioService().SetModelsList(models_list_);
- } else {
- ESP_LOGE(TAG, "Failed to load srmodels.bin");
- }
- } else {
- ESP_LOGE(TAG, "The srmodels file %s is not found", srmodels_file.c_str());
- }
- }
-
-#ifdef HAVE_LVGL
- auto& theme_manager = LvglThemeManager::GetInstance();
- auto light_theme = theme_manager.GetTheme("light");
- auto dark_theme = theme_manager.GetTheme("dark");
-
- cJSON* font = cJSON_GetObjectItem(root, "text_font");
- if (cJSON_IsString(font)) {
- std::string fonts_text_file = font->valuestring;
- if (GetAssetData(fonts_text_file, ptr, size)) {
- auto text_font = std::make_shared(ptr);
- if (text_font->font() == nullptr) {
- ESP_LOGE(TAG, "Failed to load fonts.bin");
- return false;
- }
- if (light_theme != nullptr) {
- light_theme->set_text_font(text_font);
- }
- if (dark_theme != nullptr) {
- dark_theme->set_text_font(text_font);
- }
- } else {
- ESP_LOGE(TAG, "The font file %s is not found", fonts_text_file.c_str());
- }
- }
-
- cJSON* emoji_collection = cJSON_GetObjectItem(root, "emoji_collection");
- if (cJSON_IsArray(emoji_collection)) {
- auto custom_emoji_collection = std::make_shared();
- int emoji_count = cJSON_GetArraySize(emoji_collection);
- for (int i = 0; i < emoji_count; i++) {
- cJSON* emoji = cJSON_GetArrayItem(emoji_collection, i);
- if (cJSON_IsObject(emoji)) {
- cJSON* name = cJSON_GetObjectItem(emoji, "name");
- cJSON* file = cJSON_GetObjectItem(emoji, "file");
- cJSON* eaf = cJSON_GetObjectItem(emoji, "eaf");
- if (cJSON_IsString(name) && cJSON_IsString(file) && (NULL== eaf)) {
- if (!GetAssetData(file->valuestring, ptr, size)) {
- ESP_LOGE(TAG, "Emoji %s image file %s is not found", name->valuestring, file->valuestring);
- continue;
- }
- custom_emoji_collection->AddEmoji(name->valuestring, new LvglRawImage(ptr, size));
- }
- }
- }
- if (light_theme != nullptr) {
- light_theme->set_emoji_collection(custom_emoji_collection);
- }
- if (dark_theme != nullptr) {
- dark_theme->set_emoji_collection(custom_emoji_collection);
- }
- }
-
- cJSON* skin = cJSON_GetObjectItem(root, "skin");
- if (cJSON_IsObject(skin)) {
- cJSON* light_skin = cJSON_GetObjectItem(skin, "light");
- if (cJSON_IsObject(light_skin) && light_theme != nullptr) {
- cJSON* text_color = cJSON_GetObjectItem(light_skin, "text_color");
- cJSON* background_color = cJSON_GetObjectItem(light_skin, "background_color");
- cJSON* background_image = cJSON_GetObjectItem(light_skin, "background_image");
- if (cJSON_IsString(text_color)) {
- light_theme->set_text_color(LvglTheme::ParseColor(text_color->valuestring));
- }
- if (cJSON_IsString(background_color)) {
- light_theme->set_background_color(LvglTheme::ParseColor(background_color->valuestring));
- light_theme->set_chat_background_color(LvglTheme::ParseColor(background_color->valuestring));
- }
- if (cJSON_IsString(background_image)) {
- if (!GetAssetData(background_image->valuestring, ptr, size)) {
- ESP_LOGE(TAG, "The background image file %s is not found", background_image->valuestring);
- return false;
- }
- auto background_image = std::make_shared(ptr);
- light_theme->set_background_image(background_image);
- }
- }
- cJSON* dark_skin = cJSON_GetObjectItem(skin, "dark");
- if (cJSON_IsObject(dark_skin) && dark_theme != nullptr) {
- cJSON* text_color = cJSON_GetObjectItem(dark_skin, "text_color");
- cJSON* background_color = cJSON_GetObjectItem(dark_skin, "background_color");
- cJSON* background_image = cJSON_GetObjectItem(dark_skin, "background_image");
- if (cJSON_IsString(text_color)) {
- dark_theme->set_text_color(LvglTheme::ParseColor(text_color->valuestring));
- }
- if (cJSON_IsString(background_color)) {
- dark_theme->set_background_color(LvglTheme::ParseColor(background_color->valuestring));
- dark_theme->set_chat_background_color(LvglTheme::ParseColor(background_color->valuestring));
- }
- if (cJSON_IsString(background_image)) {
- if (!GetAssetData(background_image->valuestring, ptr, size)) {
- ESP_LOGE(TAG, "The background image file %s is not found", background_image->valuestring);
- return false;
- }
- auto background_image = std::make_shared(ptr);
- dark_theme->set_background_image(background_image);
- }
- }
- }
-
- auto display = Board::GetInstance().GetDisplay();
- ESP_LOGI(TAG, "Refreshing display theme...");
-
- auto current_theme = display->GetTheme();
- if (current_theme != nullptr) {
- display->SetTheme(current_theme);
- }
-
- // Parse hide_subtitle configuration
- cJSON* hide_subtitle = cJSON_GetObjectItem(root, "hide_subtitle");
- if (cJSON_IsBool(hide_subtitle)) {
- bool hide = cJSON_IsTrue(hide_subtitle);
- auto lcd_display = dynamic_cast(display);
- if (lcd_display != nullptr) {
- lcd_display->SetHideSubtitle(hide);
- ESP_LOGI(TAG, "Set hide_subtitle to %s", hide ? "true" : "false");
- }
- }
-
-#elif defined(CONFIG_USE_EMOTE_MESSAGE_STYLE)
- auto &board = Board::GetInstance();
- auto display = board.GetDisplay();
- auto emote_display = dynamic_cast(display);
-
- cJSON* font = cJSON_GetObjectItem(root, "text_font");
- if (cJSON_IsString(font)) {
- std::string fonts_text_file = font->valuestring;
- if (GetAssetData(fonts_text_file, ptr, size)) {
- auto text_font = std::make_shared(ptr);
- if (text_font->font() == nullptr) {
- ESP_LOGE(TAG, "Failed to load fonts.bin");
- return false;
- }
-
- if (emote_display) {
- emote_display->AddTextFont(text_font);
- }
- } else {
- ESP_LOGE(TAG, "The font file %s is not found", fonts_text_file.c_str());
- }
- }
-
- cJSON* emoji_collection = cJSON_GetObjectItem(root, "emoji_collection");
- if (cJSON_IsArray(emoji_collection)) {
- int emoji_count = cJSON_GetArraySize(emoji_collection);
- if (emote_display) {
- for (int i = 0; i < emoji_count; i++) {
- cJSON* icon = cJSON_GetArrayItem(emoji_collection, i);
- if (cJSON_IsObject(icon)) {
- cJSON* name = cJSON_GetObjectItem(icon, "name");
- cJSON* file = cJSON_GetObjectItem(icon, "file");
-
- if (cJSON_IsString(name) && cJSON_IsString(file)) {
- if (GetAssetData(file->valuestring, ptr, size)) {
- cJSON* eaf = cJSON_GetObjectItem(icon, "eaf");
- bool lack_value = false;
- bool loop_value = false;
- int fps_value = 0;
-
- if (cJSON_IsObject(eaf)) {
- cJSON* lack = cJSON_GetObjectItem(eaf, "lack");
- cJSON* loop = cJSON_GetObjectItem(eaf, "loop");
- cJSON* fps = cJSON_GetObjectItem(eaf, "fps");
-
- lack_value = lack ? cJSON_IsTrue(lack) : false;
- loop_value = loop ? cJSON_IsTrue(loop) : false;
- fps_value = fps ? fps->valueint : 0;
-
- emote_display->AddEmojiData(name->valuestring, ptr, size,
- static_cast(fps_value),
- loop_value, lack_value);
- }
-
- } else {
- ESP_LOGE(TAG, "Emoji \"%10s\" image file %s is not found", name->valuestring, file->valuestring);
- }
- }
- }
- }
- }
- }
-
- cJSON* icon_collection = cJSON_GetObjectItem(root, "icon_collection");
- if (cJSON_IsArray(icon_collection)) {
- if (emote_display) {
- int icon_count = cJSON_GetArraySize(icon_collection);
- for (int i = 0; i < icon_count; i++) {
- cJSON* icon = cJSON_GetArrayItem(icon_collection, i);
- if (cJSON_IsObject(icon)) {
- cJSON* name = cJSON_GetObjectItem(icon, "name");
- cJSON* file = cJSON_GetObjectItem(icon, "file");
-
- if (cJSON_IsString(name) && cJSON_IsString(file)) {
- if (GetAssetData(file->valuestring, ptr, size)) {
- emote_display->AddIconData(name->valuestring, ptr, size);
- } else {
- ESP_LOGE(TAG, "Icon \"%10s\" image file %s is not found", name->valuestring, file->valuestring);
- }
- }
- }
- }
- }
- }
-
- cJSON* layout_json = cJSON_GetObjectItem(root, "layout");
- if (cJSON_IsArray(layout_json)) {
- int layout_count = cJSON_GetArraySize(layout_json);
-
- for (int i = 0; i < layout_count; i++) {
- cJSON* layout_item = cJSON_GetArrayItem(layout_json, i);
- if (cJSON_IsObject(layout_item)) {
- cJSON* name = cJSON_GetObjectItem(layout_item, "name");
- cJSON* align = cJSON_GetObjectItem(layout_item, "align");
- cJSON* x = cJSON_GetObjectItem(layout_item, "x");
- cJSON* y = cJSON_GetObjectItem(layout_item, "y");
- cJSON* width = cJSON_GetObjectItem(layout_item, "width");
- cJSON* height = cJSON_GetObjectItem(layout_item, "height");
-
- if (cJSON_IsString(name) && cJSON_IsString(align) && cJSON_IsNumber(x) && cJSON_IsNumber(y)) {
- int width_val = cJSON_IsNumber(width) ? width->valueint : 0;
- int height_val = cJSON_IsNumber(height) ? height->valueint : 0;
-
- if (emote_display) {
- emote_display->AddLayoutData(name->valuestring, align->valuestring,
- x->valueint, y->valueint, width_val, height_val);
- }
- } else {
- ESP_LOGW(TAG, "Invalid layout item %d: missing required fields", i);
- }
- }
- }
- }
-#endif
-
- cJSON_Delete(root);
- return true;
-}
-
-bool Assets::Download(std::string url, std::function progress_callback) {
- ESP_LOGI(TAG, "Downloading new version of assets from %s", url.c_str());
-
- // 取消当前资源分区的内存映射
- if (mmap_handle_ != 0) {
- esp_partition_munmap(mmap_handle_);
- mmap_handle_ = 0;
- mmap_root_ = nullptr;
- }
- checksum_valid_ = false;
- assets_.clear();
-
- // 下载新的资源文件
- auto network = Board::GetInstance().GetNetwork();
- auto http = network->CreateHttp(0);
-
- if (!http->Open("GET", url)) {
- ESP_LOGE(TAG, "Failed to open HTTP connection");
- return false;
- }
-
- if (http->GetStatusCode() != 200) {
- ESP_LOGE(TAG, "Failed to get assets, status code: %d", http->GetStatusCode());
- return false;
- }
-
- size_t content_length = http->GetBodyLength();
- if (content_length == 0) {
- ESP_LOGE(TAG, "Failed to get content length");
- return false;
- }
-
- if (content_length > partition_->size) {
- ESP_LOGE(TAG, "Assets file size (%u) is larger than partition size (%lu)", content_length, partition_->size);
- return false;
- }
-
- // 定义扇区大小为4KB(ESP32的标准扇区大小)
- const size_t SECTOR_SIZE = esp_partition_get_main_flash_sector_size();
-
- // 计算需要擦除的扇区数量
- size_t sectors_to_erase = (content_length + SECTOR_SIZE - 1) / SECTOR_SIZE; // 向上取整
- size_t total_erase_size = sectors_to_erase * SECTOR_SIZE;
-
- ESP_LOGI(TAG, "Sector size: %u, content length: %u, sectors to erase: %u, total erase size: %u",
- SECTOR_SIZE, content_length, sectors_to_erase, total_erase_size);
-
- // 写入新的资源文件到分区,一边erase一边写入
- char buffer[512];
- size_t total_written = 0;
- size_t recent_written = 0;
- size_t current_sector = 0;
- auto last_calc_time = esp_timer_get_time();
-
- while (true) {
- int ret = http->Read(buffer, sizeof(buffer));
- if (ret < 0) {
- ESP_LOGE(TAG, "Failed to read HTTP data: %s", esp_err_to_name(ret));
- return false;
- }
-
- if (ret == 0) {
- break;
- }
-
- // 检查是否需要擦除新的扇区
- size_t write_end_offset = total_written + ret;
- size_t needed_sectors = (write_end_offset + SECTOR_SIZE - 1) / SECTOR_SIZE;
-
- // 擦除需要的新扇区
- while (current_sector < needed_sectors) {
- size_t sector_start = current_sector * SECTOR_SIZE;
- size_t sector_end = (current_sector + 1) * SECTOR_SIZE;
-
- // 确保擦除范围不超过分区大小
- if (sector_end > partition_->size) {
- ESP_LOGE(TAG, "Sector end (%u) exceeds partition size (%lu)", sector_end, partition_->size);
- return false;
- }
-
- ESP_LOGD(TAG, "Erasing sector %u (offset: %u, size: %u)", current_sector, sector_start, SECTOR_SIZE);
- esp_err_t err = esp_partition_erase_range(partition_, sector_start, SECTOR_SIZE);
- if (err != ESP_OK) {
- ESP_LOGE(TAG, "Failed to erase sector %u at offset %u: %s", current_sector, sector_start, esp_err_to_name(err));
- return false;
- }
-
- current_sector++;
- }
-
- // 写入数据到分区
- esp_err_t err = esp_partition_write(partition_, total_written, buffer, ret);
- if (err != ESP_OK) {
- ESP_LOGE(TAG, "Failed to write to assets partition at offset %u: %s", total_written, esp_err_to_name(err));
- return false;
- }
-
- total_written += ret;
- recent_written += ret;
-
- // 计算进度和速度
- if (esp_timer_get_time() - last_calc_time >= 1000000 || total_written == content_length || ret == 0) {
- size_t progress = total_written * 100 / content_length;
- size_t speed = recent_written; // 每秒的字节数
- ESP_LOGI(TAG, "Progress: %u%% (%u/%u), Speed: %u B/s, Sectors erased: %u",
- progress, total_written, content_length, speed, current_sector);
- if (progress_callback) {
- progress_callback(progress, speed);
- }
- last_calc_time = esp_timer_get_time();
- recent_written = 0; // 重置最近写入的字节数
- }
- }
-
- http->Close();
-
- if (total_written != content_length) {
- ESP_LOGE(TAG, "Downloaded size (%u) does not match expected size (%u)", total_written, content_length);
- return false;
- }
-
- ESP_LOGI(TAG, "Assets download completed, total written: %u bytes, total sectors erased: %u",
- total_written, current_sector);
-
- // 重新初始化资源分区
- if (!InitializePartition()) {
- ESP_LOGE(TAG, "Failed to re-initialize assets partition");
- return false;
- }
-
- return true;
-}
-
-bool Assets::GetAssetData(const std::string& name, void*& ptr, size_t& size) {
- auto asset = assets_.find(name);
- if (asset == assets_.end()) {
- return false;
- }
- auto data = (const char*)(mmap_root_ + asset->second.offset);
- if (data[0] != 'Z' || data[1] != 'Z') {
- ESP_LOGE(TAG, "The asset %s is not valid with magic %02x%02x", name.c_str(), data[0], data[1]);
- return false;
- }
-
- ptr = static_cast(const_cast(data + 2));
- size = asset->second.size;
- return true;
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets.h
deleted file mode 100644
index 016692ee..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef ASSETS_H
-#define ASSETS_H
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-
-struct Asset {
- size_t size;
- size_t offset;
-};
-
-class Assets {
-public:
- static Assets& GetInstance() {
- static Assets instance;
- return instance;
- }
- ~Assets();
-
- bool Download(std::string url, std::function progress_callback);
- bool Apply();
- bool GetAssetData(const std::string& name, void*& ptr, size_t& size);
-
- inline bool partition_valid() const { return partition_valid_; }
- inline bool checksum_valid() const { return checksum_valid_; }
- inline std::string default_assets_url() const { return default_assets_url_; }
-
-private:
- Assets();
- Assets(const Assets&) = delete;
- Assets& operator=(const Assets&) = delete;
-
- bool InitializePartition();
- uint32_t CalculateChecksum(const char* data, uint32_t length);
-
- const esp_partition_t* partition_ = nullptr;
- esp_partition_mmap_handle_t mmap_handle_ = 0;
- const char* mmap_root_ = nullptr;
- bool partition_valid_ = false;
- bool checksum_valid_ = false;
- std::string default_assets_url_;
- srmodel_list_t* models_list_ = nullptr;
- std::map assets_;
-};
-
-#endif
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/exclamation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/exclamation.ogg
deleted file mode 100644
index 9a4cf584..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/exclamation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/low_battery.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/low_battery.ogg
deleted file mode 100644
index 968b3ee1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/low_battery.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/popup.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/popup.ogg
deleted file mode 100644
index ea73b6f8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/popup.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/success.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/success.ogg
deleted file mode 100644
index ced19026..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/success.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/vibration.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/vibration.ogg
deleted file mode 100644
index 00764361..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/common/vibration.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/0.ogg
deleted file mode 100644
index c6565827..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/1.ogg
deleted file mode 100644
index dca3e06d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/2.ogg
deleted file mode 100644
index 6d1f4d7a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/3.ogg
deleted file mode 100644
index 12667d9b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/4.ogg
deleted file mode 100644
index e12dd7a2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/5.ogg
deleted file mode 100644
index 7dae30dc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/6.ogg
deleted file mode 100644
index 697278b3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/7.ogg
deleted file mode 100644
index f83701de..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/8.ogg
deleted file mode 100644
index bf3d2a1e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/9.ogg
deleted file mode 100644
index 6d62228b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/activation.ogg
deleted file mode 100644
index 17aa0081..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/err_pin.ogg
deleted file mode 100644
index 8c624f5c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/err_reg.ogg
deleted file mode 100644
index b540a47c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/language.json
deleted file mode 100644
index 88263e40..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "ar-SA"
- },
- "strings": {
- "WARNING": "تحذير",
- "INFO": "معلومات",
- "ERROR": "خطأ",
- "VERSION": "الإصدار ",
- "LOADING_PROTOCOL": "الاتصال بالخادم...",
- "INITIALIZING": "التهيئة...",
- "PIN_ERROR": "يرجى إدخال بطاقة SIM",
- "REG_ERROR": "لا يمكن الوصول إلى الشبكة، يرجى التحقق من حالة بطاقة البيانات",
- "DETECTING_MODULE": "اكتشاف الوحدة...",
- "REGISTERING_NETWORK": "انتظار الشبكة...",
- "CHECKING_NEW_VERSION": "فحص الإصدار الجديد...",
- "CHECK_NEW_VERSION_FAILED": "فشل فحص الإصدار الجديد، سيتم المحاولة خلال %d ثانية: %s",
- "SWITCH_TO_WIFI_NETWORK": "التبديل إلى Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "التبديل إلى 4G...",
- "STANDBY": "في الانتظار",
- "CONNECT_TO": "الاتصال بـ ",
- "CONNECTING": "جاري الاتصال...",
- "CONNECTED_TO": "متصل بـ ",
- "LISTENING": "الاستماع...",
- "SPEAKING": "التحدث...",
- "SERVER_NOT_FOUND": "البحث عن خدمة متاحة",
- "SERVER_NOT_CONNECTED": "لا يمكن الاتصال بالخدمة، يرجى المحاولة لاحقاً",
- "SERVER_TIMEOUT": "انتهت مهلة الاستجابة",
- "SERVER_ERROR": "فشل الإرسال، يرجى التحقق من الشبكة",
- "CONNECT_TO_HOTSPOT": "اتصل الهاتف بنقطة الاتصال ",
- "ACCESS_VIA_BROWSER": "،الوصول عبر المتصفح ",
- "WIFI_CONFIG_MODE": "وضع تكوين الشبكة",
- "ENTERING_WIFI_CONFIG_MODE": "الدخول في وضع تكوين الشبكة...",
- "SCANNING_WIFI": "فحص Wi-Fi...",
- "NEW_VERSION": "إصدار جديد ",
- "OTA_UPGRADE": "تحديث OTA",
- "UPGRADING": "تحديث النظام...",
- "UPGRADE_FAILED": "فشل التحديث",
- "ACTIVATION": "تفعيل الجهاز",
- "BATTERY_LOW": "البطارية منخفضة",
- "BATTERY_CHARGING": "جاري الشحن",
- "BATTERY_FULL": "البطارية ممتلئة",
- "BATTERY_NEED_CHARGE": "البطارية منخفضة، يرجى الشحن",
- "VOLUME": "الصوت ",
- "MUTED": "صامت",
- "MAX_VOLUME": "أقصى صوت",
- "RTC_MODE_OFF": "AEC مُوقف",
- "RTC_MODE_ON": "AEC مُشغل",
- "DOWNLOAD_ASSETS_FAILED": "فشل في تنزيل الموارد",
- "LOADING_ASSETS": "جاري تحميل الموارد...",
- "PLEASE_WAIT": "يرجى الانتظار...",
- "FOUND_NEW_ASSETS": "تم العثور على موارد جديدة: %s",
- "HELLO_MY_FRIEND": "مرحباً، صديقي!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/upgrade.ogg
deleted file mode 100644
index f60d3742..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/welcome.ogg
deleted file mode 100644
index 77028add..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/wificonfig.ogg
deleted file mode 100644
index b82f7a8b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ar-SA/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/0.ogg
deleted file mode 100644
index 0cf64837..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/1.ogg
deleted file mode 100644
index 68bc66b1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/2.ogg
deleted file mode 100644
index 71f874d5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/3.ogg
deleted file mode 100644
index 95aaceb0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/4.ogg
deleted file mode 100644
index af31cf75..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/5.ogg
deleted file mode 100644
index bae3dd89..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/6.ogg
deleted file mode 100644
index 7271edc7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/7.ogg
deleted file mode 100644
index 707f7f20..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/8.ogg
deleted file mode 100644
index 52c45135..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/9.ogg
deleted file mode 100644
index dd5a37f2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/activation.ogg
deleted file mode 100644
index d9bfb787..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/err_pin.ogg
deleted file mode 100644
index 5a1f5cc8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/err_reg.ogg
deleted file mode 100644
index 992557cb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/language.json
deleted file mode 100644
index 9a6b05eb..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "bg-BG"
- },
- "strings": {
- "WARNING": "Предупреждение",
- "INFO": "Информация",
- "ERROR": "Грешка",
- "VERSION": "Версия ",
- "LOADING_PROTOCOL": "Влизане в системата...",
- "INITIALIZING": "Инициализация...",
- "PIN_ERROR": "Моля, поставете SIM карта",
- "REG_ERROR": "Не може да се осъществи достъп до мрежата, моля проверете статуса на SIM картата",
- "DETECTING_MODULE": "Откриване на модул...",
- "REGISTERING_NETWORK": "Изчакване на мрежата...",
- "CHECKING_NEW_VERSION": "Проверка за нова версия...",
- "CHECK_NEW_VERSION_FAILED": "Проверката за нова версия е неуспешна, ще се опита отново след %d секунди: %s",
- "SWITCH_TO_WIFI_NETWORK": "Превключване към Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Превключване към 4G...",
- "STANDBY": "Режим на готовност",
- "CONNECT_TO": "Свързване към ",
- "CONNECTING": "Свързване...",
- "CONNECTION_SUCCESSFUL": "Успешно свързване",
- "CONNECTED_TO": "Свързан към ",
- "LISTENING": "Слушане...",
- "SPEAKING": "Говорене...",
- "SERVER_NOT_FOUND": "Търсене на налична услуга",
- "SERVER_NOT_CONNECTED": "Не може да се свърже с услугата, моля опитайте по-късно",
- "SERVER_TIMEOUT": "Времето за изчакване на отговор изтече",
- "SERVER_ERROR": "Неуспешно изпращане, моля проверете мрежата",
- "CONNECT_TO_HOTSPOT": "Горещa точка: ",
- "ACCESS_VIA_BROWSER": " Конфигурационен URL: ",
- "WIFI_CONFIG_MODE": "Режим на конфигуриране на Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Влизане в режим на конфигуриране на Wi-Fi...",
- "SCANNING_WIFI": "Сканиране на Wi-Fi...",
- "NEW_VERSION": "Нова версия ",
- "OTA_UPGRADE": "OTA надстройка",
- "UPGRADING": "Системата се надстройва...",
- "UPGRADE_FAILED": "Надстройката е неуспешна",
- "ACTIVATION": "Активация",
- "BATTERY_LOW": "Слаба батерия",
- "BATTERY_CHARGING": "Зарядна",
- "BATTERY_FULL": "Батерията е пълна",
- "BATTERY_NEED_CHARGE": "Слаба батерия, моля заредете",
- "VOLUME": "Сила на звука ",
- "MUTED": "Заглушено",
- "MAX_VOLUME": "Максимална сила на звука",
- "RTC_MODE_OFF": "AEC изключен",
- "RTC_MODE_ON": "AEC включен",
- "PLEASE_WAIT": "Моля, изчакайте...",
- "FOUND_NEW_ASSETS": "Намерени нови ресурси: %s",
- "DOWNLOAD_ASSETS_FAILED": "Неуспешно изтегляне на ресурси",
- "LOADING_ASSETS": "Зареждане на ресурси...",
- "HELLO_MY_FRIEND": "Здравей, мой приятел!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/upgrade.ogg
deleted file mode 100644
index 9c1a885a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/welcome.ogg
deleted file mode 100644
index 71e547b6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/wificonfig.ogg
deleted file mode 100644
index 7d84033f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/bg-BG/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/0.ogg
deleted file mode 100644
index 2934044c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/1.ogg
deleted file mode 100644
index 2069b406..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/2.ogg
deleted file mode 100644
index 926011c9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/3.ogg
deleted file mode 100644
index ce938332..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/4.ogg
deleted file mode 100644
index 8a3b4a9e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/5.ogg
deleted file mode 100644
index 87144f57..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/6.ogg
deleted file mode 100644
index b6408299..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/7.ogg
deleted file mode 100644
index f6039c5d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/8.ogg
deleted file mode 100644
index c6cca34d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/9.ogg
deleted file mode 100644
index 704dca08..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/activation.ogg
deleted file mode 100644
index 082e561c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/err_pin.ogg
deleted file mode 100644
index ea11662c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/err_reg.ogg
deleted file mode 100644
index 3e9b0427..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/language.json
deleted file mode 100644
index 02337e33..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "ca-ES"
- },
- "strings": {
- "WARNING": "Advertència",
- "INFO": "Informació",
- "ERROR": "Error",
- "VERSION": "Versió ",
- "LOADING_PROTOCOL": "Iniciant sessió...",
- "INITIALIZING": "Inicialitzant...",
- "PIN_ERROR": "Si us plau, inseriu la targeta SIM",
- "REG_ERROR": "No es pot accedir a la xarxa, si us plau comproveu l'estat de la targeta SIM",
- "DETECTING_MODULE": "Detectant mòdul...",
- "REGISTERING_NETWORK": "Esperant la xarxa...",
- "CHECKING_NEW_VERSION": "Comprovant nova versió...",
- "CHECK_NEW_VERSION_FAILED": "La comprovació de nova versió ha fallat, es tornarà a intentar en %d segons: %s",
- "SWITCH_TO_WIFI_NETWORK": "Canviant a Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Canviant a 4G...",
- "STANDBY": "En espera",
- "CONNECT_TO": "Connectar a ",
- "CONNECTING": "Connectant...",
- "CONNECTION_SUCCESSFUL": "Connexió exitosa",
- "CONNECTED_TO": "Connectat a ",
- "LISTENING": "Escoltant...",
- "SPEAKING": "Parlant...",
- "SERVER_NOT_FOUND": "Buscant servei disponible",
- "SERVER_NOT_CONNECTED": "No es pot connectar al servei, si us plau intenteu-ho més tard",
- "SERVER_TIMEOUT": "Temps d'espera de resposta exhaurit",
- "SERVER_ERROR": "L'enviament ha fallat, si us plau comproveu la xarxa",
- "CONNECT_TO_HOTSPOT": "Punt d'accés: ",
- "ACCESS_VIA_BROWSER": " URL de configuració: ",
- "WIFI_CONFIG_MODE": "Mode de configuració Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Entrant en mode de configuració Wi-Fi...",
- "SCANNING_WIFI": "Escanejant Wi-Fi...",
- "NEW_VERSION": "Nova versió ",
- "OTA_UPGRADE": "Actualització OTA",
- "UPGRADING": "El sistema s'està actualitzant...",
- "UPGRADE_FAILED": "L'actualització ha fallat",
- "ACTIVATION": "Activació",
- "BATTERY_LOW": "Bateria baixa",
- "BATTERY_CHARGING": "Carregant",
- "BATTERY_FULL": "Bateria plena",
- "BATTERY_NEED_CHARGE": "Bateria baixa, si us plau carregueu",
- "VOLUME": "Volum ",
- "MUTED": "Silenciat",
- "MAX_VOLUME": "Volum màxim",
- "RTC_MODE_OFF": "AEC desactivat",
- "RTC_MODE_ON": "AEC activat",
- "PLEASE_WAIT": "Si us plau, espereu...",
- "FOUND_NEW_ASSETS": "S'han trobat nous recursos: %s",
- "DOWNLOAD_ASSETS_FAILED": "No s'han pogut descarregar els recursos",
- "LOADING_ASSETS": "Carregant recursos...",
- "HELLO_MY_FRIEND": "Hola, amic meu!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/upgrade.ogg
deleted file mode 100644
index 1bb2f280..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/welcome.ogg
deleted file mode 100644
index 530d04eb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/wificonfig.ogg
deleted file mode 100644
index a4b77cd6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ca-ES/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/0.ogg
deleted file mode 100644
index 96891e69..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/1.ogg
deleted file mode 100644
index a12d6380..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/2.ogg
deleted file mode 100644
index a18d97e3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/3.ogg
deleted file mode 100644
index a2d9d3da..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/4.ogg
deleted file mode 100644
index 76646ed2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/5.ogg
deleted file mode 100644
index 2d9ab259..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/6.ogg
deleted file mode 100644
index 571ff305..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/7.ogg
deleted file mode 100644
index e8f0f94e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/8.ogg
deleted file mode 100644
index 0f72a581..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/9.ogg
deleted file mode 100644
index c1026671..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/activation.ogg
deleted file mode 100644
index b4334a41..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/err_pin.ogg
deleted file mode 100644
index 07818a1c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/err_reg.ogg
deleted file mode 100644
index 6d4752e4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/language.json
deleted file mode 100644
index 1e18a5cd..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "cs-CZ"
- },
- "strings": {
- "WARNING": "Varování",
- "INFO": "Informace",
- "ERROR": "Chyba",
- "VERSION": "Verze ",
- "LOADING_PROTOCOL": "Připojování k serveru...",
- "INITIALIZING": "Inicializace...",
- "PIN_ERROR": "Prosím vložte SIM kartu",
- "REG_ERROR": "Nelze se připojit k síti, zkontrolujte stav datové karty",
- "DETECTING_MODULE": "Detekce modulu...",
- "REGISTERING_NETWORK": "Čekání na síť...",
- "CHECKING_NEW_VERSION": "Kontrola nové verze...",
- "CHECK_NEW_VERSION_FAILED": "Kontrola nové verze selhala, opakování za %d sekund: %s",
- "SWITCH_TO_WIFI_NETWORK": "Přepínání na Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Přepínání na 4G...",
- "STANDBY": "Pohotovost",
- "CONNECT_TO": "Připojit k ",
- "CONNECTING": "Připojování...",
- "CONNECTED_TO": "Připojeno k ",
- "LISTENING": "Naslouchání...",
- "SPEAKING": "Mluvení...",
- "SERVER_NOT_FOUND": "Hledání dostupné služby",
- "SERVER_NOT_CONNECTED": "Nelze se připojit ke službě, zkuste to později",
- "SERVER_TIMEOUT": "Čas odpovědi vypršel",
- "SERVER_ERROR": "Odeslání selhalo, zkontrolujte síť",
- "CONNECT_TO_HOTSPOT": "Připojte telefon k hotspotu ",
- "ACCESS_VIA_BROWSER": ",přístup přes prohlížeč ",
- "WIFI_CONFIG_MODE": "Režim konfigurace sítě",
- "ENTERING_WIFI_CONFIG_MODE": "Vstup do režimu konfigurace sítě...",
- "SCANNING_WIFI": "Skenování Wi-Fi...",
- "NEW_VERSION": "Nová verze ",
- "OTA_UPGRADE": "OTA upgrade",
- "UPGRADING": "Aktualizace systému...",
- "UPGRADE_FAILED": "Upgrade selhal",
- "ACTIVATION": "Aktivace zařízení",
- "BATTERY_LOW": "Slabá baterie",
- "BATTERY_CHARGING": "Nabíjení",
- "BATTERY_FULL": "Baterie plná",
- "BATTERY_NEED_CHARGE": "Slabá baterie, prosím nabijte",
- "VOLUME": "Hlasitost ",
- "MUTED": "Ztlumeno",
- "MAX_VOLUME": "Maximální hlasitost",
- "RTC_MODE_OFF": "AEC vypnuto",
- "RTC_MODE_ON": "AEC zapnuto",
- "DOWNLOAD_ASSETS_FAILED": "Nepodařilo se stáhnout prostředky",
- "LOADING_ASSETS": "Načítání prostředků...",
- "PLEASE_WAIT": "Prosím čekejte...",
- "FOUND_NEW_ASSETS": "Nalezeny nové prostředky: %s",
- "HELLO_MY_FRIEND": "Ahoj, můj příteli!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/upgrade.ogg
deleted file mode 100644
index e29edc5c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/welcome.ogg
deleted file mode 100644
index 7a0625e4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/wificonfig.ogg
deleted file mode 100644
index bc945a95..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/cs-CZ/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/0.ogg
deleted file mode 100644
index b27207c0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/1.ogg
deleted file mode 100644
index 5fd2fce7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/2.ogg
deleted file mode 100644
index f3be2ac2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/3.ogg
deleted file mode 100644
index 3ad6f109..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/4.ogg
deleted file mode 100644
index 8684e636..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/5.ogg
deleted file mode 100644
index 29559fd6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/6.ogg
deleted file mode 100644
index d0b9ad74..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/7.ogg
deleted file mode 100644
index 28ecaca4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/8.ogg
deleted file mode 100644
index 2d718511..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/9.ogg
deleted file mode 100644
index 11af4851..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/activation.ogg
deleted file mode 100644
index 58b9b439..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/err_pin.ogg
deleted file mode 100644
index 391d984f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/err_reg.ogg
deleted file mode 100644
index 199f807e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/language.json
deleted file mode 100644
index 918598b4..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "da-DK"
- },
- "strings": {
- "WARNING": "Advarsel",
- "INFO": "Information",
- "ERROR": "Fejl",
- "VERSION": "Version ",
- "LOADING_PROTOCOL": "Logger ind...",
- "INITIALIZING": "Initialiserer...",
- "PIN_ERROR": "Indsæt venligst SIM-kort",
- "REG_ERROR": "Kan ikke få adgang til netværket, tjek venligst SIM-kortets status",
- "DETECTING_MODULE": "Detekterer modul...",
- "REGISTERING_NETWORK": "Venter på netværk...",
- "CHECKING_NEW_VERSION": "Tjekker for ny version...",
- "CHECK_NEW_VERSION_FAILED": "Tjek for ny version mislykkedes, prøver igen om %d sekunder: %s",
- "SWITCH_TO_WIFI_NETWORK": "Skifter til Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Skifter til 4G...",
- "STANDBY": "Standby",
- "CONNECT_TO": "Forbind til ",
- "CONNECTING": "Forbinder...",
- "CONNECTION_SUCCESSFUL": "Forbindelse lykkedes",
- "CONNECTED_TO": "Forbundet til ",
- "LISTENING": "Lytter...",
- "SPEAKING": "Taler...",
- "SERVER_NOT_FOUND": "Søger efter tilgængelig tjeneste",
- "SERVER_NOT_CONNECTED": "Kan ikke forbinde til tjeneste, prøv venligst igen senere",
- "SERVER_TIMEOUT": "Timeout ved venten på svar",
- "SERVER_ERROR": "Afsendelse mislykkedes, tjek venligst netværket",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Konfigurations-URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi-konfigurationstilstand",
- "ENTERING_WIFI_CONFIG_MODE": "Går ind i Wi-Fi-konfigurationstilstand...",
- "SCANNING_WIFI": "Scanner Wi-Fi...",
- "NEW_VERSION": "Ny version ",
- "OTA_UPGRADE": "OTA-opgradering",
- "UPGRADING": "Systemet opgraderes...",
- "UPGRADE_FAILED": "Opgradering mislykkedes",
- "ACTIVATION": "Aktivering",
- "BATTERY_LOW": "Lavt batteri",
- "BATTERY_CHARGING": "Oplader",
- "BATTERY_FULL": "Batteriet er fuldt",
- "BATTERY_NEED_CHARGE": "Lavt batteri, oplad venligst",
- "VOLUME": "Lydstyrke ",
- "MUTED": "Lydløs",
- "MAX_VOLUME": "Maksimal lydstyrke",
- "RTC_MODE_OFF": "AEC slukket",
- "RTC_MODE_ON": "AEC tændt",
- "PLEASE_WAIT": "Vent venligst...",
- "FOUND_NEW_ASSETS": "Fandt nye ressourcer: %s",
- "DOWNLOAD_ASSETS_FAILED": "Download af ressourcer mislykkedes",
- "LOADING_ASSETS": "Indlæser ressourcer...",
- "HELLO_MY_FRIEND": "Hej, min ven!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/upgrade.ogg
deleted file mode 100644
index b3e1c290..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/welcome.ogg
deleted file mode 100644
index f211cc42..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/wificonfig.ogg
deleted file mode 100644
index 33ea9c50..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/da-DK/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/0.ogg
deleted file mode 100644
index a3cdb237..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/1.ogg
deleted file mode 100644
index fb4fd93a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/2.ogg
deleted file mode 100644
index fb09b608..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/3.ogg
deleted file mode 100644
index d3f7549d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/4.ogg
deleted file mode 100644
index 46db0ce5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/5.ogg
deleted file mode 100644
index 3ceee0fa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/6.ogg
deleted file mode 100644
index 89425501..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/7.ogg
deleted file mode 100644
index 3b6957d6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/8.ogg
deleted file mode 100644
index 421f0187..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/9.ogg
deleted file mode 100644
index 40b78769..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/activation.ogg
deleted file mode 100644
index 3dfccbdc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/err_pin.ogg
deleted file mode 100644
index 8d2eef92..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/err_reg.ogg
deleted file mode 100644
index 430b8761..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/language.json
deleted file mode 100644
index 724e2676..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "de-DE"
- },
- "strings": {
- "WARNING": "Warnung",
- "INFO": "Information",
- "ERROR": "Fehler",
- "VERSION": "Version ",
- "LOADING_PROTOCOL": "Verbindung zum Server...",
- "INITIALIZING": "Initialisierung...",
- "PIN_ERROR": "Bitte SIM-Karte einlegen",
- "REG_ERROR": "Netzwerkverbindung fehlgeschlagen, bitte Datenkartenstatus prüfen",
- "DETECTING_MODULE": "Modul erkennen...",
- "REGISTERING_NETWORK": "Auf Netzwerk warten...",
- "CHECKING_NEW_VERSION": "Neue Version prüfen...",
- "CHECK_NEW_VERSION_FAILED": "Neue Version prüfen fehlgeschlagen, Wiederholung in %d Sekunden: %s",
- "SWITCH_TO_WIFI_NETWORK": "Zu Wi-Fi wechseln...",
- "SWITCH_TO_4G_NETWORK": "Zu 4G wechseln...",
- "STANDBY": "Bereitschaft",
- "CONNECT_TO": "Verbinden zu ",
- "CONNECTING": "Verbindung wird hergestellt...",
- "CONNECTED_TO": "Verbunden mit ",
- "LISTENING": "Zuhören...",
- "SPEAKING": "Sprechen...",
- "SERVER_NOT_FOUND": "Verfügbaren Service suchen",
- "SERVER_NOT_CONNECTED": "Service-Verbindung fehlgeschlagen, bitte später versuchen",
- "SERVER_TIMEOUT": "Antwort-Timeout",
- "SERVER_ERROR": "Senden fehlgeschlagen, bitte Netzwerk prüfen",
- "CONNECT_TO_HOTSPOT": "Handy mit Hotspot verbinden ",
- "ACCESS_VIA_BROWSER": ",Browser öffnen ",
- "WIFI_CONFIG_MODE": "Netzwerkkonfigurationsmodus",
- "ENTERING_WIFI_CONFIG_MODE": "Netzwerkkonfigurationsmodus eingeben...",
- "SCANNING_WIFI": "Wi-Fi scannen...",
- "NEW_VERSION": "Neue Version ",
- "OTA_UPGRADE": "OTA-Upgrade",
- "UPGRADING": "System wird aktualisiert...",
- "UPGRADE_FAILED": "Upgrade fehlgeschlagen",
- "ACTIVATION": "Gerät aktivieren",
- "BATTERY_LOW": "Niedriger Batteriestand",
- "BATTERY_CHARGING": "Wird geladen",
- "BATTERY_FULL": "Batterie voll",
- "BATTERY_NEED_CHARGE": "Niedriger Batteriestand, bitte aufladen",
- "VOLUME": "Lautstärke ",
- "MUTED": "Stummgeschaltet",
- "MAX_VOLUME": "Maximale Lautstärke",
- "RTC_MODE_OFF": "AEC aus",
- "RTC_MODE_ON": "AEC ein",
- "DOWNLOAD_ASSETS_FAILED": "Fehler beim Herunterladen der Ressourcen",
- "LOADING_ASSETS": "Ressourcen werden geladen...",
- "PLEASE_WAIT": "Bitte warten...",
- "FOUND_NEW_ASSETS": "Neue Ressourcen gefunden: %s",
- "HELLO_MY_FRIEND": "Hallo, mein Freund!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/upgrade.ogg
deleted file mode 100644
index 716d7cbb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/welcome.ogg
deleted file mode 100644
index 69271ce2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/wificonfig.ogg
deleted file mode 100644
index a3d753d6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/de-DE/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/0.ogg
deleted file mode 100644
index b06bdb5d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/1.ogg
deleted file mode 100644
index 4a9b7d29..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/2.ogg
deleted file mode 100644
index eeb149d7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/3.ogg
deleted file mode 100644
index 5364664d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/4.ogg
deleted file mode 100644
index cbdf259f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/5.ogg
deleted file mode 100644
index 1e93b726..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/6.ogg
deleted file mode 100644
index a831a421..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/7.ogg
deleted file mode 100644
index 1c64b31f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/8.ogg
deleted file mode 100644
index d7a96965..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/9.ogg
deleted file mode 100644
index 8ff0b072..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/activation.ogg
deleted file mode 100644
index aa8b401f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/err_pin.ogg
deleted file mode 100644
index 7c10086b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/err_reg.ogg
deleted file mode 100644
index f65513ae..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/language.json
deleted file mode 100644
index ccbea537..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "el-GR"
- },
- "strings": {
- "WARNING": "Προειδοποίηση",
- "INFO": "Πληροφορίες",
- "ERROR": "Σφάλμα",
- "VERSION": "Έκδοση ",
- "LOADING_PROTOCOL": "Σύνδεση...",
- "INITIALIZING": "Αρχικοποίηση...",
- "PIN_ERROR": "Παρακαλώ εισαγάγετε κάρτα SIM",
- "REG_ERROR": "Αδυναμία πρόσβασης στο δίκτυο, ελέγξτε την κατάσταση της κάρτας SIM",
- "DETECTING_MODULE": "Ανίχνευση μονάδας...",
- "REGISTERING_NETWORK": "Αναμονή δικτύου...",
- "CHECKING_NEW_VERSION": "Έλεγχος για νέα έκδοση...",
- "CHECK_NEW_VERSION_FAILED": "Ο έλεγχος για νέα έκδοση απέτυχε, θα επαναληφθεί σε %d δευτερόλεπτα: %s",
- "SWITCH_TO_WIFI_NETWORK": "Μετάβαση σε Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Μετάβαση σε 4G...",
- "STANDBY": "Αναμονή",
- "CONNECT_TO": "Σύνδεση σε ",
- "CONNECTING": "Σύνδεση...",
- "CONNECTION_SUCCESSFUL": "Επιτυχής σύνδεση",
- "CONNECTED_TO": "Συνδέθηκε σε ",
- "LISTENING": "Ακρόαση...",
- "SPEAKING": "Ομιλία...",
- "SERVER_NOT_FOUND": "Αναζήτηση διαθέσιμης υπηρεσίας",
- "SERVER_NOT_CONNECTED": "Αδυναμία σύνδεσης στην υπηρεσία, παρακαλώ δοκιμάστε αργότερα",
- "SERVER_TIMEOUT": "Λήξη χρόνου αναμονής απόκρισης",
- "SERVER_ERROR": "Η αποστολή απέτυχε, ελέγξτε το δίκτυο",
- "CONNECT_TO_HOTSPOT": "Σημείο πρόσβασης: ",
- "ACCESS_VIA_BROWSER": " URL διαμόρφωσης: ",
- "WIFI_CONFIG_MODE": "Λειτουργία διαμόρφωσης Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Είσοδος σε λειτουργία διαμόρφωσης Wi-Fi...",
- "SCANNING_WIFI": "Σάρωση Wi-Fi...",
- "NEW_VERSION": "Νέα έκδοση ",
- "OTA_UPGRADE": "Αναβάθμιση OTA",
- "UPGRADING": "Το σύστημα αναβαθμίζεται...",
- "UPGRADE_FAILED": "Η αναβάθμιση απέτυχε",
- "ACTIVATION": "Ενεργοποίηση",
- "BATTERY_LOW": "Χαμηλή μπαταρία",
- "BATTERY_CHARGING": "Φόρτιση",
- "BATTERY_FULL": "Πλήρης μπαταρία",
- "BATTERY_NEED_CHARGE": "Χαμηλή μπαταρία, παρακαλώ φορτίστε",
- "VOLUME": "Ένταση ",
- "MUTED": "Σίγαση",
- "MAX_VOLUME": "Μέγιστη ένταση",
- "RTC_MODE_OFF": "AEC απενεργοποιημένο",
- "RTC_MODE_ON": "AEC ενεργοποιημένο",
- "PLEASE_WAIT": "Παρακαλώ περιμένετε...",
- "FOUND_NEW_ASSETS": "Βρέθηκαν νέοι πόροι: %s",
- "DOWNLOAD_ASSETS_FAILED": "Αποτυχία λήψης πόρων",
- "LOADING_ASSETS": "Φόρτωση πόρων...",
- "HELLO_MY_FRIEND": "Γεια σου, φίλε μου!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/upgrade.ogg
deleted file mode 100644
index 81bef143..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/welcome.ogg
deleted file mode 100644
index c7a2c7c2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/wificonfig.ogg
deleted file mode 100644
index fe3eb665..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/el-GR/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/0.ogg
deleted file mode 100644
index 51dff412..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/1.ogg
deleted file mode 100644
index 814753e4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/2.ogg
deleted file mode 100644
index 420a9945..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/3.ogg
deleted file mode 100644
index 1d3fa8a3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/4.ogg
deleted file mode 100644
index 8e364ad8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/5.ogg
deleted file mode 100644
index 5be437d2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/6.ogg
deleted file mode 100644
index e398409e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/7.ogg
deleted file mode 100644
index 879aebd7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/8.ogg
deleted file mode 100644
index 0e9efd2d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/9.ogg
deleted file mode 100644
index 434c320d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/activation.ogg
deleted file mode 100644
index 0e9b8439..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/err_pin.ogg
deleted file mode 100644
index c52fdf4a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/err_reg.ogg
deleted file mode 100644
index 95593f42..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/language.json
deleted file mode 100644
index 1758d34c..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/language.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "language": {
- "type": "en-US"
- },
- "strings": {
- "WARNING": "Warning",
- "INFO": "Information",
- "ERROR": "Error",
- "VERSION": "Ver ",
- "LOADING_PROTOCOL": "Logging in...",
- "INITIALIZING": "Initializing...",
- "PIN_ERROR": "Please insert SIM card",
- "REG_ERROR": "Unable to access network, please check SIM card status",
- "DETECTING_MODULE": "Detecting module...",
- "REGISTERING_NETWORK": "Waiting for network...",
- "CHECKING_NEW_VERSION": "Checking for new version...",
- "CHECK_NEW_VERSION_FAILED": "Check for new version failed, will retry in %d seconds: %s",
- "SWITCH_TO_WIFI_NETWORK": "Switching to Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Switching to 4G...",
- "STANDBY": "Standby",
- "CONNECT_TO": "Connect to ",
- "CONNECTING": "Connecting...",
- "CONNECTION_SUCCESSFUL": "Connection Successful",
- "CONNECTED_TO": "Connected to ",
- "LISTENING": "Listening...",
- "SPEAKING": "Speaking...",
- "SERVER_NOT_FOUND": "Looking for available service",
- "SERVER_NOT_CONNECTED": "Unable to connect to service, please try again later",
- "SERVER_TIMEOUT": "Waiting for response timeout",
- "SERVER_ERROR": "Sending failed, please check the network",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Config URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi Configuration Mode",
- "ENTERING_WIFI_CONFIG_MODE": "Entering Wi-Fi configuration mode...",
- "SCANNING_WIFI": "Scanning Wi-Fi...",
- "NEW_VERSION": "New version ",
- "OTA_UPGRADE": "OTA Upgrade",
- "UPGRADING": "System is upgrading...",
- "UPGRADE_FAILED": "Upgrade failed",
- "ACTIVATION": "Activation",
- "BATTERY_LOW": "Low battery",
- "BATTERY_CHARGING": "Charging",
- "BATTERY_FULL": "Battery full",
- "BATTERY_NEED_CHARGE": "Low battery, please charge",
- "VOLUME": "Volume ",
- "MUTED": "Muted",
- "MAX_VOLUME": "Max volume",
- "RTC_MODE_OFF": "AEC Off",
- "RTC_MODE_ON": "AEC On",
- "PLEASE_WAIT": "Please wait...",
- "FOUND_NEW_ASSETS": "Found new assets: %s",
- "DOWNLOAD_ASSETS_FAILED": "Failed to download assets",
- "LOADING_ASSETS": "Loading assets...",
- "HELLO_MY_FRIEND": "Hello, my friend!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/upgrade.ogg
deleted file mode 100644
index f27ec7ae..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/welcome.ogg
deleted file mode 100644
index 4d4d8b9e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/wificonfig.ogg
deleted file mode 100644
index f4ed3d4d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/en-US/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/0.ogg
deleted file mode 100644
index 98fbba2a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/1.ogg
deleted file mode 100644
index 2c2f4fb6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/2.ogg
deleted file mode 100644
index 8e962b92..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/3.ogg
deleted file mode 100644
index 6b6ba47d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/4.ogg
deleted file mode 100644
index ae5909ca..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/5.ogg
deleted file mode 100644
index a8a4ca3b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/6.ogg
deleted file mode 100644
index bcc46c05..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/7.ogg
deleted file mode 100644
index 09e7df4e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/8.ogg
deleted file mode 100644
index e06e023f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/9.ogg
deleted file mode 100644
index 4108458a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/activation.ogg
deleted file mode 100644
index 8d50682e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/err_pin.ogg
deleted file mode 100644
index b3e55f8c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/err_reg.ogg
deleted file mode 100644
index 509451e4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/language.json
deleted file mode 100644
index e7f349ba..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "es-ES"
- },
- "strings": {
- "WARNING": "Advertencia",
- "INFO": "Información",
- "ERROR": "Error",
- "VERSION": "Versión ",
- "LOADING_PROTOCOL": "Conectando al servidor...",
- "INITIALIZING": "Inicializando...",
- "PIN_ERROR": "Por favor inserte la tarjeta SIM",
- "REG_ERROR": "No se puede acceder a la red, verifique el estado de la tarjeta de datos",
- "DETECTING_MODULE": "Detectando módulo...",
- "REGISTERING_NETWORK": "Esperando red...",
- "CHECKING_NEW_VERSION": "Verificando nueva versión...",
- "CHECK_NEW_VERSION_FAILED": "Error al verificar nueva versión, reintentando en %d segundos: %s",
- "SWITCH_TO_WIFI_NETWORK": "Cambiando a Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Cambiando a 4G...",
- "STANDBY": "En espera",
- "CONNECT_TO": "Conectar a ",
- "CONNECTING": "Conectando...",
- "CONNECTED_TO": "Conectado a ",
- "LISTENING": "Escuchando...",
- "SPEAKING": "Hablando...",
- "SERVER_NOT_FOUND": "Buscando servicio disponible",
- "SERVER_NOT_CONNECTED": "No se puede conectar al servicio, inténtelo más tarde",
- "SERVER_TIMEOUT": "Tiempo de espera agotado",
- "SERVER_ERROR": "Error de envío, verifique la red",
- "CONNECT_TO_HOTSPOT": "Conectar teléfono al punto de acceso ",
- "ACCESS_VIA_BROWSER": ",acceder mediante navegador ",
- "WIFI_CONFIG_MODE": "Modo configuración de red",
- "ENTERING_WIFI_CONFIG_MODE": "Entrando en modo configuración de red...",
- "SCANNING_WIFI": "Escaneando Wi-Fi...",
- "NEW_VERSION": "Nueva versión ",
- "OTA_UPGRADE": "Actualización OTA",
- "UPGRADING": "Actualizando sistema...",
- "UPGRADE_FAILED": "Actualización fallida",
- "ACTIVATION": "Activación del dispositivo",
- "BATTERY_LOW": "Batería baja",
- "BATTERY_CHARGING": "Cargando",
- "BATTERY_FULL": "Batería llena",
- "BATTERY_NEED_CHARGE": "Batería baja, por favor cargar",
- "VOLUME": "Volumen ",
- "MUTED": "Silenciado",
- "MAX_VOLUME": "Volumen máximo",
- "RTC_MODE_OFF": "AEC desactivado",
- "RTC_MODE_ON": "AEC activado",
- "DOWNLOAD_ASSETS_FAILED": "Error al descargar recursos",
- "LOADING_ASSETS": "Cargando recursos...",
- "PLEASE_WAIT": "Por favor espere...",
- "FOUND_NEW_ASSETS": "Encontrados nuevos recursos: %s",
- "HELLO_MY_FRIEND": "¡Hola, mi amigo!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/upgrade.ogg
deleted file mode 100644
index c29826c4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/welcome.ogg
deleted file mode 100644
index a506db5b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/wificonfig.ogg
deleted file mode 100644
index 11755fa7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/es-ES/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/0.ogg
deleted file mode 100644
index ed0881f4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/1.ogg
deleted file mode 100644
index 401059dd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/2.ogg
deleted file mode 100644
index 5ee8bfd5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/3.ogg
deleted file mode 100644
index 35d7e13a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/4.ogg
deleted file mode 100644
index 5e19fe1f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/5.ogg
deleted file mode 100644
index 2ac536b7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/6.ogg
deleted file mode 100644
index 6b9f40a1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/7.ogg
deleted file mode 100644
index 568e6c37..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/8.ogg
deleted file mode 100644
index 055f395e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/9.ogg
deleted file mode 100644
index 42023e8f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/activation.ogg
deleted file mode 100644
index 6bce7f96..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/err_pin.ogg
deleted file mode 100644
index 04509479..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/err_reg.ogg
deleted file mode 100644
index d2933769..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/language.json
deleted file mode 100644
index 784f6bdd..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "fa-IR"
- },
- "strings": {
- "WARNING": "هشدار",
- "INFO": "اطلاعات",
- "ERROR": "خطا",
- "VERSION": "نسخه ",
- "LOADING_PROTOCOL": "ورود به سیستم...",
- "INITIALIZING": "در حال راهاندازی...",
- "PIN_ERROR": "لطفاً سیم کارت را وارد کنید",
- "REG_ERROR": "عدم دسترسی به شبکه، لطفاً وضعیت سیم کارت را بررسی کنید",
- "DETECTING_MODULE": "شناسایی ماژول...",
- "REGISTERING_NETWORK": "در انتظار شبکه...",
- "CHECKING_NEW_VERSION": "بررسی نسخه جدید...",
- "CHECK_NEW_VERSION_FAILED": "بررسی نسخه جدید ناموفق بود، پس از %d ثانیه مجدداً تلاش میشود: %s",
- "SWITCH_TO_WIFI_NETWORK": "تغییر به Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "تغییر به 4G...",
- "STANDBY": "آماده به کار",
- "CONNECT_TO": "اتصال به ",
- "CONNECTING": "در حال اتصال...",
- "CONNECTION_SUCCESSFUL": "اتصال موفق",
- "CONNECTED_TO": "متصل به ",
- "LISTENING": "در حال گوش دادن...",
- "SPEAKING": "در حال صحبت...",
- "SERVER_NOT_FOUND": "جستجوی سرویس در دسترس",
- "SERVER_NOT_CONNECTED": "اتصال به سرویس برقرار نشد، لطفاً بعداً تلاش کنید",
- "SERVER_TIMEOUT": "زمان انتظار برای پاسخ به پایان رسید",
- "SERVER_ERROR": "ارسال ناموفق، لطفاً شبکه را بررسی کنید",
- "CONNECT_TO_HOTSPOT": "نقطه اتصال: ",
- "ACCESS_VIA_BROWSER": " آدرس پیکربندی: ",
- "WIFI_CONFIG_MODE": "حالت پیکربندی Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "ورود به حالت پیکربندی Wi-Fi...",
- "SCANNING_WIFI": "جستجوی Wi-Fi...",
- "NEW_VERSION": "نسخه جدید ",
- "OTA_UPGRADE": "بهروزرسانی OTA",
- "UPGRADING": "سیستم در حال بهروزرسانی است...",
- "UPGRADE_FAILED": "بهروزرسانی ناموفق بود",
- "ACTIVATION": "فعالسازی",
- "BATTERY_LOW": "شارژ باتری کم",
- "BATTERY_CHARGING": "در حال شارژ",
- "BATTERY_FULL": "باتری پر است",
- "BATTERY_NEED_CHARGE": "شارژ باتری کم، لطفاً شارژ کنید",
- "VOLUME": "صدا ",
- "MUTED": "بیصدا",
- "MAX_VOLUME": "حداکثر صدا",
- "RTC_MODE_OFF": "AEC خاموش",
- "RTC_MODE_ON": "AEC روشن",
- "PLEASE_WAIT": "لطفاً صبر کنید...",
- "FOUND_NEW_ASSETS": "منابع جدید یافت شد: %s",
- "DOWNLOAD_ASSETS_FAILED": "دانلود منابع ناموفق بود",
- "LOADING_ASSETS": "بارگذاری منابع...",
- "HELLO_MY_FRIEND": "سلام، دوست من!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/upgrade.ogg
deleted file mode 100644
index 9eff121c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/welcome.ogg
deleted file mode 100644
index 108a62d8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/wificonfig.ogg
deleted file mode 100644
index 179fa5ed..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fa-IR/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/0.ogg
deleted file mode 100644
index d3687870..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/1.ogg
deleted file mode 100644
index f496dd67..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/2.ogg
deleted file mode 100644
index 96a2529f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/3.ogg
deleted file mode 100644
index 1fcdcf2a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/4.ogg
deleted file mode 100644
index 6ba9ded9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/5.ogg
deleted file mode 100644
index b94d4a20..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/6.ogg
deleted file mode 100644
index ffe82766..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/7.ogg
deleted file mode 100644
index ed3197a0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/8.ogg
deleted file mode 100644
index 7f81a622..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/9.ogg
deleted file mode 100644
index aaedd053..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/activation.ogg
deleted file mode 100644
index 63477458..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/err_pin.ogg
deleted file mode 100644
index 8c6eb519..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/err_reg.ogg
deleted file mode 100644
index 32561bfc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/language.json
deleted file mode 100644
index 2326ee4c..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "fi-FI"
- },
- "strings": {
- "WARNING": "Varoitus",
- "INFO": "Tieto",
- "ERROR": "Virhe",
- "VERSION": "Versio ",
- "LOADING_PROTOCOL": "Yhdistetään palvelimeen...",
- "INITIALIZING": "Alustetaan...",
- "PIN_ERROR": "Ole hyvä ja aseta SIM-kortti",
- "REG_ERROR": "Ei voi muodostaa yhteyttä verkkoon, tarkista datakortin tila",
- "DETECTING_MODULE": "Tunnistetaan moduuli...",
- "REGISTERING_NETWORK": "Odotetaan verkkoa...",
- "CHECKING_NEW_VERSION": "Tarkistetaan uutta versiota...",
- "CHECK_NEW_VERSION_FAILED": "Uuden version tarkistus epäonnistui, yritetään uudelleen %d sekunnin kuluttua: %s",
- "SWITCH_TO_WIFI_NETWORK": "Vaihdetaan Wi-Fi:hin...",
- "SWITCH_TO_4G_NETWORK": "Vaihdetaan 4G:hen...",
- "STANDBY": "Valmiustila",
- "CONNECT_TO": "Yhdistä ",
- "CONNECTING": "Yhdistetään...",
- "CONNECTED_TO": "Yhdistetty ",
- "LISTENING": "Kuunnellaan...",
- "SPEAKING": "Puhutaan...",
- "SERVER_NOT_FOUND": "Etsitään käytettävissä olevaa palvelua",
- "SERVER_NOT_CONNECTED": "Ei voi yhdistää palveluun, yritä myöhemmin",
- "SERVER_TIMEOUT": "Vastauksen aikakatkaisu",
- "SERVER_ERROR": "Lähetys epäonnistui, tarkista verkko",
- "CONNECT_TO_HOTSPOT": "Yhdistä puhelin hotspottiin ",
- "ACCESS_VIA_BROWSER": ",pääsy selaimen kautta ",
- "WIFI_CONFIG_MODE": "Verkon konfigurointitila",
- "ENTERING_WIFI_CONFIG_MODE": "Siirrytään verkon konfigurointitilaan...",
- "SCANNING_WIFI": "Skannataan Wi-Fi...",
- "NEW_VERSION": "Uusi versio ",
- "OTA_UPGRADE": "OTA-päivitys",
- "UPGRADING": "Päivitetään järjestelmää...",
- "UPGRADE_FAILED": "Päivitys epäonnistui",
- "ACTIVATION": "Laitteen aktivointi",
- "BATTERY_LOW": "Akku vähissä",
- "BATTERY_CHARGING": "Ladataan",
- "BATTERY_FULL": "Akku täynnä",
- "BATTERY_NEED_CHARGE": "Akku vähissä, ole hyvä ja lataa",
- "VOLUME": "Äänenvoimakkuus ",
- "MUTED": "Mykistetty",
- "MAX_VOLUME": "Maksimi äänenvoimakkuus",
- "RTC_MODE_OFF": "AEC pois päältä",
- "RTC_MODE_ON": "AEC päällä",
- "DOWNLOAD_ASSETS_FAILED": "Resurssien lataaminen epäonnistui",
- "LOADING_ASSETS": "Ladataan resursseja...",
- "PLEASE_WAIT": "Odota hetki...",
- "FOUND_NEW_ASSETS": "Löydetty uusia resursseja: %s",
- "HELLO_MY_FRIEND": "Hei, ystäväni!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/upgrade.ogg
deleted file mode 100644
index 5ff02a6f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/welcome.ogg
deleted file mode 100644
index 14303723..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/wificonfig.ogg
deleted file mode 100644
index deb233a4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fi-FI/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/0.ogg
deleted file mode 100644
index 1f8c2fcc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/1.ogg
deleted file mode 100644
index bc383648..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/2.ogg
deleted file mode 100644
index 01cb65ba..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/3.ogg
deleted file mode 100644
index 0f405453..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/4.ogg
deleted file mode 100644
index a476dc38..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/5.ogg
deleted file mode 100644
index 1c39daba..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/6.ogg
deleted file mode 100644
index b672cbd9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/7.ogg
deleted file mode 100644
index f02aa1ec..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/8.ogg
deleted file mode 100644
index b699c1e9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/9.ogg
deleted file mode 100644
index fc0adc80..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/activation.ogg
deleted file mode 100644
index d8b6a62e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/err_pin.ogg
deleted file mode 100644
index 527ca8c8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/err_reg.ogg
deleted file mode 100644
index 94632fcb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/language.json
deleted file mode 100644
index 2d35fc5e..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "fil-PH"
- },
- "strings": {
- "WARNING": "Babala",
- "INFO": "Impormasyon",
- "ERROR": "Error",
- "VERSION": "Bersyon ",
- "LOADING_PROTOCOL": "Nagla-log in...",
- "INITIALIZING": "Nag-i-initialize...",
- "PIN_ERROR": "Mangyaring ilagay ang SIM card",
- "REG_ERROR": "Hindi ma-access ang network, mangyaring tingnan ang estado ng SIM card",
- "DETECTING_MODULE": "Tinutuklas ang module...",
- "REGISTERING_NETWORK": "Naghihintay ng network...",
- "CHECKING_NEW_VERSION": "Sinusuri ang bagong bersyon...",
- "CHECK_NEW_VERSION_FAILED": "Nabigo ang pagsuri ng bagong bersyon, susubukan muli sa %d segundo: %s",
- "SWITCH_TO_WIFI_NETWORK": "Lumilipat sa Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Lumilipat sa 4G...",
- "STANDBY": "Standby",
- "CONNECT_TO": "Kumonekta sa ",
- "CONNECTING": "Kumokonekta...",
- "CONNECTION_SUCCESSFUL": "Matagumpay na koneksyon",
- "CONNECTED_TO": "Nakakonekta sa ",
- "LISTENING": "Nakikinig...",
- "SPEAKING": "Nagsasalita...",
- "SERVER_NOT_FOUND": "Naghahanap ng available na serbisyo",
- "SERVER_NOT_CONNECTED": "Hindi makakonekta sa serbisyo, mangyaring subukan muli mamaya",
- "SERVER_TIMEOUT": "Nag-timeout ang paghihintay ng tugon",
- "SERVER_ERROR": "Nabigo ang pagpapadala, mangyaring tingnan ang network",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " URL ng configuration: ",
- "WIFI_CONFIG_MODE": "Wi-Fi Configuration Mode",
- "ENTERING_WIFI_CONFIG_MODE": "Pumapasok sa Wi-Fi configuration mode...",
- "SCANNING_WIFI": "Nag-i-scan ng Wi-Fi...",
- "NEW_VERSION": "Bagong bersyon ",
- "OTA_UPGRADE": "OTA Upgrade",
- "UPGRADING": "Nag-a-upgrade ang system...",
- "UPGRADE_FAILED": "Nabigo ang upgrade",
- "ACTIVATION": "Activation",
- "BATTERY_LOW": "Mababang baterya",
- "BATTERY_CHARGING": "Nagcha-charge",
- "BATTERY_FULL": "Puno ang baterya",
- "BATTERY_NEED_CHARGE": "Mababang baterya, mangyaring mag-charge",
- "VOLUME": "Volume ",
- "MUTED": "Naka-mute",
- "MAX_VOLUME": "Maximum volume",
- "RTC_MODE_OFF": "AEC Off",
- "RTC_MODE_ON": "AEC On",
- "PLEASE_WAIT": "Mangyaring maghintay...",
- "FOUND_NEW_ASSETS": "Nakahanap ng mga bagong assets: %s",
- "DOWNLOAD_ASSETS_FAILED": "Nabigo ang pag-download ng mga assets",
- "LOADING_ASSETS": "Nilo-load ang mga assets...",
- "HELLO_MY_FRIEND": "Kumusta, kaibigan ko!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/upgrade.ogg
deleted file mode 100644
index 8930d789..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/welcome.ogg
deleted file mode 100644
index ed59bce9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/wificonfig.ogg
deleted file mode 100644
index cef030dd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fil-PH/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/0.ogg
deleted file mode 100644
index 79b8faf8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/1.ogg
deleted file mode 100644
index e5173247..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/2.ogg
deleted file mode 100644
index 311697ce..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/3.ogg
deleted file mode 100644
index 5b4acc19..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/4.ogg
deleted file mode 100644
index 832aeab9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/5.ogg
deleted file mode 100644
index ddcce17e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/6.ogg
deleted file mode 100644
index aced771d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/7.ogg
deleted file mode 100644
index 293d1c02..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/8.ogg
deleted file mode 100644
index acec1122..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/9.ogg
deleted file mode 100644
index fe27acdf..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/activation.ogg
deleted file mode 100644
index b48f2152..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/err_pin.ogg
deleted file mode 100644
index 1a3d84b2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/err_reg.ogg
deleted file mode 100644
index c3256c5e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/language.json
deleted file mode 100644
index 244cade0..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "fr-FR"
- },
- "strings": {
- "WARNING": "Avertissement",
- "INFO": "Information",
- "ERROR": "Erreur",
- "VERSION": "Version ",
- "LOADING_PROTOCOL": "Connexion au serveur...",
- "INITIALIZING": "Initialisation...",
- "PIN_ERROR": "Veuillez insérer la carte SIM",
- "REG_ERROR": "Impossible d'accéder au réseau, veuillez vérifier l'état de la carte de données",
- "DETECTING_MODULE": "Détection du module...",
- "REGISTERING_NETWORK": "En attente du réseau...",
- "CHECKING_NEW_VERSION": "Vérification de nouvelle version...",
- "CHECK_NEW_VERSION_FAILED": "Échec de vérification de nouvelle version, nouvelle tentative dans %d secondes : %s",
- "SWITCH_TO_WIFI_NETWORK": "Basculer vers Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Basculer vers 4G...",
- "STANDBY": "En attente",
- "CONNECT_TO": "Se connecter à ",
- "CONNECTING": "Connexion en cours...",
- "CONNECTED_TO": "Connecté à ",
- "LISTENING": "Écoute...",
- "SPEAKING": "Parole...",
- "SERVER_NOT_FOUND": "Recherche d'un service disponible",
- "SERVER_NOT_CONNECTED": "Impossible de se connecter au service, veuillez réessayer plus tard",
- "SERVER_TIMEOUT": "Délai d'attente de réponse",
- "SERVER_ERROR": "Échec d'envoi, veuillez vérifier le réseau",
- "CONNECT_TO_HOTSPOT": "Connecter le téléphone au point d'accès ",
- "ACCESS_VIA_BROWSER": ",accéder via le navigateur ",
- "WIFI_CONFIG_MODE": "Mode configuration réseau",
- "ENTERING_WIFI_CONFIG_MODE": "Entrer en mode configuration réseau...",
- "SCANNING_WIFI": "Scan Wi-Fi...",
- "NEW_VERSION": "Nouvelle version ",
- "OTA_UPGRADE": "Mise à jour OTA",
- "UPGRADING": "Mise à jour du système...",
- "UPGRADE_FAILED": "Échec de mise à jour",
- "ACTIVATION": "Activation de l'appareil",
- "BATTERY_LOW": "Batterie faible",
- "BATTERY_CHARGING": "En charge",
- "BATTERY_FULL": "Batterie pleine",
- "BATTERY_NEED_CHARGE": "Batterie faible, veuillez charger",
- "VOLUME": "Volume ",
- "MUTED": "Muet",
- "MAX_VOLUME": "Volume maximum",
- "RTC_MODE_OFF": "AEC désactivé",
- "RTC_MODE_ON": "AEC activé",
- "DOWNLOAD_ASSETS_FAILED": "Échec du téléchargement des ressources",
- "LOADING_ASSETS": "Chargement des ressources...",
- "PLEASE_WAIT": "Veuillez patienter...",
- "FOUND_NEW_ASSETS": "Nouvelles ressources trouvées: %s",
- "HELLO_MY_FRIEND": "Bonjour, mon ami !"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/upgrade.ogg
deleted file mode 100644
index b6ac1f9c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/welcome.ogg
deleted file mode 100644
index 4492de76..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/wificonfig.ogg
deleted file mode 100644
index 9e2f99b3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/fr-FR/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/0.ogg
deleted file mode 100644
index efea9058..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/1.ogg
deleted file mode 100644
index b0984b63..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/2.ogg
deleted file mode 100644
index c70358af..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/3.ogg
deleted file mode 100644
index 0398e82f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/4.ogg
deleted file mode 100644
index 78630a63..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/5.ogg
deleted file mode 100644
index f8bd9380..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/6.ogg
deleted file mode 100644
index d30c9e5c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/7.ogg
deleted file mode 100644
index 610c4690..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/8.ogg
deleted file mode 100644
index ce834f69..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/9.ogg
deleted file mode 100644
index d452e955..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/activation.ogg
deleted file mode 100644
index 31eb4aca..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/err_pin.ogg
deleted file mode 100644
index 5943f960..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/err_reg.ogg
deleted file mode 100644
index a860ec1f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/language.json
deleted file mode 100644
index e3570c07..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "he-IL"
- },
- "strings": {
- "WARNING": "אזהרה",
- "INFO": "מידע",
- "ERROR": "שגיאה",
- "VERSION": "גרסה ",
- "LOADING_PROTOCOL": "מתחבר...",
- "INITIALIZING": "מאתחל...",
- "PIN_ERROR": "אנא הכנס כרטיס SIM",
- "REG_ERROR": "לא ניתן לגשת לרשת, אנא בדוק את מצב כרטיס ה-SIM",
- "DETECTING_MODULE": "מזהה מודול...",
- "REGISTERING_NETWORK": "ממתין לרשת...",
- "CHECKING_NEW_VERSION": "בודק גרסה חדשה...",
- "CHECK_NEW_VERSION_FAILED": "בדיקת גרסה חדשה נכשלה, ינסה שוב בעוד %d שניות: %s",
- "SWITCH_TO_WIFI_NETWORK": "עובר ל-Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "עובר ל-4G...",
- "STANDBY": "המתנה",
- "CONNECT_TO": "התחבר ל-",
- "CONNECTING": "מתחבר...",
- "CONNECTION_SUCCESSFUL": "התחברות הצליחה",
- "CONNECTED_TO": "מחובר ל-",
- "LISTENING": "מקשיב...",
- "SPEAKING": "מדבר...",
- "SERVER_NOT_FOUND": "מחפש שירות זמין",
- "SERVER_NOT_CONNECTED": "לא ניתן להתחבר לשירות, אנא נסה שוב מאוחר יותר",
- "SERVER_TIMEOUT": "פג זמן ההמתנה לתגובה",
- "SERVER_ERROR": "השליחה נכשלה, אנא בדוק את הרשת",
- "CONNECT_TO_HOTSPOT": "נקודה חמה: ",
- "ACCESS_VIA_BROWSER": " כתובת תצורה: ",
- "WIFI_CONFIG_MODE": "מצב תצורת Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "נכנס למצב תצורת Wi-Fi...",
- "SCANNING_WIFI": "סורק Wi-Fi...",
- "NEW_VERSION": "גרסה חדשה ",
- "OTA_UPGRADE": "שדרוג OTA",
- "UPGRADING": "המערכת משתדרגת...",
- "UPGRADE_FAILED": "השדרוג נכשל",
- "ACTIVATION": "הפעלה",
- "BATTERY_LOW": "סוללה חלשה",
- "BATTERY_CHARGING": "נטען",
- "BATTERY_FULL": "הסוללה מלאה",
- "BATTERY_NEED_CHARGE": "סוללה חלשה, אנא טען",
- "VOLUME": "עוצמת קול ",
- "MUTED": "מושתק",
- "MAX_VOLUME": "עוצמת קול מקסימלית",
- "RTC_MODE_OFF": "AEC כבוי",
- "RTC_MODE_ON": "AEC דלוק",
- "PLEASE_WAIT": "אנא המתן...",
- "FOUND_NEW_ASSETS": "נמצאו משאבים חדשים: %s",
- "DOWNLOAD_ASSETS_FAILED": "הורדת משאבים נכשלה",
- "LOADING_ASSETS": "טוען משאבים...",
- "HELLO_MY_FRIEND": "שלום, ידידי!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/upgrade.ogg
deleted file mode 100644
index ff36a860..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/welcome.ogg
deleted file mode 100644
index 6594d372..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/wificonfig.ogg
deleted file mode 100644
index 6cf0597c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/he-IL/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/0.ogg
deleted file mode 100644
index e5313489..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/1.ogg
deleted file mode 100644
index cb2f9d5e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/2.ogg
deleted file mode 100644
index 2244d45e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/3.ogg
deleted file mode 100644
index 63fde6d8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/4.ogg
deleted file mode 100644
index 76caee90..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/5.ogg
deleted file mode 100644
index c96a3868..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/6.ogg
deleted file mode 100644
index 88f76437..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/7.ogg
deleted file mode 100644
index 3a997d40..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/8.ogg
deleted file mode 100644
index 56f125e2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/9.ogg
deleted file mode 100644
index 25e64c0a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/activation.ogg
deleted file mode 100644
index aa262df9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/err_pin.ogg
deleted file mode 100644
index 00669fab..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/err_reg.ogg
deleted file mode 100644
index 6194739e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/language.json
deleted file mode 100644
index 732176e4..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "hi-IN"
- },
- "strings": {
- "WARNING": "चेतावनी",
- "INFO": "जानकारी",
- "ERROR": "त्रुटि",
- "VERSION": "संस्करण ",
- "LOADING_PROTOCOL": "सर्वर से कनेक्ट हो रहे हैं...",
- "INITIALIZING": "आरंभीकरण...",
- "PIN_ERROR": "कृपया सिम कार्ड डालें",
- "REG_ERROR": "नेटवर्क तक पहुंच नहीं हो सकती, कृपया डेटा कार्ड स्थिति जांचें",
- "DETECTING_MODULE": "मॉड्यूल का पता लगाया जा रहा है...",
- "REGISTERING_NETWORK": "नेटवर्क की प्रतीक्षा...",
- "CHECKING_NEW_VERSION": "नया संस्करण जाँच रहे हैं...",
- "CHECK_NEW_VERSION_FAILED": "नया संस्करण जाँचना असफल, %d सेकंड में पुनः प्रयास: %s",
- "SWITCH_TO_WIFI_NETWORK": "Wi-Fi पर स्विच कर रहे हैं...",
- "SWITCH_TO_4G_NETWORK": "4G पर स्विच कर रहे हैं...",
- "STANDBY": "स्टैंडबाय",
- "CONNECT_TO": "कनेक्ट करें ",
- "CONNECTING": "कनेक्ट हो रहे हैं...",
- "CONNECTED_TO": "कनेक्ट हो गए ",
- "LISTENING": "सुन रहे हैं...",
- "SPEAKING": "बोल रहे हैं...",
- "SERVER_NOT_FOUND": "उपलब्ध सेवा खोज रहे हैं",
- "SERVER_NOT_CONNECTED": "सेवा से कनेक्ट नहीं हो सकते, कृपया बाद में कोशिश करें",
- "SERVER_TIMEOUT": "प्रतिक्रिया का समय समाप्त",
- "SERVER_ERROR": "भेजना असफल, कृपया नेटवर्क जांचें",
- "CONNECT_TO_HOTSPOT": "फोन को हॉटस्पॉट से कनेक्ट करें ",
- "ACCESS_VIA_BROWSER": ",ब्राउज़र के माध्यम से पहुंचें ",
- "WIFI_CONFIG_MODE": "नेटवर्क कॉन्फ़िगरेशन मोड",
- "ENTERING_WIFI_CONFIG_MODE": "नेटवर्क कॉन्फ़िगरेशन मोड में प्रवेश...",
- "SCANNING_WIFI": "Wi-Fi स्कैन कर रहे हैं...",
- "NEW_VERSION": "नया संस्करण ",
- "OTA_UPGRADE": "OTA अपग्रेड",
- "UPGRADING": "सिस्टम अपग्रेड हो रहा है...",
- "UPGRADE_FAILED": "अपग्रेड असफल",
- "ACTIVATION": "डिवाइस सक्रियण",
- "BATTERY_LOW": "बैटरी कम",
- "BATTERY_CHARGING": "चार्ज हो रही है",
- "BATTERY_FULL": "बैटरी फुल",
- "BATTERY_NEED_CHARGE": "बैटरी कम है, कृपया चार्ज करें",
- "VOLUME": "आवाज़ ",
- "MUTED": "म्यूट",
- "MAX_VOLUME": "अधिकतम आवाज़",
- "RTC_MODE_OFF": "AEC बंद",
- "RTC_MODE_ON": "AEC चालू",
- "DOWNLOAD_ASSETS_FAILED": "संसाधन डाउनलोड करने में विफल",
- "LOADING_ASSETS": "संसाधन लोड हो रहे हैं...",
- "PLEASE_WAIT": "कृपया प्रतीक्षा करें...",
- "FOUND_NEW_ASSETS": "नए संसाधन मिले: %s",
- "HELLO_MY_FRIEND": "नमस्ते, मेरे दोस्त!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/upgrade.ogg
deleted file mode 100644
index 8de06935..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/welcome.ogg
deleted file mode 100644
index 3352a571..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/wificonfig.ogg
deleted file mode 100644
index 5a9853fa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hi-IN/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/0.ogg
deleted file mode 100644
index 5ee48d54..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/1.ogg
deleted file mode 100644
index 13b1dbe5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/2.ogg
deleted file mode 100644
index 8a9c7646..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/3.ogg
deleted file mode 100644
index 18080ebd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/4.ogg
deleted file mode 100644
index 0f33e69c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/5.ogg
deleted file mode 100644
index e9bbedca..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/6.ogg
deleted file mode 100644
index 10dff31d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/7.ogg
deleted file mode 100644
index 6e82da97..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/8.ogg
deleted file mode 100644
index cfac805c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/9.ogg
deleted file mode 100644
index ed4edfd2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/activation.ogg
deleted file mode 100644
index 221f102e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/err_pin.ogg
deleted file mode 100644
index d3387bd3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/err_reg.ogg
deleted file mode 100644
index a732ee9d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/language.json
deleted file mode 100644
index 12ce157d..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "hr-HR"
- },
- "strings": {
- "WARNING": "Upozorenje",
- "INFO": "Informacije",
- "ERROR": "Greška",
- "VERSION": "Verzija ",
- "LOADING_PROTOCOL": "Prijava...",
- "INITIALIZING": "Inicijalizacija...",
- "PIN_ERROR": "Molimo umetnite SIM karticu",
- "REG_ERROR": "Nije moguć pristup mreži, molimo provjerite status SIM kartice",
- "DETECTING_MODULE": "Otkrivanje modula...",
- "REGISTERING_NETWORK": "Čekanje mreže...",
- "CHECKING_NEW_VERSION": "Provjera nove verzije...",
- "CHECK_NEW_VERSION_FAILED": "Provjera nove verzije nije uspjela, ponovit će se za %d sekundi: %s",
- "SWITCH_TO_WIFI_NETWORK": "Prebacivanje na Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Prebacivanje na 4G...",
- "STANDBY": "Pripravnost",
- "CONNECT_TO": "Poveži se s ",
- "CONNECTING": "Povezivanje...",
- "CONNECTION_SUCCESSFUL": "Uspješno povezivanje",
- "CONNECTED_TO": "Povezano s ",
- "LISTENING": "Slušanje...",
- "SPEAKING": "Govorenje...",
- "SERVER_NOT_FOUND": "Traženje dostupne usluge",
- "SERVER_NOT_CONNECTED": "Nije moguće povezati se s uslugom, molimo pokušajte kasnije",
- "SERVER_TIMEOUT": "Istek vremena čekanja odgovora",
- "SERVER_ERROR": "Slanje nije uspjelo, molimo provjerite mrežu",
- "CONNECT_TO_HOTSPOT": "Pristupna točka: ",
- "ACCESS_VIA_BROWSER": " URL konfiguracije: ",
- "WIFI_CONFIG_MODE": "Način konfiguracije Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Ulazak u način konfiguracije Wi-Fi...",
- "SCANNING_WIFI": "Skeniranje Wi-Fi...",
- "NEW_VERSION": "Nova verzija ",
- "OTA_UPGRADE": "OTA nadogradnja",
- "UPGRADING": "Sustav se nadograđuje...",
- "UPGRADE_FAILED": "Nadogradnja nije uspjela",
- "ACTIVATION": "Aktivacija",
- "BATTERY_LOW": "Niska baterija",
- "BATTERY_CHARGING": "Punjenje",
- "BATTERY_FULL": "Baterija puna",
- "BATTERY_NEED_CHARGE": "Niska baterija, molimo napunite",
- "VOLUME": "Glasnoća ",
- "MUTED": "Utišano",
- "MAX_VOLUME": "Maksimalna glasnoća",
- "RTC_MODE_OFF": "AEC isključen",
- "RTC_MODE_ON": "AEC uključen",
- "PLEASE_WAIT": "Molimo pričekajte...",
- "FOUND_NEW_ASSETS": "Pronađeni novi resursi: %s",
- "DOWNLOAD_ASSETS_FAILED": "Preuzimanje resursa nije uspjelo",
- "LOADING_ASSETS": "Učitavanje resursa...",
- "HELLO_MY_FRIEND": "Bok, moj prijatelju!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/upgrade.ogg
deleted file mode 100644
index 0aa6134e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/welcome.ogg
deleted file mode 100644
index 8a41e8df..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/wificonfig.ogg
deleted file mode 100644
index 89496225..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hr-HR/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/0.ogg
deleted file mode 100644
index 0fabaf1c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/1.ogg
deleted file mode 100644
index 8187037a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/2.ogg
deleted file mode 100644
index bf417f37..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/3.ogg
deleted file mode 100644
index 78192eba..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/4.ogg
deleted file mode 100644
index e93ccbf0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/5.ogg
deleted file mode 100644
index d43909d3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/6.ogg
deleted file mode 100644
index 17344e37..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/7.ogg
deleted file mode 100644
index 5167c432..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/8.ogg
deleted file mode 100644
index ba82c28f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/9.ogg
deleted file mode 100644
index 4c1e62ac..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/activation.ogg
deleted file mode 100644
index 7e851928..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/err_pin.ogg
deleted file mode 100644
index fa7d6372..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/err_reg.ogg
deleted file mode 100644
index d8db153a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/language.json
deleted file mode 100644
index 399de04d..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "hu-HU"
- },
- "strings": {
- "WARNING": "Figyelmeztetés",
- "INFO": "Információ",
- "ERROR": "Hiba",
- "VERSION": "Verzió ",
- "LOADING_PROTOCOL": "Bejelentkezés...",
- "INITIALIZING": "Inicializálás...",
- "PIN_ERROR": "Kérjük, helyezze be a SIM kártyát",
- "REG_ERROR": "A hálózat nem érhető el, kérjük, ellenőrizze a SIM kártya állapotát",
- "DETECTING_MODULE": "Modul észlelése...",
- "REGISTERING_NETWORK": "Várakozás a hálózatra...",
- "CHECKING_NEW_VERSION": "Új verzió keresése...",
- "CHECK_NEW_VERSION_FAILED": "Az új verzió keresése sikertelen, újrapróbálás %d másodperc múlva: %s",
- "SWITCH_TO_WIFI_NETWORK": "Váltás Wi-Fi-re...",
- "SWITCH_TO_4G_NETWORK": "Váltás 4G-re...",
- "STANDBY": "Készenlét",
- "CONNECT_TO": "Csatlakozás: ",
- "CONNECTING": "Csatlakozás...",
- "CONNECTION_SUCCESSFUL": "Sikeres csatlakozás",
- "CONNECTED_TO": "Csatlakozva: ",
- "LISTENING": "Figyelés...",
- "SPEAKING": "Beszéd...",
- "SERVER_NOT_FOUND": "Elérhető szolgáltatás keresése",
- "SERVER_NOT_CONNECTED": "A szolgáltatáshoz nem sikerült csatlakozni, kérjük, próbálja újra később",
- "SERVER_TIMEOUT": "A várakozási idő lejárt",
- "SERVER_ERROR": "A küldés sikertelen, kérjük, ellenőrizze a hálózatot",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Konfigurációs URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi konfigurációs mód",
- "ENTERING_WIFI_CONFIG_MODE": "Belépés Wi-Fi konfigurációs módba...",
- "SCANNING_WIFI": "Wi-Fi keresése...",
- "NEW_VERSION": "Új verzió ",
- "OTA_UPGRADE": "OTA frissítés",
- "UPGRADING": "A rendszer frissítése folyamatban...",
- "UPGRADE_FAILED": "A frissítés sikertelen",
- "ACTIVATION": "Aktiválás",
- "BATTERY_LOW": "Alacsony akkumulátor",
- "BATTERY_CHARGING": "Töltés",
- "BATTERY_FULL": "Akkumulátor tele",
- "BATTERY_NEED_CHARGE": "Alacsony akkumulátor, kérjük, töltse fel",
- "VOLUME": "Hangerő ",
- "MUTED": "Némítva",
- "MAX_VOLUME": "Maximális hangerő",
- "RTC_MODE_OFF": "AEC kikapcsolva",
- "RTC_MODE_ON": "AEC bekapcsolva",
- "PLEASE_WAIT": "Kérjük, várjon...",
- "FOUND_NEW_ASSETS": "Új erőforrások találva: %s",
- "DOWNLOAD_ASSETS_FAILED": "Az erőforrások letöltése sikertelen",
- "LOADING_ASSETS": "Erőforrások betöltése...",
- "HELLO_MY_FRIEND": "Helló, barátom!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/upgrade.ogg
deleted file mode 100644
index d8945826..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/welcome.ogg
deleted file mode 100644
index 51d257bf..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/wificonfig.ogg
deleted file mode 100644
index c0e61194..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/hu-HU/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/0.ogg
deleted file mode 100644
index 1d8dea39..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/1.ogg
deleted file mode 100644
index cd8d7ccc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/2.ogg
deleted file mode 100644
index 69cdce8e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/3.ogg
deleted file mode 100644
index 2730364a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/4.ogg
deleted file mode 100644
index f26010fe..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/5.ogg
deleted file mode 100644
index 67b41f7b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/6.ogg
deleted file mode 100644
index 48f03438..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/7.ogg
deleted file mode 100644
index c56df9f1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/8.ogg
deleted file mode 100644
index cb9e15b5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/9.ogg
deleted file mode 100644
index e088c868..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/activation.ogg
deleted file mode 100644
index a4687676..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/err_pin.ogg
deleted file mode 100644
index 419ff8a5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/err_reg.ogg
deleted file mode 100644
index d756ddf1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/language.json
deleted file mode 100644
index 11224a66..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "id-ID"
- },
- "strings": {
- "WARNING": "Peringatan",
- "INFO": "Informasi",
- "ERROR": "Kesalahan",
- "VERSION": "Versi ",
- "LOADING_PROTOCOL": "Menghubungkan ke server...",
- "INITIALIZING": "Menginisialisasi...",
- "PIN_ERROR": "Silakan masukkan kartu SIM",
- "REG_ERROR": "Tidak dapat mengakses jaringan, periksa status kartu data",
- "DETECTING_MODULE": "Mendeteksi modul...",
- "REGISTERING_NETWORK": "Menunggu jaringan...",
- "CHECKING_NEW_VERSION": "Memeriksa versi baru...",
- "CHECK_NEW_VERSION_FAILED": "Pemeriksaan versi baru gagal, mencoba lagi dalam %d detik: %s",
- "SWITCH_TO_WIFI_NETWORK": "Beralih ke Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Beralih ke 4G...",
- "STANDBY": "Siaga",
- "CONNECT_TO": "Hubungkan ke ",
- "CONNECTING": "Menghubungkan...",
- "CONNECTED_TO": "Terhubung ke ",
- "LISTENING": "Mendengarkan...",
- "SPEAKING": "Berbicara...",
- "SERVER_NOT_FOUND": "Mencari layanan yang tersedia",
- "SERVER_NOT_CONNECTED": "Tidak dapat terhubung ke layanan, coba lagi nanti",
- "SERVER_TIMEOUT": "Waktu respons habis",
- "SERVER_ERROR": "Pengiriman gagal, periksa jaringan",
- "CONNECT_TO_HOTSPOT": "Hubungkan ponsel ke hotspot ",
- "ACCESS_VIA_BROWSER": ",akses melalui browser ",
- "WIFI_CONFIG_MODE": "Mode konfigurasi jaringan",
- "ENTERING_WIFI_CONFIG_MODE": "Memasuki mode konfigurasi jaringan...",
- "SCANNING_WIFI": "Memindai Wi-Fi...",
- "NEW_VERSION": "Versi baru ",
- "OTA_UPGRADE": "Pembaruan OTA",
- "UPGRADING": "Memperbarui sistem...",
- "UPGRADE_FAILED": "Pembaruan gagal",
- "ACTIVATION": "Aktivasi perangkat",
- "BATTERY_LOW": "Baterai lemah",
- "BATTERY_CHARGING": "Mengisi",
- "BATTERY_FULL": "Baterai penuh",
- "BATTERY_NEED_CHARGE": "Baterai lemah, silakan isi",
- "VOLUME": "Volume ",
- "MUTED": "Bisu",
- "MAX_VOLUME": "Volume maksimum",
- "RTC_MODE_OFF": "AEC mati",
- "RTC_MODE_ON": "AEC nyala",
- "DOWNLOAD_ASSETS_FAILED": "Gagal mengunduh aset",
- "LOADING_ASSETS": "Memuat aset...",
- "PLEASE_WAIT": "Mohon tunggu...",
- "FOUND_NEW_ASSETS": "Ditemukan aset baru: %s",
- "HELLO_MY_FRIEND": "Halo, teman saya!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/upgrade.ogg
deleted file mode 100644
index cc2557ae..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/welcome.ogg
deleted file mode 100644
index 57beac6d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/wificonfig.ogg
deleted file mode 100644
index 477acddd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/id-ID/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/0.ogg
deleted file mode 100644
index ae426e31..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/1.ogg
deleted file mode 100644
index 7c97b524..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/2.ogg
deleted file mode 100644
index 3d7995ac..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/3.ogg
deleted file mode 100644
index b22ad1e4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/4.ogg
deleted file mode 100644
index ef01a46e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/5.ogg
deleted file mode 100644
index d240b88d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/6.ogg
deleted file mode 100644
index c52a2d7d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/7.ogg
deleted file mode 100644
index dce632c1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/8.ogg
deleted file mode 100644
index acd19e89..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/9.ogg
deleted file mode 100644
index 807c2261..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/activation.ogg
deleted file mode 100644
index 63813259..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/err_pin.ogg
deleted file mode 100644
index 3fb7107a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/err_reg.ogg
deleted file mode 100644
index 3bbe56ed..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/language.json
deleted file mode 100644
index 54cc9bcc..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "it-IT"
- },
- "strings": {
- "WARNING": "Avviso",
- "INFO": "Informazione",
- "ERROR": "Errore",
- "VERSION": "Versione ",
- "LOADING_PROTOCOL": "Connessione al server...",
- "INITIALIZING": "Inizializzazione...",
- "PIN_ERROR": "Inserire la scheda SIM",
- "REG_ERROR": "Impossibile accedere alla rete, controllare lo stato della scheda dati",
- "DETECTING_MODULE": "Rilevamento modulo...",
- "REGISTERING_NETWORK": "In attesa della rete...",
- "CHECKING_NEW_VERSION": "Controllo nuova versione...",
- "CHECK_NEW_VERSION_FAILED": "Controllo nuova versione fallito, riprovo tra %d secondi: %s",
- "SWITCH_TO_WIFI_NETWORK": "Passaggio a Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Passaggio a 4G...",
- "STANDBY": "In attesa",
- "CONNECT_TO": "Connetti a ",
- "CONNECTING": "Connessione...",
- "CONNECTED_TO": "Connesso a ",
- "LISTENING": "In ascolto...",
- "SPEAKING": "Parlando...",
- "SERVER_NOT_FOUND": "Ricerca servizio disponibile",
- "SERVER_NOT_CONNECTED": "Impossibile connettersi al servizio, riprovare più tardi",
- "SERVER_TIMEOUT": "Timeout risposta",
- "SERVER_ERROR": "Invio fallito, controllare la rete",
- "CONNECT_TO_HOTSPOT": "Connetti telefono al hotspot ",
- "ACCESS_VIA_BROWSER": ",accedi tramite browser ",
- "WIFI_CONFIG_MODE": "Modalità configurazione rete",
- "ENTERING_WIFI_CONFIG_MODE": "Entrata in modalità configurazione rete...",
- "SCANNING_WIFI": "Scansione Wi-Fi...",
- "NEW_VERSION": "Nuova versione ",
- "OTA_UPGRADE": "Aggiornamento OTA",
- "UPGRADING": "Aggiornamento sistema...",
- "UPGRADE_FAILED": "Aggiornamento fallito",
- "ACTIVATION": "Attivazione dispositivo",
- "BATTERY_LOW": "Batteria scarica",
- "BATTERY_CHARGING": "In carica",
- "BATTERY_FULL": "Batteria piena",
- "BATTERY_NEED_CHARGE": "Batteria scarica, ricaricare",
- "VOLUME": "Volume ",
- "MUTED": "Silenziato",
- "MAX_VOLUME": "Volume massimo",
- "RTC_MODE_OFF": "AEC disattivato",
- "RTC_MODE_ON": "AEC attivato",
- "DOWNLOAD_ASSETS_FAILED": "Impossibile scaricare le risorse",
- "LOADING_ASSETS": "Caricamento risorse...",
- "PLEASE_WAIT": "Attendere prego...",
- "FOUND_NEW_ASSETS": "Trovate nuove risorse: %s",
- "HELLO_MY_FRIEND": "Ciao, amico mio!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/upgrade.ogg
deleted file mode 100644
index 79c0048e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/welcome.ogg
deleted file mode 100644
index 702def37..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/wificonfig.ogg
deleted file mode 100644
index 7aae624e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/it-IT/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/0.ogg
deleted file mode 100644
index 5b24d6a2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/1.ogg
deleted file mode 100644
index e31933df..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/2.ogg
deleted file mode 100644
index f75a934a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/3.ogg
deleted file mode 100644
index e414b59b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/4.ogg
deleted file mode 100644
index a977c977..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/5.ogg
deleted file mode 100644
index 52ccf1b0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/6.ogg
deleted file mode 100644
index 361f2e68..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/7.ogg
deleted file mode 100644
index e98be573..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/8.ogg
deleted file mode 100644
index 2f33874d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/9.ogg
deleted file mode 100644
index c150a18b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/activation.ogg
deleted file mode 100644
index 995a4897..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/err_pin.ogg
deleted file mode 100644
index 120bd6cc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/err_reg.ogg
deleted file mode 100644
index 27ccc930..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/language.json
deleted file mode 100644
index 1c2bd827..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "ja-JP"
- },
- "strings": {
- "WARNING": "警告",
- "INFO": "情報",
- "ERROR": "エラー",
- "VERSION": "バージョン ",
- "LOADING_PROTOCOL": "サーバーにログイン中...",
- "INITIALIZING": "初期化中...",
- "PIN_ERROR": "SIMカードを挿入してください",
- "REG_ERROR": "ネットワークに接続できません。ネットワーク状態を確認してください",
- "DETECTING_MODULE": "モジュールを検出中...",
- "REGISTERING_NETWORK": "ネットワーク接続待機中...",
- "CHECKING_NEW_VERSION": "新しいバージョンを確認中...",
- "CHECK_NEW_VERSION_FAILED": "更新確認に失敗しました。%d 秒後に再試行します: %s",
- "SWITCH_TO_WIFI_NETWORK": "Wi-Fiに切り替え中...",
- "SWITCH_TO_4G_NETWORK": "4Gに切り替え中...",
- "STANDBY": "待機中",
- "CONNECT_TO": "接続先 ",
- "CONNECTING": "接続中...",
- "CONNECTED_TO": "接続完了 ",
- "LISTENING": "リスニング中...",
- "SPEAKING": "話しています...",
- "SERVER_NOT_FOUND": "利用可能なサーバーを探しています",
- "SERVER_NOT_CONNECTED": "サーバーに接続できません。後でもう一度お試しください",
- "SERVER_TIMEOUT": "応答待機時間が終了しました",
- "SERVER_ERROR": "送信に失敗しました。ネットワークを確認してください",
- "CONNECT_TO_HOTSPOT": "スマートフォンをWi-Fi ",
- "ACCESS_VIA_BROWSER": " に接続し、ブラウザでアクセスしてください ",
- "WIFI_CONFIG_MODE": "ネットワーク設定モード",
- "ENTERING_WIFI_CONFIG_MODE": "ネットワーク設定中...",
- "SCANNING_WIFI": "Wi-Fiをスキャン中...",
- "NEW_VERSION": "新しいバージョン ",
- "OTA_UPGRADE": "OTAアップグレード",
- "UPGRADING": "システムをアップグレード中...",
- "UPGRADE_FAILED": "アップグレード失敗",
- "ACTIVATION": "デバイスをアクティベート",
- "BATTERY_LOW": "バッテリーが少なくなっています",
- "BATTERY_CHARGING": "充電中",
- "BATTERY_FULL": "バッテリー満タン",
- "BATTERY_NEED_CHARGE": "バッテリーが低下しています。充電してください",
- "VOLUME": "音量 ",
- "MUTED": "ミュートされています",
- "MAX_VOLUME": "最大音量",
- "RTC_MODE_OFF": "AEC 無効",
- "RTC_MODE_ON": "AEC 有効",
- "DOWNLOAD_ASSETS_FAILED": "アセットのダウンロードに失敗しました",
- "LOADING_ASSETS": "アセットを読み込み中...",
- "PLEASE_WAIT": "お待ちください...",
- "FOUND_NEW_ASSETS": "新しいアセットが見つかりました: %s",
- "HELLO_MY_FRIEND": "こんにちは、友達!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/upgrade.ogg
deleted file mode 100644
index 1994026e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/welcome.ogg
deleted file mode 100644
index f2a4f17c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/wificonfig.ogg
deleted file mode 100644
index 16fbf947..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ja-JP/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/0.ogg
deleted file mode 100644
index 7c29fe57..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/1.ogg
deleted file mode 100644
index 031d5d87..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/2.ogg
deleted file mode 100644
index 7a124998..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/3.ogg
deleted file mode 100644
index c3b7a523..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/4.ogg
deleted file mode 100644
index 79f515e6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/5.ogg
deleted file mode 100644
index 2cc2c655..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/6.ogg
deleted file mode 100644
index 84653eb4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/7.ogg
deleted file mode 100644
index e3e65156..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/8.ogg
deleted file mode 100644
index b9b7607b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/9.ogg
deleted file mode 100644
index 9060b213..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/activation.ogg
deleted file mode 100644
index 1af58afa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/err_pin.ogg
deleted file mode 100644
index 508e926e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/err_reg.ogg
deleted file mode 100644
index 68561fe1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/language.json
deleted file mode 100644
index 1d65bfb3..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/language.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "language": {
- "type": "ko-KR"
- },
- "strings": {
- "WARNING": "경고",
- "INFO": "정보",
- "ERROR": "오류",
- "VERSION": "버전 ",
- "LOADING_PROTOCOL": "로그인 중...",
- "INITIALIZING": "초기화 중...",
- "PIN_ERROR": "SIM 카드를 삽입하세요",
- "REG_ERROR": "네트워크에 접속할 수 없습니다. SIM 카드 상태를 확인하세요",
- "DETECTING_MODULE": "모듈 감지 중...",
- "REGISTERING_NETWORK": "네트워크 대기 중...",
- "CHECKING_NEW_VERSION": "새 버전 확인 중...",
- "CHECK_NEW_VERSION_FAILED": "새 버전 확인에 실패했습니다. %d초 후에 다시 시도합니다: %s",
- "SWITCH_TO_WIFI_NETWORK": "Wi-Fi로 전환 중...",
- "SWITCH_TO_4G_NETWORK": "4G로 전환 중...",
- "STANDBY": "대기",
- "CONNECT_TO": "연결 대상: ",
- "CONNECTING": "연결 중...",
- "CONNECTION_SUCCESSFUL": "연결 성공",
- "CONNECTED_TO": "연결됨: ",
- "LISTENING": "듣는 중...",
- "SPEAKING": "말하는 중...",
- "SERVER_NOT_FOUND": "사용 가능한 서비스를 찾는 중",
- "SERVER_NOT_CONNECTED": "서비스에 연결할 수 없습니다. 나중에 다시 시도하세요",
- "SERVER_TIMEOUT": "응답 대기 시간 초과",
- "SERVER_ERROR": "전송 실패, 네트워크를 확인하세요",
- "CONNECT_TO_HOTSPOT": "핫스팟: ",
- "ACCESS_VIA_BROWSER": " 설정 URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi 설정 모드",
- "ENTERING_WIFI_CONFIG_MODE": "Wi-Fi 설정 모드 진입 중...",
- "SCANNING_WIFI": "Wi-Fi 스캔 중...",
- "NEW_VERSION": "새 버전 ",
- "OTA_UPGRADE": "OTA 업그레이드",
- "UPGRADING": "시스템 업그레이드 중...",
- "UPGRADE_FAILED": "업그레이드 실패",
- "ACTIVATION": "활성화",
- "BATTERY_LOW": "배터리 부족",
- "BATTERY_CHARGING": "충전 중",
- "BATTERY_FULL": "배터리 완충",
- "BATTERY_NEED_CHARGE": "배터리 부족, 충전하세요",
- "VOLUME": "볼륨 ",
- "MUTED": "음소거",
- "MAX_VOLUME": "최대 볼륨",
- "RTC_MODE_OFF": "AEC 끄기",
- "RTC_MODE_ON": "AEC 켜기",
- "DOWNLOAD_ASSETS_FAILED": "에셋 다운로드 실패",
- "LOADING_ASSETS": "에셋 로딩 중...",
- "PLEASE_WAIT": "잠시 기다려 주세요...",
- "FOUND_NEW_ASSETS": "새로운 에셋을 발견했습니다: %s",
- "HELLO_MY_FRIEND": "안녕하세요, 친구!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/upgrade.ogg
deleted file mode 100644
index 0656a787..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/welcome.ogg
deleted file mode 100644
index 59621f4d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/wificonfig.ogg
deleted file mode 100644
index e1610afe..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ko-KR/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/0.ogg
deleted file mode 100644
index 2a6fc026..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/1.ogg
deleted file mode 100644
index 01103be3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/2.ogg
deleted file mode 100644
index 52e8ac60..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/3.ogg
deleted file mode 100644
index 16e3d769..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/4.ogg
deleted file mode 100644
index 3a3ec0af..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/5.ogg
deleted file mode 100644
index 3dd6c067..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/6.ogg
deleted file mode 100644
index a8e3aed6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/7.ogg
deleted file mode 100644
index d2fc9509..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/8.ogg
deleted file mode 100644
index 20e94daa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/9.ogg
deleted file mode 100644
index 61f7b96f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/activation.ogg
deleted file mode 100644
index 8fea3ae1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/err_pin.ogg
deleted file mode 100644
index 82217634..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/err_reg.ogg
deleted file mode 100644
index 51547b68..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/language.json
deleted file mode 100644
index 5a6fc0b3..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "ms-MY"
- },
- "strings": {
- "WARNING": "Amaran",
- "INFO": "Maklumat",
- "ERROR": "Ralat",
- "VERSION": "Versi ",
- "LOADING_PROTOCOL": "Log masuk...",
- "INITIALIZING": "Memulakan...",
- "PIN_ERROR": "Sila masukkan kad SIM",
- "REG_ERROR": "Tidak dapat mengakses rangkaian, sila semak status kad SIM",
- "DETECTING_MODULE": "Mengesan modul...",
- "REGISTERING_NETWORK": "Menunggu rangkaian...",
- "CHECKING_NEW_VERSION": "Memeriksa versi baharu...",
- "CHECK_NEW_VERSION_FAILED": "Pemeriksaan versi baharu gagal, akan cuba semula dalam %d saat: %s",
- "SWITCH_TO_WIFI_NETWORK": "Bertukar ke Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Bertukar ke 4G...",
- "STANDBY": "Bersedia",
- "CONNECT_TO": "Sambung ke ",
- "CONNECTING": "Menyambung...",
- "CONNECTION_SUCCESSFUL": "Sambungan berjaya",
- "CONNECTED_TO": "Disambungkan ke ",
- "LISTENING": "Mendengar...",
- "SPEAKING": "Bercakap...",
- "SERVER_NOT_FOUND": "Mencari perkhidmatan yang tersedia",
- "SERVER_NOT_CONNECTED": "Tidak dapat menyambung ke perkhidmatan, sila cuba lagi kemudian",
- "SERVER_TIMEOUT": "Masa tamat menunggu respons",
- "SERVER_ERROR": "Penghantaran gagal, sila semak rangkaian",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " URL konfigurasi: ",
- "WIFI_CONFIG_MODE": "Mod Konfigurasi Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Memasuki mod konfigurasi Wi-Fi...",
- "SCANNING_WIFI": "Mengimbas Wi-Fi...",
- "NEW_VERSION": "Versi baharu ",
- "OTA_UPGRADE": "Peningkatan OTA",
- "UPGRADING": "Sistem sedang dinaik taraf...",
- "UPGRADE_FAILED": "Peningkatan gagal",
- "ACTIVATION": "Pengaktifan",
- "BATTERY_LOW": "Bateri lemah",
- "BATTERY_CHARGING": "Mengecas",
- "BATTERY_FULL": "Bateri penuh",
- "BATTERY_NEED_CHARGE": "Bateri lemah, sila cas",
- "VOLUME": "Kelantangan ",
- "MUTED": "Dibisukan",
- "MAX_VOLUME": "Kelantangan maksimum",
- "RTC_MODE_OFF": "AEC Dimatikan",
- "RTC_MODE_ON": "AEC Dihidupkan",
- "PLEASE_WAIT": "Sila tunggu...",
- "FOUND_NEW_ASSETS": "Menemui aset baharu: %s",
- "DOWNLOAD_ASSETS_FAILED": "Gagal memuat turun aset",
- "LOADING_ASSETS": "Memuatkan aset...",
- "HELLO_MY_FRIEND": "Hai, kawan saya!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/upgrade.ogg
deleted file mode 100644
index 0bfcdcc6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/welcome.ogg
deleted file mode 100644
index 7cd32e09..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/wificonfig.ogg
deleted file mode 100644
index a257b1da..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ms-MY/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/0.ogg
deleted file mode 100644
index cc146777..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/1.ogg
deleted file mode 100644
index 1d32c294..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/2.ogg
deleted file mode 100644
index 00d3536b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/3.ogg
deleted file mode 100644
index d8d47119..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/4.ogg
deleted file mode 100644
index eafc4eaf..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/5.ogg
deleted file mode 100644
index 61d36bca..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/6.ogg
deleted file mode 100644
index cfa848ee..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/7.ogg
deleted file mode 100644
index 93914850..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/8.ogg
deleted file mode 100644
index 946b7ac3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/9.ogg
deleted file mode 100644
index 8311b581..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/activation.ogg
deleted file mode 100644
index 8d7be020..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/err_pin.ogg
deleted file mode 100644
index 1b6c81c3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/err_reg.ogg
deleted file mode 100644
index c505fff1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/language.json
deleted file mode 100644
index 71b0a57c..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "nb-NO"
- },
- "strings": {
- "WARNING": "Advarsel",
- "INFO": "Informasjon",
- "ERROR": "Feil",
- "VERSION": "Versjon ",
- "LOADING_PROTOCOL": "Logger inn...",
- "INITIALIZING": "Initialiserer...",
- "PIN_ERROR": "Vennligst sett inn SIM-kort",
- "REG_ERROR": "Kan ikke få tilgang til nettverket, vennligst sjekk SIM-kortets status",
- "DETECTING_MODULE": "Oppdager modul...",
- "REGISTERING_NETWORK": "Venter på nettverk...",
- "CHECKING_NEW_VERSION": "Sjekker for ny versjon...",
- "CHECK_NEW_VERSION_FAILED": "Sjekk for ny versjon mislyktes, prøver på nytt om %d sekunder: %s",
- "SWITCH_TO_WIFI_NETWORK": "Bytter til Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Bytter til 4G...",
- "STANDBY": "Standby",
- "CONNECT_TO": "Koble til ",
- "CONNECTING": "Kobler til...",
- "CONNECTION_SUCCESSFUL": "Tilkobling vellykket",
- "CONNECTED_TO": "Koblet til ",
- "LISTENING": "Lytter...",
- "SPEAKING": "Snakker...",
- "SERVER_NOT_FOUND": "Søker etter tilgjengelig tjeneste",
- "SERVER_NOT_CONNECTED": "Kan ikke koble til tjeneste, vennligst prøv igjen senere",
- "SERVER_TIMEOUT": "Tidsavbrudd for å vente på svar",
- "SERVER_ERROR": "Sending mislyktes, vennligst sjekk nettverket",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Konfigurasjon-URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi konfigurasjonsmodus",
- "ENTERING_WIFI_CONFIG_MODE": "Går inn i Wi-Fi konfigurasjonsmodus...",
- "SCANNING_WIFI": "Skanner Wi-Fi...",
- "NEW_VERSION": "Ny versjon ",
- "OTA_UPGRADE": "OTA-oppgradering",
- "UPGRADING": "Systemet oppgraderes...",
- "UPGRADE_FAILED": "Oppgradering mislyktes",
- "ACTIVATION": "Aktivering",
- "BATTERY_LOW": "Lavt batteri",
- "BATTERY_CHARGING": "Lader",
- "BATTERY_FULL": "Batteriet er fullt",
- "BATTERY_NEED_CHARGE": "Lavt batteri, vennligst lad",
- "VOLUME": "Volum ",
- "MUTED": "Dempet",
- "MAX_VOLUME": "Maksimalt volum",
- "RTC_MODE_OFF": "AEC av",
- "RTC_MODE_ON": "AEC på",
- "PLEASE_WAIT": "Vennligst vent...",
- "FOUND_NEW_ASSETS": "Fant nye ressurser: %s",
- "DOWNLOAD_ASSETS_FAILED": "Nedlasting av ressurser mislyktes",
- "LOADING_ASSETS": "Laster ressurser...",
- "HELLO_MY_FRIEND": "Hei, min venn!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/upgrade.ogg
deleted file mode 100644
index dc914d58..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/welcome.ogg
deleted file mode 100644
index 0e25dc9a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/wificonfig.ogg
deleted file mode 100644
index 2d0b4a47..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nb-NO/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/0.ogg
deleted file mode 100644
index aba888e6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/1.ogg
deleted file mode 100644
index 31b8273d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/2.ogg
deleted file mode 100644
index a4e54578..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/3.ogg
deleted file mode 100644
index 95a59cda..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/4.ogg
deleted file mode 100644
index 8d212873..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/5.ogg
deleted file mode 100644
index 307fbfbc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/6.ogg
deleted file mode 100644
index f03555bd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/7.ogg
deleted file mode 100644
index 759a596b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/8.ogg
deleted file mode 100644
index 3d4183ab..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/9.ogg
deleted file mode 100644
index af53ac42..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/activation.ogg
deleted file mode 100644
index 273d65ad..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/err_pin.ogg
deleted file mode 100644
index a2f83c4d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/err_reg.ogg
deleted file mode 100644
index 1f61dfd1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/language.json
deleted file mode 100644
index 2c1a360e..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "nl-NL"
- },
- "strings": {
- "WARNING": "Waarschuwing",
- "INFO": "Informatie",
- "ERROR": "Fout",
- "VERSION": "Versie ",
- "LOADING_PROTOCOL": "Inloggen...",
- "INITIALIZING": "Initialiseren...",
- "PIN_ERROR": "Plaats een SIM-kaart",
- "REG_ERROR": "Geen toegang tot netwerk, controleer de SIM-kaartstatus",
- "DETECTING_MODULE": "Module detecteren...",
- "REGISTERING_NETWORK": "Wachten op netwerk...",
- "CHECKING_NEW_VERSION": "Controleren op nieuwe versie...",
- "CHECK_NEW_VERSION_FAILED": "Controle op nieuwe versie mislukt, opnieuw proberen over %d seconden: %s",
- "SWITCH_TO_WIFI_NETWORK": "Overschakelen naar Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Overschakelen naar 4G...",
- "STANDBY": "Stand-by",
- "CONNECT_TO": "Verbinden met ",
- "CONNECTING": "Verbinden...",
- "CONNECTION_SUCCESSFUL": "Verbinding geslaagd",
- "CONNECTED_TO": "Verbonden met ",
- "LISTENING": "Luisteren...",
- "SPEAKING": "Spreken...",
- "SERVER_NOT_FOUND": "Zoeken naar beschikbare service",
- "SERVER_NOT_CONNECTED": "Kan niet verbinden met service, probeer later opnieuw",
- "SERVER_TIMEOUT": "Timeout bij wachten op reactie",
- "SERVER_ERROR": "Verzenden mislukt, controleer het netwerk",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Configuratie-URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi-configuratiemodus",
- "ENTERING_WIFI_CONFIG_MODE": "Wi-Fi-configuratiemodus openen...",
- "SCANNING_WIFI": "Wi-Fi scannen...",
- "NEW_VERSION": "Nieuwe versie ",
- "OTA_UPGRADE": "OTA-upgrade",
- "UPGRADING": "Systeem wordt geüpgraded...",
- "UPGRADE_FAILED": "Upgrade mislukt",
- "ACTIVATION": "Activering",
- "BATTERY_LOW": "Batterij bijna leeg",
- "BATTERY_CHARGING": "Opladen",
- "BATTERY_FULL": "Batterij vol",
- "BATTERY_NEED_CHARGE": "Batterij bijna leeg, laad op",
- "VOLUME": "Volume ",
- "MUTED": "Gedempt",
- "MAX_VOLUME": "Maximaal volume",
- "RTC_MODE_OFF": "AEC uit",
- "RTC_MODE_ON": "AEC aan",
- "PLEASE_WAIT": "Een ogenblik geduld...",
- "FOUND_NEW_ASSETS": "Nieuwe bronnen gevonden: %s",
- "DOWNLOAD_ASSETS_FAILED": "Downloaden van bronnen mislukt",
- "LOADING_ASSETS": "Bronnen laden...",
- "HELLO_MY_FRIEND": "Hallo, mijn vriend!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/upgrade.ogg
deleted file mode 100644
index 88797923..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/welcome.ogg
deleted file mode 100644
index 6fcc6dd8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/wificonfig.ogg
deleted file mode 100644
index ada5f986..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/nl-NL/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/0.ogg
deleted file mode 100644
index 7351d964..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/1.ogg
deleted file mode 100644
index 342c9cc1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/2.ogg
deleted file mode 100644
index 8fa7c87c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/3.ogg
deleted file mode 100644
index b656411f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/4.ogg
deleted file mode 100644
index ea49088b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/5.ogg
deleted file mode 100644
index 8d4b3b94..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/6.ogg
deleted file mode 100644
index 7c8fefd8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/7.ogg
deleted file mode 100644
index 71395919..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/8.ogg
deleted file mode 100644
index 8e2dd569..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/9.ogg
deleted file mode 100644
index b88ab873..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/activation.ogg
deleted file mode 100644
index 7c1ff9da..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/err_pin.ogg
deleted file mode 100644
index 4d35f3cf..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/err_reg.ogg
deleted file mode 100644
index 35d14524..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/language.json
deleted file mode 100644
index b54c2929..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "pl-PL"
- },
- "strings": {
- "WARNING": "Ostrzeżenie",
- "INFO": "Informacja",
- "ERROR": "Błąd",
- "VERSION": "Wersja ",
- "LOADING_PROTOCOL": "Łączenie z serwerem...",
- "INITIALIZING": "Inicjalizacja...",
- "PIN_ERROR": "Proszę włożyć kartę SIM",
- "REG_ERROR": "Nie można uzyskać dostępu do sieci, sprawdź stan karty danych",
- "DETECTING_MODULE": "Wykrywanie modułu...",
- "REGISTERING_NETWORK": "Oczekiwanie na sieć...",
- "CHECKING_NEW_VERSION": "Sprawdzanie nowej wersji...",
- "CHECK_NEW_VERSION_FAILED": "Sprawdzanie nowej wersji nie powiodło się, ponowna próba za %d sekund: %s",
- "SWITCH_TO_WIFI_NETWORK": "Przełączanie na Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Przełączanie na 4G...",
- "STANDBY": "Gotowość",
- "CONNECT_TO": "Połącz z ",
- "CONNECTING": "Łączenie...",
- "CONNECTED_TO": "Połączono z ",
- "LISTENING": "Słuchanie...",
- "SPEAKING": "Mówienie...",
- "SERVER_NOT_FOUND": "Szukanie dostępnej usługi",
- "SERVER_NOT_CONNECTED": "Nie można połączyć się z usługą, spróbuj ponownie później",
- "SERVER_TIMEOUT": "Przekroczono czas oczekiwania na odpowiedź",
- "SERVER_ERROR": "Wysyłanie nie powiodło się, sprawdź sieć",
- "CONNECT_TO_HOTSPOT": "Podłącz telefon do hotspotu ",
- "ACCESS_VIA_BROWSER": ",dostęp przez przeglądarkę ",
- "WIFI_CONFIG_MODE": "Tryb konfiguracji sieci",
- "ENTERING_WIFI_CONFIG_MODE": "Wchodzenie w tryb konfiguracji sieci...",
- "SCANNING_WIFI": "Skanowanie Wi-Fi...",
- "NEW_VERSION": "Nowa wersja ",
- "OTA_UPGRADE": "Aktualizacja OTA",
- "UPGRADING": "Aktualizacja systemu...",
- "UPGRADE_FAILED": "Aktualizacja nie powiodła się",
- "ACTIVATION": "Aktywacja urządzenia",
- "BATTERY_LOW": "Niski poziom baterii",
- "BATTERY_CHARGING": "Ładowanie",
- "BATTERY_FULL": "Bateria pełna",
- "BATTERY_NEED_CHARGE": "Niski poziom baterii, proszę naładować",
- "VOLUME": "Głośność ",
- "MUTED": "Wyciszony",
- "MAX_VOLUME": "Maksymalna głośność",
- "RTC_MODE_OFF": "AEC wyłączony",
- "RTC_MODE_ON": "AEC włączony",
- "DOWNLOAD_ASSETS_FAILED": "Nie udało się pobrać zasobów",
- "LOADING_ASSETS": "Ładowanie zasobów...",
- "PLEASE_WAIT": "Proszę czekać...",
- "FOUND_NEW_ASSETS": "Znaleziono nowe zasoby: %s",
- "HELLO_MY_FRIEND": "Cześć, mój przyjacielu!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/upgrade.ogg
deleted file mode 100644
index 041eee89..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/welcome.ogg
deleted file mode 100644
index 140db7d4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/wificonfig.ogg
deleted file mode 100644
index 0d2222ff..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pl-PL/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/0.ogg
deleted file mode 100644
index 80c9f8ba..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/1.ogg
deleted file mode 100644
index 4299bc8f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/2.ogg
deleted file mode 100644
index fa67197e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/3.ogg
deleted file mode 100644
index da2b131d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/4.ogg
deleted file mode 100644
index 2c593f67..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/5.ogg
deleted file mode 100644
index 62d670d6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/6.ogg
deleted file mode 100644
index 32ea27b7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/7.ogg
deleted file mode 100644
index c8542ed0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/8.ogg
deleted file mode 100644
index 8e54738a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/9.ogg
deleted file mode 100644
index e97c8fc4..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/activation.ogg
deleted file mode 100644
index 1c980ac0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/err_pin.ogg
deleted file mode 100644
index ceb22234..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/err_reg.ogg
deleted file mode 100644
index 2fa4350b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/language.json
deleted file mode 100644
index da0e0e21..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "pt-PT"
- },
- "strings": {
- "WARNING": "Aviso",
- "INFO": "Informação",
- "ERROR": "Erro",
- "VERSION": "Versão ",
- "LOADING_PROTOCOL": "Ligando ao servidor...",
- "INITIALIZING": "A inicializar...",
- "PIN_ERROR": "Por favor insira o cartão SIM",
- "REG_ERROR": "Não é possível aceder à rede, verifique o estado do cartão de dados",
- "DETECTING_MODULE": "A detectar módulo...",
- "REGISTERING_NETWORK": "À espera da rede...",
- "CHECKING_NEW_VERSION": "A verificar nova versão...",
- "CHECK_NEW_VERSION_FAILED": "Falha na verificação de nova versão, nova tentativa em %d segundos: %s",
- "SWITCH_TO_WIFI_NETWORK": "A mudar para Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "A mudar para 4G...",
- "STANDBY": "Em espera",
- "CONNECT_TO": "Ligar a ",
- "CONNECTING": "A ligar...",
- "CONNECTED_TO": "Ligado a ",
- "LISTENING": "A escutar...",
- "SPEAKING": "A falar...",
- "SERVER_NOT_FOUND": "A procurar serviço disponível",
- "SERVER_NOT_CONNECTED": "Não é possível ligar ao serviço, tente mais tarde",
- "SERVER_TIMEOUT": "Tempo limite de resposta",
- "SERVER_ERROR": "Falha no envio, verifique a rede",
- "CONNECT_TO_HOTSPOT": "Ligue o telefone ao hotspot ",
- "ACCESS_VIA_BROWSER": ",aceder através do navegador ",
- "WIFI_CONFIG_MODE": "Modo de configuração de rede",
- "ENTERING_WIFI_CONFIG_MODE": "A entrar no modo de configuração de rede...",
- "SCANNING_WIFI": "A procurar Wi-Fi...",
- "NEW_VERSION": "Nova versão ",
- "OTA_UPGRADE": "Atualização OTA",
- "UPGRADING": "A atualizar sistema...",
- "UPGRADE_FAILED": "Atualização falhada",
- "ACTIVATION": "Ativação do dispositivo",
- "BATTERY_LOW": "Bateria fraca",
- "BATTERY_CHARGING": "A carregar",
- "BATTERY_FULL": "Bateria cheia",
- "BATTERY_NEED_CHARGE": "Bateria fraca, por favor carregue",
- "VOLUME": "Volume ",
- "MUTED": "Silenciado",
- "MAX_VOLUME": "Volume máximo",
- "RTC_MODE_OFF": "AEC desligado",
- "RTC_MODE_ON": "AEC ligado",
- "DOWNLOAD_ASSETS_FAILED": "Falha ao descarregar recursos",
- "LOADING_ASSETS": "A carregar recursos...",
- "PLEASE_WAIT": "Por favor aguarde...",
- "FOUND_NEW_ASSETS": "Encontrados novos recursos: %s",
- "HELLO_MY_FRIEND": "Olá, meu amigo!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/upgrade.ogg
deleted file mode 100644
index 76bac601..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/welcome.ogg
deleted file mode 100644
index 74daf239..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/wificonfig.ogg
deleted file mode 100644
index 784939fd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/pt-PT/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/0.ogg
deleted file mode 100644
index 67fd181e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/1.ogg
deleted file mode 100644
index 291be667..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/2.ogg
deleted file mode 100644
index 54caf959..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/3.ogg
deleted file mode 100644
index b93d5c19..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/4.ogg
deleted file mode 100644
index 3feff21b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/5.ogg
deleted file mode 100644
index fe56930f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/6.ogg
deleted file mode 100644
index ed8aee9d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/7.ogg
deleted file mode 100644
index 9ce02c02..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/8.ogg
deleted file mode 100644
index c5d3184e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/9.ogg
deleted file mode 100644
index 1d156c7c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/activation.ogg
deleted file mode 100644
index d2d91fb8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/err_pin.ogg
deleted file mode 100644
index 202000cb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/err_reg.ogg
deleted file mode 100644
index eafcabc8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/language.json
deleted file mode 100644
index d8ec774a..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "ro-RO"
- },
- "strings": {
- "WARNING": "Avertisment",
- "INFO": "Informație",
- "ERROR": "Eroare",
- "VERSION": "Versiune ",
- "LOADING_PROTOCOL": "Se conectează la server...",
- "INITIALIZING": "Se inițializează...",
- "PIN_ERROR": "Vă rugăm să introduceți cardul SIM",
- "REG_ERROR": "Nu se poate accesa rețeaua, verificați starea cardului de date",
- "DETECTING_MODULE": "Se detectează modulul...",
- "REGISTERING_NETWORK": "Se așteaptă rețeaua...",
- "CHECKING_NEW_VERSION": "Se verifică versiunea nouă...",
- "CHECK_NEW_VERSION_FAILED": "Verificarea versiunii noi a eșuat, se reîncearcă în %d secunde: %s",
- "SWITCH_TO_WIFI_NETWORK": "Se comută la Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Se comută la 4G...",
- "STANDBY": "În așteptare",
- "CONNECT_TO": "Conectare la ",
- "CONNECTING": "Se conectează...",
- "CONNECTED_TO": "Conectat la ",
- "LISTENING": "Se ascultă...",
- "SPEAKING": "Se vorbește...",
- "SERVER_NOT_FOUND": "Se caută serviciul disponibil",
- "SERVER_NOT_CONNECTED": "Nu se poate conecta la serviciu, încercați mai târziu",
- "SERVER_TIMEOUT": "Timpul de răspuns a expirat",
- "SERVER_ERROR": "Trimiterea a eșuat, verificați rețeaua",
- "CONNECT_TO_HOTSPOT": "Conectați telefonul la hotspot ",
- "ACCESS_VIA_BROWSER": ",accesați prin browser ",
- "WIFI_CONFIG_MODE": "Modul de configurare rețea",
- "ENTERING_WIFI_CONFIG_MODE": "Se intră în modul de configurare rețea...",
- "SCANNING_WIFI": "Se scanează Wi-Fi...",
- "NEW_VERSION": "Versiune nouă ",
- "OTA_UPGRADE": "Actualizare OTA",
- "UPGRADING": "Se actualizează sistemul...",
- "UPGRADE_FAILED": "Actualizarea a eșuat",
- "ACTIVATION": "Activarea dispozitivului",
- "BATTERY_LOW": "Baterie scăzută",
- "BATTERY_CHARGING": "Se încarcă",
- "BATTERY_FULL": "Baterie plină",
- "BATTERY_NEED_CHARGE": "Baterie scăzută, vă rugăm să încărcați",
- "VOLUME": "Volum ",
- "MUTED": "Silențios",
- "MAX_VOLUME": "Volum maxim",
- "RTC_MODE_OFF": "AEC oprit",
- "RTC_MODE_ON": "AEC pornit",
- "DOWNLOAD_ASSETS_FAILED": "Eșec la descărcarea resurselor",
- "LOADING_ASSETS": "Se încarcă resursele...",
- "PLEASE_WAIT": "Vă rugăm să așteptați...",
- "FOUND_NEW_ASSETS": "S-au găsit resurse noi: %s",
- "HELLO_MY_FRIEND": "Salut, prietenul meu!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/upgrade.ogg
deleted file mode 100644
index f4b5618b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/welcome.ogg
deleted file mode 100644
index 673f3d86..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/wificonfig.ogg
deleted file mode 100644
index d536cdcd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ro-RO/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/0.ogg
deleted file mode 100644
index 8b3d47b5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/1.ogg
deleted file mode 100644
index a9a3b233..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/2.ogg
deleted file mode 100644
index d2f6b4dc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/3.ogg
deleted file mode 100644
index 744ae4e5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/4.ogg
deleted file mode 100644
index f82ee5d7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/5.ogg
deleted file mode 100644
index 9c976d7f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/6.ogg
deleted file mode 100644
index 61d71922..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/7.ogg
deleted file mode 100644
index bbb3cf32..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/8.ogg
deleted file mode 100644
index f73c5905..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/9.ogg
deleted file mode 100644
index 3863b891..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/activation.ogg
deleted file mode 100644
index c3ff8e40..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/err_pin.ogg
deleted file mode 100644
index 1fea3f6b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/err_reg.ogg
deleted file mode 100644
index 3d585f9e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/language.json
deleted file mode 100644
index ebac6069..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "ru-RU"
- },
- "strings": {
- "WARNING": "Предупреждение",
- "INFO": "Информация",
- "ERROR": "Ошибка",
- "VERSION": "Версия ",
- "LOADING_PROTOCOL": "Подключение к серверу...",
- "INITIALIZING": "Инициализация...",
- "PIN_ERROR": "Пожалуйста, вставьте SIM-карту",
- "REG_ERROR": "Невозможно подключиться к сети, проверьте состояние карты данных",
- "DETECTING_MODULE": "Обнаружение модуля...",
- "REGISTERING_NETWORK": "Ожидание сети...",
- "CHECKING_NEW_VERSION": "Проверка новой версии...",
- "CHECK_NEW_VERSION_FAILED": "Ошибка проверки новой версии, повтор через %d секунд: %s",
- "SWITCH_TO_WIFI_NETWORK": "Переключение на Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Переключение на 4G...",
- "STANDBY": "Ожидание",
- "CONNECT_TO": "Подключение к ",
- "CONNECTING": "Подключение...",
- "CONNECTED_TO": "Подключено к ",
- "LISTENING": "Прослушивание...",
- "SPEAKING": "Говорение...",
- "SERVER_NOT_FOUND": "Поиск доступного сервиса",
- "SERVER_NOT_CONNECTED": "Невозможно подключиться к сервису, попробуйте позже",
- "SERVER_TIMEOUT": "Тайм-аут ответа",
- "SERVER_ERROR": "Ошибка отправки, проверьте сеть",
- "CONNECT_TO_HOTSPOT": "Подключите телефон к точке доступа ",
- "ACCESS_VIA_BROWSER": ",доступ через браузер ",
- "WIFI_CONFIG_MODE": "Режим настройки сети",
- "ENTERING_WIFI_CONFIG_MODE": "Вход в режим настройки сети...",
- "SCANNING_WIFI": "Сканирование Wi-Fi...",
- "NEW_VERSION": "Новая версия ",
- "OTA_UPGRADE": "Обновление OTA",
- "UPGRADING": "Обновление системы...",
- "UPGRADE_FAILED": "Обновление не удалось",
- "ACTIVATION": "Активация устройства",
- "BATTERY_LOW": "Низкий заряд батареи",
- "BATTERY_CHARGING": "Зарядка",
- "BATTERY_FULL": "Батарея полная",
- "BATTERY_NEED_CHARGE": "Низкий заряд, пожалуйста, зарядите",
- "VOLUME": "Громкость ",
- "MUTED": "Звук отключен",
- "MAX_VOLUME": "Максимальная громкость",
- "RTC_MODE_OFF": "AEC выключен",
- "RTC_MODE_ON": "AEC включен",
- "DOWNLOAD_ASSETS_FAILED": "Не удалось загрузить ресурсы",
- "LOADING_ASSETS": "Загрузка ресурсов...",
- "PLEASE_WAIT": "Пожалуйста, подождите...",
- "FOUND_NEW_ASSETS": "Найдены новые ресурсы: %s",
- "HELLO_MY_FRIEND": "Привет, мой друг!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/upgrade.ogg
deleted file mode 100644
index 69fbbdc0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/welcome.ogg
deleted file mode 100644
index bb5f05c2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/wificonfig.ogg
deleted file mode 100644
index 0a26e2b8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/ru-RU/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/0.ogg
deleted file mode 100644
index adef2c4f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/1.ogg
deleted file mode 100644
index 89747413..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/2.ogg
deleted file mode 100644
index 7336f93b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/3.ogg
deleted file mode 100644
index ce9635e2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/4.ogg
deleted file mode 100644
index 3f8026d6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/5.ogg
deleted file mode 100644
index dd50dd32..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/6.ogg
deleted file mode 100644
index 8ef182aa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/7.ogg
deleted file mode 100644
index 6c7f4d55..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/8.ogg
deleted file mode 100644
index 4533f508..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/9.ogg
deleted file mode 100644
index 045d8f68..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/activation.ogg
deleted file mode 100644
index 4c780fa7..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/err_pin.ogg
deleted file mode 100644
index ee2dd69b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/err_reg.ogg
deleted file mode 100644
index 0c9237fb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/language.json
deleted file mode 100644
index 5c56f48f..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "sk-SK"
- },
- "strings": {
- "WARNING": "Upozornenie",
- "INFO": "Informácie",
- "ERROR": "Chyba",
- "VERSION": "Verzia ",
- "LOADING_PROTOCOL": "Prihlasovanie...",
- "INITIALIZING": "Inicializácia...",
- "PIN_ERROR": "Vložte SIM kartu",
- "REG_ERROR": "Nie je možné pristúpiť k sieti, skontrolujte stav SIM karty",
- "DETECTING_MODULE": "Zisťovanie modulu...",
- "REGISTERING_NETWORK": "Čakanie na sieť...",
- "CHECKING_NEW_VERSION": "Kontrola novej verzie...",
- "CHECK_NEW_VERSION_FAILED": "Kontrola novej verzie zlyhala, opakuje sa o %d sekúnd: %s",
- "SWITCH_TO_WIFI_NETWORK": "Prepínanie na Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Prepínanie na 4G...",
- "STANDBY": "Pohotovostný režim",
- "CONNECT_TO": "Pripojenie k ",
- "CONNECTING": "Pripája sa...",
- "CONNECTION_SUCCESSFUL": "Pripojenie úspešné",
- "CONNECTED_TO": "Pripojené k ",
- "LISTENING": "Načúvanie...",
- "SPEAKING": "Hovorenie...",
- "SERVER_NOT_FOUND": "Hľadanie dostupnej služby",
- "SERVER_NOT_CONNECTED": "Nie je možné pripojiť sa k službe, skúste to neskôr",
- "SERVER_TIMEOUT": "Časový limit čakania na odpoveď vypršal",
- "SERVER_ERROR": "Odosielanie zlyhalo, skontrolujte sieť",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Konfiguračná URL: ",
- "WIFI_CONFIG_MODE": "Režim konfigurácie Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Vstup do režimu konfigurácie Wi-Fi...",
- "SCANNING_WIFI": "Skenovanie Wi-Fi...",
- "NEW_VERSION": "Nová verzia ",
- "OTA_UPGRADE": "OTA aktualizácia",
- "UPGRADING": "Systém sa aktualizuje...",
- "UPGRADE_FAILED": "Aktualizácia zlyhala",
- "ACTIVATION": "Aktivácia",
- "BATTERY_LOW": "Slabá batéria",
- "BATTERY_CHARGING": "Nabíjanie",
- "BATTERY_FULL": "Batéria plná",
- "BATTERY_NEED_CHARGE": "Slabá batéria, nabite ju",
- "VOLUME": "Hlasitosť ",
- "MUTED": "Stíšené",
- "MAX_VOLUME": "Maximálna hlasitosť",
- "RTC_MODE_OFF": "AEC vypnuté",
- "RTC_MODE_ON": "AEC zapnuté",
- "PLEASE_WAIT": "Počkajte prosím...",
- "FOUND_NEW_ASSETS": "Nájdené nové zdroje: %s",
- "DOWNLOAD_ASSETS_FAILED": "Sťahovanie zdrojov zlyhalo",
- "LOADING_ASSETS": "Načítavanie zdrojov...",
- "HELLO_MY_FRIEND": "Ahoj, môj priateľ!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/upgrade.ogg
deleted file mode 100644
index ce12dbf5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/welcome.ogg
deleted file mode 100644
index 05b8cad5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/wificonfig.ogg
deleted file mode 100644
index 89906c60..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sk-SK/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/0.ogg
deleted file mode 100644
index 48baa9ad..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/1.ogg
deleted file mode 100644
index fcd0f702..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/2.ogg
deleted file mode 100644
index d5c63609..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/3.ogg
deleted file mode 100644
index fa0774af..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/4.ogg
deleted file mode 100644
index 95fa91f3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/5.ogg
deleted file mode 100644
index d06e1def..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/6.ogg
deleted file mode 100644
index d3de0e18..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/7.ogg
deleted file mode 100644
index 36b701f3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/8.ogg
deleted file mode 100644
index 8dbdc07b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/9.ogg
deleted file mode 100644
index 944f9224..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/activation.ogg
deleted file mode 100644
index 73d10f3a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/err_pin.ogg
deleted file mode 100644
index dc692f04..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/err_reg.ogg
deleted file mode 100644
index e0ca35af..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/language.json
deleted file mode 100644
index 0513a7d1..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "sl-SI"
- },
- "strings": {
- "WARNING": "Opozorilo",
- "INFO": "Informacije",
- "ERROR": "Napaka",
- "VERSION": "Različica ",
- "LOADING_PROTOCOL": "Prijava...",
- "INITIALIZING": "Inicializacija...",
- "PIN_ERROR": "Vstavite SIM kartico",
- "REG_ERROR": "Ni mogoče dostopati do omrežja, preverite stanje SIM kartice",
- "DETECTING_MODULE": "Zaznavanje modula...",
- "REGISTERING_NETWORK": "Čakanje na omrežje...",
- "CHECKING_NEW_VERSION": "Preverjanje nove različice...",
- "CHECK_NEW_VERSION_FAILED": "Preverjanje nove različice ni uspelo, ponovni poskus čez %d sekund: %s",
- "SWITCH_TO_WIFI_NETWORK": "Preklop na Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Preklop na 4G...",
- "STANDBY": "Pripravljenost",
- "CONNECT_TO": "Poveži se z ",
- "CONNECTING": "Povezovanje...",
- "CONNECTION_SUCCESSFUL": "Povezava uspešna",
- "CONNECTED_TO": "Povezano z ",
- "LISTENING": "Poslušanje...",
- "SPEAKING": "Govorjenje...",
- "SERVER_NOT_FOUND": "Iskanje razpoložljive storitve",
- "SERVER_NOT_CONNECTED": "Ni se mogoče povezati s storitvijo, poskusite kasneje",
- "SERVER_TIMEOUT": "Časovna omejitev čakanja na odgovor",
- "SERVER_ERROR": "Pošiljanje ni uspelo, preverite omrežje",
- "CONNECT_TO_HOTSPOT": "Dostopna točka: ",
- "ACCESS_VIA_BROWSER": " Konfiguracijski URL: ",
- "WIFI_CONFIG_MODE": "Način konfiguracije Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Vstop v način konfiguracije Wi-Fi...",
- "SCANNING_WIFI": "Skeniranje Wi-Fi...",
- "NEW_VERSION": "Nova različica ",
- "OTA_UPGRADE": "OTA nadgradnja",
- "UPGRADING": "Sistem se nadgrajuje...",
- "UPGRADE_FAILED": "Nadgradnja ni uspela",
- "ACTIVATION": "Aktivacija",
- "BATTERY_LOW": "Nizka baterija",
- "BATTERY_CHARGING": "Polnjenje",
- "BATTERY_FULL": "Baterija polna",
- "BATTERY_NEED_CHARGE": "Nizka baterija, napolnite",
- "VOLUME": "Glasnost ",
- "MUTED": "Utišano",
- "MAX_VOLUME": "Največja glasnost",
- "RTC_MODE_OFF": "AEC izklopljen",
- "RTC_MODE_ON": "AEC vklopljen",
- "PLEASE_WAIT": "Počakajte...",
- "FOUND_NEW_ASSETS": "Najdeni novi viri: %s",
- "DOWNLOAD_ASSETS_FAILED": "Prenos virov ni uspel",
- "LOADING_ASSETS": "Nalaganje virov...",
- "HELLO_MY_FRIEND": "Pozdravljeni, moj prijatelj!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/upgrade.ogg
deleted file mode 100644
index 9c307df2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/welcome.ogg
deleted file mode 100644
index bab84762..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/wificonfig.ogg
deleted file mode 100644
index e29f0779..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sl-SI/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sr-RS/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sr-RS/language.json
deleted file mode 100644
index b86bf0aa..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sr-RS/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "sr-RS"
- },
- "strings": {
- "WARNING": "Упозорење",
- "INFO": "Информације",
- "ERROR": "Грешка",
- "VERSION": "Верзија ",
- "LOADING_PROTOCOL": "Пријављивање...",
- "INITIALIZING": "Иницијализација...",
- "PIN_ERROR": "Молимо убаците SIM картицу",
- "REG_ERROR": "Није могуће приступити мрежи, проверите статус SIM картице",
- "DETECTING_MODULE": "Откривање модула...",
- "REGISTERING_NETWORK": "Чекање мреже...",
- "CHECKING_NEW_VERSION": "Провера нове верзије...",
- "CHECK_NEW_VERSION_FAILED": "Провера нове верзије није успела, покушаће се поново за %d секунди: %s",
- "SWITCH_TO_WIFI_NETWORK": "Пребацивање на Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Пребацивање на 4G...",
- "STANDBY": "Спремност",
- "CONNECT_TO": "Повежи се са ",
- "CONNECTING": "Повезивање...",
- "CONNECTION_SUCCESSFUL": "Успешно повезивање",
- "CONNECTED_TO": "Повезано са ",
- "LISTENING": "Слушање...",
- "SPEAKING": "Говорење...",
- "SERVER_NOT_FOUND": "Тражење доступне услуге",
- "SERVER_NOT_CONNECTED": "Није могуће повезати се са услугом, покушајте касније",
- "SERVER_TIMEOUT": "Истекло време чекања одговора",
- "SERVER_ERROR": "Слање није успело, проверите мрежу",
- "CONNECT_TO_HOTSPOT": "Приступна тачка: ",
- "ACCESS_VIA_BROWSER": " URL за конфигурацију: ",
- "WIFI_CONFIG_MODE": "Режим конфигурације Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Улазак у режим конфигурације Wi-Fi...",
- "SCANNING_WIFI": "Скенирање Wi-Fi...",
- "NEW_VERSION": "Нова верзија ",
- "OTA_UPGRADE": "OTA надоградња",
- "UPGRADING": "Систем се надограђује...",
- "UPGRADE_FAILED": "Надоградња није успела",
- "ACTIVATION": "Активација",
- "BATTERY_LOW": "Слаба батерија",
- "BATTERY_CHARGING": "Пуњење",
- "BATTERY_FULL": "Батерија пуна",
- "BATTERY_NEED_CHARGE": "Слаба батерија, молимо напуните",
- "VOLUME": "Јачина звука ",
- "MUTED": "Утишано",
- "MAX_VOLUME": "Максимална јачина звука",
- "RTC_MODE_OFF": "AEC искључен",
- "RTC_MODE_ON": "AEC укључен",
- "PLEASE_WAIT": "Молимо сачекајте...",
- "FOUND_NEW_ASSETS": "Пронађени нови ресурси: %s",
- "DOWNLOAD_ASSETS_FAILED": "Преузимање ресурса није успело",
- "LOADING_ASSETS": "Учитавање ресурса...",
- "HELLO_MY_FRIEND": "Здраво, пријатељу!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/0.ogg
deleted file mode 100644
index af94e5b5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/1.ogg
deleted file mode 100644
index 3246d37c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/2.ogg
deleted file mode 100644
index db2a251d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/3.ogg
deleted file mode 100644
index 5bfb2373..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/4.ogg
deleted file mode 100644
index 4ebccba3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/5.ogg
deleted file mode 100644
index d45e216e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/6.ogg
deleted file mode 100644
index 3da60f5f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/7.ogg
deleted file mode 100644
index 85ddfab2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/8.ogg
deleted file mode 100644
index 318735fc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/9.ogg
deleted file mode 100644
index 0f60d538..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/activation.ogg
deleted file mode 100644
index 08a507d6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/err_pin.ogg
deleted file mode 100644
index c3772c9c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/err_reg.ogg
deleted file mode 100644
index 07fc197b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/language.json
deleted file mode 100644
index 444cac99..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/language.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "language": {
- "type": "sv-SE"
- },
- "strings": {
- "WARNING": "Varning",
- "INFO": "Information",
- "ERROR": "Fel",
- "VERSION": "Version ",
- "LOADING_PROTOCOL": "Loggar in...",
- "INITIALIZING": "Initierar...",
- "PIN_ERROR": "Vänligen sätt in SIM-kort",
- "REG_ERROR": "Kan inte komma åt nätverket, kontrollera SIM-kortets status",
- "DETECTING_MODULE": "Detekterar modul...",
- "REGISTERING_NETWORK": "Väntar på nätverk...",
- "CHECKING_NEW_VERSION": "Kontrollerar ny version...",
- "CHECK_NEW_VERSION_FAILED": "Kontroll av ny version misslyckades, försöker igen om %d sekunder: %s",
- "SWITCH_TO_WIFI_NETWORK": "Byter till Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Byter till 4G...",
- "STANDBY": "Standby",
- "CONNECT_TO": "Anslut till ",
- "CONNECTING": "Ansluter...",
- "CONNECTION_SUCCESSFUL": "Anslutningen lyckades",
- "CONNECTED_TO": "Ansluten till ",
- "LISTENING": "Lyssnar...",
- "SPEAKING": "Talar...",
- "SERVER_NOT_FOUND": "Söker efter tillgänglig tjänst",
- "SERVER_NOT_CONNECTED": "Kan inte ansluta till tjänsten, försök igen senare",
- "SERVER_TIMEOUT": "Timeout vid väntan på svar",
- "SERVER_ERROR": "Skickandet misslyckades, kontrollera nätverket",
- "CONNECT_TO_HOTSPOT": "Hotspot: ",
- "ACCESS_VIA_BROWSER": " Konfigurations-URL: ",
- "WIFI_CONFIG_MODE": "Wi-Fi-konfigurationsläge",
- "ENTERING_WIFI_CONFIG_MODE": "Går in i Wi-Fi-konfigurationsläge...",
- "SCANNING_WIFI": "Skannar Wi-Fi...",
- "NEW_VERSION": "Ny version ",
- "OTA_UPGRADE": "OTA-uppgradering",
- "UPGRADING": "Systemet uppgraderas...",
- "UPGRADE_FAILED": "Uppgraderingen misslyckades",
- "ACTIVATION": "Aktivering",
- "BATTERY_LOW": "Lågt batteri",
- "BATTERY_CHARGING": "Laddar",
- "BATTERY_FULL": "Batteriet fullt",
- "BATTERY_NEED_CHARGE": "Lågt batteri, vänligen ladda",
- "VOLUME": "Volym ",
- "MUTED": "Tystad",
- "MAX_VOLUME": "Maximal volym",
- "RTC_MODE_OFF": "AEC av",
- "RTC_MODE_ON": "AEC på",
- "PLEASE_WAIT": "Vänligen vänta...",
- "FOUND_NEW_ASSETS": "Hittade nya resurser: %s",
- "DOWNLOAD_ASSETS_FAILED": "Nedladdning av resurser misslyckades",
- "LOADING_ASSETS": "Laddar resurser...",
- "HELLO_MY_FRIEND": "Hej, min vän!"
- }
-}
-
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/upgrade.ogg
deleted file mode 100644
index db4d02d8..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/welcome.ogg
deleted file mode 100644
index 94078969..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/wificonfig.ogg
deleted file mode 100644
index f232108b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/sv-SE/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/0.ogg
deleted file mode 100644
index 15e2544b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/1.ogg
deleted file mode 100644
index 87753b3d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/2.ogg
deleted file mode 100644
index 057a6f36..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/3.ogg
deleted file mode 100644
index 104d51ba..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/4.ogg
deleted file mode 100644
index a35befc9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/5.ogg
deleted file mode 100644
index 8eb3b5b9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/6.ogg
deleted file mode 100644
index b8cbbe08..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/7.ogg
deleted file mode 100644
index e93c9a4d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/8.ogg
deleted file mode 100644
index becde0ef..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/9.ogg
deleted file mode 100644
index 319ef67a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/activation.ogg
deleted file mode 100644
index 983e4d8b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/err_pin.ogg
deleted file mode 100644
index 059cc8f6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/err_reg.ogg
deleted file mode 100644
index 042c47f2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/language.json
deleted file mode 100644
index e97fed1a..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/language.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "language": {
- "type": "th-TH"
- },
- "strings": {
- "WARNING": "คำเตือน",
- "INFO": "ข้อมูล",
- "ERROR": "ข้อผิดพลาด",
- "VERSION": "เวอร์ชัน ",
- "LOADING_PROTOCOL": "กำลังเข้าสู่ระบบ...",
- "INITIALIZING": "กำลังเริ่มต้นระบบ...",
- "PIN_ERROR": "กรุณาใส่ซิมการ์ด",
- "REG_ERROR": "ไม่สามารถเข้าถึงเครือข่ายได้ กรุณาตรวจสอบสถานะซิมการ์ด",
- "DETECTING_MODULE": "กำลังตรวจจับโมดูล...",
- "REGISTERING_NETWORK": "กำลังรอเครือข่าย...",
- "CHECKING_NEW_VERSION": "กำลังตรวจสอบเวอร์ชันใหม่...",
- "CHECK_NEW_VERSION_FAILED": "การตรวจสอบเวอร์ชันใหม่ล้มเหลว จะลองใหม่ใน %d วินาที: %s",
- "SWITCH_TO_WIFI_NETWORK": "กำลังเปลี่ยนเป็น Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "กำลังเปลี่ยนเป็น 4G...",
- "STANDBY": "พร้อม",
- "CONNECT_TO": "เชื่อมต่อกับ ",
- "CONNECTING": "กำลังเชื่อมต่อ...",
- "CONNECTION_SUCCESSFUL": "เชื่อมต่อสำเร็จ",
- "CONNECTED_TO": "เชื่อมต่อกับ ",
- "LISTENING": "กำลังฟัง...",
- "SPEAKING": "กำลังพูด...",
- "SERVER_NOT_FOUND": "กำลังค้นหาบริการที่ใช้งานได้",
- "SERVER_NOT_CONNECTED": "ไม่สามารถเชื่อมต่อกับบริการได้ กรุณาลองใหม่ในภายหลัง",
- "SERVER_TIMEOUT": "หมดเวลารอการตอบกลับ",
- "SERVER_ERROR": "การส่งข้อมูลล้มเหลว กรุณาตรวจสอบเครือข่าย",
- "CONNECT_TO_HOTSPOT": "ฮอตสปอต: ",
- "ACCESS_VIA_BROWSER": " URL การตั้งค่า: ",
- "WIFI_CONFIG_MODE": "โหมดการตั้งค่า Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "กำลังเข้าสู่โหมดการตั้งค่า Wi-Fi...",
- "SCANNING_WIFI": "กำลังสแกน Wi-Fi...",
- "NEW_VERSION": "เวอร์ชันใหม่ ",
- "OTA_UPGRADE": "การอัปเกรด OTA",
- "UPGRADING": "ระบบกำลังอัปเกรด...",
- "UPGRADE_FAILED": "การอัปเกรดล้มเหลว",
- "ACTIVATION": "การเปิดใช้งาน",
- "BATTERY_LOW": "แบตเตอรี่ต่ำ",
- "BATTERY_CHARGING": "กำลังชาร์จ",
- "BATTERY_FULL": "แบตเตอรี่เต็ม",
- "BATTERY_NEED_CHARGE": "แบตเตอรี่ต่ำ กรุณาชาร์จ",
- "VOLUME": "เสียง ",
- "MUTED": "ปิดเสียง",
- "MAX_VOLUME": "เสียงสูงสุด",
- "RTC_MODE_OFF": "ปิด AEC",
- "RTC_MODE_ON": "เปิด AEC",
- "DOWNLOAD_ASSETS_FAILED": "ดาวน์โหลดทรัพยากรล้มเหลว",
- "LOADING_ASSETS": "กำลังโหลดทรัพยากร...",
- "PLEASE_WAIT": "กรุณารอสักครู่...",
- "FOUND_NEW_ASSETS": "พบทรัพยากรใหม่: %s",
- "HELLO_MY_FRIEND": "สวัสดี เพื่อนของฉัน!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/upgrade.ogg
deleted file mode 100644
index e024638b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/welcome.ogg
deleted file mode 100644
index 0b32b808..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/wificonfig.ogg
deleted file mode 100644
index 984d2176..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/th-TH/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/0.ogg
deleted file mode 100644
index 9ab92859..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/1.ogg
deleted file mode 100644
index 131d7749..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/2.ogg
deleted file mode 100644
index 5e80f6e3..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/3.ogg
deleted file mode 100644
index bdc05503..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/4.ogg
deleted file mode 100644
index fd39d2de..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/5.ogg
deleted file mode 100644
index 30d093eb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/6.ogg
deleted file mode 100644
index 95a6f6d6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/7.ogg
deleted file mode 100644
index 9ba5ebc9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/8.ogg
deleted file mode 100644
index 9a4d8c8b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/9.ogg
deleted file mode 100644
index af30078f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/activation.ogg
deleted file mode 100644
index f8bf34ea..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/err_pin.ogg
deleted file mode 100644
index 6e5831e2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/err_reg.ogg
deleted file mode 100644
index 91fc7ff5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/language.json
deleted file mode 100644
index 4d0f70f4..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "tr-TR"
- },
- "strings": {
- "WARNING": "Uyarı",
- "INFO": "Bilgi",
- "ERROR": "Hata",
- "VERSION": "Sürüm ",
- "LOADING_PROTOCOL": "Sunucuya bağlanıyor...",
- "INITIALIZING": "Başlatılıyor...",
- "PIN_ERROR": "Lütfen SIM kartı takın",
- "REG_ERROR": "Ağa erişilemiyor, veri kartı durumunu kontrol edin",
- "DETECTING_MODULE": "Modül algılanıyor...",
- "REGISTERING_NETWORK": "Ağ bekleniyor...",
- "CHECKING_NEW_VERSION": "Yeni sürüm kontrol ediliyor...",
- "CHECK_NEW_VERSION_FAILED": "Yeni sürüm kontrolü başarısız, %d saniye sonra tekrar denenecek: %s",
- "SWITCH_TO_WIFI_NETWORK": "Wi-Fi'ye geçiliyor...",
- "SWITCH_TO_4G_NETWORK": "4G'ye geçiliyor...",
- "STANDBY": "Bekleme",
- "CONNECT_TO": "Bağlan ",
- "CONNECTING": "Bağlanıyor...",
- "CONNECTED_TO": "Bağlandı ",
- "LISTENING": "Dinleniyor...",
- "SPEAKING": "Konuşuluyor...",
- "SERVER_NOT_FOUND": "Mevcut hizmet aranıyor",
- "SERVER_NOT_CONNECTED": "Hizmete bağlanılamıyor, lütfen daha sonra deneyin",
- "SERVER_TIMEOUT": "Yanıt zaman aşımı",
- "SERVER_ERROR": "Gönderme başarısız, ağı kontrol edin",
- "CONNECT_TO_HOTSPOT": "Telefonu hotspot'a bağlayın ",
- "ACCESS_VIA_BROWSER": ",tarayıcı üzerinden erişin ",
- "WIFI_CONFIG_MODE": "Ağ yapılandırma modu",
- "ENTERING_WIFI_CONFIG_MODE": "Ağ yapılandırma moduna giriliyor...",
- "SCANNING_WIFI": "Wi-Fi taranıyor...",
- "NEW_VERSION": "Yeni sürüm ",
- "OTA_UPGRADE": "OTA güncelleme",
- "UPGRADING": "Sistem güncelleniyor...",
- "UPGRADE_FAILED": "Güncelleme başarısız",
- "ACTIVATION": "Cihaz aktivasyonu",
- "BATTERY_LOW": "Pil düşük",
- "BATTERY_CHARGING": "Şarj oluyor",
- "BATTERY_FULL": "Pil dolu",
- "BATTERY_NEED_CHARGE": "Pil düşük, lütfen şarj edin",
- "VOLUME": "Ses ",
- "MUTED": "Sessiz",
- "MAX_VOLUME": "Maksimum ses",
- "RTC_MODE_OFF": "AEC kapalı",
- "RTC_MODE_ON": "AEC açık",
- "DOWNLOAD_ASSETS_FAILED": "Varlıklar indirilemedi",
- "LOADING_ASSETS": "Varlıklar yükleniyor...",
- "PLEASE_WAIT": "Lütfen bekleyin...",
- "FOUND_NEW_ASSETS": "Yeni varlıklar bulundu: %s",
- "HELLO_MY_FRIEND": "Merhaba, arkadaşım!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/upgrade.ogg
deleted file mode 100644
index 57215bdf..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/welcome.ogg
deleted file mode 100644
index fedd21c2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/wificonfig.ogg
deleted file mode 100644
index c898adc0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/tr-TR/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/0.ogg
deleted file mode 100644
index f4ea62c0..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/1.ogg
deleted file mode 100644
index 94bfed5f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/2.ogg
deleted file mode 100644
index e6226d53..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/3.ogg
deleted file mode 100644
index 50f7faa9..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/4.ogg
deleted file mode 100644
index d3f9d7fd..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/5.ogg
deleted file mode 100644
index 712b0a0a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/6.ogg
deleted file mode 100644
index 7a01d5f5..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/7.ogg
deleted file mode 100644
index 4f3d5b2a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/8.ogg
deleted file mode 100644
index 9577bc7c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/9.ogg
deleted file mode 100644
index dbaf9d6d..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/activation.ogg
deleted file mode 100644
index 446e0208..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/err_pin.ogg
deleted file mode 100644
index dd7d4024..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/err_reg.ogg
deleted file mode 100644
index ffe1a4c2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/language.json
deleted file mode 100644
index d844a383..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "uk-UA"
- },
- "strings": {
- "WARNING": "Попередження",
- "INFO": "Інформація",
- "ERROR": "Помилка",
- "VERSION": "Версія ",
- "LOADING_PROTOCOL": "Підключення до сервера...",
- "INITIALIZING": "Ініціалізація...",
- "PIN_ERROR": "Будь ласка, вставте SIM-карту",
- "REG_ERROR": "Неможливо отримати доступ до мережі, перевірте стан карти даних",
- "DETECTING_MODULE": "Виявлення модуля...",
- "REGISTERING_NETWORK": "Очікування мережі...",
- "CHECKING_NEW_VERSION": "Перевірка нової версії...",
- "CHECK_NEW_VERSION_FAILED": "Перевірка нової версії не вдалася, повтор через %d секунд: %s",
- "SWITCH_TO_WIFI_NETWORK": "Перемикання на Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Перемикання на 4G...",
- "STANDBY": "Очікування",
- "CONNECT_TO": "Підключитися до ",
- "CONNECTING": "Підключення...",
- "CONNECTED_TO": "Підключено до ",
- "LISTENING": "Прослуховування...",
- "SPEAKING": "Говоріння...",
- "SERVER_NOT_FOUND": "Пошук доступного сервісу",
- "SERVER_NOT_CONNECTED": "Неможливо підключитися до сервісу, спробуйте пізніше",
- "SERVER_TIMEOUT": "Час очікування відповіді",
- "SERVER_ERROR": "Помилка відправки, перевірте мережу",
- "CONNECT_TO_HOTSPOT": "Підключіть телефон до точки доступу ",
- "ACCESS_VIA_BROWSER": ",доступ через браузер ",
- "WIFI_CONFIG_MODE": "Режим налаштування мережі",
- "ENTERING_WIFI_CONFIG_MODE": "Вхід у режим налаштування мережі...",
- "SCANNING_WIFI": "Сканування Wi-Fi...",
- "NEW_VERSION": "Нова версія ",
- "OTA_UPGRADE": "Оновлення OTA",
- "UPGRADING": "Оновлення системи...",
- "UPGRADE_FAILED": "Оновлення не вдалося",
- "ACTIVATION": "Активація пристрою",
- "BATTERY_LOW": "Низький заряд батареї",
- "BATTERY_CHARGING": "Зарядка",
- "BATTERY_FULL": "Батарея повна",
- "BATTERY_NEED_CHARGE": "Низький заряд, будь ласка, зарядіть",
- "VOLUME": "Гучність ",
- "MUTED": "Звук вимкнено",
- "MAX_VOLUME": "Максимальна гучність",
- "RTC_MODE_OFF": "AEC вимкнено",
- "RTC_MODE_ON": "AEC увімкнено",
- "DOWNLOAD_ASSETS_FAILED": "Не вдалося завантажити ресурси",
- "LOADING_ASSETS": "Завантаження ресурсів...",
- "PLEASE_WAIT": "Будь ласка, зачекайте...",
- "FOUND_NEW_ASSETS": "Знайдено нові ресурси: %s",
- "HELLO_MY_FRIEND": "Привіт, мій друже!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/upgrade.ogg
deleted file mode 100644
index 5a41be8a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/welcome.ogg
deleted file mode 100644
index e04ca00e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/wificonfig.ogg
deleted file mode 100644
index c1d5d903..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/uk-UA/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/0.ogg
deleted file mode 100644
index c6c04183..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/1.ogg
deleted file mode 100644
index 4774b06c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/2.ogg
deleted file mode 100644
index 592e9a44..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/3.ogg
deleted file mode 100644
index 68259731..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/4.ogg
deleted file mode 100644
index 983e48aa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/5.ogg
deleted file mode 100644
index fd950a04..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/6.ogg
deleted file mode 100644
index 8158cfc2..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/7.ogg
deleted file mode 100644
index ca03b3ed..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/8.ogg
deleted file mode 100644
index d359674f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/9.ogg
deleted file mode 100644
index 6c6dd0bc..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/activation.ogg
deleted file mode 100644
index a3871b8c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/err_pin.ogg
deleted file mode 100644
index 16e42a0e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/err_reg.ogg
deleted file mode 100644
index 00b6babb..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/language.json
deleted file mode 100644
index e010b7be..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/language.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "language": {
- "type": "vi-VN"
- },
- "strings": {
- "WARNING": "Cảnh báo",
- "INFO": "Thông tin",
- "ERROR": "Lỗi",
- "VERSION": "Phiên bản ",
- "LOADING_PROTOCOL": "Đang đăng nhập...",
- "INITIALIZING": "Đang khởi tạo...",
- "PIN_ERROR": "Vui lòng cắm thẻ SIM",
- "REG_ERROR": "Không thể truy cập mạng, vui lòng kiểm tra trạng thái thẻ SIM",
- "DETECTING_MODULE": "Đang phát hiện module...",
- "REGISTERING_NETWORK": "Đang chờ mạng...",
- "CHECKING_NEW_VERSION": "Đang kiểm tra phiên bản mới...",
- "CHECK_NEW_VERSION_FAILED": "Kiểm tra phiên bản mới thất bại, sẽ thử lại sau %d giây: %s",
- "SWITCH_TO_WIFI_NETWORK": "Đang chuyển sang Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "Đang chuyển sang 4G...",
- "STANDBY": "Chờ",
- "CONNECT_TO": "Kết nối đến ",
- "CONNECTING": "Đang kết nối...",
- "CONNECTION_SUCCESSFUL": "Kết nối thành công",
- "CONNECTED_TO": "Đã kết nối đến ",
- "LISTENING": "Đang lắng nghe...",
- "SPEAKING": "Đang nói...",
- "SERVER_NOT_FOUND": "Đang tìm dịch vụ khả dụng",
- "SERVER_NOT_CONNECTED": "Không thể kết nối đến dịch vụ, vui lòng thử lại sau",
- "SERVER_TIMEOUT": "Hết thời gian chờ phản hồi",
- "SERVER_ERROR": "Gửi thất bại, vui lòng kiểm tra mạng",
- "CONNECT_TO_HOTSPOT": "Điểm phát sóng: ",
- "ACCESS_VIA_BROWSER": " URL cấu hình: ",
- "WIFI_CONFIG_MODE": "Chế độ cấu hình Wi-Fi",
- "ENTERING_WIFI_CONFIG_MODE": "Đang vào chế độ cấu hình Wi-Fi...",
- "SCANNING_WIFI": "Đang quét Wi-Fi...",
- "NEW_VERSION": "Phiên bản mới ",
- "OTA_UPGRADE": "Nâng cấp OTA",
- "UPGRADING": "Hệ thống đang nâng cấp...",
- "UPGRADE_FAILED": "Nâng cấp thất bại",
- "ACTIVATION": "Kích hoạt",
- "BATTERY_LOW": "Pin yếu",
- "BATTERY_CHARGING": "Đang sạc",
- "BATTERY_FULL": "Pin đầy",
- "BATTERY_NEED_CHARGE": "Pin yếu, vui lòng sạc",
- "VOLUME": "Âm lượng ",
- "MUTED": "Tắt tiếng",
- "MAX_VOLUME": "Âm lượng tối đa",
- "RTC_MODE_OFF": "Tắt AEC",
- "RTC_MODE_ON": "Bật AEC",
- "DOWNLOAD_ASSETS_FAILED": "Tải xuống tài nguyên thất bại",
- "LOADING_ASSETS": "Đang tải tài nguyên...",
- "PLEASE_WAIT": "Vui lòng đợi...",
- "FOUND_NEW_ASSETS": "Tìm thấy tài nguyên mới: %s",
- "HELLO_MY_FRIEND": "Xin chào, bạn của tôi!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/upgrade.ogg
deleted file mode 100644
index 1d41e98b..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/welcome.ogg
deleted file mode 100644
index ae12cc31..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/wificonfig.ogg
deleted file mode 100644
index 08c3cb5a..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/vi-VN/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/0.ogg
deleted file mode 100644
index 0cb12476..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/1.ogg
deleted file mode 100644
index 858af34c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/2.ogg
deleted file mode 100644
index 72f53aa1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/3.ogg
deleted file mode 100644
index 848af119..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/4.ogg
deleted file mode 100644
index 39b3eeea..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/5.ogg
deleted file mode 100644
index 92303588..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/6.ogg
deleted file mode 100644
index 9ecb5747..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/7.ogg
deleted file mode 100644
index 63487996..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/8.ogg
deleted file mode 100644
index 67fc7a9e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/9.ogg
deleted file mode 100644
index a7769d9f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/activation.ogg
deleted file mode 100644
index 33291af6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/err_pin.ogg
deleted file mode 100644
index e4552442..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/err_reg.ogg
deleted file mode 100644
index a3456f12..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/language.json
deleted file mode 100644
index 9eb619d1..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "zh-CN"
- },
- "strings": {
- "WARNING": "警告",
- "INFO": "信息",
- "ERROR": "错误",
- "VERSION": "版本 ",
- "LOADING_PROTOCOL": "登录服务器...",
- "INITIALIZING": "正在初始化...",
- "PIN_ERROR": "请插入 SIM 卡",
- "REG_ERROR": "无法接入网络,请检查流量卡状态",
- "DETECTING_MODULE": "检测模组...",
- "REGISTERING_NETWORK": "等待网络...",
- "CHECKING_NEW_VERSION": "检查新版本...",
- "CHECK_NEW_VERSION_FAILED": "检查新版本失败,将在 %d 秒后重试:%s",
- "SWITCH_TO_WIFI_NETWORK": "切换到 Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "切换到 4G...",
- "STANDBY": "待命",
- "CONNECT_TO": "连接 ",
- "CONNECTING": "连接中...",
- "CONNECTED_TO": "已连接 ",
- "LISTENING": "聆听中...",
- "SPEAKING": "说话中...",
- "SERVER_NOT_FOUND": "正在寻找可用服务",
- "SERVER_NOT_CONNECTED": "无法连接服务,请稍后再试",
- "SERVER_TIMEOUT": "等待响应超时",
- "SERVER_ERROR": "发送失败,请检查网络",
- "CONNECT_TO_HOTSPOT": "手机连接热点 ",
- "ACCESS_VIA_BROWSER": ",浏览器访问 ",
- "WIFI_CONFIG_MODE": "配网模式",
- "ENTERING_WIFI_CONFIG_MODE": "进入配网模式...",
- "SCANNING_WIFI": "扫描 Wi-Fi...",
- "NEW_VERSION": "新版本 ",
- "OTA_UPGRADE": "OTA 升级",
- "UPGRADING": "正在升级系统...",
- "UPGRADE_FAILED": "升级失败",
- "ACTIVATION": "激活设备",
- "BATTERY_LOW": "电量不足",
- "BATTERY_CHARGING": "正在充电",
- "BATTERY_FULL": "电量已满",
- "BATTERY_NEED_CHARGE": "电量低,请充电",
- "VOLUME": "音量 ",
- "MUTED": "已静音",
- "MAX_VOLUME": "最大音量",
- "RTC_MODE_OFF": "AEC 关闭",
- "RTC_MODE_ON": "AEC 开启",
- "DOWNLOAD_ASSETS_FAILED": "下载资源失败",
- "LOADING_ASSETS": "加载资源...",
- "PLEASE_WAIT": "请稍候...",
- "FOUND_NEW_ASSETS": "发现新资源: %s",
- "HELLO_MY_FRIEND": "你好,我的朋友!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/upgrade.ogg
deleted file mode 100644
index 1feb87b6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/welcome.ogg
deleted file mode 100644
index b2eeb4fa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/wificonfig.ogg
deleted file mode 100644
index 7ef88e25..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-CN/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/0.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/0.ogg
deleted file mode 100644
index 0cb12476..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/0.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/1.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/1.ogg
deleted file mode 100644
index 858af34c..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/1.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/2.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/2.ogg
deleted file mode 100644
index 72f53aa1..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/2.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/3.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/3.ogg
deleted file mode 100644
index 848af119..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/3.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/4.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/4.ogg
deleted file mode 100644
index 39b3eeea..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/4.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/5.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/5.ogg
deleted file mode 100644
index 92303588..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/5.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/6.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/6.ogg
deleted file mode 100644
index 9ecb5747..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/6.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/7.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/7.ogg
deleted file mode 100644
index 63487996..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/7.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/8.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/8.ogg
deleted file mode 100644
index 67fc7a9e..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/8.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/9.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/9.ogg
deleted file mode 100644
index a7769d9f..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/9.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/activation.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/activation.ogg
deleted file mode 100644
index 33291af6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/activation.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/err_pin.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/err_pin.ogg
deleted file mode 100644
index e4552442..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/err_pin.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/err_reg.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/err_reg.ogg
deleted file mode 100644
index a3456f12..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/err_reg.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/language.json b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/language.json
deleted file mode 100644
index f035b366..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/language.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "language": {
- "type": "zh-TW"
- },
- "strings": {
- "WARNING": "警告",
- "INFO": "資訊",
- "ERROR": "錯誤",
- "VERSION": "版本 ",
- "LOADING_PROTOCOL": "登入伺服器...",
- "INITIALIZING": "正在初始化...",
- "PIN_ERROR": "請插入 SIM 卡",
- "REG_ERROR": "無法接入網絡,請檢查網路狀態",
- "DETECTING_MODULE": "檢測模組...",
- "REGISTERING_NETWORK": "等待網絡...",
- "CHECKING_NEW_VERSION": "檢查新版本...",
- "CHECK_NEW_VERSION_FAILED": "檢查新版本失敗,將在 %d 秒後重試:%s",
- "SWITCH_TO_WIFI_NETWORK": "切換到 Wi-Fi...",
- "SWITCH_TO_4G_NETWORK": "切換到 4G...",
- "STANDBY": "待命",
- "CONNECT_TO": "連接 ",
- "CONNECTING": "連接中...",
- "CONNECTED_TO": "已連接 ",
- "LISTENING": "聆聽中...",
- "SPEAKING": "說話中...",
- "SERVER_NOT_FOUND": "正在尋找可用服務",
- "SERVER_NOT_CONNECTED": "無法連接服務,請稍後再試",
- "SERVER_TIMEOUT": "等待響應超時",
- "SERVER_ERROR": "發送失敗,請檢查網絡",
- "CONNECT_TO_HOTSPOT": "手機連接WiFi ",
- "ACCESS_VIA_BROWSER": ",瀏覽器訪問 ",
- "WIFI_CONFIG_MODE": "網路設定模式",
- "ENTERING_WIFI_CONFIG_MODE": "正在設定網路...",
- "SCANNING_WIFI": "掃描 Wi-Fi...",
- "NEW_VERSION": "新版本 ",
- "OTA_UPGRADE": "OTA 升級",
- "UPGRADING": "正在升級系統...",
- "UPGRADE_FAILED": "升級失敗",
- "ACTIVATION": "啟用設備",
- "BATTERY_LOW": "電量不足",
- "BATTERY_CHARGING": "正在充電",
- "BATTERY_FULL": "電量已滿",
- "BATTERY_NEED_CHARGE": "電量低,請充電",
- "VOLUME": "音量 ",
- "MUTED": "已靜音",
- "MAX_VOLUME": "最大音量",
- "RTC_MODE_OFF": "AEC 關閉",
- "RTC_MODE_ON": "AEC 開啟",
- "DOWNLOAD_ASSETS_FAILED": "下載資源失敗",
- "LOADING_ASSETS": "載入資源...",
- "PLEASE_WAIT": "請稍候...",
- "FOUND_NEW_ASSETS": "發現新資源: %s",
- "HELLO_MY_FRIEND": "你好,我的朋友!"
- }
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/upgrade.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/upgrade.ogg
deleted file mode 100644
index 1feb87b6..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/upgrade.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/welcome.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/welcome.ogg
deleted file mode 100644
index b2eeb4fa..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/welcome.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/wificonfig.ogg b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/wificonfig.ogg
deleted file mode 100644
index 7ef88e25..00000000
Binary files a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/assets/locales/zh-TW/wificonfig.ogg and /dev/null differ
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/README.md b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/README.md
deleted file mode 100644
index 6159f9ad..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Audio Service Architecture
-
-The audio service is a core component responsible for managing all audio-related functionalities, including capturing audio from the microphone, processing it, encoding/decoding, and playing back audio through the speaker. It is designed to be modular and efficient, running its main operations in dedicated FreeRTOS tasks to ensure real-time performance.
-
-## Key Components
-
-- **`AudioService`**: The central orchestrator. It initializes and manages all other audio components, tasks, and data queues.
-- **`AudioCodec`**: A hardware abstraction layer (HAL) for the physical audio codec chip. It handles the raw I2S communication for audio input and output.
-- **`AudioProcessor`**: Performs real-time audio processing on the microphone input stream. This typically includes Acoustic Echo Cancellation (AEC), noise suppression, and Voice Activity Detection (VAD). `AfeAudioProcessor` is the default implementation, utilizing the ESP-ADF Audio Front-End.
-- **`WakeWord`**: Detects keywords (e.g., "你好,小智", "Hi, ESP") from the audio stream. It runs independently from the main audio processor until a wake word is detected.
-- **`OpusEncoderWrapper` / `OpusDecoderWrapper`**: Manages the encoding of PCM audio to the Opus format and decoding Opus packets back to PCM. Opus is used for its high compression and low latency, making it ideal for voice streaming.
-- **`OpusResampler`**: A utility to convert audio streams between different sample rates (e.g., resampling from the codec's native sample rate to the required 16kHz for processing).
-
-## Threading Model
-
-The service operates on three primary tasks to handle the different stages of the audio pipeline concurrently:
-
-1. **`AudioInputTask`**: Solely responsible for reading raw PCM data from the `AudioCodec`. It then feeds this data to either the `WakeWord` engine or the `AudioProcessor` based on the current state.
-2. **`AudioOutputTask`**: Responsible for playing audio. It retrieves decoded PCM data from the `audio_playback_queue_` and sends it to the `AudioCodec` to be played on the speaker.
-3. **`OpusCodecTask`**: A worker task that handles both encoding and decoding. It fetches raw audio from `audio_encode_queue_`, encodes it into Opus packets, and places them in the `audio_send_queue_`. Concurrently, it fetches Opus packets from `audio_decode_queue_`, decodes them into PCM, and places the result in the `audio_playback_queue_`.
-
-## Data Flow
-
-There are two primary data flows: audio input (uplink) and audio output (downlink).
-
-### 1. Audio Input (Uplink) Flow
-
-This flow captures audio from the microphone, processes it, encodes it, and prepares it for sending to a server.
-
-```mermaid
-graph TD
- subgraph Device
- Mic[("Microphone")] -->|I2S| Codec(AudioCodec)
-
- subgraph AudioInputTask
- Codec -->|Raw PCM| Read(ReadAudioData)
- Read -->|16kHz PCM| Processor(AudioProcessor)
- end
-
- subgraph OpusCodecTask
- Processor -->|Clean PCM| EncodeQueue(audio_encode_queue_)
- EncodeQueue --> Encoder(OpusEncoder)
- Encoder -->|Opus Packet| SendQueue(audio_send_queue_)
- end
-
- SendQueue --> |"PopPacketFromSendQueue()"| App(Application Layer)
- end
-
- App -->|Network| Server((Cloud Server))
-```
-
-- The `AudioInputTask` continuously reads raw PCM data from the `AudioCodec`.
-- This data is fed into an `AudioProcessor` for cleaning (AEC, VAD).
-- The processed PCM data is pushed into the `audio_encode_queue_`.
-- The `OpusCodecTask` picks up the PCM data, encodes it into Opus format, and pushes the resulting packet to the `audio_send_queue_`.
-- The application can then retrieve these Opus packets and send them over the network.
-
-### 2. Audio Output (Downlink) Flow
-
-This flow receives encoded audio data, decodes it, and plays it on the speaker.
-
-```mermaid
-graph TD
- Server((Cloud Server)) -->|Network| App(Application Layer)
-
- subgraph Device
- App -->|"PushPacketToDecodeQueue()"| DecodeQueue(audio_decode_queue_)
-
- subgraph OpusCodecTask
- DecodeQueue -->|Opus Packet| Decoder(OpusDecoder)
- Decoder -->|PCM| PlaybackQueue(audio_playback_queue_)
- end
-
- subgraph AudioOutputTask
- PlaybackQueue -->|PCM| Codec(AudioCodec)
- end
-
- Codec -->|I2S| Speaker[("Speaker")]
- end
-```
-
-- The application receives Opus packets from the network and pushes them into the `audio_decode_queue_`.
-- The `OpusCodecTask` retrieves these packets, decodes them back into PCM data, and pushes the data to the `audio_playback_queue_`.
-- The `AudioOutputTask` takes the PCM data from the queue and sends it to the `AudioCodec` for playback.
-
-## Power Management
-
-To conserve energy, the audio codec's input (ADC) and output (DAC) channels are automatically disabled after a period of inactivity (`AUDIO_POWER_TIMEOUT_MS`). A timer (`audio_power_timer_`) periodically checks for activity and manages the power state. The channels are automatically re-enabled when new audio needs to be captured or played.
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_codec.cc
deleted file mode 100644
index 055cd82a..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_codec.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "audio_codec.h"
-#include "board.h"
-#include "settings.h"
-
-#include
-#include
-#include
-
-#define TAG "AudioCodec"
-
-AudioCodec::AudioCodec() {
-}
-
-AudioCodec::~AudioCodec() {
-}
-
-void AudioCodec::OutputData(std::vector& data) {
- Write(data.data(), data.size());
-}
-
-bool AudioCodec::InputData(std::vector& data) {
- int samples = Read(data.data(), data.size());
- if (samples > 0) {
- return true;
- }
- return false;
-}
-
-void AudioCodec::Start() {
- Settings settings("audio", false);
- output_volume_ = settings.GetInt("output_volume", output_volume_);
- if (output_volume_ <= 0) {
- ESP_LOGW(TAG, "Output volume value (%d) is too small, setting to default (10)", output_volume_);
- output_volume_ = 10;
- }
-
- if (tx_handle_ != nullptr) {
- ESP_ERROR_CHECK(i2s_channel_enable(tx_handle_));
- }
-
- if (rx_handle_ != nullptr) {
- ESP_ERROR_CHECK(i2s_channel_enable(rx_handle_));
- }
-
- EnableInput(true);
- EnableOutput(true);
- ESP_LOGI(TAG, "Audio codec started");
-}
-
-void AudioCodec::SetOutputVolume(int volume) {
- output_volume_ = volume;
- ESP_LOGI(TAG, "Set output volume to %d", output_volume_);
-
- Settings settings("audio", true);
- settings.SetInt("output_volume", output_volume_);
-}
-
-void AudioCodec::SetInputGain(float gain) {
- input_gain_ = gain;
- ESP_LOGI(TAG, "Set input gain to %.1f", input_gain_);
-}
-
-void AudioCodec::EnableInput(bool enable) {
- if (enable == input_enabled_) {
- return;
- }
- input_enabled_ = enable;
- ESP_LOGI(TAG, "Set input enable to %s", enable ? "true" : "false");
-}
-
-void AudioCodec::EnableOutput(bool enable) {
- if (enable == output_enabled_) {
- return;
- }
- output_enabled_ = enable;
- ESP_LOGI(TAG, "Set output enable to %s", enable ? "true" : "false");
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_codec.h
deleted file mode 100644
index 819e6462..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_codec.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef _AUDIO_CODEC_H
-#define _AUDIO_CODEC_H
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include "board.h"
-
-#define AUDIO_CODEC_DMA_DESC_NUM 6
-#define AUDIO_CODEC_DMA_FRAME_NUM 240
-
-class AudioCodec {
-public:
- AudioCodec();
- virtual ~AudioCodec();
-
- virtual void SetOutputVolume(int volume);
- virtual void SetInputGain(float gain);
- virtual void EnableInput(bool enable);
- virtual void EnableOutput(bool enable);
-
- virtual void OutputData(std::vector& data);
- virtual bool InputData(std::vector& data);
- virtual void Start();
-
- inline bool duplex() const { return duplex_; }
- inline bool input_reference() const { return input_reference_; }
- inline int input_sample_rate() const { return input_sample_rate_; }
- inline int output_sample_rate() const { return output_sample_rate_; }
- inline int input_channels() const { return input_channels_; }
- inline int output_channels() const { return output_channels_; }
- inline int output_volume() const { return output_volume_; }
- inline float input_gain() const { return input_gain_; }
- inline bool input_enabled() const { return input_enabled_; }
- inline bool output_enabled() const { return output_enabled_; }
-
-protected:
- i2s_chan_handle_t tx_handle_ = nullptr;
- i2s_chan_handle_t rx_handle_ = nullptr;
-
- bool duplex_ = false;
- bool input_reference_ = false;
- bool input_enabled_ = false;
- bool output_enabled_ = false;
- int input_sample_rate_ = 0;
- int output_sample_rate_ = 0;
- int input_channels_ = 1;
- int output_channels_ = 1;
- int output_volume_ = 70;
- float input_gain_ = 0.0;
-
- virtual int Read(int16_t* dest, int samples) = 0;
- virtual int Write(const int16_t* data, int samples) = 0;
-};
-
-#endif // _AUDIO_CODEC_H
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_processor.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_processor.h
deleted file mode 100644
index 543c7ae0..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_processor.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef AUDIO_PROCESSOR_H
-#define AUDIO_PROCESSOR_H
-
-#include
-#include
-#include
-
-#include
-#include "audio_codec.h"
-
-class AudioProcessor {
-public:
- virtual ~AudioProcessor() = default;
-
- virtual void Initialize(AudioCodec* codec, int frame_duration_ms, srmodel_list_t* models_list) = 0;
- virtual void Feed(std::vector&& data) = 0;
- virtual void Start() = 0;
- virtual void Stop() = 0;
- virtual bool IsRunning() = 0;
- virtual void OnOutput(std::function&& data)> callback) = 0;
- virtual void OnVadStateChange(std::function callback) = 0;
- virtual size_t GetFeedSize() = 0;
- virtual void EnableDeviceAec(bool enable) = 0;
-};
-
-#endif
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_service.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_service.cc
deleted file mode 100644
index c5d3ed77..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_service.cc
+++ /dev/null
@@ -1,686 +0,0 @@
-#include "audio_service.h"
-#include
-#include
-
-#if CONFIG_USE_AUDIO_PROCESSOR
-#include "processors/afe_audio_processor.h"
-#else
-#include "processors/no_audio_processor.h"
-#endif
-
-#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4
-#include "wake_words/afe_wake_word.h"
-#include "wake_words/custom_wake_word.h"
-#else
-#include "wake_words/esp_wake_word.h"
-#endif
-
-#define TAG "AudioService"
-
-
-AudioService::AudioService() {
- event_group_ = xEventGroupCreate();
-}
-
-AudioService::~AudioService() {
- if (event_group_ != nullptr) {
- vEventGroupDelete(event_group_);
- }
-}
-
-
-void AudioService::Initialize(AudioCodec* codec) {
- codec_ = codec;
- codec_->Start();
-
- /* Setup the audio codec */
- opus_decoder_ = std::make_unique(codec->output_sample_rate(), 1, OPUS_FRAME_DURATION_MS);
- opus_encoder_ = std::make_unique(16000, 1, OPUS_FRAME_DURATION_MS);
- opus_encoder_->SetComplexity(0);
-
- if (codec->input_sample_rate() != 16000) {
- input_resampler_.Configure(codec->input_sample_rate(), 16000);
- reference_resampler_.Configure(codec->input_sample_rate(), 16000);
- }
-
-#if CONFIG_USE_AUDIO_PROCESSOR
- audio_processor_ = std::make_unique();
-#else
- audio_processor_ = std::make_unique();
-#endif
-
- audio_processor_->OnOutput([this](std::vector&& data) {
- PushTaskToEncodeQueue(kAudioTaskTypeEncodeToSendQueue, std::move(data));
- });
-
- audio_processor_->OnVadStateChange([this](bool speaking) {
- voice_detected_ = speaking;
- if (callbacks_.on_vad_change) {
- callbacks_.on_vad_change(speaking);
- }
- });
-
- esp_timer_create_args_t audio_power_timer_args = {
- .callback = [](void* arg) {
- AudioService* audio_service = (AudioService*)arg;
- audio_service->CheckAndUpdateAudioPowerState();
- },
- .arg = this,
- .dispatch_method = ESP_TIMER_TASK,
- .name = "audio_power_timer",
- .skip_unhandled_events = true,
- };
- esp_timer_create(&audio_power_timer_args, &audio_power_timer_);
-}
-
-void AudioService::Start() {
- service_stopped_ = false;
- xEventGroupClearBits(event_group_, AS_EVENT_AUDIO_TESTING_RUNNING | AS_EVENT_WAKE_WORD_RUNNING | AS_EVENT_AUDIO_PROCESSOR_RUNNING);
-
- esp_timer_start_periodic(audio_power_timer_, 1000000);
-
-#if CONFIG_USE_AUDIO_PROCESSOR
- /* Start the audio input task */
- xTaskCreatePinnedToCore([](void* arg) {
- AudioService* audio_service = (AudioService*)arg;
- audio_service->AudioInputTask();
- vTaskDelete(NULL);
- }, "audio_input", 2048 * 3, this, 8, &audio_input_task_handle_, 0);
-
- /* Start the audio output task */
- xTaskCreate([](void* arg) {
- AudioService* audio_service = (AudioService*)arg;
- audio_service->AudioOutputTask();
- vTaskDelete(NULL);
- }, "audio_output", 2048 * 2, this, 4, &audio_output_task_handle_);
-#else
- /* Start the audio input task */
- xTaskCreate([](void* arg) {
- AudioService* audio_service = (AudioService*)arg;
- audio_service->AudioInputTask();
- vTaskDelete(NULL);
- }, "audio_input", 2048 * 2, this, 8, &audio_input_task_handle_);
-
- /* Start the audio output task */
- xTaskCreate([](void* arg) {
- AudioService* audio_service = (AudioService*)arg;
- audio_service->AudioOutputTask();
- vTaskDelete(NULL);
- }, "audio_output", 2048, this, 4, &audio_output_task_handle_);
-#endif
-
- /* Start the opus codec task */
- xTaskCreate([](void* arg) {
- AudioService* audio_service = (AudioService*)arg;
- audio_service->OpusCodecTask();
- vTaskDelete(NULL);
- }, "opus_codec", 2048 * 13, this, 2, &opus_codec_task_handle_);
-}
-
-void AudioService::Stop() {
- esp_timer_stop(audio_power_timer_);
- service_stopped_ = true;
- xEventGroupSetBits(event_group_, AS_EVENT_AUDIO_TESTING_RUNNING |
- AS_EVENT_WAKE_WORD_RUNNING |
- AS_EVENT_AUDIO_PROCESSOR_RUNNING);
-
- std::lock_guard lock(audio_queue_mutex_);
- audio_encode_queue_.clear();
- audio_decode_queue_.clear();
- audio_playback_queue_.clear();
- audio_testing_queue_.clear();
- audio_queue_cv_.notify_all();
-}
-
-bool AudioService::ReadAudioData(std::vector& data, int sample_rate, int samples) {
- if (!codec_->input_enabled()) {
- esp_timer_stop(audio_power_timer_);
- esp_timer_start_periodic(audio_power_timer_, AUDIO_POWER_CHECK_INTERVAL_MS * 1000);
- codec_->EnableInput(true);
- }
-
- if (codec_->input_sample_rate() != sample_rate) {
- data.resize(samples * codec_->input_sample_rate() / sample_rate * codec_->input_channels());
- if (!codec_->InputData(data)) {
- return false;
- }
- if (codec_->input_channels() == 2) {
- auto mic_channel = std::vector(data.size() / 2);
- auto reference_channel = std::vector(data.size() / 2);
- for (size_t i = 0, j = 0; i < mic_channel.size(); ++i, j += 2) {
- mic_channel[i] = data[j];
- reference_channel[i] = data[j + 1];
- }
- auto resampled_mic = std::vector(input_resampler_.GetOutputSamples(mic_channel.size()));
- auto resampled_reference = std::vector(reference_resampler_.GetOutputSamples(reference_channel.size()));
- input_resampler_.Process(mic_channel.data(), mic_channel.size(), resampled_mic.data());
- reference_resampler_.Process(reference_channel.data(), reference_channel.size(), resampled_reference.data());
- data.resize(resampled_mic.size() + resampled_reference.size());
- for (size_t i = 0, j = 0; i < resampled_mic.size(); ++i, j += 2) {
- data[j] = resampled_mic[i];
- data[j + 1] = resampled_reference[i];
- }
- } else {
- auto resampled = std::vector(input_resampler_.GetOutputSamples(data.size()));
- input_resampler_.Process(data.data(), data.size(), resampled.data());
- data = std::move(resampled);
- }
- } else {
- data.resize(samples * codec_->input_channels());
- if (!codec_->InputData(data)) {
- return false;
- }
- }
-
- /* Update the last input time */
- last_input_time_ = std::chrono::steady_clock::now();
- debug_statistics_.input_count++;
-
-#if CONFIG_USE_AUDIO_DEBUGGER
- // 音频调试:发送原始音频数据
- if (audio_debugger_ == nullptr) {
- audio_debugger_ = std::make_unique();
- }
- audio_debugger_->Feed(data);
-#endif
-
- return true;
-}
-
-void AudioService::AudioInputTask() {
- while (true) {
- EventBits_t bits = xEventGroupWaitBits(event_group_, AS_EVENT_AUDIO_TESTING_RUNNING |
- AS_EVENT_WAKE_WORD_RUNNING | AS_EVENT_AUDIO_PROCESSOR_RUNNING,
- pdFALSE, pdFALSE, portMAX_DELAY);
-
- if (service_stopped_) {
- break;
- }
- if (audio_input_need_warmup_) {
- audio_input_need_warmup_ = false;
- vTaskDelay(pdMS_TO_TICKS(120));
- continue;
- }
-
- /* Used for audio testing in NetworkConfiguring mode by clicking the BOOT button */
- if (bits & AS_EVENT_AUDIO_TESTING_RUNNING) {
- if (audio_testing_queue_.size() >= AUDIO_TESTING_MAX_DURATION_MS / OPUS_FRAME_DURATION_MS) {
- ESP_LOGW(TAG, "Audio testing queue is full, stopping audio testing");
- EnableAudioTesting(false);
- continue;
- }
- std::vector data;
- int samples = OPUS_FRAME_DURATION_MS * 16000 / 1000;
- if (ReadAudioData(data, 16000, samples)) {
- // If input channels is 2, we need to fetch the left channel data
- if (codec_->input_channels() == 2) {
- auto mono_data = std::vector(data.size() / 2);
- for (size_t i = 0, j = 0; i < mono_data.size(); ++i, j += 2) {
- mono_data[i] = data[j];
- }
- data = std::move(mono_data);
- }
- PushTaskToEncodeQueue(kAudioTaskTypeEncodeToTestingQueue, std::move(data));
- continue;
- }
- }
-
- /* Feed the wake word */
- if (bits & AS_EVENT_WAKE_WORD_RUNNING) {
- std::vector data;
- int samples = wake_word_->GetFeedSize();
- if (samples > 0) {
- if (ReadAudioData(data, 16000, samples)) {
- wake_word_->Feed(data);
- continue;
- }
- }
- }
-
- /* Feed the audio processor */
- if (bits & AS_EVENT_AUDIO_PROCESSOR_RUNNING) {
- std::vector data;
- int samples = audio_processor_->GetFeedSize();
- if (samples > 0) {
- if (ReadAudioData(data, 16000, samples)) {
- audio_processor_->Feed(std::move(data));
- continue;
- }
- }
- }
-
- ESP_LOGE(TAG, "Should not be here, bits: %lx", bits);
- break;
- }
-
- ESP_LOGW(TAG, "Audio input task stopped");
-}
-
-void AudioService::AudioOutputTask() {
- while (true) {
- std::unique_lock lock(audio_queue_mutex_);
- audio_queue_cv_.wait(lock, [this]() { return !audio_playback_queue_.empty() || service_stopped_; });
- if (service_stopped_) {
- break;
- }
-
- auto task = std::move(audio_playback_queue_.front());
- audio_playback_queue_.pop_front();
- audio_queue_cv_.notify_all();
- lock.unlock();
-
- if (!codec_->output_enabled()) {
- esp_timer_stop(audio_power_timer_);
- esp_timer_start_periodic(audio_power_timer_, AUDIO_POWER_CHECK_INTERVAL_MS * 1000);
- codec_->EnableOutput(true);
- }
- codec_->OutputData(task->pcm);
-
- /* Update the last output time */
- last_output_time_ = std::chrono::steady_clock::now();
- debug_statistics_.playback_count++;
-
-#if CONFIG_USE_SERVER_AEC
- /* Record the timestamp for server AEC */
- if (task->timestamp > 0) {
- lock.lock();
- timestamp_queue_.push_back(task->timestamp);
- }
-#endif
- }
-
- ESP_LOGW(TAG, "Audio output task stopped");
-}
-
-void AudioService::OpusCodecTask() {
- while (true) {
- std::unique_lock lock(audio_queue_mutex_);
- audio_queue_cv_.wait(lock, [this]() {
- return service_stopped_ ||
- (!audio_encode_queue_.empty() && audio_send_queue_.size() < MAX_SEND_PACKETS_IN_QUEUE) ||
- (!audio_decode_queue_.empty() && audio_playback_queue_.size() < MAX_PLAYBACK_TASKS_IN_QUEUE);
- });
- if (service_stopped_) {
- break;
- }
-
- /* Decode the audio from decode queue */
- if (!audio_decode_queue_.empty() && audio_playback_queue_.size() < MAX_PLAYBACK_TASKS_IN_QUEUE) {
- auto packet = std::move(audio_decode_queue_.front());
- audio_decode_queue_.pop_front();
- audio_queue_cv_.notify_all();
- lock.unlock();
-
- auto task = std::make_unique();
- task->type = kAudioTaskTypeDecodeToPlaybackQueue;
- task->timestamp = packet->timestamp;
-
- SetDecodeSampleRate(packet->sample_rate, packet->frame_duration);
- if (opus_decoder_->Decode(std::move(packet->payload), task->pcm)) {
- // Resample if the sample rate is different
- if (opus_decoder_->sample_rate() != codec_->output_sample_rate()) {
- int target_size = output_resampler_.GetOutputSamples(task->pcm.size());
- std::vector resampled(target_size);
- output_resampler_.Process(task->pcm.data(), task->pcm.size(), resampled.data());
- task->pcm = std::move(resampled);
- }
-
- lock.lock();
- audio_playback_queue_.push_back(std::move(task));
- audio_queue_cv_.notify_all();
- } else {
- ESP_LOGE(TAG, "Failed to decode audio");
- lock.lock();
- }
- debug_statistics_.decode_count++;
- }
-
- /* Encode the audio to send queue */
- if (!audio_encode_queue_.empty() && audio_send_queue_.size() < MAX_SEND_PACKETS_IN_QUEUE) {
- auto task = std::move(audio_encode_queue_.front());
- audio_encode_queue_.pop_front();
- audio_queue_cv_.notify_all();
- lock.unlock();
-
- auto packet = std::make_unique();
- packet->frame_duration = OPUS_FRAME_DURATION_MS;
- packet->sample_rate = 16000;
- packet->timestamp = task->timestamp;
- if (!opus_encoder_->Encode(std::move(task->pcm), packet->payload)) {
- ESP_LOGE(TAG, "Failed to encode audio");
- continue;
- }
-
- if (task->type == kAudioTaskTypeEncodeToSendQueue) {
- {
- std::lock_guard lock(audio_queue_mutex_);
- audio_send_queue_.push_back(std::move(packet));
- }
- if (callbacks_.on_send_queue_available) {
- callbacks_.on_send_queue_available();
- }
- } else if (task->type == kAudioTaskTypeEncodeToTestingQueue) {
- std::lock_guard lock(audio_queue_mutex_);
- audio_testing_queue_.push_back(std::move(packet));
- }
- debug_statistics_.encode_count++;
- lock.lock();
- }
- }
-
- ESP_LOGW(TAG, "Opus codec task stopped");
-}
-
-void AudioService::SetDecodeSampleRate(int sample_rate, int frame_duration) {
- if (opus_decoder_->sample_rate() == sample_rate && opus_decoder_->duration_ms() == frame_duration) {
- return;
- }
-
- opus_decoder_.reset();
- opus_decoder_ = std::make_unique(sample_rate, 1, frame_duration);
-
- auto codec = Board::GetInstance().GetAudioCodec();
- if (opus_decoder_->sample_rate() != codec->output_sample_rate()) {
- ESP_LOGI(TAG, "Resampling audio from %d to %d", opus_decoder_->sample_rate(), codec->output_sample_rate());
- output_resampler_.Configure(opus_decoder_->sample_rate(), codec->output_sample_rate());
- }
-}
-
-void AudioService::PushTaskToEncodeQueue(AudioTaskType type, std::vector&& pcm) {
- auto task = std::make_unique();
- task->type = type;
- task->pcm = std::move(pcm);
-
- /* Push the task to the encode queue */
- std::unique_lock lock(audio_queue_mutex_);
-
- /* If the task is to send queue, we need to set the timestamp */
- if (type == kAudioTaskTypeEncodeToSendQueue && !timestamp_queue_.empty()) {
- if (timestamp_queue_.size() <= MAX_TIMESTAMPS_IN_QUEUE) {
- task->timestamp = timestamp_queue_.front();
- } else {
- ESP_LOGW(TAG, "Timestamp queue (%u) is full, dropping timestamp", timestamp_queue_.size());
- }
- timestamp_queue_.pop_front();
- }
-
- audio_queue_cv_.wait(lock, [this]() { return audio_encode_queue_.size() < MAX_ENCODE_TASKS_IN_QUEUE; });
- audio_encode_queue_.push_back(std::move(task));
- audio_queue_cv_.notify_all();
-}
-
-bool AudioService::PushPacketToDecodeQueue(std::unique_ptr packet, bool wait) {
- std::unique_lock lock(audio_queue_mutex_);
- if (audio_decode_queue_.size() >= MAX_DECODE_PACKETS_IN_QUEUE) {
- if (wait) {
- audio_queue_cv_.wait(lock, [this]() { return audio_decode_queue_.size() < MAX_DECODE_PACKETS_IN_QUEUE; });
- } else {
- return false;
- }
- }
- audio_decode_queue_.push_back(std::move(packet));
- audio_queue_cv_.notify_all();
- return true;
-}
-
-std::unique_ptr AudioService::PopPacketFromSendQueue() {
- std::lock_guard lock(audio_queue_mutex_);
- if (audio_send_queue_.empty()) {
- return nullptr;
- }
- auto packet = std::move(audio_send_queue_.front());
- audio_send_queue_.pop_front();
- audio_queue_cv_.notify_all();
- return packet;
-}
-
-void AudioService::EncodeWakeWord() {
- if (wake_word_) {
- wake_word_->EncodeWakeWordData();
- }
-}
-
-const std::string& AudioService::GetLastWakeWord() const {
- return wake_word_->GetLastDetectedWakeWord();
-}
-
-std::unique_ptr AudioService::PopWakeWordPacket() {
- auto packet = std::make_unique();
- if (wake_word_->GetWakeWordOpus(packet->payload)) {
- return packet;
- }
- return nullptr;
-}
-
-void AudioService::EnableWakeWordDetection(bool enable) {
- if (!wake_word_) {
- return;
- }
-
- ESP_LOGD(TAG, "%s wake word detection", enable ? "Enabling" : "Disabling");
- if (enable) {
- if (!wake_word_initialized_) {
- if (!wake_word_->Initialize(codec_, models_list_)) {
- ESP_LOGE(TAG, "Failed to initialize wake word");
- return;
- }
- wake_word_initialized_ = true;
- }
- wake_word_->Start();
- xEventGroupSetBits(event_group_, AS_EVENT_WAKE_WORD_RUNNING);
- } else {
- wake_word_->Stop();
- xEventGroupClearBits(event_group_, AS_EVENT_WAKE_WORD_RUNNING);
- }
-}
-
-void AudioService::EnableVoiceProcessing(bool enable) {
- ESP_LOGD(TAG, "%s voice processing", enable ? "Enabling" : "Disabling");
- if (enable) {
- if (!audio_processor_initialized_) {
- audio_processor_->Initialize(codec_, OPUS_FRAME_DURATION_MS, models_list_);
- audio_processor_initialized_ = true;
- }
-
- /* We should make sure no audio is playing */
- ResetDecoder();
- audio_input_need_warmup_ = true;
- audio_processor_->Start();
- xEventGroupSetBits(event_group_, AS_EVENT_AUDIO_PROCESSOR_RUNNING);
- } else {
- audio_processor_->Stop();
- xEventGroupClearBits(event_group_, AS_EVENT_AUDIO_PROCESSOR_RUNNING);
- }
-}
-
-void AudioService::EnableAudioTesting(bool enable) {
- ESP_LOGI(TAG, "%s audio testing", enable ? "Enabling" : "Disabling");
- if (enable) {
- xEventGroupSetBits(event_group_, AS_EVENT_AUDIO_TESTING_RUNNING);
- } else {
- xEventGroupClearBits(event_group_, AS_EVENT_AUDIO_TESTING_RUNNING);
- /* Copy audio_testing_queue_ to audio_decode_queue_ */
- std::lock_guard lock(audio_queue_mutex_);
- audio_decode_queue_ = std::move(audio_testing_queue_);
- audio_queue_cv_.notify_all();
- }
-}
-
-void AudioService::EnableDeviceAec(bool enable) {
- ESP_LOGI(TAG, "%s device AEC", enable ? "Enabling" : "Disabling");
- if (!audio_processor_initialized_) {
- audio_processor_->Initialize(codec_, OPUS_FRAME_DURATION_MS, models_list_);
- audio_processor_initialized_ = true;
- }
-
- audio_processor_->EnableDeviceAec(enable);
-}
-
-void AudioService::SetCallbacks(AudioServiceCallbacks& callbacks) {
- callbacks_ = callbacks;
-}
-
-void AudioService::PlaySound(const std::string_view& ogg) {
- if (!codec_->output_enabled()) {
- esp_timer_stop(audio_power_timer_);
- esp_timer_start_periodic(audio_power_timer_, AUDIO_POWER_CHECK_INTERVAL_MS * 1000);
- codec_->EnableOutput(true);
- }
-
- const uint8_t* buf = reinterpret_cast(ogg.data());
- size_t size = ogg.size();
- size_t offset = 0;
-
- auto find_page = [&](size_t start)->size_t {
- for (size_t i = start; i + 4 <= size; ++i) {
- if (buf[i] == 'O' && buf[i+1] == 'g' && buf[i+2] == 'g' && buf[i+3] == 'S') return i;
- }
- return static_cast(-1);
- };
-
- bool seen_head = false;
- bool seen_tags = false;
- int sample_rate = 16000; // 默认值
-
- while (true) {
- size_t pos = find_page(offset);
- if (pos == static_cast(-1)) break;
- offset = pos;
- if (offset + 27 > size) break;
-
- const uint8_t* page = buf + offset;
- uint8_t page_segments = page[26];
- size_t seg_table_off = offset + 27;
- if (seg_table_off + page_segments > size) break;
-
- size_t body_size = 0;
- for (size_t i = 0; i < page_segments; ++i) body_size += page[27 + i];
-
- size_t body_off = seg_table_off + page_segments;
- if (body_off + body_size > size) break;
-
- // Parse packets using lacing
- size_t cur = body_off;
- size_t seg_idx = 0;
- while (seg_idx < page_segments) {
- size_t pkt_len = 0;
- size_t pkt_start = cur;
- bool continued = false;
- do {
- uint8_t l = page[27 + seg_idx++];
- pkt_len += l;
- cur += l;
- continued = (l == 255);
- } while (continued && seg_idx < page_segments);
-
- if (pkt_len == 0) continue;
- const uint8_t* pkt_ptr = buf + pkt_start;
-
- if (!seen_head) {
- // 解析OpusHead包
- if (pkt_len >= 19 && std::memcmp(pkt_ptr, "OpusHead", 8) == 0) {
- seen_head = true;
-
- // OpusHead结构:[0-7] "OpusHead", [8] version, [9] channel_count, [10-11] pre_skip
- // [12-15] input_sample_rate, [16-17] output_gain, [18] mapping_family
- if (pkt_len >= 12) {
- uint8_t version = pkt_ptr[8];
- uint8_t channel_count = pkt_ptr[9];
-
- if (pkt_len >= 16) {
- // 读取输入采样率 (little-endian)
- sample_rate = pkt_ptr[12] | (pkt_ptr[13] << 8) |
- (pkt_ptr[14] << 16) | (pkt_ptr[15] << 24);
- ESP_LOGI(TAG, "OpusHead: version=%d, channels=%d, sample_rate=%d",
- version, channel_count, sample_rate);
- }
- }
- }
- continue;
- }
- if (!seen_tags) {
- // Expect OpusTags in second packet
- if (pkt_len >= 8 && std::memcmp(pkt_ptr, "OpusTags", 8) == 0) {
- seen_tags = true;
- }
- continue;
- }
-
- // Audio packet (Opus)
- auto packet = std::make_unique();
- packet->sample_rate = sample_rate;
- packet->frame_duration = 60;
- packet->payload.resize(pkt_len);
- std::memcpy(packet->payload.data(), pkt_ptr, pkt_len);
- PushPacketToDecodeQueue(std::move(packet), true);
- }
-
- offset = body_off + body_size;
- }
-}
-
-bool AudioService::IsIdle() {
- std::lock_guard lock(audio_queue_mutex_);
- return audio_encode_queue_.empty() && audio_decode_queue_.empty() && audio_playback_queue_.empty() && audio_testing_queue_.empty();
-}
-
-void AudioService::ResetDecoder() {
- std::lock_guard lock(audio_queue_mutex_);
- opus_decoder_->ResetState();
- timestamp_queue_.clear();
- audio_decode_queue_.clear();
- audio_playback_queue_.clear();
- audio_testing_queue_.clear();
- audio_queue_cv_.notify_all();
-}
-
-void AudioService::CheckAndUpdateAudioPowerState() {
- auto now = std::chrono::steady_clock::now();
- auto input_elapsed = std::chrono::duration_cast(now - last_input_time_).count();
- auto output_elapsed = std::chrono::duration_cast(now - last_output_time_).count();
- if (input_elapsed > AUDIO_POWER_TIMEOUT_MS && codec_->input_enabled()) {
- codec_->EnableInput(false);
- }
- if (output_elapsed > AUDIO_POWER_TIMEOUT_MS && codec_->output_enabled()) {
- codec_->EnableOutput(false);
- }
- if (!codec_->input_enabled() && !codec_->output_enabled()) {
- esp_timer_stop(audio_power_timer_);
- }
-}
-
-void AudioService::SetModelsList(srmodel_list_t* models_list) {
- models_list_ = models_list;
-
-#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4
- if (esp_srmodel_filter(models_list_, ESP_MN_PREFIX, NULL) != nullptr) {
- wake_word_ = std::make_unique();
- } else if (esp_srmodel_filter(models_list_, ESP_WN_PREFIX, NULL) != nullptr) {
- wake_word_ = std::make_unique();
- } else {
- wake_word_ = nullptr;
- }
-#else
- if (esp_srmodel_filter(models_list_, ESP_WN_PREFIX, NULL) != nullptr) {
- wake_word_ = std::make_unique();
- } else {
- wake_word_ = nullptr;
- }
-#endif
-
- if (wake_word_) {
- wake_word_->OnWakeWordDetected([this](const std::string& wake_word) {
- if (callbacks_.on_wake_word_detected) {
- callbacks_.on_wake_word_detected(wake_word);
- }
- });
- }
-}
-
-bool AudioService::IsAfeWakeWord() {
-#if CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32P4
- return wake_word_ != nullptr && dynamic_cast(wake_word_.get()) != nullptr;
-#else
- return false;
-#endif
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_service.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_service.h
deleted file mode 100644
index c7808068..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/audio_service.h
+++ /dev/null
@@ -1,161 +0,0 @@
-#ifndef AUDIO_SERVICE_H
-#define AUDIO_SERVICE_H
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include "audio_codec.h"
-#include "audio_processor.h"
-#include "processors/audio_debugger.h"
-#include "wake_word.h"
-#include "protocol.h"
-
-
-/*
- * There are two types of audio data flow:
- * 1. (MIC) -> [Processors] -> {Encode Queue} -> [Opus Encoder] -> {Send Queue} -> (Server)
- * 2. (Server) -> {Decode Queue} -> [Opus Decoder] -> {Playback Queue} -> (Speaker)
- *
- * We use one task for MIC / Speaker / Processors, and one task for Opus Encoder / Opus Decoder.
- *
- * Decode Queue and Send Queue are the main queues, because Opus packets are quite smaller than PCM packets.
- *
- */
-
-#define OPUS_FRAME_DURATION_MS 60
-#define MAX_ENCODE_TASKS_IN_QUEUE 2
-#define MAX_PLAYBACK_TASKS_IN_QUEUE 2
-#define MAX_DECODE_PACKETS_IN_QUEUE (2400 / OPUS_FRAME_DURATION_MS)
-#define MAX_SEND_PACKETS_IN_QUEUE (2400 / OPUS_FRAME_DURATION_MS)
-#define AUDIO_TESTING_MAX_DURATION_MS 10000
-#define MAX_TIMESTAMPS_IN_QUEUE 3
-
-#define AUDIO_POWER_TIMEOUT_MS 15000
-#define AUDIO_POWER_CHECK_INTERVAL_MS 1000
-
-
-#define AS_EVENT_AUDIO_TESTING_RUNNING (1 << 0)
-#define AS_EVENT_WAKE_WORD_RUNNING (1 << 1)
-#define AS_EVENT_AUDIO_PROCESSOR_RUNNING (1 << 2)
-#define AS_EVENT_PLAYBACK_NOT_EMPTY (1 << 3)
-
-struct AudioServiceCallbacks {
- std::function on_send_queue_available;
- std::function on_wake_word_detected;
- std::function on_vad_change;
- std::function on_audio_testing_queue_full;
-};
-
-
-enum AudioTaskType {
- kAudioTaskTypeEncodeToSendQueue,
- kAudioTaskTypeEncodeToTestingQueue,
- kAudioTaskTypeDecodeToPlaybackQueue,
-};
-
-struct AudioTask {
- AudioTaskType type;
- std::vector pcm;
- uint32_t timestamp;
-};
-
-struct DebugStatistics {
- uint32_t input_count = 0;
- uint32_t decode_count = 0;
- uint32_t encode_count = 0;
- uint32_t playback_count = 0;
-};
-
-class AudioService {
-public:
- AudioService();
- ~AudioService();
-
- void Initialize(AudioCodec* codec);
- void Start();
- void Stop();
- void EncodeWakeWord();
- std::unique_ptr PopWakeWordPacket();
- const std::string& GetLastWakeWord() const;
- bool IsVoiceDetected() const { return voice_detected_; }
- bool IsIdle();
- bool IsWakeWordRunning() const { return xEventGroupGetBits(event_group_) & AS_EVENT_WAKE_WORD_RUNNING; }
- bool IsAudioProcessorRunning() const { return xEventGroupGetBits(event_group_) & AS_EVENT_AUDIO_PROCESSOR_RUNNING; }
- bool IsAfeWakeWord();
-
- void EnableWakeWordDetection(bool enable);
- void EnableVoiceProcessing(bool enable);
- void EnableAudioTesting(bool enable);
- void EnableDeviceAec(bool enable);
-
- void SetCallbacks(AudioServiceCallbacks& callbacks);
-
- bool PushPacketToDecodeQueue(std::unique_ptr packet, bool wait = false);
- std::unique_ptr PopPacketFromSendQueue();
- void PlaySound(const std::string_view& sound);
- bool ReadAudioData(std::vector& data, int sample_rate, int samples);
- void ResetDecoder();
- void SetModelsList(srmodel_list_t* models_list);
-
-private:
- AudioCodec* codec_ = nullptr;
- AudioServiceCallbacks callbacks_;
- std::unique_ptr audio_processor_;
- std::unique_ptr wake_word_;
- std::unique_ptr audio_debugger_;
- std::unique_ptr opus_encoder_;
- std::unique_ptr opus_decoder_;
- OpusResampler input_resampler_;
- OpusResampler reference_resampler_;
- OpusResampler output_resampler_;
- DebugStatistics debug_statistics_;
- srmodel_list_t* models_list_ = nullptr;
-
- EventGroupHandle_t event_group_;
-
- // Audio encode / decode
- TaskHandle_t audio_input_task_handle_ = nullptr;
- TaskHandle_t audio_output_task_handle_ = nullptr;
- TaskHandle_t opus_codec_task_handle_ = nullptr;
- std::mutex audio_queue_mutex_;
- std::condition_variable audio_queue_cv_;
- std::deque> audio_decode_queue_;
- std::deque> audio_send_queue_;
- std::deque> audio_testing_queue_;
- std::deque> audio_encode_queue_;
- std::deque> audio_playback_queue_;
- // For server AEC
- std::deque timestamp_queue_;
-
- bool wake_word_initialized_ = false;
- bool audio_processor_initialized_ = false;
- bool voice_detected_ = false;
- bool service_stopped_ = true;
- bool audio_input_need_warmup_ = false;
-
- esp_timer_handle_t audio_power_timer_ = nullptr;
- std::chrono::steady_clock::time_point last_input_time_;
- std::chrono::steady_clock::time_point last_output_time_;
-
- void AudioInputTask();
- void AudioOutputTask();
- void OpusCodecTask();
- void PushTaskToEncodeQueue(AudioTaskType type, std::vector&& pcm);
- void SetDecodeSampleRate(int sample_rate, int frame_duration);
- void CheckAndUpdateAudioPowerState();
-};
-
-#endif
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/box_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/box_audio_codec.cc
deleted file mode 100644
index a3db34fa..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/box_audio_codec.cc
+++ /dev/null
@@ -1,245 +0,0 @@
-#include "box_audio_codec.h"
-
-#include
-#include
-#include
-
-#define TAG "BoxAudioCodec"
-
-BoxAudioCodec::BoxAudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8311_addr, uint8_t es7210_addr, bool input_reference) {
- duplex_ = true; // 是否双工
- input_reference_ = input_reference; // 是否使用参考输入,实现回声消除
- input_channels_ = input_reference_ ? 2 : 1; // 输入通道数
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
- input_gain_ = 30;
-
- CreateDuplexChannels(mclk, bclk, ws, dout, din);
-
- // Do initialize of related interface: data_if, ctrl_if and gpio_if
- audio_codec_i2s_cfg_t i2s_cfg = {
- .port = I2S_NUM_0,
- .rx_handle = rx_handle_,
- .tx_handle = tx_handle_,
- };
- data_if_ = audio_codec_new_i2s_data(&i2s_cfg);
- assert(data_if_ != NULL);
-
- // Output
- audio_codec_i2c_cfg_t i2c_cfg = {
- .port = (i2c_port_t)1,
- .addr = es8311_addr,
- .bus_handle = i2c_master_handle,
- };
- out_ctrl_if_ = audio_codec_new_i2c_ctrl(&i2c_cfg);
- assert(out_ctrl_if_ != NULL);
-
- gpio_if_ = audio_codec_new_gpio();
- assert(gpio_if_ != NULL);
-
- es8311_codec_cfg_t es8311_cfg = {};
- es8311_cfg.ctrl_if = out_ctrl_if_;
- es8311_cfg.gpio_if = gpio_if_;
- es8311_cfg.codec_mode = ESP_CODEC_DEV_WORK_MODE_DAC;
- es8311_cfg.pa_pin = pa_pin;
- es8311_cfg.use_mclk = true;
- es8311_cfg.hw_gain.pa_voltage = 5.0;
- es8311_cfg.hw_gain.codec_dac_voltage = 3.3;
- out_codec_if_ = es8311_codec_new(&es8311_cfg);
- assert(out_codec_if_ != NULL);
-
- esp_codec_dev_cfg_t dev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_OUT,
- .codec_if = out_codec_if_,
- .data_if = data_if_,
- };
- output_dev_ = esp_codec_dev_new(&dev_cfg);
- assert(output_dev_ != NULL);
-
- // Input
- i2c_cfg.addr = es7210_addr;
- in_ctrl_if_ = audio_codec_new_i2c_ctrl(&i2c_cfg);
- assert(in_ctrl_if_ != NULL);
-
- es7210_codec_cfg_t es7210_cfg = {};
- es7210_cfg.ctrl_if = in_ctrl_if_;
- es7210_cfg.mic_selected = ES7210_SEL_MIC1 | ES7210_SEL_MIC2 | ES7210_SEL_MIC3 | ES7210_SEL_MIC4;
- in_codec_if_ = es7210_codec_new(&es7210_cfg);
- assert(in_codec_if_ != NULL);
-
- dev_cfg.dev_type = ESP_CODEC_DEV_TYPE_IN;
- dev_cfg.codec_if = in_codec_if_;
- input_dev_ = esp_codec_dev_new(&dev_cfg);
- assert(input_dev_ != NULL);
-
- ESP_LOGI(TAG, "BoxAudioDevice initialized");
-}
-
-BoxAudioCodec::~BoxAudioCodec() {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- esp_codec_dev_delete(output_dev_);
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- esp_codec_dev_delete(input_dev_);
-
- audio_codec_delete_codec_if(in_codec_if_);
- audio_codec_delete_ctrl_if(in_ctrl_if_);
- audio_codec_delete_codec_if(out_codec_if_);
- audio_codec_delete_ctrl_if(out_ctrl_if_);
- audio_codec_delete_gpio_if(gpio_if_);
- audio_codec_delete_data_if(data_if_);
-}
-
-void BoxAudioCodec::CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din) {
- assert(input_sample_rate_ == output_sample_rate_);
-
- i2s_chan_config_t chan_cfg = {
- .id = I2S_NUM_0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM,
- .dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, &rx_handle_));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .ext_clk_freq_hz = 0,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_STEREO,
- .slot_mask = I2S_STD_SLOT_BOTH,
- .ws_width = I2S_DATA_BIT_WIDTH_16BIT,
- .ws_pol = false,
- .bit_shift = true,
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- },
- .gpio_cfg = {
- .mclk = mclk,
- .bclk = bclk,
- .ws = ws,
- .dout = dout,
- .din = I2S_GPIO_UNUSED,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
-
- i2s_tdm_config_t tdm_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)input_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .ext_clk_freq_hz = 0,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- .bclk_div = 8,
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_STEREO,
- .slot_mask = i2s_tdm_slot_mask_t(I2S_TDM_SLOT0 | I2S_TDM_SLOT1 | I2S_TDM_SLOT2 | I2S_TDM_SLOT3),
- .ws_width = I2S_TDM_AUTO_WS_WIDTH,
- .ws_pol = false,
- .bit_shift = true,
- .left_align = false,
- .big_endian = false,
- .bit_order_lsb = false,
- .skip_mask = false,
- .total_slot = I2S_TDM_AUTO_SLOT_NUM
- },
- .gpio_cfg = {
- .mclk = mclk,
- .bclk = bclk,
- .ws = ws,
- .dout = I2S_GPIO_UNUSED,
- .din = din,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
-
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
- ESP_ERROR_CHECK(i2s_channel_init_tdm_mode(rx_handle_, &tdm_cfg));
- ESP_LOGI(TAG, "Duplex channels created");
-}
-
-void BoxAudioCodec::SetOutputVolume(int volume) {
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, volume));
- AudioCodec::SetOutputVolume(volume);
-}
-
-void BoxAudioCodec::EnableInput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == input_enabled_) {
- return;
- }
- if (enable) {
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 4,
- .channel_mask = ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0),
- .sample_rate = (uint32_t)output_sample_rate_,
- .mclk_multiple = 0,
- };
- if (input_reference_) {
- fs.channel_mask |= ESP_CODEC_DEV_MAKE_CHANNEL_MASK(1);
- }
- ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_in_channel_gain(input_dev_, ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0), input_gain_));
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- }
- AudioCodec::EnableInput(enable);
-}
-
-void BoxAudioCodec::EnableOutput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == output_enabled_) {
- return;
- }
- if (enable) {
- // Play 16bit 1 channel
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)output_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(output_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, output_volume_));
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- }
- AudioCodec::EnableOutput(enable);
-}
-
-int BoxAudioCodec::Read(int16_t* dest, int samples) {
- if (input_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_read(input_dev_, (void*)dest, samples * sizeof(int16_t)));
- }
- return samples;
-}
-
-int BoxAudioCodec::Write(const int16_t* data, int samples) {
- if (output_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_write(output_dev_, (void*)data, samples * sizeof(int16_t)));
- }
- return samples;
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/box_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/box_audio_codec.h
deleted file mode 100644
index cb7d3898..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/box_audio_codec.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _BOX_AUDIO_CODEC_H
-#define _BOX_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-#include
-#include
-#include
-
-
-class BoxAudioCodec : public AudioCodec {
-private:
- const audio_codec_data_if_t* data_if_ = nullptr;
- const audio_codec_ctrl_if_t* out_ctrl_if_ = nullptr;
- const audio_codec_if_t* out_codec_if_ = nullptr;
- const audio_codec_ctrl_if_t* in_ctrl_if_ = nullptr;
- const audio_codec_if_t* in_codec_if_ = nullptr;
- const audio_codec_gpio_if_t* gpio_if_ = nullptr;
-
- esp_codec_dev_handle_t output_dev_ = nullptr;
- esp_codec_dev_handle_t input_dev_ = nullptr;
- std::mutex data_if_mutex_;
-
- void CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din);
-
- virtual int Read(int16_t* dest, int samples) override;
- virtual int Write(const int16_t* data, int samples) override;
-
-public:
- BoxAudioCodec(void* i2c_master_handle, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8311_addr, uint8_t es7210_addr, bool input_reference);
- virtual ~BoxAudioCodec();
-
- virtual void SetOutputVolume(int volume) override;
- virtual void EnableInput(bool enable) override;
- virtual void EnableOutput(bool enable) override;
-};
-
-#endif // _BOX_AUDIO_CODEC_H
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/dummy_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/dummy_audio_codec.cc
deleted file mode 100644
index 5f646b3e..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/dummy_audio_codec.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "dummy_audio_codec.h"
-
-DummyAudioCodec::DummyAudioCodec(int input_sample_rate, int output_sample_rate) {
- duplex_ = true;
- input_reference_ = false;
- input_channels_ = 1;
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
-}
-
-DummyAudioCodec::~DummyAudioCodec() {
-}
-
-int DummyAudioCodec::Read(int16_t* dest, int samples) {
- return 0;
-}
-
-int DummyAudioCodec::Write(const int16_t* data, int samples) {
- return 0;
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/dummy_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/dummy_audio_codec.h
deleted file mode 100644
index 158f1404..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/dummy_audio_codec.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef _DUMMY_AUDIO_CODEC_H
-#define _DUMMY_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-class DummyAudioCodec : public AudioCodec {
-private:
- virtual int Read(int16_t* dest, int samples) override;
- virtual int Write(const int16_t* data, int samples) override;
-
-public:
- DummyAudioCodec(int input_sample_rate, int output_sample_rate);
- virtual ~DummyAudioCodec();
-};
-
-#endif // _DUMMY_AUDIO_CODEC_H
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8311_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8311_audio_codec.cc
deleted file mode 100644
index 0a03e87b..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8311_audio_codec.cc
+++ /dev/null
@@ -1,197 +0,0 @@
-#include "es8311_audio_codec.h"
-
-#include
-
-#define TAG "Es8311AudioCodec"
-
-Es8311AudioCodec::Es8311AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8311_addr, bool use_mclk, bool pa_inverted) {
- duplex_ = true; // 是否双工
- input_reference_ = false; // 是否使用参考输入,实现回声消除
- input_channels_ = 1; // 输入通道数
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
- pa_pin_ = pa_pin;
- pa_inverted_ = pa_inverted;
- input_gain_ = 30;
-
- assert(input_sample_rate_ == output_sample_rate_);
- CreateDuplexChannels(mclk, bclk, ws, dout, din);
-
- // Do initialize of related interface: data_if, ctrl_if and gpio_if
- audio_codec_i2s_cfg_t i2s_cfg = {
- .port = I2S_NUM_0,
- .rx_handle = rx_handle_,
- .tx_handle = tx_handle_,
- };
- data_if_ = audio_codec_new_i2s_data(&i2s_cfg);
- assert(data_if_ != NULL);
-
- // Output
- audio_codec_i2c_cfg_t i2c_cfg = {
- .port = i2c_port,
- .addr = es8311_addr,
- .bus_handle = i2c_master_handle,
- };
- ctrl_if_ = audio_codec_new_i2c_ctrl(&i2c_cfg);
- assert(ctrl_if_ != NULL);
-
- gpio_if_ = audio_codec_new_gpio();
- assert(gpio_if_ != NULL);
-
- es8311_codec_cfg_t es8311_cfg = {};
- es8311_cfg.ctrl_if = ctrl_if_;
- es8311_cfg.gpio_if = gpio_if_;
- es8311_cfg.codec_mode = ESP_CODEC_DEV_WORK_MODE_BOTH;
- es8311_cfg.pa_pin = pa_pin;
- es8311_cfg.use_mclk = use_mclk;
- es8311_cfg.hw_gain.pa_voltage = 5.0;
- es8311_cfg.hw_gain.codec_dac_voltage = 3.3;
- es8311_cfg.pa_reverted = pa_inverted_;
- codec_if_ = es8311_codec_new(&es8311_cfg);
-
- if (codec_if_ == nullptr) {
- ESP_LOGE(TAG, "Failed to create Es8311AudioCodec");
- } else {
- ESP_LOGI(TAG, "Es8311AudioCodec initialized");
- }
-}
-
-Es8311AudioCodec::~Es8311AudioCodec() {
- esp_codec_dev_delete(dev_);
-
- audio_codec_delete_codec_if(codec_if_);
- audio_codec_delete_ctrl_if(ctrl_if_);
- audio_codec_delete_gpio_if(gpio_if_);
- audio_codec_delete_data_if(data_if_);
-}
-
-void Es8311AudioCodec::UpdateDeviceState() {
- if ((input_enabled_ || output_enabled_) && dev_ == nullptr) {
- esp_codec_dev_cfg_t dev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_IN_OUT,
- .codec_if = codec_if_,
- .data_if = data_if_,
- };
- dev_ = esp_codec_dev_new(&dev_cfg);
- assert(dev_ != NULL);
-
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)input_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(dev_, input_gain_));
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(dev_, output_volume_));
- } else if (!input_enabled_ && !output_enabled_ && dev_ != nullptr) {
- esp_codec_dev_close(dev_);
- dev_ = nullptr;
- }
- if (pa_pin_ != GPIO_NUM_NC) {
- int level = output_enabled_ ? 1 : 0;
- gpio_set_level(pa_pin_, pa_inverted_ ? !level : level);
- }
-}
-
-void Es8311AudioCodec::CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din) {
- assert(input_sample_rate_ == output_sample_rate_);
-
- i2s_chan_config_t chan_cfg = {
- .id = I2S_NUM_0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM,
- .dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, &rx_handle_));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- #ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
- #endif
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_STEREO,
- .slot_mask = I2S_STD_SLOT_BOTH,
- .ws_width = I2S_DATA_BIT_WIDTH_16BIT,
- .ws_pol = false,
- .bit_shift = true,
- #ifdef I2S_HW_VERSION_2
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- #endif
- },
- .gpio_cfg = {
- .mclk = mclk,
- .bclk = bclk,
- .ws = ws,
- .dout = dout,
- .din = din,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
-
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Duplex channels created");
-}
-
-void Es8311AudioCodec::SetOutputVolume(int volume) {
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(dev_, volume));
- AudioCodec::SetOutputVolume(volume);
-}
-
-void Es8311AudioCodec::EnableInput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (codec_if_ == nullptr) {
- return;
- }
- if (enable == input_enabled_) {
- return;
- }
- AudioCodec::EnableInput(enable);
- UpdateDeviceState();
-}
-
-void Es8311AudioCodec::EnableOutput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (codec_if_ == nullptr) {
- return;
- }
- if (enable == output_enabled_) {
- return;
- }
- AudioCodec::EnableOutput(enable);
- UpdateDeviceState();
-}
-
-int Es8311AudioCodec::Read(int16_t* dest, int samples) {
- if (input_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_read(dev_, (void*)dest, samples * sizeof(int16_t)));
- }
- return samples;
-}
-
-int Es8311AudioCodec::Write(const int16_t* data, int samples) {
- if (output_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_write(dev_, (void*)data, samples * sizeof(int16_t)));
- }
- return samples;
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8311_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8311_audio_codec.h
deleted file mode 100644
index dd0e6398..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8311_audio_codec.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef _ES8311_AUDIO_CODEC_H
-#define _ES8311_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-#include
-#include
-#include
-#include
-#include
-
-
-class Es8311AudioCodec : public AudioCodec {
-private:
- const audio_codec_data_if_t* data_if_ = nullptr;
- const audio_codec_ctrl_if_t* ctrl_if_ = nullptr;
- const audio_codec_if_t* codec_if_ = nullptr;
- const audio_codec_gpio_if_t* gpio_if_ = nullptr;
-
- esp_codec_dev_handle_t dev_ = nullptr;
- gpio_num_t pa_pin_ = GPIO_NUM_NC;
- bool pa_inverted_ = false;
- std::mutex data_if_mutex_;
-
- void CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din);
- void UpdateDeviceState();
-
- virtual int Read(int16_t* dest, int samples) override;
- virtual int Write(const int16_t* data, int samples) override;
-
-public:
- Es8311AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8311_addr, bool use_mclk = true, bool pa_inverted = false);
- virtual ~Es8311AudioCodec();
-
- virtual void SetOutputVolume(int volume) override;
- virtual void EnableInput(bool enable) override;
- virtual void EnableOutput(bool enable) override;
-};
-
-#endif // _ES8311_AUDIO_CODEC_H
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8374_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8374_audio_codec.cc
deleted file mode 100644
index 30b1ba36..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8374_audio_codec.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-#include "es8374_audio_codec.h"
-
-#include
-
-#define TAG "Es8374AudioCodec"
-
-Es8374AudioCodec::Es8374AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8374_addr, bool use_mclk) {
- duplex_ = true; // 是否双工
- input_reference_ = false; // 是否使用参考输入,实现回声消除
- input_channels_ = 1; // 输入通道数
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
- input_gain_ = 30;
-
- pa_pin_ = pa_pin;
- CreateDuplexChannels(mclk, bclk, ws, dout, din);
-
- // Do initialize of related interface: data_if, ctrl_if and gpio_if
- audio_codec_i2s_cfg_t i2s_cfg = {
- .port = I2S_NUM_0,
- .rx_handle = rx_handle_,
- .tx_handle = tx_handle_,
- };
- data_if_ = audio_codec_new_i2s_data(&i2s_cfg);
- assert(data_if_ != NULL);
-
- // Output
- audio_codec_i2c_cfg_t i2c_cfg = {
- .port = i2c_port,
- .addr = es8374_addr,
- .bus_handle = i2c_master_handle,
- };
- ctrl_if_ = audio_codec_new_i2c_ctrl(&i2c_cfg);
- assert(ctrl_if_ != NULL);
-
- gpio_if_ = audio_codec_new_gpio();
- assert(gpio_if_ != NULL);
-
- es8374_codec_cfg_t es8374_cfg = {};
- es8374_cfg.ctrl_if = ctrl_if_;
- es8374_cfg.gpio_if = gpio_if_;
- es8374_cfg.codec_mode = ESP_CODEC_DEV_WORK_MODE_BOTH;
- es8374_cfg.pa_pin = pa_pin;
- codec_if_ = es8374_codec_new(&es8374_cfg);
- assert(codec_if_ != NULL);
-
- esp_codec_dev_cfg_t dev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_OUT,
- .codec_if = codec_if_,
- .data_if = data_if_,
- };
- output_dev_ = esp_codec_dev_new(&dev_cfg);
- assert(output_dev_ != NULL);
- dev_cfg.dev_type = ESP_CODEC_DEV_TYPE_IN;
- input_dev_ = esp_codec_dev_new(&dev_cfg);
- assert(input_dev_ != NULL);
- esp_codec_set_disable_when_closed(output_dev_, false);
- esp_codec_set_disable_when_closed(input_dev_, false);
- ESP_LOGI(TAG, "Es8374AudioCodec initialized");
-}
-
-Es8374AudioCodec::~Es8374AudioCodec() {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- esp_codec_dev_delete(output_dev_);
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- esp_codec_dev_delete(input_dev_);
-
- audio_codec_delete_codec_if(codec_if_);
- audio_codec_delete_ctrl_if(ctrl_if_);
- audio_codec_delete_gpio_if(gpio_if_);
- audio_codec_delete_data_if(data_if_);
-}
-
-void Es8374AudioCodec::CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din) {
- assert(input_sample_rate_ == output_sample_rate_);
-
- i2s_chan_config_t chan_cfg = {
- .id = I2S_NUM_0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = 6,
- .dma_frame_num = 240,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, &rx_handle_));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- #ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
- #endif
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_STEREO,
- .slot_mask = I2S_STD_SLOT_BOTH,
- .ws_width = I2S_DATA_BIT_WIDTH_16BIT,
- .ws_pol = false,
- .bit_shift = true,
- #ifdef I2S_HW_VERSION_2
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- #endif
- },
- .gpio_cfg = {
- .mclk = mclk,
- .bclk = bclk,
- .ws = ws,
- .dout = dout,
- .din = din,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
-
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Duplex channels created");
-}
-
-void Es8374AudioCodec::SetOutputVolume(int volume) {
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, volume));
- AudioCodec::SetOutputVolume(volume);
-}
-
-void Es8374AudioCodec::EnableInput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == input_enabled_) {
- return;
- }
- if (enable) {
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)input_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, input_gain_));
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- }
- AudioCodec::EnableInput(enable);
-}
-
-void Es8374AudioCodec::EnableOutput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == output_enabled_) {
- return;
- }
- if (enable) {
- // Play 16bit 1 channel
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)output_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(output_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, output_volume_));
- if (pa_pin_ != GPIO_NUM_NC) {
- gpio_set_level(pa_pin_, 1);
- }
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- if (pa_pin_ != GPIO_NUM_NC) {
- gpio_set_level(pa_pin_, 0);
- }
- }
- AudioCodec::EnableOutput(enable);
-}
-
-int Es8374AudioCodec::Read(int16_t* dest, int samples) {
- if (input_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_read(input_dev_, (void*)dest, samples * sizeof(int16_t)));
- }
- return samples;
-}
-
-int Es8374AudioCodec::Write(const int16_t* data, int samples) {
- if (output_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_write(output_dev_, (void*)data, samples * sizeof(int16_t)));
- }
- return samples;
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8374_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8374_audio_codec.h
deleted file mode 100644
index 7533c222..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8374_audio_codec.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef _ES8374_AUDIO_CODEC_H
-#define _ES8374_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-#include
-#include
-#include
-#include
-#include
-
-
-class Es8374AudioCodec : public AudioCodec {
-private:
- const audio_codec_data_if_t* data_if_ = nullptr;
- const audio_codec_ctrl_if_t* ctrl_if_ = nullptr;
- const audio_codec_if_t* codec_if_ = nullptr;
- const audio_codec_gpio_if_t* gpio_if_ = nullptr;
-
- esp_codec_dev_handle_t output_dev_ = nullptr;
- esp_codec_dev_handle_t input_dev_ = nullptr;
- gpio_num_t pa_pin_ = GPIO_NUM_NC;
- std::mutex data_if_mutex_;
-
- void CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din);
-
- virtual int Read(int16_t* dest, int samples) override;
- virtual int Write(const int16_t* data, int samples) override;
-
-public:
- Es8374AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8374_addr, bool use_mclk = true);
- virtual ~Es8374AudioCodec();
-
- virtual void SetOutputVolume(int volume) override;
- virtual void EnableInput(bool enable) override;
- virtual void EnableOutput(bool enable) override;
-};
-
-#endif // _ES8374_AUDIO_CODEC_H
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8388_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8388_audio_codec.cc
deleted file mode 100644
index aa26ae77..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8388_audio_codec.cc
+++ /dev/null
@@ -1,221 +0,0 @@
-#include "es8388_audio_codec.h"
-
-#include
-
-#define TAG "Es8388AudioCodec"
-
-Es8388AudioCodec::Es8388AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8388_addr, bool input_reference) {
- duplex_ = true; // 是否双工
- input_reference_ = input_reference; // 是否使用参考输入,实现回声消除
- input_channels_ = input_reference_ ? 2 : 1; // 输入通道数
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
- input_gain_ = 24;
-
- pa_pin_ = pa_pin;
- CreateDuplexChannels(mclk, bclk, ws, dout, din);
-
- // Do initialize of related interface: data_if, ctrl_if and gpio_if
- audio_codec_i2s_cfg_t i2s_cfg = {
- .port = I2S_NUM_0,
- .rx_handle = rx_handle_,
- .tx_handle = tx_handle_,
- };
- data_if_ = audio_codec_new_i2s_data(&i2s_cfg);
- assert(data_if_ != NULL);
-
- // Output
- audio_codec_i2c_cfg_t i2c_cfg = {
- .port = i2c_port,
- .addr = es8388_addr,
- .bus_handle = i2c_master_handle,
- };
- ctrl_if_ = audio_codec_new_i2c_ctrl(&i2c_cfg);
- assert(ctrl_if_ != NULL);
-
- gpio_if_ = audio_codec_new_gpio();
- assert(gpio_if_ != NULL);
-
- es8388_codec_cfg_t es8388_cfg = {};
- es8388_cfg.ctrl_if = ctrl_if_;
- es8388_cfg.gpio_if = gpio_if_;
- es8388_cfg.codec_mode = ESP_CODEC_DEV_WORK_MODE_BOTH;
- es8388_cfg.master_mode = true;
- es8388_cfg.pa_pin = pa_pin;
- es8388_cfg.pa_reverted = false;
- es8388_cfg.hw_gain.pa_voltage = 5.0;
- es8388_cfg.hw_gain.codec_dac_voltage = 3.3;
- codec_if_ = es8388_codec_new(&es8388_cfg);
- assert(codec_if_ != NULL);
-
- esp_codec_dev_cfg_t outdev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_OUT,
- .codec_if = codec_if_,
- .data_if = data_if_,
- };
- output_dev_ = esp_codec_dev_new(&outdev_cfg);
- assert(output_dev_ != NULL);
-
- esp_codec_dev_cfg_t indev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_IN,
- .codec_if = codec_if_,
- .data_if = data_if_,
- };
- input_dev_ = esp_codec_dev_new(&indev_cfg);
- assert(input_dev_ != NULL);
- esp_codec_set_disable_when_closed(output_dev_, false);
- esp_codec_set_disable_when_closed(input_dev_, false);
- ESP_LOGI(TAG, "Es8388AudioCodec initialized");
-}
-
-Es8388AudioCodec::~Es8388AudioCodec() {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- esp_codec_dev_delete(output_dev_);
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- esp_codec_dev_delete(input_dev_);
-
- audio_codec_delete_codec_if(codec_if_);
- audio_codec_delete_ctrl_if(ctrl_if_);
- audio_codec_delete_gpio_if(gpio_if_);
- audio_codec_delete_data_if(data_if_);
-}
-
-void Es8388AudioCodec::CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din){
- assert(input_sample_rate_ == output_sample_rate_);
-
- i2s_chan_config_t chan_cfg = {
- .id = I2S_NUM_0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM,
- .dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, &rx_handle_));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .ext_clk_freq_hz = 0,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_STEREO,
- .slot_mask = I2S_STD_SLOT_BOTH,
- .ws_width = I2S_DATA_BIT_WIDTH_16BIT,
- .ws_pol = false,
- .bit_shift = true,
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- },
- .gpio_cfg = {
- .mclk = mclk,
- .bclk = bclk,
- .ws = ws,
- .dout = dout,
- .din = din,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
-
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Duplex channels created");
-}
-
-void Es8388AudioCodec::SetOutputVolume(int volume) {
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, volume));
- AudioCodec::SetOutputVolume(volume);
-}
-
-void Es8388AudioCodec::EnableInput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == input_enabled_) {
- return;
- }
- if (enable) {
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = (uint8_t) input_channels_,
- .channel_mask = ESP_CODEC_DEV_MAKE_CHANNEL_MASK(0),
- .sample_rate = (uint32_t)input_sample_rate_,
- .mclk_multiple = 0,
- };
- if (input_reference_) {
- fs.channel_mask |= ESP_CODEC_DEV_MAKE_CHANNEL_MASK(1);
- }
- ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs));
- if (input_reference_) {
- uint8_t gain = (11 << 4) + 0;
- ctrl_if_->write_reg(ctrl_if_, 0x09, 1, &gain, 1);
- }else{
- ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, input_gain_));
- }
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- }
- AudioCodec::EnableInput(enable);
-}
-
-void Es8388AudioCodec::EnableOutput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == output_enabled_) {
- return;
- }
- if (enable) {
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)output_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(output_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, output_volume_));
-
- // Set analog output volume to 0dB, default is -45dB
- uint8_t reg_val = 30; // 0dB
- if(input_reference_){
- reg_val = 27;
- }
- uint8_t regs[] = { 46, 47, 48, 49 }; // HP_LVOL, HP_RVOL, SPK_LVOL, SPK_RVOL
- for (uint8_t reg : regs) {
- ctrl_if_->write_reg(ctrl_if_, reg, 1, ®_val, 1);
- }
-
- if (pa_pin_ != GPIO_NUM_NC) {
- gpio_set_level(pa_pin_, 1);
- }
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- if (pa_pin_ != GPIO_NUM_NC) {
- gpio_set_level(pa_pin_, 0);
- }
- }
- AudioCodec::EnableOutput(enable);
-}
-
-int Es8388AudioCodec::Read(int16_t* dest, int samples) {
- if (input_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_read(input_dev_, (void*)dest, samples * sizeof(int16_t)));
- }
- return samples;
-}
-
-int Es8388AudioCodec::Write(const int16_t* data, int samples) {
- if (output_enabled_ && output_dev_ && data != nullptr) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_write(output_dev_, (void*)data, samples * sizeof(int16_t)));
- }
- return samples;
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8388_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8388_audio_codec.h
deleted file mode 100644
index 316dfce5..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8388_audio_codec.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _ES8388_AUDIO_CODEC_H
-#define _ES8388_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-#include
-#include
-#include
-#include
-
-
-class Es8388AudioCodec : public AudioCodec {
-private:
- const audio_codec_data_if_t* data_if_ = nullptr;
- const audio_codec_ctrl_if_t* ctrl_if_ = nullptr;
- const audio_codec_if_t* codec_if_ = nullptr;
- const audio_codec_gpio_if_t* gpio_if_ = nullptr;
-
- esp_codec_dev_handle_t output_dev_ = nullptr;
- esp_codec_dev_handle_t input_dev_ = nullptr;
- gpio_num_t pa_pin_ = GPIO_NUM_NC;
- std::mutex data_if_mutex_;
-
- void CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din);
-
- virtual int Read(int16_t* dest, int samples) override;
- virtual int Write(const int16_t* data, int samples) override;
-
-public:
- Es8388AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8388_addr, bool input_reference = false);
- virtual ~Es8388AudioCodec();
-
- virtual void SetOutputVolume(int volume) override;
- virtual void EnableInput(bool enable) override;
- virtual void EnableOutput(bool enable) override;
-};
-
-#endif // _ES8388_AUDIO_CODEC_H
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8389_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8389_audio_codec.cc
deleted file mode 100644
index 351ad454..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8389_audio_codec.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-#include "es8389_audio_codec.h"
-
-#include
-
-static const char TAG[] = "Es8389AudioCodec";
-
-Es8389AudioCodec::Es8389AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8389_addr, bool use_mclk) {
- duplex_ = true; // 是否双工
- input_reference_ = false; // 是否使用参考输入,实现回声消除
- input_channels_ = 1; // 输入通道数
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
- input_gain_ = 40;
- pa_pin_ = pa_pin;
- CreateDuplexChannels(mclk, bclk, ws, dout, din);
-
- // Do initialize of related interface: data_if, ctrl_if and gpio_if
- audio_codec_i2s_cfg_t i2s_cfg = {
- .port = I2S_NUM_0,
- .rx_handle = rx_handle_,
- .tx_handle = tx_handle_,
- };
- data_if_ = audio_codec_new_i2s_data(&i2s_cfg);
- assert(data_if_ != NULL);
-
- // Output
- audio_codec_i2c_cfg_t i2c_cfg = {
- .port = i2c_port,
- .addr = es8389_addr,
- .bus_handle = i2c_master_handle,
- };
- ctrl_if_ = audio_codec_new_i2c_ctrl(&i2c_cfg);
- assert(ctrl_if_ != NULL);
-
- gpio_if_ = audio_codec_new_gpio();
- assert(gpio_if_ != NULL);
-
- es8389_codec_cfg_t es8389_cfg = {};
- es8389_cfg.ctrl_if = ctrl_if_;
- es8389_cfg.gpio_if = gpio_if_;
- es8389_cfg.codec_mode = ESP_CODEC_DEV_WORK_MODE_BOTH;
- es8389_cfg.pa_pin = pa_pin;
- es8389_cfg.use_mclk = use_mclk;
- es8389_cfg.hw_gain.pa_voltage = 5.0;
- es8389_cfg.hw_gain.codec_dac_voltage = 3.3;
- codec_if_ = es8389_codec_new(&es8389_cfg);
-
- assert(codec_if_ != NULL);
-
- esp_codec_dev_cfg_t outdev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_OUT,
- .codec_if = codec_if_,
- .data_if = data_if_,
- };
- output_dev_ = esp_codec_dev_new(&outdev_cfg);
- assert(output_dev_ != NULL);
-
- esp_codec_dev_cfg_t indev_cfg = {
- .dev_type = ESP_CODEC_DEV_TYPE_IN,
- .codec_if = codec_if_,
- .data_if = data_if_,
- };
- input_dev_ = esp_codec_dev_new(&indev_cfg);
- assert(input_dev_ != NULL);
- esp_codec_set_disable_when_closed(output_dev_, false);
- esp_codec_set_disable_when_closed(input_dev_, false);
- ESP_LOGI(TAG, "Es8389AudioCodec initialized");
-}
-
-Es8389AudioCodec::~Es8389AudioCodec() {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- esp_codec_dev_delete(output_dev_);
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- esp_codec_dev_delete(input_dev_);
-
- audio_codec_delete_codec_if(codec_if_);
- audio_codec_delete_ctrl_if(ctrl_if_);
- audio_codec_delete_gpio_if(gpio_if_);
- audio_codec_delete_data_if(data_if_);
-}
-
-void Es8389AudioCodec::CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din) {
- assert(input_sample_rate_ == output_sample_rate_);
-
- i2s_chan_config_t chan_cfg = {
- .id = I2S_NUM_0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = 6,
- .dma_frame_num = 240,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, &rx_handle_));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
-#ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
-#endif
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_16BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_STEREO,
- .slot_mask = I2S_STD_SLOT_BOTH,
- .ws_width = I2S_DATA_BIT_WIDTH_16BIT,
- .ws_pol = false,
- .bit_shift = true,
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- },
- .gpio_cfg = {
- .mclk = mclk,
- .bclk = bclk,
- .ws = ws,
- .dout = dout,
- .din = din,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
-
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Duplex channels created");
-}
-
-void Es8389AudioCodec::SetOutputVolume(int volume) {
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, volume));
- AudioCodec::SetOutputVolume(volume);
-}
-
-void Es8389AudioCodec::EnableInput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == input_enabled_) {
- return;
- }
- if (enable) {
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)input_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(input_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_in_gain(input_dev_, input_gain_));
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(input_dev_));
- }
- AudioCodec::EnableInput(enable);
-}
-
-void Es8389AudioCodec::EnableOutput(bool enable) {
- std::lock_guard lock(data_if_mutex_);
- if (enable == output_enabled_) {
- return;
- }
- if (enable) {
- // Play 16bit 1 channel
- esp_codec_dev_sample_info_t fs = {
- .bits_per_sample = 16,
- .channel = 1,
- .channel_mask = 0,
- .sample_rate = (uint32_t)output_sample_rate_,
- .mclk_multiple = 0,
- };
- ESP_ERROR_CHECK(esp_codec_dev_open(output_dev_, &fs));
- ESP_ERROR_CHECK(esp_codec_dev_set_out_vol(output_dev_, output_volume_));
- if (pa_pin_ != GPIO_NUM_NC) {
- gpio_set_level(pa_pin_, 1);
- }
- } else {
- ESP_ERROR_CHECK(esp_codec_dev_close(output_dev_));
- if (pa_pin_ != GPIO_NUM_NC) {
- gpio_set_level(pa_pin_, 0);
- }
- }
- AudioCodec::EnableOutput(enable);
-}
-
-int Es8389AudioCodec::Read(int16_t* dest, int samples) {
- if (input_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_read(input_dev_, (void*)dest, samples * sizeof(int16_t)));
- }
- return samples;
-}
-
-int Es8389AudioCodec::Write(const int16_t* data, int samples) {
- if (output_enabled_) {
- ESP_ERROR_CHECK_WITHOUT_ABORT(esp_codec_dev_write(output_dev_, (void*)data, samples * sizeof(int16_t)));
- }
- return samples;
-}
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8389_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8389_audio_codec.h
deleted file mode 100644
index b55b4273..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/es8389_audio_codec.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _ES8389_AUDIO_CODEC_H
-#define _ES8389_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-#include
-#include
-#include
-#include
-#include
-
-class Es8389AudioCodec : public AudioCodec {
-private:
- const audio_codec_data_if_t* data_if_ = nullptr;
- const audio_codec_ctrl_if_t* ctrl_if_ = nullptr;
- const audio_codec_if_t* codec_if_ = nullptr;
- const audio_codec_gpio_if_t* gpio_if_ = nullptr;
-
- esp_codec_dev_handle_t output_dev_ = nullptr;
- esp_codec_dev_handle_t input_dev_ = nullptr;
- gpio_num_t pa_pin_ = GPIO_NUM_NC;
- std::mutex data_if_mutex_;
-
- void CreateDuplexChannels(gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din);
-
- virtual int Read(int16_t* dest, int samples) override;
- virtual int Write(const int16_t* data, int samples) override;
-
-public:
- Es8389AudioCodec(void* i2c_master_handle, i2c_port_t i2c_port, int input_sample_rate, int output_sample_rate,
- gpio_num_t mclk, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din,
- gpio_num_t pa_pin, uint8_t es8389_addr, bool use_mclk = true);
- virtual ~Es8389AudioCodec();
-
- virtual void SetOutputVolume(int volume) override;
- virtual void EnableInput(bool enable) override;
- virtual void EnableOutput(bool enable) override;
-};
-
-#endif // _ES8389_AUDIO_CODEC_H
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/no_audio_codec.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/no_audio_codec.cc
deleted file mode 100644
index 4c839c87..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/no_audio_codec.cc
+++ /dev/null
@@ -1,359 +0,0 @@
-#include "no_audio_codec.h"
-
-#include
-#include
-#include
-
-#define TAG "NoAudioCodec"
-
-NoAudioCodec::~NoAudioCodec() {
- if (rx_handle_ != nullptr) {
- ESP_ERROR_CHECK(i2s_channel_disable(rx_handle_));
- }
- if (tx_handle_ != nullptr) {
- ESP_ERROR_CHECK(i2s_channel_disable(tx_handle_));
- }
-}
-
-NoAudioCodecDuplex::NoAudioCodecDuplex(int input_sample_rate, int output_sample_rate, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din) {
- duplex_ = true;
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
-
- i2s_chan_config_t chan_cfg = {
- .id = I2S_NUM_0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM,
- .dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, &rx_handle_));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- #ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
- #endif
-
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_32BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_MONO,
- .slot_mask = I2S_STD_SLOT_LEFT,
- .ws_width = I2S_DATA_BIT_WIDTH_32BIT,
- .ws_pol = false,
- .bit_shift = true,
- #ifdef I2S_HW_VERSION_2
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- #endif
-
- },
- .gpio_cfg = {
- .mclk = I2S_GPIO_UNUSED,
- .bclk = bclk,
- .ws = ws,
- .dout = dout,
- .din = din,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Duplex channels created");
-}
-
-
-NoAudioCodecSimplex::NoAudioCodecSimplex(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, gpio_num_t mic_sck, gpio_num_t mic_ws, gpio_num_t mic_din) {
- duplex_ = false;
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
-
- // Create a new channel for speaker
- i2s_chan_config_t chan_cfg = {
- .id = (i2s_port_t)0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM,
- .dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, nullptr));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- #ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
- #endif
-
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_32BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_MONO,
- .slot_mask = I2S_STD_SLOT_LEFT,
- .ws_width = I2S_DATA_BIT_WIDTH_32BIT,
- .ws_pol = false,
- .bit_shift = true,
- #ifdef I2S_HW_VERSION_2
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- #endif
-
- },
- .gpio_cfg = {
- .mclk = I2S_GPIO_UNUSED,
- .bclk = spk_bclk,
- .ws = spk_ws,
- .dout = spk_dout,
- .din = I2S_GPIO_UNUSED,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
-
- // Create a new channel for MIC
- chan_cfg.id = (i2s_port_t)1;
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, nullptr, &rx_handle_));
- std_cfg.clk_cfg.sample_rate_hz = (uint32_t)input_sample_rate_;
- std_cfg.gpio_cfg.bclk = mic_sck;
- std_cfg.gpio_cfg.ws = mic_ws;
- std_cfg.gpio_cfg.dout = I2S_GPIO_UNUSED;
- std_cfg.gpio_cfg.din = mic_din;
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Simplex channels created");
-}
-
-NoAudioCodecSimplex::NoAudioCodecSimplex(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, i2s_std_slot_mask_t spk_slot_mask, gpio_num_t mic_sck, gpio_num_t mic_ws, gpio_num_t mic_din, i2s_std_slot_mask_t mic_slot_mask){
- duplex_ = false;
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
-
- // Create a new channel for speaker
- i2s_chan_config_t chan_cfg = {
- .id = (i2s_port_t)0,
- .role = I2S_ROLE_MASTER,
- .dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM,
- .dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM,
- .auto_clear_after_cb = true,
- .auto_clear_before_cb = false,
- .intr_priority = 0,
- };
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, &tx_handle_, nullptr));
-
- i2s_std_config_t std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- #ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
- #endif
-
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_32BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_MONO,
- .slot_mask = spk_slot_mask,
- .ws_width = I2S_DATA_BIT_WIDTH_32BIT,
- .ws_pol = false,
- .bit_shift = true,
- #ifdef I2S_HW_VERSION_2
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- #endif
-
- },
- .gpio_cfg = {
- .mclk = I2S_GPIO_UNUSED,
- .bclk = spk_bclk,
- .ws = spk_ws,
- .dout = spk_dout,
- .din = I2S_GPIO_UNUSED,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false
- }
- }
- };
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &std_cfg));
-
- // Create a new channel for MIC
- chan_cfg.id = (i2s_port_t)1;
- ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, nullptr, &rx_handle_));
- std_cfg.clk_cfg.sample_rate_hz = (uint32_t)input_sample_rate_;
- std_cfg.slot_cfg.slot_mask = mic_slot_mask;
- std_cfg.gpio_cfg.bclk = mic_sck;
- std_cfg.gpio_cfg.ws = mic_ws;
- std_cfg.gpio_cfg.dout = I2S_GPIO_UNUSED;
- std_cfg.gpio_cfg.din = mic_din;
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_handle_, &std_cfg));
- ESP_LOGI(TAG, "Simplex channels created");
-}
-
-int NoAudioCodec::Write(const int16_t* data, int samples) {
- std::lock_guard lock(data_if_mutex_);
- std::vector buffer(samples);
-
- // output_volume_: 0-100
- // volume_factor_: 0-65536
- int32_t volume_factor = pow(double(output_volume_) / 100.0, 2) * 65536;
- for (int i = 0; i < samples; i++) {
- int64_t temp = int64_t(data[i]) * volume_factor; // 使用 int64_t 进行乘法运算
- if (temp > INT32_MAX) {
- buffer[i] = INT32_MAX;
- } else if (temp < INT32_MIN) {
- buffer[i] = INT32_MIN;
- } else {
- buffer[i] = static_cast(temp);
- }
- }
-
- size_t bytes_written;
- ESP_ERROR_CHECK(i2s_channel_write(tx_handle_, buffer.data(), samples * sizeof(int32_t), &bytes_written, portMAX_DELAY));
- return bytes_written / sizeof(int32_t);
-}
-
-int NoAudioCodec::Read(int16_t* dest, int samples) {
- size_t bytes_read;
-
- std::vector bit32_buffer(samples);
- if (i2s_channel_read(rx_handle_, bit32_buffer.data(), samples * sizeof(int32_t), &bytes_read, portMAX_DELAY) != ESP_OK) {
- ESP_LOGE(TAG, "Read Failed!");
- return 0;
- }
-
- samples = bytes_read / sizeof(int32_t);
- for (int i = 0; i < samples; i++) {
- int32_t value = bit32_buffer[i] >> 12;
- dest[i] = (value > INT16_MAX) ? INT16_MAX : (value < -INT16_MAX) ? -INT16_MAX : (int16_t)value;
- }
- return samples;
-}
-
-// Delegating constructor: calls the main constructor with default slot mask
-NoAudioCodecSimplexPdm::NoAudioCodecSimplexPdm(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, gpio_num_t mic_sck, gpio_num_t mic_din)
- : NoAudioCodecSimplexPdm(input_sample_rate, output_sample_rate, spk_bclk, spk_ws, spk_dout, I2S_STD_SLOT_LEFT, mic_sck, mic_din) {
- // All initialization is handled by the delegated constructor
-}
-
-NoAudioCodecSimplexPdm::NoAudioCodecSimplexPdm(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, i2s_std_slot_mask_t spk_slot_mask, gpio_num_t mic_sck, gpio_num_t mic_din) {
- duplex_ = false;
- input_sample_rate_ = input_sample_rate;
- output_sample_rate_ = output_sample_rate;
-
- // Create a new channel for speaker
- i2s_chan_config_t tx_chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG((i2s_port_t)1, I2S_ROLE_MASTER);
- tx_chan_cfg.dma_desc_num = AUDIO_CODEC_DMA_DESC_NUM;
- tx_chan_cfg.dma_frame_num = AUDIO_CODEC_DMA_FRAME_NUM;
- tx_chan_cfg.auto_clear_after_cb = true;
- tx_chan_cfg.auto_clear_before_cb = false;
- tx_chan_cfg.intr_priority = 0;
- ESP_ERROR_CHECK(i2s_new_channel(&tx_chan_cfg, &tx_handle_, NULL));
-
-
- i2s_std_config_t tx_std_cfg = {
- .clk_cfg = {
- .sample_rate_hz = (uint32_t)output_sample_rate_,
- .clk_src = I2S_CLK_SRC_DEFAULT,
- .mclk_multiple = I2S_MCLK_MULTIPLE_256,
- #ifdef I2S_HW_VERSION_2
- .ext_clk_freq_hz = 0,
- #endif
-
- },
- .slot_cfg = {
- .data_bit_width = I2S_DATA_BIT_WIDTH_32BIT,
- .slot_bit_width = I2S_SLOT_BIT_WIDTH_AUTO,
- .slot_mode = I2S_SLOT_MODE_MONO,
- .slot_mask = spk_slot_mask,
- .ws_width = I2S_DATA_BIT_WIDTH_32BIT,
- .ws_pol = false,
- .bit_shift = true,
- #ifdef I2S_HW_VERSION_2
- .left_align = true,
- .big_endian = false,
- .bit_order_lsb = false
- #endif
-
- },
- .gpio_cfg = {
- .mclk = I2S_GPIO_UNUSED,
- .bclk = spk_bclk,
- .ws = spk_ws,
- .dout = spk_dout,
- .din = I2S_GPIO_UNUSED,
- .invert_flags = {
- .mclk_inv = false,
- .bclk_inv = false,
- .ws_inv = false,
- },
- },
- };
- ESP_ERROR_CHECK(i2s_channel_init_std_mode(tx_handle_, &tx_std_cfg));
-#if SOC_I2S_SUPPORTS_PDM_RX
- // Create a new channel for MIC in PDM mode
- i2s_chan_config_t rx_chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG((i2s_port_t)0, I2S_ROLE_MASTER);
- ESP_ERROR_CHECK(i2s_new_channel(&rx_chan_cfg, NULL, &rx_handle_));
- i2s_pdm_rx_config_t pdm_rx_cfg = {
- .clk_cfg = I2S_PDM_RX_CLK_DEFAULT_CONFIG((uint32_t)input_sample_rate_),
- /* The data bit-width of PDM mode is fixed to 16 */
- .slot_cfg = I2S_PDM_RX_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_MONO),
- .gpio_cfg = {
- .clk = mic_sck,
- .din = mic_din,
-
- .invert_flags = {
- .clk_inv = false,
- },
- },
- };
- ESP_ERROR_CHECK(i2s_channel_init_pdm_rx_mode(rx_handle_, &pdm_rx_cfg));
-#else
- ESP_LOGE(TAG, "PDM is not supported");
-#endif
- ESP_LOGI(TAG, "Simplex channels created");
-}
-
-int NoAudioCodecSimplexPdm::Read(int16_t* dest, int samples) {
- size_t bytes_read;
-
- // PDM 解调后的数据位宽为 16 位,直接读取到目标缓冲区
- if (i2s_channel_read(rx_handle_, dest, samples * sizeof(int16_t), &bytes_read, portMAX_DELAY) != ESP_OK) {
- ESP_LOGE(TAG, "Read Failed!");
- return 0;
- }
-
- samples = bytes_read / sizeof(int16_t);
- if (input_gain_ > 0) {
- int gain_factor = (int)input_gain_;
- for (int i = 0; i < samples; i++) {
- int32_t amplified = dest[i] * gain_factor;
- dest[i] = (amplified > INT16_MAX) ? INT16_MAX : (amplified < -INT16_MAX) ? -INT16_MAX : (int16_t)amplified;
- }
- }
- return samples;
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/no_audio_codec.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/no_audio_codec.h
deleted file mode 100644
index 098ee001..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/codecs/no_audio_codec.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef _NO_AUDIO_CODEC_H
-#define _NO_AUDIO_CODEC_H
-
-#include "audio_codec.h"
-
-#include
-#include
-#include
-
-class NoAudioCodec : public AudioCodec {
-protected:
- std::mutex data_if_mutex_;
-
- virtual int Write(const int16_t* data, int samples) override;
- virtual int Read(int16_t* dest, int samples) override;
-
-public:
- virtual ~NoAudioCodec();
-};
-
-class NoAudioCodecDuplex : public NoAudioCodec {
-public:
- NoAudioCodecDuplex(int input_sample_rate, int output_sample_rate, gpio_num_t bclk, gpio_num_t ws, gpio_num_t dout, gpio_num_t din);
-};
-
-class NoAudioCodecSimplex : public NoAudioCodec {
-public:
- NoAudioCodecSimplex(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, gpio_num_t mic_sck, gpio_num_t mic_ws, gpio_num_t mic_din);
- NoAudioCodecSimplex(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, i2s_std_slot_mask_t spk_slot_mask, gpio_num_t mic_sck, gpio_num_t mic_ws, gpio_num_t mic_din, i2s_std_slot_mask_t mic_slot_mask);
-};
-
-class NoAudioCodecSimplexPdm : public NoAudioCodec {
-public:
- NoAudioCodecSimplexPdm(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, gpio_num_t mic_sck, gpio_num_t mic_din);
- NoAudioCodecSimplexPdm(int input_sample_rate, int output_sample_rate, gpio_num_t spk_bclk, gpio_num_t spk_ws, gpio_num_t spk_dout, i2s_std_slot_mask_t spk_slot_mask, gpio_num_t mic_sck, gpio_num_t mic_din);
- int Read(int16_t* dest, int samples);
-};
-
-#endif // _NO_AUDIO_CODEC_H
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/afe_audio_processor.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/afe_audio_processor.cc
deleted file mode 100644
index 0281b135..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/afe_audio_processor.cc
+++ /dev/null
@@ -1,187 +0,0 @@
-#include "afe_audio_processor.h"
-#include
-
-#define PROCESSOR_RUNNING 0x01
-
-#define TAG "AfeAudioProcessor"
-
-AfeAudioProcessor::AfeAudioProcessor()
- : afe_data_(nullptr) {
- event_group_ = xEventGroupCreate();
-}
-
-void AfeAudioProcessor::Initialize(AudioCodec* codec, int frame_duration_ms, srmodel_list_t* models_list) {
- codec_ = codec;
- frame_samples_ = frame_duration_ms * 16000 / 1000;
-
- // Pre-allocate output buffer capacity
- output_buffer_.reserve(frame_samples_);
-
- int ref_num = codec_->input_reference() ? 1 : 0;
-
- std::string input_format;
- for (int i = 0; i < codec_->input_channels() - ref_num; i++) {
- input_format.push_back('M');
- }
- for (int i = 0; i < ref_num; i++) {
- input_format.push_back('R');
- }
-
- srmodel_list_t *models;
- if (models_list == nullptr) {
- models = esp_srmodel_init("model");
- } else {
- models = models_list;
- }
-
- char* ns_model_name = esp_srmodel_filter(models, ESP_NSNET_PREFIX, NULL);
- char* vad_model_name = esp_srmodel_filter(models, ESP_VADN_PREFIX, NULL);
-
- afe_config_t* afe_config = afe_config_init(input_format.c_str(), NULL, AFE_TYPE_VC, AFE_MODE_HIGH_PERF);
- afe_config->aec_mode = AEC_MODE_VOIP_HIGH_PERF;
- afe_config->vad_mode = VAD_MODE_0;
- afe_config->vad_min_noise_ms = 100;
- if (vad_model_name != nullptr) {
- afe_config->vad_model_name = vad_model_name;
- }
-
- if (ns_model_name != nullptr) {
- afe_config->ns_init = true;
- afe_config->ns_model_name = ns_model_name;
- afe_config->afe_ns_mode = AFE_NS_MODE_NET;
- } else {
- afe_config->ns_init = false;
- }
-
- afe_config->agc_init = false;
- afe_config->memory_alloc_mode = AFE_MEMORY_ALLOC_MORE_PSRAM;
-
-#ifdef CONFIG_USE_DEVICE_AEC
- afe_config->aec_init = true;
- afe_config->vad_init = false;
-#else
- afe_config->aec_init = false;
- afe_config->vad_init = true;
-#endif
-
- afe_iface_ = esp_afe_handle_from_config(afe_config);
- afe_data_ = afe_iface_->create_from_config(afe_config);
-
- xTaskCreate([](void* arg) {
- auto this_ = (AfeAudioProcessor*)arg;
- this_->AudioProcessorTask();
- vTaskDelete(NULL);
- }, "audio_communication", 4096, this, 3, NULL);
-}
-
-AfeAudioProcessor::~AfeAudioProcessor() {
- if (afe_data_ != nullptr) {
- afe_iface_->destroy(afe_data_);
- }
- vEventGroupDelete(event_group_);
-}
-
-size_t AfeAudioProcessor::GetFeedSize() {
- if (afe_data_ == nullptr) {
- return 0;
- }
- return afe_iface_->get_feed_chunksize(afe_data_);
-}
-
-void AfeAudioProcessor::Feed(std::vector&& data) {
- if (afe_data_ == nullptr) {
- return;
- }
- afe_iface_->feed(afe_data_, data.data());
-}
-
-void AfeAudioProcessor::Start() {
- xEventGroupSetBits(event_group_, PROCESSOR_RUNNING);
-}
-
-void AfeAudioProcessor::Stop() {
- xEventGroupClearBits(event_group_, PROCESSOR_RUNNING);
- if (afe_data_ != nullptr) {
- afe_iface_->reset_buffer(afe_data_);
- }
-}
-
-bool AfeAudioProcessor::IsRunning() {
- return xEventGroupGetBits(event_group_) & PROCESSOR_RUNNING;
-}
-
-void AfeAudioProcessor::OnOutput(std::function&& data)> callback) {
- output_callback_ = callback;
-}
-
-void AfeAudioProcessor::OnVadStateChange(std::function callback) {
- vad_state_change_callback_ = callback;
-}
-
-void AfeAudioProcessor::AudioProcessorTask() {
- auto fetch_size = afe_iface_->get_fetch_chunksize(afe_data_);
- auto feed_size = afe_iface_->get_feed_chunksize(afe_data_);
- ESP_LOGI(TAG, "Audio communication task started, feed size: %d fetch size: %d",
- feed_size, fetch_size);
-
- while (true) {
- xEventGroupWaitBits(event_group_, PROCESSOR_RUNNING, pdFALSE, pdTRUE, portMAX_DELAY);
-
- auto res = afe_iface_->fetch_with_delay(afe_data_, portMAX_DELAY);
- if ((xEventGroupGetBits(event_group_) & PROCESSOR_RUNNING) == 0) {
- continue;
- }
- if (res == nullptr || res->ret_value == ESP_FAIL) {
- if (res != nullptr) {
- ESP_LOGI(TAG, "Error code: %d", res->ret_value);
- }
- continue;
- }
-
- // VAD state change
- if (vad_state_change_callback_) {
- if (res->vad_state == VAD_SPEECH && !is_speaking_) {
- is_speaking_ = true;
- vad_state_change_callback_(true);
- } else if (res->vad_state == VAD_SILENCE && is_speaking_) {
- is_speaking_ = false;
- vad_state_change_callback_(false);
- }
- }
-
- if (output_callback_) {
- size_t samples = res->data_size / sizeof(int16_t);
-
- // Add data to buffer
- output_buffer_.insert(output_buffer_.end(), res->data, res->data + samples);
-
- // Output complete frames when buffer has enough data
- while (output_buffer_.size() >= frame_samples_) {
- if (output_buffer_.size() == frame_samples_) {
- // If buffer size equals frame size, move the entire buffer
- output_callback_(std::move(output_buffer_));
- output_buffer_.clear();
- output_buffer_.reserve(frame_samples_);
- } else {
- // If buffer size exceeds frame size, copy one frame and remove it
- output_callback_(std::vector(output_buffer_.begin(), output_buffer_.begin() + frame_samples_));
- output_buffer_.erase(output_buffer_.begin(), output_buffer_.begin() + frame_samples_);
- }
- }
- }
- }
-}
-
-void AfeAudioProcessor::EnableDeviceAec(bool enable) {
- if (enable) {
-#if CONFIG_USE_DEVICE_AEC
- afe_iface_->disable_vad(afe_data_);
- afe_iface_->enable_aec(afe_data_);
-#else
- ESP_LOGE(TAG, "Device AEC is not supported");
-#endif
- } else {
- afe_iface_->disable_aec(afe_data_);
- afe_iface_->enable_vad(afe_data_);
- }
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/afe_audio_processor.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/afe_audio_processor.h
deleted file mode 100644
index 74d7fa40..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/afe_audio_processor.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef AFE_AUDIO_PROCESSOR_H
-#define AFE_AUDIO_PROCESSOR_H
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include "audio_processor.h"
-#include "audio_codec.h"
-
-class AfeAudioProcessor : public AudioProcessor {
-public:
- AfeAudioProcessor();
- ~AfeAudioProcessor();
-
- void Initialize(AudioCodec* codec, int frame_duration_ms, srmodel_list_t* models_list) override;
- void Feed(std::vector&& data) override;
- void Start() override;
- void Stop() override;
- bool IsRunning() override;
- void OnOutput(std::function&& data)> callback) override;
- void OnVadStateChange(std::function callback) override;
- size_t GetFeedSize() override;
- void EnableDeviceAec(bool enable) override;
-
-private:
- EventGroupHandle_t event_group_ = nullptr;
- const esp_afe_sr_iface_t* afe_iface_ = nullptr;
- esp_afe_sr_data_t* afe_data_ = nullptr;
- std::function&& data)> output_callback_;
- std::function vad_state_change_callback_;
- AudioCodec* codec_ = nullptr;
- int frame_samples_ = 0;
- bool is_speaking_ = false;
- std::vector output_buffer_;
-
- void AudioProcessorTask();
-};
-
-#endif
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/audio_debugger.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/audio_debugger.cc
deleted file mode 100644
index 630057cf..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/audio_debugger.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "audio_debugger.h"
-#include "sdkconfig.h"
-
-#if CONFIG_USE_AUDIO_DEBUGGER
-#include
-#include
-#include
-#include
-#include
-#include
-#endif
-
-#define TAG "AudioDebugger"
-
-
-AudioDebugger::AudioDebugger() {
-#if CONFIG_USE_AUDIO_DEBUGGER
- udp_sockfd_ = socket(AF_INET, SOCK_DGRAM, 0);
- if (udp_sockfd_ >= 0) {
- // 解析配置的服务器地址 "IP:PORT"
- std::string server_addr = CONFIG_AUDIO_DEBUG_UDP_SERVER;
- size_t colon_pos = server_addr.find(':');
-
- if (colon_pos != std::string::npos) {
- std::string ip = server_addr.substr(0, colon_pos);
- int port = std::stoi(server_addr.substr(colon_pos + 1));
-
- memset(&udp_server_addr_, 0, sizeof(udp_server_addr_));
- udp_server_addr_.sin_family = AF_INET;
- udp_server_addr_.sin_port = htons(port);
- inet_pton(AF_INET, ip.c_str(), &udp_server_addr_.sin_addr);
-
- ESP_LOGI(TAG, "Initialized server address: %s", CONFIG_AUDIO_DEBUG_UDP_SERVER);
- } else {
- ESP_LOGW(TAG, "Invalid server address: %s, should be IP:PORT", CONFIG_AUDIO_DEBUG_UDP_SERVER);
- close(udp_sockfd_);
- udp_sockfd_ = -1;
- }
- } else {
- ESP_LOGW(TAG, "Failed to create UDP socket: %d", errno);
- }
-#endif
-}
-
-AudioDebugger::~AudioDebugger() {
-#if CONFIG_USE_AUDIO_DEBUGGER
- if (udp_sockfd_ >= 0) {
- close(udp_sockfd_);
- ESP_LOGI(TAG, "Closed UDP socket");
- }
-#endif
-}
-
-void AudioDebugger::Feed(const std::vector& data) {
-#if CONFIG_USE_AUDIO_DEBUGGER
- if (udp_sockfd_ >= 0) {
- ssize_t sent = sendto(udp_sockfd_, data.data(), data.size() * sizeof(int16_t), 0,
- (struct sockaddr*)&udp_server_addr_, sizeof(udp_server_addr_));
- if (sent < 0) {
- ESP_LOGW(TAG, "Failed to send audio data to %s: %d", CONFIG_AUDIO_DEBUG_UDP_SERVER, errno);
- } else {
- ESP_LOGD(TAG, "Sent %d bytes audio data to %s", sent, CONFIG_AUDIO_DEBUG_UDP_SERVER);
- }
- }
-#endif
-}
-
-
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/audio_debugger.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/audio_debugger.h
deleted file mode 100644
index a81336cb..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/audio_debugger.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef AUDIO_DEBUGGER_H
-#define AUDIO_DEBUGGER_H
-
-#include
-#include
-
-#include
-#include
-
-class AudioDebugger {
-public:
- AudioDebugger();
- ~AudioDebugger();
-
- void Feed(const std::vector& data);
-
-private:
- int udp_sockfd_ = -1;
- struct sockaddr_in udp_server_addr_;
-};
-
-#endif
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/no_audio_processor.cc b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/no_audio_processor.cc
deleted file mode 100644
index bac5bad6..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/no_audio_processor.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "no_audio_processor.h"
-#include
-
-#define TAG "NoAudioProcessor"
-
-void NoAudioProcessor::Initialize(AudioCodec* codec, int frame_duration_ms, srmodel_list_t* models_list) {
- codec_ = codec;
- frame_samples_ = frame_duration_ms * 16000 / 1000;
-}
-
-void NoAudioProcessor::Feed(std::vector&& data) {
- if (!is_running_ || !output_callback_) {
- return;
- }
-
- if (codec_->input_channels() == 2) {
- // If input channels is 2, we need to fetch the left channel data
- auto mono_data = std::vector(data.size() / 2);
- for (size_t i = 0, j = 0; i < mono_data.size(); ++i, j += 2) {
- mono_data[i] = data[j];
- }
- output_callback_(std::move(mono_data));
- } else {
- output_callback_(std::move(data));
- }
-}
-
-void NoAudioProcessor::Start() {
- is_running_ = true;
-}
-
-void NoAudioProcessor::Stop() {
- is_running_ = false;
-}
-
-bool NoAudioProcessor::IsRunning() {
- return is_running_;
-}
-
-void NoAudioProcessor::OnOutput(std::function&& data)> callback) {
- output_callback_ = callback;
-}
-
-void NoAudioProcessor::OnVadStateChange(std::function callback) {
- vad_state_change_callback_ = callback;
-}
-
-size_t NoAudioProcessor::GetFeedSize() {
- if (!codec_) {
- return 0;
- }
- return frame_samples_;
-}
-
-void NoAudioProcessor::EnableDeviceAec(bool enable) {
- if (enable) {
- ESP_LOGE(TAG, "Device AEC is not supported");
- }
-}
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/no_audio_processor.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/no_audio_processor.h
deleted file mode 100644
index d326d505..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/processors/no_audio_processor.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef DUMMY_AUDIO_PROCESSOR_H
-#define DUMMY_AUDIO_PROCESSOR_H
-
-#include
-#include
-
-#include "audio_processor.h"
-#include "audio_codec.h"
-
-class NoAudioProcessor : public AudioProcessor {
-public:
- NoAudioProcessor() = default;
- ~NoAudioProcessor() = default;
-
- void Initialize(AudioCodec* codec, int frame_duration_ms, srmodel_list_t* models_list) override;
- void Feed(std::vector&& data) override;
- void Start() override;
- void Stop() override;
- bool IsRunning() override;
- void OnOutput(std::function&& data)> callback) override;
- void OnVadStateChange(std::function callback) override;
- size_t GetFeedSize() override;
- void EnableDeviceAec(bool enable) override;
-
-private:
- AudioCodec* codec_ = nullptr;
- int frame_samples_ = 0;
- std::function&& data)> output_callback_;
- std::function vad_state_change_callback_;
- bool is_running_ = false;
-};
-
-#endif
\ No newline at end of file
diff --git a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/wake_word.h b/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/wake_word.h
deleted file mode 100644
index 9b8986ac..00000000
--- a/examples/xiaozhi/XiaoZhiCode_V2.1.0/main/audio/wake_word.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef WAKE_WORD_H
-#define WAKE_WORD_H
-
-#include
-#include
-#include
-
-#include
-#include "audio_codec.h"
-
-class WakeWord {
-public:
- virtual ~WakeWord() = default;
-
- virtual bool Initialize(AudioCodec* codec, srmodel_list_t* models_list) = 0;
- virtual void Feed(const std::vector