You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

  1. 卸载现有PyAudio
pip uninstall -y pyaudio
  1. 通过Homebrew安装适配M1的PortAudio音频库
brew install portaudio
  1. 指定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支持更完善,可直接替换实现麦克风输入功能:

  1. 安装SoundDevice
pip install sounddevice
  1. 替代代码示例(实现相同麦克风流逻辑)
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:40:49