PyAudio не может открыть поток на macOS 11.1

Я пытаюсь записать вывод динамика с помощью PyAudio. У меня установлен BackgroundMusic, который утверждает, что позволяет записывать вывод системы. Я не думаю, что это проблема, но я могу ошибаться.

Код

import pyaudio

p = pyaudio.PyAudio()

stream = p.open(
    format=pyAudio.paInt16, 
    channels=1, 
    rate=44100, 
    input=True, 
    frames_per_buffer=2048
)

# code to do stuff with stream.read(), not relevant here

Ошибка

||PaMacCore (AUHAL)|| AUHAL component not found.Traceback (most recent call last):
  File ".../script.py", line 5, in <module>
    stream = p.open(
  File "/opt/homebrew/lib/python3.9/site-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9999] Unanticipated host error

Некоторая системная информация

$ brew config
HOMEBREW_VERSION: 2.7.2
...
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 12.0 build 1200
macOS: 11.1-arm64
CLT: 12.3.0.0.1.1607026830
Xcode: 12.3
Rosetta 2: false

$ brew info python
[email protected]: stable 3.9.1 (bottled)
...

$ brew info portaudio
portaudio: stable 19.6.0 (bottled), HEAD
...

$ pip show pyaudio
Version: 0.2.11
...

Согласно этой теме, мне нужно предоставить микрофон доступ? При работе в терминале он не запрашивает доступ к микрофону, и я не вижу возможности добавить его в Системные настройки.

Тема также указывает на эту функцию PortAudio, чтобы получить больше информацию из этой ошибки, но я не уверен, как именно взломать библиотеку PyAudio для получения этой информации.

Я хотел бы получить некоторые указания в правильном направлении по этому вопросу. Заранее спасибо.


person jts3304    schedule 07.01.2021    source источник


Ответы (1)


После установки недоморощенного Python и установки portaudio с помощью brew install portaudio --HEAD я смог заставить его работать.

Я также переустановил Homebrew, чтобы использовать Rosetta, но я не уверен, что это имело значение.

person jts3304    schedule 13.01.2021