我正在使用Windows 7上的64位PyAudio版本here。当我导入pyaudio并执行pyaudio.PyAudio()
时,它工作正常,但是大量的东西似乎是调试的信息打印到stderr。 Stackoverflow上有一个关于此here的问题,但它在一年多的时间内没有活动,似乎没有解决。
正如该问题的提问者在回答答案时指出的那样,重定向stderr(通过执行sys.stderr = somethingelse
)并不会阻止错误消息进入stderr。即使它确实如此,我也不想重定向所有stderr只是为了处理PyAudio。
我怀疑问题是这个版本的PyAudio和/或它附带的PortAudio是用某种调试标志编译的,这会导致调试信息在C扩展名的某处打印“raw”代码,绕过Python IO流。所以我要问的是:
(如果这只是这个版本的一个问题,我可能会尝试联系已经提供这些64位版本的人,并询问他是否故意提出调试版本,因为他可能只是忘记关闭调试时编译。)
修改:以下是我收到的消息。我会尝试将它们浓缩一点,因为它们长达数百行。我还应该注意,这些看起来不像错误信息;它们似乎只是各种设备的状态信息。我先得到:
before paHostApiInitializers[0].
after paHostApiInitializers[0].
before paHostApiInitializers[1].
WASAPI: device idx: 00
WASAPI: ---------------
WASAPI:0| name[Realtek Digital Output (Realtek High Definition Audio)]
WASAPI:0| form-factor[8]
WASAPI:0| def.SR[48000] max.CH[2] latency{hi[0.010000] lo[0.003000]}
WASAPI: device idx: 01
然后是一系列其他类似的消息,以WASAPI开头并提及其他设备(线路输入,麦克风等)。然后:
WASAPI: initialized ok
after paHostApiInitializers[1].
before paHostApiInitializers[2].
Setup called
Enum called
noError = 0
Enum called
noError = 1
Device 1 has render alias
Device 1 has capture alias
。 。 。还有一堆关于“Enum叫”和“捕获别名”等类似的消息。然后:
Interfaces found: 7
Device 1 has render alias
Device 1 has capture alias
Interface 1, Name: ATI HD Audio rear output
Creating pin 0:
No standard streaming
Creating pin 1:
Not source/sink
Filter NOT created
。 。 。和一系列类似的其他设备号码消息块。然后在结束时:
after paHostApiInitializers[2].
这就是我在做pyaudio.PyAudio()
时所看到的。