检查特定的声卡是否与PyAudio一样正常工作,但是当我在脚本运行时移除声卡时(如下所示的节点循环),它无法检测到声卡已被物理移除。操作系统(Windows-7)识别系统更改,但是下面的get_device_info函数总是返回已删除的声卡详细信息,即使它未连接。
当然重新导入pyaudio,如下所示,你期望找不到删除的声卡的功能不应该出现?
有什么想法吗?
for x in range(100):
get_soundcard_dev_info()
var = raw_input("\nPress Enter - to recheck if Soundcard exsists")
def get_soundcard_dev_info():
import pyaudio
pad_sc = pyaudio.PyAudio()
max_devs = pad_sc.get_device_count()
input_devices_index = []
output_devices_index = []
for i in range(max_devs):
devinfo = pad_sc.get_device_info_by_index(i)
if "TUSBAudio ASIO Driver" in devinfo['name']:
input_devices_index.append(int(devinfo['index']))
output_devices_index.append(int(devinfo['index']))
if not input_devices_index:
print "NONE"
print input_devices_index
答案 0 :(得分:0)
如果你反复尝试import
相同的模块,Python什么都不做(因为它知道模块已经在sys.modules
中),因此PortAudio库没有被重新加载而且设备列表不是更新。
因此,您可以将import pyaudio
移至文件顶部。
我不太确定如果你反复拨打pyaudio.PyAudio()
会发生什么(显然它没有达到预期的效果),但是可以肯定的是,你应该在get_soundcard_dev_info()
结束时调用它。 :
pad_sc.terminate()
这应该正确卸载PortAudio库,下次设备列表应该是正确的。