Pyaudio支持所有格式,尽管音频卡没有

时间:2014-05-08 22:12:44

标签: python portaudio pyaudio

我正在尝试确定音频卡是否支持格式(速率/深度)。我发现无论指定的速率和深度如何,pyaudio都会返回True。如何仅显示声卡本机支持的模式?我在windows,mac,ubuntu,fedora上重现了这个。我已经包含了一段有用的代码来帮助解决这个问题。

import pyaudio

pa = pyaudio.PyAudio()

try:
    default_device_id = pa.get_default_output_device_info()['index']
except IOError:
    print ("There is no default device")
    exit(1)
try:
    result = pa.is_format_supported(rate=48000, output_device=default_device_id, output_channels=2, output_format = pyaudio.paFloat32)
    print("Unexpected, device does not really support this result was: %s" % result)
except ValueError:
    print("Expected Unsupported Device")

1 个答案:

答案 0 :(得分:0)

这与PortAudio使用的底层API有关。通过使用默认设备,您最有可能在Windows上运行DirectSound。 DirectSound基本上会告诉PortAudio它支持的任何格式都是支持的,然后转换为PA背后硬件原生支持的内容。解决方法的唯一方法是指示PA在Windows上使用较低级别的主机API(如ASIO或独占模式WASAPI)(可能在* nix上使用ALSA,但我只是在这里猜测)。