运行于Pi4B的Python3版Google Assistant API如何连接蓝牙设备
Raspberry Pi 4B Google Assistant 蓝牙音箱输出优先级修复方案
1 前置设备确认
- 首先运行命令列出所有系统可识别的播放设备,确认蓝牙音箱的硬件标识:
- 通用ALSA设备查询:
aplay -l - PulseAudio 设备查询(树莓派默认桌面版预装):
pactl list short sinks
- 通用ALSA设备查询:
- 从输出结果中找到对应蓝牙音箱的条目,PulseAudio 下蓝牙sink的命名格式一般为
bluez_sink.你的蓝牙MAC地址替换冒号为下划线.a2dp_sink
2 强制修改系统默认播放设备
2.1 PulseAudio 环境(推荐,操作更简单)
- 临时生效测试:运行命令
pactl set-default-sink 你的蓝牙sink名称,测试播放音频确认输出到蓝牙音箱 - 永久生效:编辑
/etc/pulse/default.pa文件,找到set-default-sink相关配置行,修改为:set-default-sink 你的蓝牙sink名称 - 重启PulseAudio服务生效:
pulseaudio -k && pulseaudio --start
2.2 纯ALSA环境
- 编辑当前用户目录下的
.asoundrc配置文件:nano ~/.asoundrc - 填入以下内容,将<蓝牙设备card号>替换为
aplay -l查询到的蓝牙音箱对应card编号:pcm.!default { type hw card <蓝牙设备card号> device 0 } ctl.!default { type hw card <蓝牙设备card号> } - 保存后重启设备生效
3 禁用Blue Yeti的扬声器功能,避免抢占优先级
- 运行
pactl list cards查询到Blue Yeti对应的card名称 - 运行命令修改Blue Yeti的配置为仅输入模式,关闭输出能力:
pactl set-card-profile BlueYeti的card名称 input:analog-stereo - 如需永久生效,将上述命令添加到
/etc/pulse/default.pa文件末尾即可
4 Python 代码层指定输出设备(如果程序不走系统默认配置)
如果Google Assistant的Python代码仍然输出到Blue Yeti,可在代码中硬编码指定蓝牙输出设备:
- 先运行以下脚本获取蓝牙输出设备的pyaudio索引:
import pyaudio p = pyaudio.PyAudio() for i in range(p.get_device_count()): dev = p.get_device_info_by_index(i) if "blue" in dev["name"].lower() or "你的蓝牙音箱名称" in dev["name"]: print(f"蓝牙输出设备ID: {i}, 设备名: {dev['name']}") - 在Google Assistant示例代码的音频流初始化参数中,添加
output_device_index=查询到的ID即可
5 蓝牙自动连接配置
如果重启后蓝牙音箱未自动连接,可进入bluetoothctl命令行设置自动连接:
- 运行
bluetoothctl进入交互界面,依次执行:trust 你的蓝牙音箱MAC地址autoconnect yesquit
内容的提问来源于stack exchange,提问作者Mr. Student.exe
相关产品推荐
相关产品推荐

