非常清楚,以下是你现在的状态与我们要做的下一步判断和操作。
✅ 你当前的情况总结:
-
✅ 系统已检测到麦克风设备(
alsa_input.pci-0000...
) -
✅ 你不是在 conda 环境中(所以
$CONDA_PREFIX
是空的) -
✅ 之前
pyaudio
是可以列出设备的(例如pulse
、default
) -
❌ 现在即使退出 conda 环境,运行
pyaudio.PyAudio()
也直接崩溃
❗你的目标
✅ 我希望恢复到在系统原生环境中运行 Python,
pyaudio
能成功列出设备(pulse/default/hdmi)的状态。
✅ 下一步建议
你当前不在 conda 环境中,所以我们只需要 修复系统环境的 PortAudio 和 PyAudio 依赖关系,步骤如下:
✅【步骤一】清除旧的 PyAudio 并重新安装(系统 Python)
sudo apt purge python3-pyaudio
pip3 uninstall pyaudio -y
然后:
sudo apt install portaudio19-dev
pip3 install pyaudio --force-reinstall
✅【步骤二】验证是否恢复设备列表
然后运行你这段测试代码:
import pyaudio
p = pyaudio.PyAudio()
print("所有音频设备列表:")
for i in range(p.get_device_count()):
info = p.get_device_info_by_index(i)
name = info['name']
max_input = info['maxInputChannels']
max_output = info['maxOutputChannels']
print(f"设备ID {i}: {name}, 输入通道数: {max_input}, 输出通道数: {max_output}")
p.terminate()
命令行中运行:
python3 mic_test.py
🔍 如果你还想确认 PyAudio 是用的系统的 PortAudio,可以运行:
ldd $(python3 -c "import pyaudio; print(pyaudio.__file__)")
你应该看到它链接的是 /usr/lib/x86_64-linux-gnu/libportaudio.so
而不是 conda 里的。
✅ 最终目标
如果你看到这样的输出:
设备ID 6: pulse, 输入通道数: 32, 输出通道数: 32
设备ID 7: default, 输入通道数: 32, 输出通道数: 32
说明你已经完全恢复成功!
📌 注意:
这个过程完全是在系统环境下,不需要 Conda!
接下来你可以选择:
-
如果你不再依赖 qt5env,你可以把项目部署在系统环境中。
-
如果你仍然需要 Qt5 和 PyQt 功能,那我可以帮你复制系统 PyAudio 到 qt5env 中用,确保两边都能用。
是否要我继续帮你做这一步:将系统 PyAudio 能正常运行的配置,复制到 qt5env 环境中?只需回复 “需要”,我立刻给你。