使用 ESP32 模拟蓝牙 HFP Audio Gateway,让问界 M9 车机完成配对、通话控制、麦克风录音和电话语音播放;Mac 通过 USB-UART 运行本地调试台和可选 AI 处理流程。
问界 M9 车机
<-> Bluetooth Classic HFP / SCO
<-> ESP32
<-> USB-UART(921600 baud,8 kHz 单声道 PCM)
<-> macOS 调试台
固件还提供 PBAP 通讯录、模拟来电、原号码回拨和每通电话独立会话记录。
- 原版 ESP32,已验证 ESP32-WROOM-32D 4 MB Flash
- 支持 921600 baud 的 USB-UART 和数据线
- macOS
- ESP-IDF v6.0.2
- Python 3.9 至 3.12
- Node.js,仅用于前端语法检查
ESP32-S3、ESP32-C3 等不支持 Bluetooth Classic 的芯片不能运行本项目。
mkdir -p .deps
git clone --branch v6.0.2 --recursive \
https://github.com/espressif/esp-idf.git .deps/esp-idf-v6.0.2
IDF_TOOLS_PATH="$PWD/.deps/espressif-tools" \
.deps/esp-idf-v6.0.2/install.sh esp32
./tools/idf.sh audio_bridge build
./tools/idf.sh audio_bridge -p /dev/cu.usbserial-0001 flash./tools/build-mac-helpers.sh
python3 mac/recorder_web.py \
--serial-port /dev/cu.usbserial-0001 \
--no-auto-wait浏览器打开 http://127.0.0.1:8765,进入配对模式后在车机中连接 ESP32_CALL_BRIDGE。
可选 AI 流程为:车机录音 -> 微信输入法转写 -> Codex -> MiniMax TTS -> 原号码回拨。该流程还需要 BlackHole 2ch、FFmpeg、Codex、微信输入法和 MiniMax 配置;环境变量示例见 mac/minimax.env.example。
PYTHONPYCACHEPREFIX=/private/tmp/m9-call-bridge-pycache \
python3.12 -m unittest discover -s mac -p 'test_*.py'
node --check mac/web/app.jsHFP、SCO、串口音频和回拨仍需使用真实 ESP32 与问界 M9 验证。
firmware/audio_bridge/:ESP32 HFP、SCO、PBAP 和串口音频固件mac/:本地网页、录音、转写、Codex、TTS 和回拨逻辑protocol/:USB-UART 音频帧协议tools/:ESP-IDF 与 macOS 辅助程序构建脚本
固件起始于 ESP-IDF v6.0.2 HFP Audio Gateway 示例,并增加了车机连接、串口音频、PBAP 和通话控制。来源、许可证及其他外部依赖见 firmware/audio_bridge/UPSTREAM.md 和 THIRD_PARTY_NOTICES.md。
本项目用于开发测试,不应替代紧急呼叫或安全关键车载通信系统。