List all audio devices with Python's pyaudio (portaudio binding)

前端 未结 3 1094
天命终不由人
天命终不由人 2021-02-14 22:37

I tried

import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
    print p.get_device_info_by_index(i)

but I don\'t get th

相关标签:
3条回答
  • 2021-02-14 22:52

    I'm thinking that the problem could be in the underlying PortAudio library. Do you have (or can you write, in C) a simple utility that accesses the PortAudio library and tries to perform this same listing?

    Also, googling for 'portaudio asio' reveals this tidbit from the official PortAudio docs:

    There are cases where PortAudio is limited by the capabilities of the underlying native audio API... the ASIO SDK only allows one device to be open at a time, so PortAudio/ASIO doesn't currently support opening multiple ASIO devices simultaneously.

    0 讨论(0)
  • 2021-02-14 22:57

    I've created (a while after this question was posted) the sounddevice module for Python, which includes its own DLLs with ASIO support (and all other host APIs, too). It can be installed with:

    pip install sounddevice --user
    

    After that, you can list all your devices with:

    python -m sounddevice
    

    Of course you can also do this within Python:

    import sounddevice as sd
    sd.query_devices()
    
    0 讨论(0)
  • 2021-02-14 23:12

    I think your expectations are reasonable. The equivalent C code to enumerate PortAudio devices would give you all available devices. There are a couple of things that could be wrong:

    • Your build of PyAudio has not been compiled with ASIO support. PortAudio will only enumerate devices for the native host APIs that have been configured/compiled in at compile time.

    • You have a 64-bit build of Python/PyAudio and your ASIO device drivers are 32-bit, or vis-versa (64-bit ASIO drivers and 32-bit Python).

    As Multimedia Mike suggests, you can eliminate PyAudio from the equation by enumerating PA devices from C. The pa_devs.c program in the PortAudio distribution does this.

    0 讨论(0)
提交回复
热议问题