M1 MacBook Pro使用pyaudio调用麦克风录音遇OSError问题求助
解决M1 MacBook Pro上PyAudio麦克风输入流OSError问题
问题概述
在M1 MacBook Pro上使用PyAudio获取麦克风输入流时,触发OSError: [Errno -9999] Unanticipated host error,错误日志包含||PaMacCore (AUHAL)|| AUHAL component not found,尝试内置、外置麦克风均出现该问题。
原因分析
官方PyAudio包对Apple Silicon架构(M1/M2系列)兼容性不足,无法正确调用系统音频组件AUHAL。
解决方案
方案1:编译安装适配M1的PyAudio
- 卸载现有PyAudio
pip uninstall -y pyaudio
- 通过Homebrew安装适配M1的PortAudio音频库
brew install portaudio
- 指定PortAudio路径编译安装PyAudio
pip install --global-option='build_ext' --global-option='-I/opt/homebrew/include' --global-option='-L/opt/homebrew/lib' pyaudio
方案2:用SoundDevice替代PyAudio
SoundDevice对Apple Silicon支持更完善,可直接替换实现麦克风输入功能:
- 安装SoundDevice
pip install sounddevice
- 替代代码示例(实现相同麦克风流逻辑)
import sounddevice as sd import numpy as np FORMAT = 'int16' CHANNELS = 1 RATE = 44100 FRAME_DURATION = 30 CHUNK = int(RATE * FRAME_DURATION / 1000) RECORD_SECONDS = 50 # 音频回调处理函数 def audio_callback(indata, frames, time, status): if status: print(status) # 这里添加对输入音频数据(indata为numpy数组)的处理逻辑 pass # 打开麦克风流 stream = sd.InputStream( device=2, # 替换为你的目标麦克风设备索引 samplerate=RATE, channels=CHANNELS, dtype=FORMAT, blocksize=CHUNK, callback=audio_callback ) # 启动流并录制指定时长 with stream: sd.sleep(int(RECORD_SECONDS * 1000))
方案3:检查麦克风权限
确保运行代码的Python环境已获得麦克风访问权限:
- 打开「系统设置」→「隐私与安全性」→「麦克风」
- 找到对应的Python环境(如miniforge的python程序),勾选允许访问麦克风
内容的提问来源于stack exchange,提问作者Mohit
相关产品推荐
相关产品推荐

