1

我正在尝试确定声卡是否支持格式(速率/深度)。我发现无论指定的速率和深度如何,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")
4

1 回答 1

0

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

于 2014-09-22T19:39:49.440 回答