Win7 で PyAudio を使用して PreSonus AudioBox 1818VSL に接続しようとしていますが、一度に 2 つ以上のチャンネル (ステレオ) を録音するのに問題があります。PreSonus ドライバーは、多くのステレオ入力オーディオ デバイス (ステレオ チャンネル 1&2、3&4 など) と 18 入力チャンネル ASIO デバイスを作成します。どのステレオ機器からでも問題なく録音できます。レイテンシを最小限に抑えて 2 チャンネル以上から録音するために、ASIO デバイスを使用しようとしています。
ASIO、DS、WMME、WASAPI、WDMKSのサポートをコンパイル したhttp://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudioのPyAudioのビルドを使用しています。
pyaudio_handle.is_format_supported()
ASIO デバイスが 44.1、48、および 96 kHz で 8 ~ 32 ビットのデータをサポートしていることを示すための呼び出し。
以下は、によって返される辞書ですpa.get_device_info_by_index(32)
{'defaultHighInputLatency': 0.046439909297052155,
'defaultHighOutputLatency': 0.046439909297052155,
'defaultLowInputLatency': 0.046439909297052155,
'defaultLowOutputLatency': 0.046439909297052155,
'defaultSampleRate': 44100.0,
'hostApi': 2L,
'index': 32,
'maxInputChannels': 18L,
'maxOutputChannels': 18L,
'name': u'AudioBox ASIO Driver',
'structVersion': 2L}
以下は、PyAudio 入力ストリームを作成するために使用したコードです。コールバック関数は単にデータをリストにプッシュし、pyaudio.paContinue
必要な量のサンプルを取得するまで戻り、その後 を返しますpyaudio.paComplete
。
pyaudio_handle = pyaudio.PyAudio()
stream = pyaudio_handle.open(
format=pyaudio.get_format_from_width(2,unsigned=False),
channels=4,
rate=48000,
input=True,
frames_per_buffer=256,
input_device_index=32,
stream_callback=pyaudio_stream_callback,
)
44.1 kHz よりも速いレートで ASIO ドライバーを初期化しようとすると、PyAudio がハングして戻りません。44.1 kHz で初期化すると、次のエラーが発生しますIOError: [Errno Unanticipated host error] -9999
。
このエラーを解決するために提供できるヘルプは役に立ちます。Win7 で実行している場合、ASIO が PyAudio の 2 チャンネル以上で動作することを証明することさえできます。ありがとう。