From 2027a6187760ba4fc085c55047aa237fb88fc239 Mon Sep 17 00:00:00 2001 From: Del Wang Date: Thu, 1 Jan 2026 14:29:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E5=B0=8F=E7=88=B1=E9=9F=B3=E7=AE=B1=E7=BB=84?= =?UTF-8?q?=E7=AB=8B=E4=BD=93=E5=A3=B0=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- examples/stereo/README.md | 54 ++++++++++++++++++++++++++- examples/stereo/scripts/boot.sh | 66 +++++++++++++++++++++++++++++++++ examples/stereo/scripts/init.sh | 58 +++++++++++++++++++++++++++++ 4 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 examples/stereo/scripts/boot.sh create mode 100644 examples/stereo/scripts/init.sh diff --git a/README.md b/README.md index 5654663..4e68a2a 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ - 👉 [小爱音箱自定义唤醒词](examples/kws/README.md) - 👉 [小爱音箱接入 MiGPT(完美版)](examples/migpt/README.md) - 👉 [小爱音箱接入 Gemini Live API](examples/gemini/README.md) + - 👉 [小爱音箱组立体声(支持不同型号机型)](examples/stereo/README.md) 以上皆为抛砖引玉,你也可以亲手编写自己想要的功能,一切由你定义! @@ -89,4 +90,4 @@ ## License -[MIT](LICENSE) License © 2024-PRESENT Del Wang +MIT License © 2024-PRESENT [Del Wang](https://del.wang) diff --git a/examples/stereo/README.md b/examples/stereo/README.md index 24b7d12..08b1330 100644 --- a/examples/stereo/README.md +++ b/examples/stereo/README.md @@ -2,6 +2,58 @@ 不同型号的小爱音箱组立体声。 +## 功能 + +- 在小爱音箱上独立运行,无需服务端部署 +- 支持不同型号的小爱音箱局域网组立体声 +- 支持蓝牙播放和小爱音箱自带的音乐播放 +- 支持局域网内主从设备服务发现自动连接 +- 支持主从节点“热拔插”,自动切换声道 +- 支持前向纠错(FEC)和丢包补偿(PLC) + ## 快速开始 -完善中,敬请期待。 \ No newline at end of file +> [!NOTE] +> 以下操作需要先将小爱音箱刷机, 然后 SSH 连接到小爱音箱。👉 [教程](../../docs/flash.md) + +首先,分别在两台设备上配置主从和声道。 + +```shell +# 首先确保配置文件路径存在 +mkdir -p /data/open-xiaoai || true + +# 如果你想让左边的小爱音箱作为主音源 +echo master left > /data/open-xiaoai/stereo.conf # 在左边的小爱音箱上执行 +echo slave right > /data/open-xiaoai/stereo.conf # 在右边的小爱音箱上执行 + +# 如果你想让右边的小爱音箱作为主音源 +# echo master right > /data/open-xiaoai/stereo.conf # 在右边的小爱音箱上执行 +# echo slave left > /data/open-xiaoai/stereo.conf # 在左边的小爱音箱上执行 +``` + +配置完成后,分别在两台设备上运行下面的启动脚本即可。 + +```shell +curl -sSfL https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-stereo/init.sh | sh +``` + +如果你想要开机自启动,运行以下命令重启小爱音箱即可(需要先按上面的步骤配置主从设备和声道)。 + +```shell +# 下载 boot.sh 到 /data/init.sh 开机时自启动 +curl -L -o /data/init.sh https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-stereo/boot.sh + +# 重启小爱音箱 +reboot +``` + +## 注意事项 + +- 不支持同步音量大小(不同型号设备的音量基准不同,请手动调整) +- 不支持多路音频混音(同时播放多个音频听起来像是信号故障、静音卡顿) +- 目前只支持小爱音箱 Pro(LX06)和小米智能音箱 Pro(OH2P)这两个机型(需要刷机) +- 从设备会主动同步主设备的音源,反之不支持(建议禁用从设备的麦克风和操作,防止音频叠加) + +## License + +MIT License © 2024-PRESENT [Del Wang](https://del.wang) diff --git a/examples/stereo/scripts/boot.sh b/examples/stereo/scripts/boot.sh new file mode 100644 index 0000000..55b94e9 --- /dev/null +++ b/examples/stereo/scripts/boot.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +set -eu + +WORK_DIR="/data/open-xiaoai" +APP_BINARY="$WORK_DIR/stereo" +CONFIG_FILE="$WORK_DIR/stereo.conf" +DOWNLOAD_URL="https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-stereo/stereo" + +cat << 'EOF' + +▄▖ ▖▖▘ ▄▖▄▖ +▌▌▛▌█▌▛▌▚▘▌▀▌▛▌▌▌▐ +▙▌▙▌▙▖▌▌▌▌▌█▌▙▌▛▌▟▖ + ▌ - Stereo(立体声) + +v1.0.0 by: https://del.wang + +EOF + +# 等待能够正常访问 baidu.com +while ! ping -c 1 baidu.com > /dev/null 2>&1; do + echo "🤫 等待网络连接中..." + sleep 1 +done + +echo "✅ 网络连接成功" + +main() { + # 1. 确保目录存在 + [ -d "$WORK_DIR" ] || mkdir -p "$WORK_DIR" + + # 2. 检查并下载程序 + if [ ! -f "$APP_BINARY" ]; then + echo "🚀 正在下载 Stereo 立体声程序..." + if ! curl -L -# -f -o "$APP_BINARY" "$DOWNLOAD_URL"; then + echo "❌ 下载失败,请检查网络连接。" + exit 1 + fi + chmod +x "$APP_BINARY" + echo "✅ 程序下载完毕" + fi + + # 3. 如果运行脚本时带了参数,则覆盖更新配置文件 + if [ $# -gt 0 ]; then + echo "$*" > "$CONFIG_FILE" + fi + + # 4. 读取配置 + local ARGS="" + if [ -f "$CONFIG_FILE" ]; then + ARGS=$(cat "$CONFIG_FILE") + fi + + # 5. 停止旧进程 + PID=$(pgrep -f "$APP_BINARY" || true) + if [ -n "$PID" ]; then + kill -9 $PID > /dev/null 2>&1 || true + fi + + # 6. 启动程序 + echo "🔥 Stereo 立体声程序启动中..." + exec "$APP_BINARY" $ARGS +} + +main "$@" \ No newline at end of file diff --git a/examples/stereo/scripts/init.sh b/examples/stereo/scripts/init.sh new file mode 100644 index 0000000..e7c8dcf --- /dev/null +++ b/examples/stereo/scripts/init.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +set -eu + +WORK_DIR="/data/open-xiaoai" +APP_BINARY="$WORK_DIR/stereo" +CONFIG_FILE="$WORK_DIR/stereo.conf" +DOWNLOAD_URL="https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-stereo/stereo" + +cat << 'EOF' + +▄▖ ▖▖▘ ▄▖▄▖ +▌▌▛▌█▌▛▌▚▘▌▀▌▛▌▌▌▐ +▙▌▙▌▙▖▌▌▌▌▌█▌▙▌▛▌▟▖ + ▌ - Stereo(立体声) + +v1.0.0 by: https://del.wang + +EOF + +main() { + # 1. 确保目录存在 + [ -d "$WORK_DIR" ] || mkdir -p "$WORK_DIR" + + # 2. 检查并下载程序 + if [ ! -f "$APP_BINARY" ]; then + echo "🚀 正在下载 Stereo 立体声程序..." + if ! curl -L -# -f -o "$APP_BINARY" "$DOWNLOAD_URL"; then + echo "❌ 下载失败,请检查网络连接。" + exit 1 + fi + chmod +x "$APP_BINARY" + echo "✅ 程序下载完毕" + fi + + # 3. 如果运行脚本时带了参数,则覆盖更新配置文件 + if [ $# -gt 0 ]; then + echo "$*" > "$CONFIG_FILE" + fi + + # 4. 读取配置 + local ARGS="" + if [ -f "$CONFIG_FILE" ]; then + ARGS=$(cat "$CONFIG_FILE") + fi + + # 5. 停止旧进程 + PID=$(pgrep -f "$APP_BINARY" || true) + if [ -n "$PID" ]; then + kill -9 $PID > /dev/null 2>&1 || true + fi + + # 6. 启动程序 + echo "🔥 Stereo 立体声程序启动中..." + exec "$APP_BINARY" $ARGS +} + +main "$@" \ No newline at end of file