diff --git a/README.md b/README.md index 4ff0711..ab7b7f7 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,9 @@ 1. 刷机更新小爱音箱补丁固件,开启并 SSH 连接到小爱音箱 👉 [教程](docs/flash.md) 2. 在你的电脑上编译好 Client 端补丁程序,然后复制到小爱音箱上运行 👉 [教程](packages/client-rust/README.md) 3. 在你的电脑上运行 Server 端演示程序,体验小爱音箱的全新能力 ✨ - - Python Server 演示 👉 [小爱音箱接入小智 AI](packages/server-python/README.md) - - Node.js Server 演示 👉 [小爱音箱接入 MiGPT-Next](packages/server-node/README.md) + - 👉 [小爱音箱接入小智 AI](examples/xiaozhi/README.md) + - 👉 [小爱音箱接入 MiGPT-Next](examples/migpt/README.md) + - 👉 [小爱音箱接入 Gemini Live API](examples/gemini/README.md) 以上皆为抛砖引玉,你也可以亲手编写自己想要的功能,一切由你定义! @@ -66,18 +67,18 @@ 如果你想要了解更多技术细节,下面的链接可能对你有用: -- https://github.com/duhow/xiaoai-patch -- https://github.com/jialeicui/open-lx01 -- https://javabin.cn/2021/xiaoai_fm.html - https://github.com/yihong0618/gitblog/issues/258 +- https://github.com/jialeicui/open-lx01 +- https://github.com/duhow/xiaoai-patch +- https://javabin.cn/2021/xiaoai_fm.html - https://xuanxuanblingbling.github.io/iot/2022/09/16/mi/ ## 免责声明 1. **适用范围** - 本项目为非盈利开源项目,仅限于技术原理研究、安全漏洞验证及非营利性个人使用。严禁用于商业服务、网络攻击、数据窃取、系统破坏等违反《网络安全法》及使用者所在地司法管辖区的法律规定的场景。 + 本项目为开源非营利项目,仅供学术研究或个人测试用途。严禁用于商业服务、网络攻击、数据窃取、系统破坏等违反《网络安全法》及使用者所在地司法管辖区的法律规定的场景。 2. **非官方声明** - 本项目由第三方开发者独立开发,与小米集团及其关联方(下称"权利方")无任何隶属/合作关系,未获其官方授权/认可或技术支持。项目中涉及的商标、固件、云服务的所有权利归属小米集团。若权利方主张权益,使用者应立即主动停止使用并删除本项目。 + 本项目由第三方开发者独立开发,与小米集团及其关联方(下称"权利方")无任何隶属/合作关系,亦未获其官方授权/认可或技术支持。项目中涉及的商标、固件、云服务的所有权利归属小米集团。若权利方主张权益,使用者应立即主动停止使用并删除本项目。 继续下载或运行本项目,即表示您已完整阅读并同意[用户协议](agreement.md),否则请立即终止使用并彻底删除本项目。 diff --git a/agreement.md b/agreement.md index 57097f0..05d6f52 100644 --- a/agreement.md +++ b/agreement.md @@ -4,11 +4,11 @@ ## 授权范围 ​​ -本项目授权范围仅限于技术原理研究、安全漏洞验证及非营利性个人使用。严禁用于商业服务、网络攻击、数据窃取、系统破坏等违反《网络安全法》及使用者所在地司法管辖区的法律规定的场景。 +本项目仅供学术研究或个人测试用途。严禁用于商业服务、网络攻击、数据窃取、系统破坏等违反《网络安全法》及使用者所在地司法管辖区的法律规定的场景。 ## 非官方声明 ​​ -本项目为非盈利开源项目,由第三方开发者独立开发,与小米集团及其关联方(下称"权利方")无任何隶属/合作关系,未获其官方授权/认可或技术支持。项目中涉及的商标、固件、云服务等知识产权均归属权利方所有。若权利方主张权益,用户应立即终止使用并彻底销毁项目副本。 +本项目为开源非营利项目,由第三方开发者独立开发,与小米集团及其关联方(下称"权利方")无任何隶属/合作关系,亦未获其官方授权/认可或技术支持。项目中涉及的商标、固件、云服务等知识产权均归属权利方所有。若权利方主张权益,用户应立即终止使用并彻底销毁项目副本。 ## 风险告知 ​​ diff --git a/examples/gemini-live/.python-version b/examples/gemini/.python-version similarity index 100% rename from examples/gemini-live/.python-version rename to examples/gemini/.python-version diff --git a/examples/gemini-live/Cargo.lock b/examples/gemini/Cargo.lock similarity index 100% rename from examples/gemini-live/Cargo.lock rename to examples/gemini/Cargo.lock diff --git a/examples/gemini-live/Cargo.toml b/examples/gemini/Cargo.toml similarity index 100% rename from examples/gemini-live/Cargo.toml rename to examples/gemini/Cargo.toml diff --git a/examples/gemini-live/README.md b/examples/gemini/README.md similarity index 81% rename from examples/gemini-live/README.md rename to examples/gemini/README.md index 38f63c8..03e7d5d 100644 --- a/examples/gemini-live/README.md +++ b/examples/gemini/README.md @@ -30,4 +30,4 @@ uv run main.py 该演示暂不支持中断 AI 的回复,需要等待 AI 回答完毕后才能重新响应用户的语音输入。 > [!NOTE] -> 本项目只是一个简单的演示程序,抛砖引玉。如果你需要更多的功能,比如唤醒词识别、语音转文字、连续对话等,可以参考开源的 [xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) 项目,借助 Python 丰富的 AI 生态,自行实现想要的功能。 +> 本项目只是一个简单的演示程序,抛砖引玉。如果你想要更多的功能,可以借助 Python 丰富的 AI 生态自行实现。 diff --git a/examples/gemini-live/gemini/__init__.py b/examples/gemini/gemini/__init__.py similarity index 100% rename from examples/gemini-live/gemini/__init__.py rename to examples/gemini/gemini/__init__.py diff --git a/examples/gemini-live/gemini/gemini.py b/examples/gemini/gemini/gemini.py similarity index 100% rename from examples/gemini-live/gemini/gemini.py rename to examples/gemini/gemini/gemini.py diff --git a/examples/gemini-live/gemini/xiaoai.py b/examples/gemini/gemini/xiaoai.py similarity index 100% rename from examples/gemini-live/gemini/xiaoai.py rename to examples/gemini/gemini/xiaoai.py diff --git a/examples/gemini-live/main.py b/examples/gemini/main.py similarity index 100% rename from examples/gemini-live/main.py rename to examples/gemini/main.py diff --git a/examples/gemini-live/pyproject.toml b/examples/gemini/pyproject.toml similarity index 92% rename from examples/gemini-live/pyproject.toml rename to examples/gemini/pyproject.toml index a8bb7ae..fe11bb0 100644 --- a/examples/gemini-live/pyproject.toml +++ b/examples/gemini/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "open-xiaoai-gemini" version = "1.0.0" -description = "小爱音箱接入 Gemini Live" +description = "小爱音箱接入 Gemini Live API" readme = "README.md" requires-python = ">=3.12" dependencies = [ diff --git a/examples/gemini-live/src/lib.rs b/examples/gemini/src/lib.rs similarity index 100% rename from examples/gemini-live/src/lib.rs rename to examples/gemini/src/lib.rs diff --git a/examples/gemini-live/src/macros.rs b/examples/gemini/src/macros.rs similarity index 100% rename from examples/gemini-live/src/macros.rs rename to examples/gemini/src/macros.rs diff --git a/examples/gemini-live/src/python.rs b/examples/gemini/src/python.rs similarity index 100% rename from examples/gemini-live/src/python.rs rename to examples/gemini/src/python.rs diff --git a/examples/gemini-live/src/server.rs b/examples/gemini/src/server.rs similarity index 100% rename from examples/gemini-live/src/server.rs rename to examples/gemini/src/server.rs diff --git a/examples/gemini-live/uv.lock b/examples/gemini/uv.lock similarity index 100% rename from examples/gemini-live/uv.lock rename to examples/gemini/uv.lock diff --git a/packages/server-node/Cargo.lock b/examples/migpt/Cargo.lock similarity index 100% rename from packages/server-node/Cargo.lock rename to examples/migpt/Cargo.lock diff --git a/packages/server-node/Cargo.toml b/examples/migpt/Cargo.toml similarity index 88% rename from packages/server-node/Cargo.toml rename to examples/migpt/Cargo.toml index 96d828d..a7aa9e4 100644 --- a/packages/server-node/Cargo.toml +++ b/examples/migpt/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["cdylib"] [dependencies] neon = { version = "1.1.0-alpha.1", features = ["napi-6", "futures", "tokio"] } -open-xiaoai = { path = "../client-rust" } +open-xiaoai = { path = "../../packages/client-rust" } tokio = { version = "1.32.0", features = ["full"] } tokio-tungstenite = "0.26.2" serde = { version = "1.0", features = ["derive"] } diff --git a/packages/server-node/README.md b/examples/migpt/README.md similarity index 81% rename from packages/server-node/README.md rename to examples/migpt/README.md index b2dc639..58dbbe0 100644 --- a/packages/server-node/README.md +++ b/examples/migpt/README.md @@ -1,4 +1,4 @@ -# Node.js Server +# Open-XiaoAI x MiGPT-Next [Open-XiaoAI](https://github.com/idootop/open-xiaoai) 的 Node.js 版 Server 端,用来演示小爱音箱接入[MiGPT-Next](https://github.com/idootop/migpt-next)。 @@ -12,7 +12,7 @@ ## 编译运行 > [!NOTE] -> 请先确认你已经将小爱音箱刷机成功,并安装运行了 Rust 补丁程序 [👉 教程](../client-rust/README.md) +> 请先确认你已经将小爱音箱刷机成功,并安装运行了 Rust 补丁程序 [👉 教程](../../packages/client-rust/README.md) ```bash # 启用 PNPM 包管理工具 @@ -60,7 +60,7 @@ main(); 1. 默认 Server 服务端口为 `4399`(比如 ws://192.168.31.227:4399),运行前请确保该端口未被其他程序占用。 2. 默认 Rust Server 在启动时,并没有开启小爱音箱的录音能力。 -如果你需要在 Node.js 端正常接收音频输入流,或者播放音频输出流,请将 `src/server.rs` 文件中被注释掉的 `start_recording` 和 `start_play` 代码加回来,然后重新编译运行。 + 如果你需要在 Node.js 端正常接收音频输入流,或者播放音频输出流,请将 `src/server.rs` 文件中被注释掉的 `start_recording` 和 `start_play` 代码加回来,然后重新编译运行。 > [!NOTE] -> 本项目只是一个简单的演示程序,抛砖引玉。如果你需要更多的功能,比如唤醒词识别、语音转文字、连续对话等(甚至是对接 OpenAI 的 [Realtime API](https://platform.openai.com/docs/guides/realtime)),可参考本项目代码,自行实现想要的功能。 +> 本项目只是一个简单的演示程序,抛砖引玉。如果你想要更多的功能,比如唤醒词识别、语音转文字、连续对话等(甚至是对接 OpenAI 的 [Realtime API](https://platform.openai.com/docs/guides/realtime)),可参考本项目代码自行实现。 diff --git a/packages/server-node/migpt/index.ts b/examples/migpt/migpt/index.ts similarity index 100% rename from packages/server-node/migpt/index.ts rename to examples/migpt/migpt/index.ts diff --git a/packages/server-node/migpt/open-xiaoai.ts b/examples/migpt/migpt/open-xiaoai.ts similarity index 100% rename from packages/server-node/migpt/open-xiaoai.ts rename to examples/migpt/migpt/open-xiaoai.ts diff --git a/packages/server-node/migpt/speaker.ts b/examples/migpt/migpt/speaker.ts similarity index 100% rename from packages/server-node/migpt/speaker.ts rename to examples/migpt/migpt/speaker.ts diff --git a/packages/server-node/migpt/xiaoai.ts b/examples/migpt/migpt/xiaoai.ts similarity index 100% rename from packages/server-node/migpt/xiaoai.ts rename to examples/migpt/migpt/xiaoai.ts diff --git a/packages/server-node/package.json b/examples/migpt/package.json similarity index 89% rename from packages/server-node/package.json rename to examples/migpt/package.json index a98e8e2..1b5e733 100644 --- a/packages/server-node/package.json +++ b/examples/migpt/package.json @@ -1,6 +1,7 @@ { - "name": "open-xiaoai-node", + "name": "open-xiaoai-migpt", "version": "1.0.0", + "description": "小爱音箱接入 MiGPT-Next", "private": true, "type": "module", "scripts": { diff --git a/packages/server-node/pnpm-lock.yaml b/examples/migpt/pnpm-lock.yaml similarity index 100% rename from packages/server-node/pnpm-lock.yaml rename to examples/migpt/pnpm-lock.yaml diff --git a/packages/server-node/src/lib.rs b/examples/migpt/src/lib.rs similarity index 100% rename from packages/server-node/src/lib.rs rename to examples/migpt/src/lib.rs diff --git a/packages/server-node/src/node.rs b/examples/migpt/src/node.rs similarity index 100% rename from packages/server-node/src/node.rs rename to examples/migpt/src/node.rs diff --git a/packages/server-node/src/runtime.rs b/examples/migpt/src/runtime.rs similarity index 100% rename from packages/server-node/src/runtime.rs rename to examples/migpt/src/runtime.rs diff --git a/packages/server-node/src/server.rs b/examples/migpt/src/server.rs similarity index 100% rename from packages/server-node/src/server.rs rename to examples/migpt/src/server.rs diff --git a/packages/server-node/tsconfig.json b/examples/migpt/tsconfig.json similarity index 100% rename from packages/server-node/tsconfig.json rename to examples/migpt/tsconfig.json diff --git a/packages/server-python/.python-version b/examples/xiaozhi/.python-version similarity index 100% rename from packages/server-python/.python-version rename to examples/xiaozhi/.python-version diff --git a/packages/server-python/Cargo.lock b/examples/xiaozhi/Cargo.lock similarity index 100% rename from packages/server-python/Cargo.lock rename to examples/xiaozhi/Cargo.lock diff --git a/packages/server-python/Cargo.toml b/examples/xiaozhi/Cargo.toml similarity index 89% rename from packages/server-python/Cargo.toml rename to examples/xiaozhi/Cargo.toml index 710e156..cb669da 100644 --- a/packages/server-python/Cargo.toml +++ b/examples/xiaozhi/Cargo.toml @@ -13,7 +13,7 @@ pyo3-async-runtimes = { version = "0.24", features = [ "attributes", "tokio-runtime", ] } -open-xiaoai = { path = "../client-rust" } +open-xiaoai = { path = "../../packages/client-rust" } tokio = { version = "1.32.0", features = ["full"] } tokio-tungstenite = "0.26.2" serde = { version = "1.0", features = ["derive"] } diff --git a/packages/server-python/README.md b/examples/xiaozhi/README.md similarity index 78% rename from packages/server-python/README.md rename to examples/xiaozhi/README.md index 16b1c87..eaae423 100644 --- a/packages/server-python/README.md +++ b/examples/xiaozhi/README.md @@ -1,4 +1,4 @@ -# Python Server +# Open-XiaoAI x 小智 AI [Open-XiaoAI](https://github.com/idootop/open-xiaoai) 的 Python 版 Server 端,用来演示小爱音箱接入[小智 AI](https://github.com/78/xiaozhi-esp32)。 @@ -17,7 +17,7 @@ ## 编译运行 > [!NOTE] -> 请先确认你已经将小爱音箱刷机成功,并安装运行了 Rust 补丁程序 [👉 教程](../client-rust/README.md),否则该 Python Server 端启动后收不到音频输入,将无法正常工作。 +> 请先确认你已经将小爱音箱刷机成功,并安装运行了 Rust 补丁程序 [👉 教程](../../packages/client-rust/README.md),否则该 Python Server 端启动后收不到音频输入,将无法正常工作。 ```bash # 安装 Python 依赖 @@ -42,4 +42,4 @@ uv run main.py --mode xiaozhi 请按照提示注册你的小智 AI 账号,然后创建 Agent 绑定设备即可开始体验。 > [!NOTE] -> 本项目只是一个简单的演示程序,抛砖引玉。如果你需要更多的功能,比如唤醒词识别、语音转文字、连续对话等,可以参考开源的 [xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) 项目,借助 Python 丰富的 AI 生态,自行实现想要的功能。 +> 本项目只是一个简单的演示程序,抛砖引玉。如果你想要更多的功能,比如唤醒词识别、语音转文字、连续对话等,可以参考开源的 [xiaozhi-esp32-server](https://github.com/xinnan-tech/xiaozhi-esp32-server) 项目,借助 Python 丰富的 AI 生态自行实现。 diff --git a/packages/server-python/main.py b/examples/xiaozhi/main.py similarity index 100% rename from packages/server-python/main.py rename to examples/xiaozhi/main.py diff --git a/packages/server-python/pyproject.toml b/examples/xiaozhi/pyproject.toml similarity index 95% rename from packages/server-python/pyproject.toml rename to examples/xiaozhi/pyproject.toml index b001514..5a8bb42 100644 --- a/packages/server-python/pyproject.toml +++ b/examples/xiaozhi/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "open-xiaoai-python" +name = "open-xiaoai-xiaozhi" version = "1.0.0" description = "小爱音箱接入小智 AI" readme = "README.md" diff --git a/packages/server-python/src/lib.rs b/examples/xiaozhi/src/lib.rs similarity index 100% rename from packages/server-python/src/lib.rs rename to examples/xiaozhi/src/lib.rs diff --git a/packages/server-python/src/macros.rs b/examples/xiaozhi/src/macros.rs similarity index 100% rename from packages/server-python/src/macros.rs rename to examples/xiaozhi/src/macros.rs diff --git a/packages/server-python/src/python.rs b/examples/xiaozhi/src/python.rs similarity index 100% rename from packages/server-python/src/python.rs rename to examples/xiaozhi/src/python.rs diff --git a/packages/server-python/src/server.rs b/examples/xiaozhi/src/server.rs similarity index 100% rename from packages/server-python/src/server.rs rename to examples/xiaozhi/src/server.rs diff --git a/packages/server-python/uv.lock b/examples/xiaozhi/uv.lock similarity index 99% rename from packages/server-python/uv.lock rename to examples/xiaozhi/uv.lock index 18ee57e..a9b1aa9 100644 --- a/packages/server-python/uv.lock +++ b/examples/xiaozhi/uv.lock @@ -191,7 +191,7 @@ wheels = [ ] [[package]] -name = "open-xiaoai-python" +name = "open-xiaoai-xiaozhi" version = "1.0.0" source = { editable = "." } dependencies = [ diff --git a/packages/server-python/xiaozhi/services/audio/codec.py b/examples/xiaozhi/xiaozhi/services/audio/codec.py similarity index 100% rename from packages/server-python/xiaozhi/services/audio/codec.py rename to examples/xiaozhi/xiaozhi/services/audio/codec.py diff --git a/packages/server-python/xiaozhi/services/audio/opus.dll b/examples/xiaozhi/xiaozhi/services/audio/opus.dll similarity index 100% rename from packages/server-python/xiaozhi/services/audio/opus.dll rename to examples/xiaozhi/xiaozhi/services/audio/opus.dll diff --git a/packages/server-python/xiaozhi/services/audio/setup.py b/examples/xiaozhi/xiaozhi/services/audio/setup.py similarity index 100% rename from packages/server-python/xiaozhi/services/audio/setup.py rename to examples/xiaozhi/xiaozhi/services/audio/setup.py diff --git a/packages/server-python/xiaozhi/services/audio/stream.py b/examples/xiaozhi/xiaozhi/services/audio/stream.py similarity index 100% rename from packages/server-python/xiaozhi/services/audio/stream.py rename to examples/xiaozhi/xiaozhi/services/audio/stream.py diff --git a/packages/server-python/xiaozhi/services/display/base_display.py b/examples/xiaozhi/xiaozhi/services/display/base_display.py similarity index 100% rename from packages/server-python/xiaozhi/services/display/base_display.py rename to examples/xiaozhi/xiaozhi/services/display/base_display.py diff --git a/packages/server-python/xiaozhi/services/display/gui_display.py b/examples/xiaozhi/xiaozhi/services/display/gui_display.py similarity index 100% rename from packages/server-python/xiaozhi/services/display/gui_display.py rename to examples/xiaozhi/xiaozhi/services/display/gui_display.py diff --git a/packages/server-python/xiaozhi/services/protocols/protocol.py b/examples/xiaozhi/xiaozhi/services/protocols/protocol.py similarity index 100% rename from packages/server-python/xiaozhi/services/protocols/protocol.py rename to examples/xiaozhi/xiaozhi/services/protocols/protocol.py diff --git a/packages/server-python/xiaozhi/services/protocols/typing.py b/examples/xiaozhi/xiaozhi/services/protocols/typing.py similarity index 100% rename from packages/server-python/xiaozhi/services/protocols/typing.py rename to examples/xiaozhi/xiaozhi/services/protocols/typing.py diff --git a/packages/server-python/xiaozhi/services/protocols/websocket_protocol.py b/examples/xiaozhi/xiaozhi/services/protocols/websocket_protocol.py similarity index 100% rename from packages/server-python/xiaozhi/services/protocols/websocket_protocol.py rename to examples/xiaozhi/xiaozhi/services/protocols/websocket_protocol.py diff --git a/packages/server-python/xiaozhi/utils/config_manager.py b/examples/xiaozhi/xiaozhi/utils/config_manager.py similarity index 100% rename from packages/server-python/xiaozhi/utils/config_manager.py rename to examples/xiaozhi/xiaozhi/utils/config_manager.py diff --git a/packages/server-python/xiaozhi/utils/logging_config.py b/examples/xiaozhi/xiaozhi/utils/logging_config.py similarity index 100% rename from packages/server-python/xiaozhi/utils/logging_config.py rename to examples/xiaozhi/xiaozhi/utils/logging_config.py diff --git a/packages/server-python/xiaozhi/xiaoai.py b/examples/xiaozhi/xiaozhi/xiaoai.py similarity index 100% rename from packages/server-python/xiaozhi/xiaoai.py rename to examples/xiaozhi/xiaozhi/xiaoai.py diff --git a/packages/server-python/xiaozhi/xiaozhi.py b/examples/xiaozhi/xiaozhi/xiaozhi.py similarity index 100% rename from packages/server-python/xiaozhi/xiaozhi.py rename to examples/xiaozhi/xiaozhi/xiaozhi.py