开机自启: 链路靠 PipeWire 自动加载 conf(不需要服务); 面板加 systemd --user 服务 collaplex-audio-panel.service(start 时自动装并 enable, Restart=no); 修 stop 漏杀按相对路径起的面板进程(端口被占导致新服务起不来); 打包带上 systemd/; README 加自启段 + 进程匹配要按后段的坑

This commit is contained in:
lou
2026-09-19 20:48:47 +08:00
parent 3aa10897ba
commit 43919f5f97
5 changed files with 52 additions and 3 deletions
+19
View File
@@ -63,6 +63,22 @@ collaplex-audio web # 面板: 起控制面板并打开浏览器
`WET=0.4 bash 脚本/安装.sh` 可指定初始湿量(默认 0.3)。
面板端口可换: `WEB_PORT=8899 collaplex-audio web`
### 开机自启
**链路不需要服务** —— 4 份 conf 部署在 `~/.config/pipewire/pipewire.conf.d/`, PipeWire 一起来
就自动加载, 虚拟节点与 DSP 进程跟着起; 默认输出由 WirePlumber 记忆, 开机仍是 `collaplex_vsink`
所以 `start` 跑过一次就长期有效。
**面板**用 systemd 用户服务 `collaplex-audio-panel.service` 自启(登录即起, `Restart=no`),
`start` 时会自动装上并 enable。不要了:
```sh
systemctl --user disable --now collaplex-audio-panel.service # 取消自启并停掉面板
collaplex-audio stop # 连链路一起还原成系统默认输出
```
音频设备与 PipeWire 都是**用户级**的, 所以"开机自启"实际是**登录自启**。
## 控制面板
`collaplex-audio web` → http://127.0.0.1:8789
@@ -125,6 +141,8 @@ collaplex-audio web # 面板: 起控制面板并打开浏览器
- **峰值相关的失真, 纯音测不出来** —— 纯音峰值因子仅 3 dB, 音乐是 10~14 dB。
必须用高峰值因子素材测, 见 `测试/test_limit.py`
- **改完 `watchdog` / 常驻脚本要重启巡检** —— 旧定义还在内存里按旧参数拉服务。
- **按命令行找进程要按"后段"匹配** —— 面板若用相对路径起过(`.venv/bin/python web/server.py`),
只匹配绝对路径会漏杀 → 端口被占、新服务起不来。写 `*web/server.py*` 这种够特异的后段。
- 清进程时匹配串要够特异: 写 `*dsp/eq.py*` 会匹配到**自己的命令行**而自杀,
至少写成 `*python*dsp/eq.py*`
- **房间 IR 当混响用之前, 必须清掉里面的直达声 / 传播延迟** —— 否则就是**回声**。
@@ -197,4 +215,5 @@ uv run --with websocket-client python 测试/cdp_拖动验证.py # CDP 真鼠
| `hrir/` `reverb/` | HRIR(12 条)与房间 IR |
| `脚本/安装.sh` `脚本/面板.sh` | 部署 / 起面板 |
| `打包deb.sh` | 打 deb 到 `发布/` |
| `systemd/collaplex-audio-panel.service` | 面板自启模板(`start` 时装到 `~/.config/systemd/user/`) |
| `工具/重做混响IR.py` | 剪掉房间 IR 的直达声(裁静音 + 渐入), 原文件备份 `.orig.wav` |
+2 -1
View File
@@ -39,7 +39,8 @@ stop)
rm -f "$CONF_DIR/10-collaplex-vsink.conf" "$CONF_DIR/20-collaplex-hrtf.conf" \
"$CONF_DIR/30-collaplex-eq.conf" "$CONF_DIR/91-clock.conf"
for pid in $(pids "$ROOT/dsp/"); do kill "$pid" 2>/dev/null || true; done
for pid in $(pids "$ROOT/web/server.py"); do kill "$pid" 2>/dev/null || true; done
# 面板按相对路径起过(如 .venv/bin/python web/server.py), 只匹配绝对路径会漏, 用后段匹配
for pid in $(pids "web/server.py"); do kill "$pid" 2>/dev/null || true; done
rm -f /dev/shm/collaplex-eq /dev/shm/collaplex-loudness
rm -f /dev/shm/collaplex-eq.lock /dev/shm/collaplex-loudness.lock
systemctl --user restart pipewire pipewire-pulse wireplumber
+15
View File
@@ -0,0 +1,15 @@
[Unit]
Description=Collaplex 音效 控制面板 (http://127.0.0.1:8789)
Documentation=http://127.0.0.1:8789
After=pipewire.service
Wants=pipewire.service
[Service]
Type=simple
Environment=PYTHONPATH=__ROOT__
ExecStart=__PY__ __ROOT__/web/server.py __PORT__
Restart=no
StandardOutput=null
[Install]
WantedBy=default.target
+1 -2
View File
@@ -22,7 +22,7 @@ rm -rf "$STAGE"
mkdir -p "$STAGE/DEBIAN" "$STAGE/usr/share/collaplex-audio" "$STAGE/usr/bin"
# ---- 源码 ----
for d in dsp bin pipewire web hrir reverb 脚本; do
for d in dsp bin pipewire web hrir reverb 脚本 systemd; do
cp -a "$ROOT/$d" "$STAGE/usr/share/collaplex-audio/"
done
cp "$ROOT/README.md" "$STAGE/usr/share/collaplex-audio/"
@@ -43,7 +43,6 @@ Architecture: all
Maintainer: Collaplex <collaplex@localhost>
Installed-Size: ${SIZE}
Depends: python3 (>= 3.10), python3-numpy, python3-scipy, pipewire, wireplumber
Recommends: google-chrome | chromium
Section: sound
Priority: optional
Description: Collaplex 音效 — 全局音频的响度归一化 + 双耳 HRTF + 32 段 EQ + 房间混响
+15
View File
@@ -107,3 +107,18 @@ for p in /proc/[0-9]*; do
done
echo "湿量进程数: $w (应为 2)"
echo -n "默认输出: "; wpctl inspect @DEFAULT_SINK@ 2>/dev/null | grep -m1 "node.name" | sed 's/.*= //'
# ---- 5. 面板自启(systemd --user, 登录即起) ----
# 链路本身不需要服务: conf 在 ~/.config/pipewire/pipewire.conf.d/, PipeWire 起来就自动加载。
UNIT_DIR="$HOME/.config/systemd/user"
mkdir -p "$UNIT_DIR"
sed -e "s|__ROOT__|$ROOT|g" -e "s|__PY__|$PY|g" -e "s|__PORT__|8789|g" \
"$ROOT/systemd/collaplex-audio-panel.service" > "$UNIT_DIR/collaplex-audio-panel.service"
if command -v systemctl >/dev/null 2>&1; then
systemctl --user daemon-reload 2>/dev/null || true
if systemctl --user enable --now collaplex-audio-panel.service 2>/dev/null; then
echo "面板服务: 已启用(登录自启) http://127.0.0.1:8789"
else
echo "面板服务: 未能启用(可手动 collaplex-audio web)"
fi
fi