主题
树莓派实时变声复现
本指南记录 Convbased 树莓派蓝牙通话设备的公开参考实现。在已验证的参考组合中,手机把树莓派识别为 Convbased Mic;本地用户通过 USB 耳机通话,远端收到转换后的声音。
复现边界
本文公开树莓派客户端、USB 音频、PipeWire、BlueZ HFP 和系统服务的复现方法。云端推理、计费、内部端点与服务部署不在范围内。
复现需要有效的 Convbased API Key、可访问的模型和可用余额。客户端源码采用 MIT 许可证。
音频路径如下:
text
USB 耳机麦克风 -> 树莓派客户端 -> Convbased 实时服务 -> 手机通话上行
手机通话下行 -> 树莓派 -> USB 耳机播放该参考配置只启用蓝牙通话音频链路,不配置普通媒体播放。
已验证平台
以下组合于 2026-07-15 完成实机验证。其他组合需要独立记录结果。
| 层 | 已验证值 |
|---|---|
| 计算机 | Raspberry Pi 4 Model B Rev 1.5 |
| 系统 | Debian 13,arm64 |
| 内核 | 6.12.75+rpt-rpi-v8 |
| Node.js / npm | 20.20.2 / 10.8.2 |
| 蓝牙 | BlueZ 5.82 |
| 音频 | PipeWire 1.4.2、WirePlumber 0.5.8 |
| 本地耳机 | USB Composite Device |
| 手机 | OPPO Find X8,Android |
| 网络 | 有线局域网,可访问 Convbased HTTPS、WSS 与 TURN 端点 |
还需要稳定电源和一副同时提供录音、播放设备的 USB 耳机。参考验收使用有线网络;Pi 4 的蓝牙与 2.4 GHz Wi-Fi 共用无线资源,改用 Wi-Fi 时应另行记录网络条件与结果。
获取源码
源码位于公开的 convbased-sdk 仓库。本页对应当前公开快照,复现时固定提交而不是分支名:
bash
git clone https://github.com/Convbased/convbased-sdk.git ~/convbased-sdk
cd ~/convbased-sdk
git checkout e24c99f1e44e863e4024407a026ea30336d339df
git rev-parse HEAD复现报告必须写提交哈希;分支名会移动,不能作为证据。
安装
安装脚本以已验证的 64 位 Debian 13 为参考;同代 Raspberry Pi OS 尚未纳入当前实机验证矩阵。先审阅脚本,再执行:
bash
cd ~/convbased-sdk/integrations/raspberry-pi/bluetooth-mic
less setup.sh
./setup.sh脚本会使用 sudo 安装 ALSA、BlueZ、PipeWire、WirePlumber 和 Python D-Bus 依赖,安装 Node.js 20(缺少时),构建 SDK,并配置 systemd、udev、PipeWire 与 WirePlumber。脚本可重复执行,并保留已有凭据文件。
配置
先确认 USB 麦克风的稳定 CARD= 名称:
bash
arecord -l编辑安装脚本创建的私有配置文件:
bash
nano ~/convbased-bt/convbased-app.env
chmod 600 ~/convbased-bt/convbased-app.env最小配置:
dotenv
OUTPUT=pipewire
PW_TARGET=convbased_out
MIC_DEVICE=plughw:CARD=Device,DEV=0
RATE=48000
PROFILE_POLL_MS=20000
WEBUI_PORT=0
API_KEY=replace_me
MODEL_ID=model_xxxAPI_KEY 使用专属于该设备的 Key。MIC_DEVICE 必须与 arecord -l 一致。MODEL_ID 是控制台未绑定模型时的后备值。PROFILE_POLL_MS 必须大于零,设备才能在停止实时服务后继续接收重新开启指令。
本指南关闭本地状态页。开发时如需启用,只绑定本机并设置随机令牌:
dotenv
WEBUI_PORT=8080
WEBUI_HOST=127.0.0.1
WEBUI_TOKEN=replace_with_random_token不要把真实凭据写入命令行、仓库、截图或工单。
启动服务
bash
systemctl --user enable --now convbased-app.service
systemctl --user is-active convbased-app convbased-link convbased-btagent
sudo systemctl is-active convbased-btclass convbased-bt-recover五项结果都应为 active。配置或凭据错误时,应用会停止重试;修正配置后手动重启:
bash
systemctl --user restart convbased-app.service配对手机
配对窗口默认开放五分钟:
bash
systemctl --user restart convbased-btagent.service在手机上选择 Convbased Mic,启用“通话音频”或“电话”。该参考配置使用 Just Works;已验证组合未要求输入 PIN。
若手机提示 PIN 或配对密钥错误,先在手机端忽略设备,再清除树莓派上的旧记录并重试:
bash
bluetoothctl devices
bluetoothctl remove <PHONE_MAC>
systemctl --user restart convbased-btagent.service只在可控环境中开放配对窗口。无 PIN 配对确认的是物理邻近,不是设备身份。
首次通话
- 在 Convbased 控制台为该 API Key 选择模型,并打开“实时服务”。
- 等待设备连接;客户端默认每 20 秒轮询一次配置,实际同步时间还受网络与服务状态影响。
- 发起蜂窝通话或支持 HFP/HSP 的 VoIP 通话,选择 Convbased Mic。
- 对着 USB 耳机麦克风说话。USB 耳机播放本地通话声音;远端应只听到转换后的声音。
客户端在成功拉取新配置后处理变化:模型变化触发重连,参数变化发送在线更新。关闭“实时服务”后,设备在下一次成功轮询后开始断开并只保留配置轮询;实时连接清理时触发最终结算流程。
继续执行验证与排障,再把复现结果用于发布或兼容性声明。