2014-05-08 8 views
0

오디오 카드에서 형식 (속도/깊이)이 지원되는지 확인하려고 시도하고 있습니다. 나는 pyaudio가 지정된 속도와 깊이에 관계없이 True를 반환한다는 것을 발견했습니다. 오디오 카드가 기본적으로 지원하는 모드 만 표시하려면 어떻게합니까? 윈도우, 맥, 우분투, 페도라에서 이것을 재현했다. 이 문제를 해결하는 데 도움이되는 코드 조각을 포함 시켰습니다.오디오 카드가 없어도 Pyaudio는 모든 형식을 지원합니다.

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

이것은 PortAudio에서 사용되는 기본 API와 관련이 있습니다. Windows에서 DirectSound를 실행할 때 가장 많이 사용하는 기본 장치를 사용합니다. DirectSound는 기본적으로 PortAudio에게 요청하는 모든 형식이 지원되는지 말한 다음 PA 뒷면의 하드웨어가 기본적으로 지원하는 것으로 변환합니다. 이 문제를 해결할 수있는 유일한 방법은 Windows에서 ASIO 나 배타 모드 WASAPI와 같은 저수준 호스트 API를 사용하도록 PA에 지시하는 것입니다 (아마도 * nix의 ALSA 일 수도 있지만 여기에서 추측하고 있습니다).