4

我正在尝试列出我的音频设备,但我认为 PyAudio 显示了一些重复的设备。

这是结果(2 和 6、4 和 5):

1. {'type': 'input', 'name': 'Microsoft Sound Mapper - Input'}
2. {'type': 'input', 'name': 'Microphone (Realtek High Defini'}
3. {'type': 'output', 'name': 'Microsoft Sound Mapper - Output'}
4. {'type': 'output', 'name': 'Speakers (Realtek High Definiti'}
5. {'type': 'output', 'name': 'Speakers (Realtek High Definition Audio)'}
6. {'type': 'input', 'name': 'Microphone (Realtek High Definition Audio)'}

这是我的代码:

def get_devices(self):

    self.p = pyaudio.PyAudio()

    devices = {}

    for x in range(self.p.get_device_count()):
        d = self.get_device_info(x)
        devices[x] = { 'name' : d['name'] , 'type' : 'output' if d['maxInputChannels'] == 0 else 'input' }

    return devices

复制设备的名称已删减。我的代码有什么问题。或者这是一个错误?

我正在使用 MS Windows 8。

4

1 回答 1

0

它们不是重复的。其中一些可能来自 MME hostApi,一些可能来自 DirectSound hostApi,一些可能来自 Windows-KS,或者 WASAPI,甚至是 ASIO。

我遇到了同样的情况,我选择只保留来自 DirectSound 和 ASIO 的设备列表(在 Windows 上时)。您可以使用 dict 的键“hostApi”过滤列表(0=mme、1=directsound 等,请查看 pyaudio 文档)。

于 2014-02-08T07:42:25.193 回答