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 の背後にあるハードウェアによってネイティブにサポートされているものに変換します。回避する唯一の方法は、ASIO や Windows の排他モード WASAPI などの下位レベルのホスト API を使用するように PA に指示することです (*nix ではおそらく ALSA ですが、ここでは推測しています)。

于 2014-09-22T19:39:49.440 に答える