我正在尝试确定音频卡是否支持格式(速率/深度)。我发现无论指定的速率和深度如何,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")
答案 0 :(得分:0)
这与PortAudio使用的底层API有关。通过使用默认设备,您最有可能在Windows上运行DirectSound。 DirectSound基本上会告诉PortAudio它支持的任何格式都是支持的,然后转换为PA背后硬件原生支持的内容。解决方法的唯一方法是指示PA在Windows上使用较低级别的主机API(如ASIO或独占模式WASAPI)(可能在* nix上使用ALSA,但我只是在这里猜测)。