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

rah*_*him 7 python record pyaudio

我只想运行一个简单的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)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

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

问题是什么?

Nik*_*rev 1

您需要收集其他信息才能了解问题。来自Portaudio 文档

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

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

            rate=wf.getframerate()
Run Code Online (Sandbox Code Playgroud)

可以改为16000、44100和48000来测试实际支持哪种速率。