pyaudio-OSError: [Errno -9999] 意外主机错误

Posted

技术标签:

【中文标题】pyaudio-OSError: [Errno -9999] 意外主机错误【英文标题】:pyaudio-OSError: [Errno -9999] Unanticipated host error 【发布时间】:2017-01-07 07:16:00 【问题描述】:

我只想运行一个简单的python音频代码:

import pyaudio
import wave
import sys

CHUNK = 1024
wf = wave.open("4.wav", 'rb')
# instantiate PyAudio (1)
p = pyaudio.PyAudio()
# open stream (2)
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

但我收到以下错误:

Traceback (most recent call last):
  File "rec2.py", line 17, in <module>
    output=True)
  File "C:\Users\Surena\Anaconda3\lib\site-packages\pyaudio.py", line 750,  in open
    stream = Stream(self, *args, **kwargs)
  File "C:\Users\Surena\Anaconda3\lib\site-packages\pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9999] Unanticipated host error

我也尝试了另一个 pyaudio 记录,出现了同样的错误。我也尝试卸载 pyaudio 并使用 pip install pyaudio 再次安装,但没有帮助。我什至卸载了anaconda3并重新安装它。没有任何改变。

有什么问题?

【问题讨论】:

该方法适用于我的情况:***.com/questions/43841316/… 我遇到了同样的问题,这种方法适用于我的情况:***.com/questions/43841316/… 按照该线程中的建议关闭防病毒软件对我不起作用。 【参考方案1】:

我遇到了同样的问题,我只是通过在设置>机密>麦克风(在 Windows 10 上)中启用/禁用对麦克风的访问来解决它

【讨论】:

在我的 Windows 上,它是“设置>隐私>麦克风”。【参考方案2】:

您需要收集更多信息才能了解问题。来自Portaudio docs:

PortAudio 通常会尝试将错误情况转换为可移植的 PaError 错误代码。但是,如果遇到意外错误 可能会返回 paUnanticipatedHostError 代码。在这种情况下,进一步 提供了查询主机 API 特定错误的机制 信息。如果 PortAudio 返回 paUnanticipatedHostError 你可以 调用 Pa_GetLastHostErrorInfo() 以检索指向 提供更多信息的 PaHostErrorInfo 结构,包括 遇到错误的主机 API、本机 API 错误代码和 错误文本。

如果您在 Linux 上遇到此错误,很可能是由于您尝试从驱动程序请求的采样率不兼容造成的。这个值

            rate=wf.getframerate()

可以更改为 16000、44100 和 48000 以测试实际支持的速率。

【讨论】:

我在Win10上遇到了这个问题,并尝试了其他人提出的隐私和防病毒解决方案。通过枚举声音设备验证我使用了正确的输入。我想试试你的方法,但你能帮忙解释一下如何调用 Pa_GetLastHostErrorInfo() 吗?我试图寻找文档,但没有找到如何使用它。【参考方案3】:

我遇到了同样的问题,所以我只允许麦克风设置及其工作权限 只需转到设置 --> 隐私 --> 麦克风然后授予麦克风上麦克风装置的权限

【讨论】:

【参考方案4】:

如果您使用的是 Windows 10,请搜索麦克风隐私设置

【讨论】:

【参考方案5】:

好的,如果您使用 jupyter-notebook 并面临这个挑战。使用 homebrew(brew install pyaudio) 安装 pyaudio,然后重新启动内核。

【讨论】:

以上是关于pyaudio-OSError: [Errno -9999] 意外主机错误的主要内容,如果未能解决你的问题,请参考以下文章

linux 中的errno 和 strerror(errno)

errno的用法

errno线程安全性

Linux 系统错误码 errno 剖析

Python3 errno模块

&errno 合法吗?